Add luci, based upon commit : ae8ddb0ca6dfe98cb842fe2c01b36c4df55a0894
authorRISCi_ATOM <bob@bobcall.me>
Mon, 9 Sep 2019 14:14:25 +0000 (10:14 -0400)
committerRISCi_ATOM <bob@bobcall.me>
Mon, 9 Sep 2019 14:14:25 +0000 (10:14 -0400)
987 files changed:
package/luci/LICENSE [new file with mode: 0644]
package/luci/NOTICE [new file with mode: 0644]
package/luci/README.md [new file with mode: 0644]
package/luci/applications/luci-app-commands/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-commands/luasrc/controller/commands.lua [new file with mode: 0644]
package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua [new file with mode: 0644]
package/luci/applications/luci-app-commands/luasrc/view/commands.htm [new file with mode: 0644]
package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/ca/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/cs/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/de/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/el/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/en/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/es/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/fr/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/he/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/hu/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/it/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/ja/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/ms/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/no/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/pl/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/pt-br/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/pt/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/ro/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/ru/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/sk/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/sv/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/templates/commands.pot [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/tr/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/uk/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/vi/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/zh-cn/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/zh-tw/commands.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm [new file with mode: 0644]
package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ca/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/cs/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/de/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/el/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/en/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/es/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/fr/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/he/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/hu/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/it/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ja/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ko/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ms/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/no/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/pl/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/pt-br/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/pt/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ro/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/ru/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/sk/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/sv/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/templates/firewall.pot [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/tr/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/uk/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/vi/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/ca/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/cs/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/de/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/el/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/en/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/es/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/fr/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/he/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/hu/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/it/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/ja/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/ms/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/no/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/pl/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/pt/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/ro/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/ru/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/sk/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/sv/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/tr/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/uk/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/vi/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes [new file with mode: 0644]
package/luci/applications/luci-app-opkg/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js [new file with mode: 0644]
package/luci/applications/luci-app-opkg/luasrc/controller/opkg.lua [new file with mode: 0644]
package/luci/applications/luci-app-opkg/luasrc/view/opkg.htm [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ca/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/cs/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/de/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/el/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/en/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/es/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/fr/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/he/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/hu/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/it/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ja/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ko/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ms/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/no/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/pl/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/pt-br/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/pt/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ro/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/ru/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/sk/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/sv/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/templates/opkg.pot [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/tr/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/uk/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/vi/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/zh-cn/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-opkg/po/zh-tw/opkg.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/ca/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/cs/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/de/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/el/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/en/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/es/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/fr/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/he/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/hu/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/it/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/ja/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/ms/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/no/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/pl/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/pt/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/ro/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/ru/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/sk/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/sv/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/tr/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/uk/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/vi/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po [new file with mode: 0644]
package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd [new file with mode: 0755]
package/luci/applications/luci-app-uhttpd/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/de/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/en/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/es/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/ru/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/zh-cn/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-uhttpd/po/zh-tw/uhttpd.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/de/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/es/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/ja/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/ru/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/sv/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po [new file with mode: 0644]
package/luci/applications/luci-app-wireguard/po/zh-tw/wireguard.po [new file with mode: 0644]
package/luci/build/check-controllers.sh [new file with mode: 0755]
package/luci/build/i18n-add-language.sh [new file with mode: 0755]
package/luci/build/i18n-init.sh [new file with mode: 0755]
package/luci/build/i18n-po2lua.pl [new file with mode: 0755]
package/luci/build/i18n-scan.pl [new file with mode: 0755]
package/luci/build/i18n-sync.sh [new file with mode: 0755]
package/luci/build/i18n-update.pl [new file with mode: 0755]
package/luci/build/luadoc/doc.lua [new file with mode: 0755]
package/luci/build/luadoc/luadoc/config.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/debug.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/formatter.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/constant.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/file.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/function.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/index.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/luadoc.css [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/menu.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/module.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/html/table.lp [new file with mode: 0644]
package/luci/build/luadoc/luadoc/doclet/raw.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/init.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/lp.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/taglet/standard.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/taglet/standard/tags.lua [new file with mode: 0644]
package/luci/build/luadoc/luadoc/util.lua [new file with mode: 0644]
package/luci/build/makedocs.sh [new file with mode: 0755]
package/luci/build/mkbasepot.sh [new file with mode: 0755]
package/luci/build/mkrevision.sh [new file with mode: 0755]
package/luci/build/zoneinfo2lua.pl [new file with mode: 0755]
package/luci/collections/luci-light/Makefile [new file with mode: 0644]
package/luci/collections/luci-ssl-openssl/Makefile [new file with mode: 0644]
package/luci/collections/luci-ssl/Makefile [new file with mode: 0644]
package/luci/collections/luci/Makefile [new file with mode: 0644]
package/luci/contrib/package/Makefile [new file with mode: 0644]
package/luci/contrib/package/csstidy/Makefile [new file with mode: 0644]
package/luci/contrib/package/lucihttp/Makefile [new file with mode: 0644]
package/luci/documentation/CBI.md [new file with mode: 0644]
package/luci/documentation/JsonRpcHowTo.md [new file with mode: 0644]
package/luci/documentation/LAR.md [new file with mode: 0644]
package/luci/documentation/LMO.md [new file with mode: 0644]
package/luci/documentation/LuCI-0.10.md [new file with mode: 0644]
package/luci/documentation/Modules.md [new file with mode: 0644]
package/luci/documentation/ModulesHowTo.md [new file with mode: 0644]
package/luci/documentation/Templates.md [new file with mode: 0644]
package/luci/documentation/ThemesHowTo.md [new file with mode: 0644]
package/luci/documentation/api/index.html [new file with mode: 0644]
package/luci/documentation/api/luadoc.css [new file with mode: 0644]
package/luci/documentation/api/modules/luci.dispatcher.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.http.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.http.protocol.conditionals.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.http.protocol.date.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.http.protocol.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.http.protocol.mime.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.i18n.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.ip.cidr.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.ip.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.json.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.jsonc.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.jsonc.parser.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.model.ipkg.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.model.uci.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.rpcc.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.rpcc.ruci.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.init.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.iptparser.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.net.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.process.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.user.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.sys.wifi.html [new file with mode: 0644]
package/luci/documentation/api/modules/luci.util.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.CHANGELOG.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.CryptoHash.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.File.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.README.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.Socket.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.TLSContext.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.TLSSocket.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.UnifiedIO.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.bin.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.bit.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.crypto.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.fs.html [new file with mode: 0644]
package/luci/documentation/api/modules/nixio.html [new file with mode: 0644]
package/luci/documentation/i18n.md [new file with mode: 0644]
package/luci/libs/luci-lib-httpclient/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua [new file with mode: 0644]
package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.lua [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.lua [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.lua [new file with mode: 0644]
package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-ip/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-ip/src/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-ip/src/ip.c [new file with mode: 0644]
package/luci/libs/luci-lib-ip/src/ip.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-ipkg/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.lua [new file with mode: 0644]
package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-iptparser/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.lua [new file with mode: 0644]
package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-json/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-json/luasrc/json.lua [new file with mode: 0644]
package/luci/libs/luci-lib-json/luasrc/json.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-jsonc/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-jsonc/src/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-jsonc/src/jsonc.c [new file with mode: 0644]
package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-luaneightbl/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-luaneightbl/src/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-luaneightbl/src/neightbl.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/.gitignore [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/LICENSE [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/NOTICE [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/README [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/README [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/README [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/.config [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/Config.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/axtls.rc [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/config.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/linuxconfig [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/makefile.conf [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/makefile.dotnet.conf [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/config/win32config [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/tsbasbw.gif [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler.patch [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/proc.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted.p8 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withoutCA.p12 [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/gnutls.cer [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert.pem [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.c [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/index.html [new file with mode: 0755]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axtls-config/.config [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axtls-config/config.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/README.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/docsrc/nixio.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/address.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/axtls-compat.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/axtls-compat.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/binary.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/bind.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/bit.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/cyassl-compat.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/cyassl-compat.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/file.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/fs.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/io.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/mingw-compat.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/mingw-compat.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/nixio-tls.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/nixio.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/nixio.h [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/poll.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/process.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/protoent.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/socket.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/sockopt.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/splice.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/syslog.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/tls-context.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/tls-crypto.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/tls-socket.c [new file with mode: 0644]
package/luci/libs/luci-lib-nixio/src/user.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/lua/px5g/util.lua [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys [new file with mode: 0755]
package/luci/libs/luci-lib-px5g/src/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/bignum.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/havege.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/rsa.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/sha1.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/timing.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/library/x509write.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/config.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/havege.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/timing.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/polarssl/x509.h [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/px5g.c [new file with mode: 0644]
package/luci/libs/luci-lib-px5g/src/px5g.h [new file with mode: 0644]
package/luci/libs/luci-lib-rpcc/Makefile [new file with mode: 0644]
package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua [new file with mode: 0644]
package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc [new file with mode: 0644]
package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua [new file with mode: 0644]
package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc [new file with mode: 0644]
package/luci/libs/rpcd-mod-rad2-enc/Makefile [new file with mode: 0644]
package/luci/libs/rpcd-mod-rad2-enc/files/rad2-enc [new file with mode: 0755]
package/luci/libs/rpcd-mod-rrdns/Makefile [new file with mode: 0644]
package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt [new file with mode: 0644]
package/luci/libs/rpcd-mod-rrdns/src/rrdns.c [new file with mode: 0644]
package/luci/libs/rpcd-mod-rrdns/src/rrdns.h [new file with mode: 0644]
package/luci/luci.mk [new file with mode: 0644]
package/luci/modules/luci-base/Makefile [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/cgi-bin/luci [new file with mode: 0755]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/arrow.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/find.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/folder.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/help.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/key.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/remove.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reset.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/user.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/luci.js [new file with mode: 0644]
package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/cacheloader.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/cbi.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/cbi/datatypes.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/ccache.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/config.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/controller/admin/index.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/controller/admin/uci.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/debug.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/dispatcher.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/dispatcher.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/http.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/http.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/i18n.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/i18n.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/ltn12.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/firewall.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/network.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/uci.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/model/uci.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sgi/cgi.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/store.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sys.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sys.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/template.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/tools/proto.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/tools/status.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/tools/webadmin.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/util.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/util.luadoc [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/version.lua [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/admin_uci/changelog.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/admin_uci/changes.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/admin_uci/revert.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/apply_widget.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/browser.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/button.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/compound.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/dropdown.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/error.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/footer.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/header.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/ipaddr.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/map.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/upload.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/value.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/csrftoken.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/empty_node_placeholder.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/error404.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/error500.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/footer.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/header.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/indexer.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/lease_status.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/sysauth.htm [new file with mode: 0644]
package/luci/modules/luci-base/luasrc/view/wifi_assoclist.htm [new file with mode: 0644]
package/luci/modules/luci-base/po/ca/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/cs/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/de/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/el/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/en/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/es/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/fr/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/he/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/hu/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/it/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/ja/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/ko/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/ms/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/no/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/pl/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/pt-br/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/pt/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/ro/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/ru/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/sk/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/sv/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/templates/base.pot [new file with mode: 0644]
package/luci/modules/luci-base/po/tr/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/uk/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/vi/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/zh-cn/base.po [new file with mode: 0644]
package/luci/modules/luci-base/po/zh-tw/base.po [new file with mode: 0644]
package/luci/modules/luci-base/root/etc/config/luci [new file with mode: 0644]
package/luci/modules/luci-base/root/etc/config/ucitrack [new file with mode: 0644]
package/luci/modules/luci-base/root/etc/init.d/ucitrack [new file with mode: 0755]
package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder [new file with mode: 0644]
package/luci/modules/luci-base/root/sbin/luci-reload [new file with mode: 0755]
package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json [new file with mode: 0644]
package/luci/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json [new file with mode: 0644]
package/luci/modules/luci-base/root/www/index.html [new file with mode: 0644]
package/luci/modules/luci-base/src/Makefile [new file with mode: 0644]
package/luci/modules/luci-base/src/jsmin.c [new file with mode: 0644]
package/luci/modules/luci-base/src/mkversion.sh [new file with mode: 0755]
package/luci/modules/luci-base/src/po2lmo.c [new file with mode: 0644]
package/luci/modules/luci-base/src/template_lmo.c [new file with mode: 0644]
package/luci/modules/luci-base/src/template_lmo.h [new file with mode: 0644]
package/luci/modules/luci-base/src/template_lualib.c [new file with mode: 0644]
package/luci/modules/luci-base/src/template_lualib.h [new file with mode: 0644]
package/luci/modules/luci-base/src/template_parser.c [new file with mode: 0644]
package/luci/modules/luci-base/src/template_parser.h [new file with mode: 0644]
package/luci/modules/luci-base/src/template_utils.c [new file with mode: 0644]
package/luci/modules/luci-base/src/template_utils.h [new file with mode: 0644]
package/luci/modules/luci-mod-admin-full/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js [new file with mode: 0644]
package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js [new file with mode: 0644]
package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js [new file with mode: 0644]
package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js [new file with mode: 0644]
package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/controller/admin/network.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm [new file with mode: 0644]
package/luci/modules/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full [new file with mode: 0755]
package/luci/modules/luci-mod-rpc/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua [new file with mode: 0644]
package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua [new file with mode: 0644]
package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua [new file with mode: 0644]
package/luci/modules/luci-mod-status/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/bandwidth.svg [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/connections.svg [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/load.svg [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wifirate.svg [new file with mode: 0644]
package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wireless.svg [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/controller/admin/status.lua [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/connections.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/40-dhcp-leases.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/iptables.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/load.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/routes.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/syslog.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/luasrc/view/admin_status/wireless.htm [new file with mode: 0644]
package/luci/modules/luci-mod-status/src/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-status/src/luci-bwc.c [new file with mode: 0644]
package/luci/modules/luci-mod-system/Makefile [new file with mode: 0644]
package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js [new file with mode: 0644]
package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/controller/admin/system.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/flashops.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/password.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/reboot.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm [new file with mode: 0644]
package/luci/modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm [new file with mode: 0644]
package/luci/protocols/luci-proto-3g/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-hnet/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipip/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ncm/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-openconnect/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-pppossh/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-qmi/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-relay/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-vpnc/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-wireguard/Makefile [new file with mode: 0644]
package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua [new file with mode: 0644]
package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/Makefile [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/footer.htm [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm [new file with mode: 0644]
package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap [new file with mode: 0755]
package/luci/themes/luci-theme-material/Makefile [new file with mode: 0755]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/brand.png [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/cascade.css [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/custom.css [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/arrow.svg [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/logout.svg [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/menu.svg [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/spinner.svg [new file with mode: 0644]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js [new file with mode: 0755]
package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/script.js [new file with mode: 0755]
package/luci/themes/luci-theme-material/luasrc/view/themes/material/footer.htm [new file with mode: 0644]
package/luci/themes/luci-theme-material/luasrc/view/themes/material/header.htm [new file with mode: 0644]
package/luci/themes/luci-theme-material/root/etc/uci-defaults/30_luci-theme-material [new file with mode: 0755]
package/luci/themes/luci-theme-openwrt/Makefile [new file with mode: 0644]
package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css [new file with mode: 0644]
package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png [new file with mode: 0644]
package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm [new file with mode: 0644]
package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm [new file with mode: 0644]
package/luci/themes/luci-theme-openwrt/root/etc/uci-defaults/30_luci-theme-openwrt [new file with mode: 0755]
package/luci/themes/luci-theme-rosy/Makefile [new file with mode: 0755]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js [new file with mode: 0755]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/script.js [new file with mode: 0755]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loading.svg [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loginBG.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/logo.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/menu-logo.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/mobile-loginBG.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/no-pwd.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/op-eye.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/pwd.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/user.png [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/footer.htm [new file with mode: 0755]
package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm [new file with mode: 0644]
package/luci/themes/luci-theme-rosy/root/etc/uci-defaults/30_luci-theme-rosy [new file with mode: 0755]

diff --git a/package/luci/LICENSE b/package/luci/LICENSE
new file mode 100644 (file)
index 0000000..f49a4e1
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
\ No newline at end of file
diff --git a/package/luci/NOTICE b/package/luci/NOTICE
new file mode 100644 (file)
index 0000000..47e1969
--- /dev/null
@@ -0,0 +1,9 @@
+LuCI - Lua Configuration Interface
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+Licensed under the Apache License, Version 2.0.
+
+Contains code from:
+coxpcall       - Copyright 2005 - Kepler Project (www.keplerproject.org)
+ltn12/luasocket - Copyright 2004-2007 Diego Nehab
+axTLS          - Copyright 2008 Cameron Rich
diff --git a/package/luci/README.md b/package/luci/README.md
new file mode 100644 (file)
index 0000000..48863a4
--- /dev/null
@@ -0,0 +1,34 @@
+# OpenWrt luci feed
+
+## Description
+
+This is the OpenWrt "luci"-feed containing LuCI - OpenWrt Configuration Interface.
+
+## Usage
+
+This feed is enabled by default. Your feeds.conf.default (or feeds.conf) should contain a line like:
+```
+src-git luci https://github.com/openwrt/luci.git
+```
+
+To install all its package definitions, run:
+```
+./scripts/feeds update luci
+./scripts/feeds install -a -p luci
+```
+
+## API Reference
+
+You can browse the generated API documentation [directly on Github](http://htmlpreview.github.io/?http://raw.githubusercontent.com/openwrt/luci/master/documentation/api/index.html).
+
+## Development
+
+Documentation for developing and extending LuCI can be found [in the Wiki](https://github.com/openwrt/luci/wiki)
+
+## License
+
+See [LICENSE](LICENSE) file.
+## Package Guidelines
+
+See [CONTRIBUTING.md](CONTRIBUTING.md) file.
diff --git a/package/luci/applications/luci-app-commands/Makefile b/package/luci/applications/luci-app-commands/Makefile
new file mode 100644 (file)
index 0000000..f41d6e2
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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:=LuCI Shell Command Module
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua b/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua
new file mode 100644 (file)
index 0000000..ca91813
--- /dev/null
@@ -0,0 +1,268 @@
+-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.commands", package.seeall)
+
+function index()
+       entry({"admin", "system", "commands"}, firstchild(), _("Custom Commands"), 80)
+       entry({"admin", "system", "commands", "dashboard"}, template("commands"), _("Dashboard"), 1)
+       entry({"admin", "system", "commands", "config"}, cbi("commands"), _("Configure"), 2)
+       entry({"admin", "system", "commands", "run"}, call("action_run"), nil, 3).leaf = true
+       entry({"admin", "system", "commands", "download"}, call("action_download"), nil, 3).leaf = true
+
+       entry({"command"}, call("action_public"), nil, 1).leaf = true
+end
+
+--- Decode a given string into arguments following shell quoting rules
+--- [[abc \def "foo\"bar" abc'def']] -> [[abc def]] [[foo"bar]] [[abcdef]]
+local function parse_args(str)
+       local args = { }
+
+       local function isspace(c)
+               if c == 9 or c == 10 or c == 11 or c == 12 or c == 13 or c == 32 then
+                       return c
+               end
+       end
+
+       local function isquote(c)
+               if c == 34 or c == 39 or c == 96 then
+                       return c
+               end
+       end
+
+       local function isescape(c)
+               if c == 92 then
+                       return c
+               end
+       end
+
+       local function ismeta(c)
+               if c == 36 or c == 92 or c == 96 then
+                       return c
+               end
+       end
+
+       --- Convert given table of byte values into a Lua string and append it to
+       --- the "args" table. Segment byte value sequence into chunks of 256 values
+       --- to not trip over the parameter limit for string.char()
+       local function putstr(bytes)
+               local chunks = { }
+               local csz = 256
+               local upk = unpack
+               local chr = string.char
+               local min = math.min
+               local len = #bytes
+               local off
+
+               for off = 1, len, csz do
+                       chunks[#chunks+1] = chr(upk(bytes, off, min(off + csz - 1, len)))
+               end
+
+               args[#args+1] = table.concat(chunks)
+       end
+
+       --- Scan substring defined by the indexes [s, e] of the string "str",
+       --- perform unquoting and de-escaping on the fly and store the result in
+       --- a table of byte values which is passed to putstr()
+       local function unquote(s, e)
+               local off, esc, quote
+               local res = { }
+
+               for off = s, e do
+                       local byte = str:byte(off)
+                       local q = isquote(byte)
+                       local e = isescape(byte)
+                       local m = ismeta(byte)
+
+                       if e then
+                               esc = true
+                       elseif esc then
+                               if m then res[#res+1] = 92 end
+                               res[#res+1] = byte
+                               esc = false
+                       elseif q and quote and q == quote then
+                               quote = nil
+                       elseif q and not quote then
+                               quote = q
+                       else
+                               if m then res[#res+1] = 92 end
+                               res[#res+1] = byte
+                       end
+               end
+
+               putstr(res)
+       end
+
+       --- Find substring boundaries in "str". Ignore escaped or quoted
+       --- whitespace, pass found start- and end-index for each substring
+       --- to unquote()
+       local off, esc, start, quote
+       for off = 1, #str + 1 do
+               local byte = str:byte(off)
+               local q = isquote(byte)
+               local s = isspace(byte) or (off > #str)
+               local e = isescape(byte)
+
+               if esc then
+                       esc = false
+               elseif e then
+                       esc = true
+               elseif q and quote and q == quote then
+                       quote = nil
+               elseif q and not quote then
+                       start = start or off
+                       quote = q
+               elseif s and not quote then
+                       if start then
+                               unquote(start, off - 1)
+                               start = nil
+                       end
+               else
+                       start = start or off
+               end
+       end
+
+       --- If the "quote" is still set we encountered an unfinished string
+       if quote then
+               unquote(start, #str)
+       end
+
+       return args
+end
+
+local function parse_cmdline(cmdid, args)
+       local uci = require "luci.model.uci".cursor()
+       if uci:get("luci", cmdid) == "command" then
+               local cmd = uci:get_all("luci", cmdid)
+               local argv = parse_args(cmd.command)
+               local i, v
+
+               if cmd.param == "1" and args then
+                       for i, v in ipairs(parse_args(luci.http.urldecode(args))) do
+                               argv[#argv+1] = v
+                       end
+               end
+
+               for i, v in ipairs(argv) do
+                       if v:match("[^%w%.%-i/]") then
+                               argv[i] = '"%s"' % v:gsub('"', '\\"')
+                       end
+               end
+
+               return argv
+       end
+end
+
+function execute_command(callback, ...)
+       local fs = require "nixio.fs"
+       local argv = parse_cmdline(...)
+       if argv then
+               local outfile = os.tmpname()
+               local errfile = os.tmpname()
+
+               local rv = os.execute(table.concat(argv, " ") .. " >%s 2>%s" %{ outfile, errfile })
+               local stdout = fs.readfile(outfile, 1024 * 512) or ""
+               local stderr = fs.readfile(errfile, 1024 * 512) or ""
+
+               fs.unlink(outfile)
+               fs.unlink(errfile)
+
+               local binary = not not (stdout:match("[%z\1-\8\14-\31]"))
+
+               callback({
+                       ok       = true,
+                       command  = table.concat(argv, " "),
+                       stdout   = not binary and stdout,
+                       stderr   = stderr,
+                       exitcode = rv,
+                       binary   = binary
+               })
+       else
+               callback({
+                       ok       = false,
+                       code     = 404,
+                       reason   = "No such command"
+               })
+       end
+end
+
+function return_json(result)
+       if result.ok then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(result)
+       else
+               luci.http.status(result.code, result.reason)
+       end
+end
+
+function action_run(...)
+       execute_command(return_json, ...)
+end
+
+function return_html(result)
+       if result.ok then
+               require("luci.template")
+               luci.template.render("commands_public", {
+                       exitcode = result.exitcode,
+                       stdout = result.stdout,
+                       stderr = result.stderr
+               })
+       else
+               luci.http.status(result.code, result.reason)
+       end
+
+end
+
+function action_download(...)
+       local fs   = require "nixio.fs"
+       local argv = parse_cmdline(...)
+       if argv then
+               local fd = io.popen(table.concat(argv, " ") .. " 2>/dev/null")
+               if fd then
+                       local chunk = fd:read(4096) or ""
+                       local name
+                       if chunk:match("[%z\1-\8\14-\31]") then
+                               luci.http.header("Content-Disposition", "attachment; filename=%s"
+                                       % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
+                               luci.http.prepare_content("application/octet-stream")
+                       else
+                               luci.http.header("Content-Disposition", "attachment; filename=%s"
+                                       % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
+                               luci.http.prepare_content("text/plain")
+                       end
+
+                       while chunk do
+                               luci.http.write(chunk)
+                               chunk = fd:read(4096)
+                       end
+
+                       fd:close()
+               else
+                       luci.http.status(500, "Failed to execute command")
+               end
+       else
+               luci.http.status(404, "No such command")
+       end
+end
+
+
+function action_public(cmdid, args)
+       local disp = false
+       if string.sub(cmdid, -1) == "s" then
+               disp = true
+               cmdid = string.sub(cmdid, 1, -2)
+       end
+       local uci = require "luci.model.uci".cursor()
+       if cmdid and
+               uci:get("luci", cmdid) == "command" and
+               uci:get("luci", cmdid, "public") == "1"
+               then
+                       if disp then
+                               execute_command(return_html, cmdid, args)
+                       else
+                               action_download(cmdid, args)
+                       end
+               else
+                       luci.http.status(403, "Access to command denied")
+               end
+       end
diff --git a/package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua b/package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua
new file mode 100644 (file)
index 0000000..7794f15
--- /dev/null
@@ -0,0 +1,27 @@
+-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local m, s
+
+m = Map("luci", translate("Custom Commands"),
+       translate("This page allows you to configure custom shell commands which can be easily invoked from the web interface."))
+
+s = m:section(TypedSection, "command", "")
+s.template = "cbi/tblsection"
+s.anonymous = true
+s.addremove = true
+
+
+s:option(Value, "name", translate("Description"),
+         translate("A short textual description of the configured command"))
+
+s:option(Value, "command", translate("Command"),
+         translate("Command line to execute"))
+
+s:option(Flag, "param", translate("Custom arguments"),
+         translate("Allow the user to provide additional command line arguments"))
+
+s:option(Flag, "public", translate("Public access"),
+         translate("Allow executing the command and downloading its output without prior authentication"))
+
+return m
diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands.htm
new file mode 100644 (file)
index 0000000..d60a97c
--- /dev/null
@@ -0,0 +1,169 @@
+<%#
+ Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% css = [[
+
+.commandbox {
+       height: 12em;
+       width: 30%;
+       float: left;
+       height: 12em;
+       margin: 5px;
+       position: relative;
+}
+
+.commandbox h3 {
+       font-size: 1.5em !important;
+       line-height: 2em !important;
+       margin: 0 !important;
+}
+
+.commandbox input[type="text"] {
+       width: 50% !important;
+}
+
+.commandbox div {
+       position: absolute;
+       left: 0;
+       bottom: 1.5em;
+}
+
+]] -%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+       var stxhr = new XHR();
+
+       function command_run(id)
+       {
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               var legend = document.getElementById('command-rc-legend');
+               var output = document.getElementById('command-rc-output');
+
+               if (legend && output)
+               {
+                       output.innerHTML =
+                               '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+                               '<%:Waiting for command to complete...%>'
+                       ;
+
+                       legend.parentNode.style.display = 'block';
+                       legend.style.display = 'inline';
+
+                       stxhr.get('<%=url('admin/system/commands/run')%>/' + id + (args ? '/' + args : ''), null,
+                               function(x, st)
+                               {
+                                       if (st)
+                                       {
+                                               if (st.binary)
+                                                       st.stdout = '[<%:Binary data not displayed, download instead.%>]';
+
+                                               legend.style.display = 'none';
+                                               output.innerHTML = String.format(
+                                                       '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
+                                                       '<div class="alert-message warning">%s (<%:Code:%> %d)</div>',
+                                                       st.command, st.stdout, st.stderr,
+                                                       (st.exitcode == 0) ? '<%:Command successful%>' : '<%:Command failed%>',
+                                                       st.exitcode);
+                                       }
+                                       else
+                                       {
+                                               legend.style.display = 'none';
+                                               output.innerHTML = '<span class="error"><%:Failed to execute command!%></span>';
+                                       }
+
+                                       location.hash = '#output';
+                               }
+                       );
+               }
+       }
+
+       function command_download(id)
+       {
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               location.href = '<%=url('admin/system/commands/download')%>/' + id + (args ? '/' + args : '');
+       }
+
+       function command_link(id)
+       {
+               var legend = document.getElementById('command-rc-legend');
+               var output = document.getElementById('command-rc-output');
+
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               if (legend && output)
+               {
+                       var prefix = location.protocol + '//' + location.host + '<%=url('command')%>/';
+                       var suffix = (args ? '/' + args : '');
+                       
+                       var link = prefix + id + suffix;
+                       var link_nodownload = prefix + id + "s" + suffix;
+                       
+                       legend.style.display = 'none';
+                       output.parentNode.style.display = 'block';
+                       output.innerHTML = String.format(
+                               '<div class="alert-message"><p><%:Download execution result%> <a href="%s">%s</a></p><p><%:Or display result%> <a href="%s">%s</a></p></div>',
+                               link, link, link_nodownload, link_nodownload
+                       );
+
+                       location.hash = '#output';
+               }
+       }
+
+//]]></script>
+
+<%
+       local uci = require "luci.model.uci".cursor()
+       local commands = { }
+
+       uci:foreach("luci", "command", function(s) commands[#commands+1] = s end)
+%>
+
+<form method="get" action="<%=pcdata(FULL_REQUEST_URI)%>">
+       <div class="cbi-map">
+               <h2 name="content"><%:Custom Commands%></h2>
+
+               <fieldset class="cbi-section">
+                       <% local _, command; for _, command in ipairs(commands) do %>
+                       <div class="commandbox">
+                               <h3><%=pcdata(command.name)%></h3>
+                               <p><%:Command:%> <code><%=pcdata(command.command)%></code></p>
+                               <% if command.param == "1" then %>
+                                       <p><%:Arguments:%> <input type="text" id="<%=command['.name']%>" /></p>
+                               <% end %>
+                               <div>
+                                       <input type="button" value="<%:Run%>" class="cbi-button cbi-button-apply" onclick="command_run('<%=command['.name']%>')" />
+                                       <input type="button" value="<%:Download%>" class="cbi-button cbi-button-download" onclick="command_download('<%=command['.name']%>')" />
+                                       <% if command.public == "1" then %>
+                                               <input type="button" value="<%:Link%>" class="cbi-button cbi-button-link" onclick="command_link('<%=command['.name']%>')" />
+                                       <% end %>
+                               </div>
+                       </div>
+                       <% end %>
+
+                       <br style="clear:both" /><br />
+                       <a name="output"></a>
+               </fieldset>
+       </div>
+
+       <fieldset class="cbi-section" style="display:none">
+               <legend id="command-rc-legend"><%:Collecting data...%></legend>
+               <span id="command-rc-output"></span>
+       </fieldset>
+</form>
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm
new file mode 100644 (file)
index 0000000..f20799d
--- /dev/null
@@ -0,0 +1,50 @@
+<%#
+ Copyright 2016 t123yh <t123yh@outlook.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% css = [[
+.alert-success {
+    color: #3c763d;
+    background-color: #dff0d8;
+    border-color: #d6e9c6;
+}
+
+.alert {
+    padding: 15px;
+    margin-bottom: 20px;
+    border: 1px solid transparent;
+    border-radius: 4px;
+}
+
+.alert-warning {
+    color: #8a6d3b;
+    background-color: #fcf8e3;
+    border-color: #faebcc;
+}
+]] -%>
+
+<%+header%>
+
+<% if exitcode == 0 then %>
+    <div class="alert alert-success" role="alert"> <%:Command executed successfully.%> </div>
+<% else %>
+    <div class="alert alert-warning" role="alert"> <%:Command exited with status code %> <%= exitcode %> </div>
+<% end %>
+
+<% if stdout ~= "" then %>
+    <h3><%:Standard Output%></h3>
+    <pre><%= stdout %></pre>
+<% end %>
+
+<% if stderr ~= "" then %>
+    <h3><%:Standard Error%></h3>
+    <pre><%= stderr %></pre>
+<% end %>
+
+<script>
+    <%# Display top bar on mobile devices -%>
+    document.getElementsByClassName('brand')[0].style.setProperty("display", "block", "important");
+</script>
+
+<%+footer%>
\ No newline at end of file
diff --git a/package/luci/applications/luci-app-commands/po/ca/commands.po b/package/luci/applications/luci-app-commands/po/ca/commands.po
new file mode 100644 (file)
index 0000000..2c96fe7
--- /dev/null
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-06 10:41+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: none\n"
+"Language: ca\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Una breva descripció textual de l'ordre configurat"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permet la execució de l'ordre i la baixada de la seva sortida sense "
+"autenticació prèvia"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permet que l'usuari proveïa paràmetres de línia de consola addicionals"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Paràmetres:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Els dades binaris no es mostren, descarregueu-los."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Codi:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Recollint dades..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Ordre"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "L'ordre ha fallat"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Línia d'ordre per executar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "L'ordre ha tingut èxit"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Ordre;"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configura"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Ordres personalitzats"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Paràmetres personalitzats"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Panell"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descripció"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Baixa"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "L'execució de l'ordre ha fallat!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Enllaç"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Carregant"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Accés públic"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Executa"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Aquesta pàgina us permet configurar ordres de consola personalitzats que es "
+"poden invocar fàcilment de la interfície web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Esperant que l'ordre acabi..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accedeix l'ordre amb"
diff --git a/package/luci/applications/luci-app-commands/po/cs/commands.po b/package/luci/applications/luci-app-commands/po/cs/commands.po
new file mode 100644 (file)
index 0000000..47f37c5
--- /dev/null
@@ -0,0 +1,144 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-08-04 19:01+0200\n"
+"Last-Translator: KubaCZ <kuba.turek@centrum.cz>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Krátky popis nastaveného příkazu"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr "Povolit vykonání příkazu a stažení výstupu bez předchozí autentizace."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Povolit uživateli poskytnout dodatečné argumenty příkazového řádku"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumenty:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Binární data nezobrazena, stáhněte si je."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Kód:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Sbírání dat..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Příkaz"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Příkaz selhal"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Příkazový řádek k vykonání"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Příkaz úspěšný."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Příkaz:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Konfigurovat"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Vlastní příkazy"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Vlastní parametry"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Řídicí panel"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Popis"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Stáhnout"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Chyba při zpracování příkazu!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Odkaz"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Nahrávám"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Veřejný přístup"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Spustit"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Tato stránka umožňuje nastavit vlastní příkazy shellu, které lze snadno "
+"vyvolat z webového rozhraní."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Čekejte na dokončení příkazu..."
diff --git a/package/luci/applications/luci-app-commands/po/de/commands.po b/package/luci/applications/luci-app-commands/po/de/commands.po
new file mode 100644 (file)
index 0000000..45b6bfc
--- /dev/null
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-11-21 18:45+0200\n"
+"Last-Translator: Jo-Philipp <jow@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: de\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Kurze Beschreibung des abgespeicherten Kommandos"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Ausführen des Kommandos und Herunterladen der Ausgabe ohne vorherige "
+"Authentifizierung ermöglichen"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Erlaube dem Nutzer zusätzliche Kommandozeilenargumente zu übergeben"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumente:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Binärdaten ausgeblendet, laden Sie die Ausgaben stattdessen herunter"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Rückgabewert:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Sammle Daten..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Kommando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Kommando fehlgeschlagen"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Auszuführende Kommandozeile"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Kommando erfolgreich"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Kommando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Konfigurieren"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Benutzerdefinierte Kommandos"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Benutzerdefinierte Argumente"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Übersicht"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Beschreibung"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Herunterladen"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Kommando konnte nicht ausgeführt werden!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Lade"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Öffentlicher Zugriff"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Ausführen"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Diese Seite ermöglicht die Konfiguration eigener Shell-Kommandos um diese "
+"einfach über das Webinterface ausführen zu können."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Warte auf die Ausführung des Kommandos..."
+
+#~ msgid "Access command with"
+#~ msgstr "Kommando aufrufen mit"
diff --git a/package/luci/applications/luci-app-commands/po/el/commands.po b/package/luci/applications/luci-app-commands/po/el/commands.po
new file mode 100644 (file)
index 0000000..3fd3cfb
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/en/commands.po b/package/luci/applications/luci-app-commands/po/en/commands.po
new file mode 100644 (file)
index 0000000..7d31001
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language-Team: none\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"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language: en\n"
+"X-Generator: Poedit 1.8.11\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "A short textual description of the configured command"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Allow the user to provide additional command line arguments"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Arguments:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Binary data not displayed, download instead."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Code:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Collecting data..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Command"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "Command executed successfully."
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "Command exited with status code"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Command failed"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Command line to execute"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Command successful"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Command:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configure"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Custom Commands"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Custom arguments"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Description"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Download"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "Download execution result"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Failed to execute command!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Loading"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "Or display result"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Public access"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Run"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "Standard Error"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "Standard Output"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Waiting for command to complete..."
+
+#~ msgid "Command exited with status code "
+#~ msgstr "Command exited with status code "
diff --git a/package/luci/applications/luci-app-commands/po/es/commands.po b/package/luci/applications/luci-app-commands/po/es/commands.po
new file mode 100644 (file)
index 0000000..b45843c
--- /dev/null
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2019-02-21 17:06-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language-Team: none\n"
+"Language: es\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 2.2.1\n"
+"POT-Creation-Date: \n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Descripción breve del comando a configurar"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permitir ejecutar el comando y descargar su salida sin más autentificación"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permitir al usuario añadir parámetros de línea de comandos"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Parámetros:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "No se pueden mostrar datos binarios, descárguelos."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Código:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Recolectando datos..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Comando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "Comando ejecutado con éxito."
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "Comando salido con código de estado"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Comando fallido"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Comando a ejecutar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Comando exitoso"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Comando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configurar"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Comandos personalizados"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Parámetros perzonalizados"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Panel"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descripción"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Descargar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "Descargar resultado de ejecución"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "¡Error al ejecutar el comando!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Enlace"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Cargando"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "O mostrar resultado"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Acceso público"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Ejecutar"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "Error estándar"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "Salida estándar"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Aquí puede configurar sus propios comandos shell para lanzarlos fácilmente "
+"desde el interfaz web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Esperando a que termine el comando..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acceder al comando con"
diff --git a/package/luci/applications/luci-app-commands/po/fr/commands.po b/package/luci/applications/luci-app-commands/po/fr/commands.po
new file mode 100644 (file)
index 0000000..b9ad97f
--- /dev/null
@@ -0,0 +1,151 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-12-12 13:36+0200\n"
+"Last-Translator: maximeguillaud <maxime@mguillaud.net>\n"
+"Language-Team: none\n"
+"Language: fr\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Une courte description de la commande configurée"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Autoriser l'exécution de la commande et le téléchargement de son résultat "
+"sans authentification préalable"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+"Autoriser l'utilisateur à fournir des arguments de ligne de commande "
+"supplémentaires"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Arguments :"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Données binaires non affichables, elle peuvent être téléchargées."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Code : "
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Récupération des données ..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Commande"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Echec de la commande"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Ligne de commande à exécuter"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Commande réussie"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Commande :"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configurer"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Commandes personnalisées"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Arguments personnalisés"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Tableau de bord"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Description"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Télécharger"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Echec de l'exécution de la commande ! "
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Lien"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Chargement"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Accès public"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Exécuter"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Cette page vous permet de configurer des commandes shell personnalisées, "
+"pouvant être invoquées facilement depuis l'interface web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "En attente de la commande pour finir..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accéder à la commande par"
diff --git a/package/luci/applications/luci-app-commands/po/he/commands.po b/package/luci/applications/luci-app-commands/po/he/commands.po
new file mode 100644 (file)
index 0000000..3fd3cfb
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/hu/commands.po b/package/luci/applications/luci-app-commands/po/hu/commands.po
new file mode 100644 (file)
index 0000000..178cb7d
--- /dev/null
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-01-24 18:47+0200\n"
+"Last-Translator: Gábor <vargalex@freemail.hu>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "A beállított parancs rövid szöveges leírása"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Engedélyezi a parancs végrehajtását és kimenetének letöltését előzetes "
+"hitelesítés nélkül"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "A felhasználó által további parancsori argumentumok adhatók meg"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumentumok:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Bináris adat nem jelenik meg, töltse le helyette."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Kód:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Adatgyűjtés..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Paracs"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Parancs végrehajtás sikertelen"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Futtatandó parancssor"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Parancs végrehajtás sikeres"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Parancs:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Beállítás"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Egyedi parancsok"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Egyedi argumentumok"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Vezérlőpult"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Leírás"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Letöltés"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Parancs végrehajtása sikertelen!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Betöltés"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Nyilvános hozzáférés"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Futtatás"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Ezen az oldalon egyéni shell parancsokat állíthat be, amelyeket könnyen "
+"felhasználhat a webes felületen."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Várakozás a parancs befejezésére..."
+
+#~ msgid "Access command with"
+#~ msgstr "Parancs hozzáférése"
diff --git a/package/luci/applications/luci-app-commands/po/it/commands.po b/package/luci/applications/luci-app-commands/po/it/commands.po
new file mode 100644 (file)
index 0000000..373cee0
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-02-03 13:52+0200\n"
+"Last-Translator: Francesco <3gasas@gmail.com>\n"
+"Language-Team: none\n"
+"Language: it\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Una breve descrizione testuale del comando configurato"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Consentire l'esecuzione del comando e il download del suo output senza "
+"previa autenticazione"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+"Consente all'utente di fornire ulteriori argomenti della riga di comando"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argomenti:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "I dati binari non vengono visualizzati, ma possono essere scaricati."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Codice:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Raccolta dei dati..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Comando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Comando fallito"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Riga di comando da eseguire"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Comando riuscito"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Comando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configura"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Comandi Personalizzati"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Argomenti Personalizzati"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descrizione"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Download"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Impossibile eseguire il comando!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Collegamento"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Caricamento"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Accesso Pubblico"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Esegui"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Questa pagina consente di configurare i comandi della shell personalizzate "
+"che possono essere facilmente richiamati dall'interfaccia web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "In attesa del comando da completare..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accesso comando con"
diff --git a/package/luci/applications/luci-app-commands/po/ja/commands.po b/package/luci/applications/luci-app-commands/po/ja/commands.po
new file mode 100644 (file)
index 0000000..ae18560
--- /dev/null
@@ -0,0 +1,148 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-01-21 18:09+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language-Team: none\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"
+"POT-Creation-Date: \n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "設定したコマンドの簡単な説明文を記載します"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr "事前認証無しでのコマンドの実行と、結果出力のダウンロードを許可します。"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "コマンドラインに対する引数の追記を許可するか設定します"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "引数:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "バイナリデータは表示されずにダウンロードされます。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "コード:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "コマンド"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "コマンドの実行に成功しました。"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "コマンドは次のステータス コードで終了しました:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "コマンド失敗"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "実行するコマンドラインを記載します"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "コマンド成功"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "コマンド:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "設定"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "カスタムコマンド"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "カスタム引数"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "ダッシュボード"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "説明"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "ダウンロード"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "実行結果のダウンロード:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "コマンドの実行に失敗しました!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "リンク"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "読み込み中"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "または結果の表示:"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "パブリック・アクセス"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "実行"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "標準エラー"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "標準出力"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"このページでは、ウェブインターフェースから簡単にシェル・コマンドを実行するこ"
+"とができます。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "コマンド実行中です..."
+
+#~ msgid "Access command with"
+#~ msgstr "コマンドへのアクセス"
diff --git a/package/luci/applications/luci-app-commands/po/ms/commands.po b/package/luci/applications/luci-app-commands/po/ms/commands.po
new file mode 100644 (file)
index 0000000..22580af
--- /dev/null
@@ -0,0 +1,138 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/no/commands.po b/package/luci/applications/luci-app-commands/po/no/commands.po
new file mode 100644 (file)
index 0000000..cfc8b1f
--- /dev/null
@@ -0,0 +1,149 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-03-25 23:38+0200\n"
+"Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language-Team: none\n"
+"Language: no\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "En kort tekstlig beskrivelse av den konfigurerte kommandoen"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Tillat å utføre kommandoen og laste ned resultatet uten forutgående "
+"godkjenning"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Tillat brukeren å gi ytterligere kommandolinjeargumenter"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumenter:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Binære data vises ikke, last ned i stedet."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Kode:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Henter data..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Kommando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Kommando feilet"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Kommandolinje å utføre"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Kommando vellykket"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Kommando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Konfigurer"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Egendefinerte Kommandoer"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Egendefinerte argumenter"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Nedlasting"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Kunne ikke utføre kommandoen!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Laster"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Tilgjengelig for alle"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Kjør"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Denne siden lar deg konfigurere egendefinerte shell-kommandoer som lett kan "
+"startes fra webgrensesnittet."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Venter på at kommandoen fullføres..."
+
+#~ msgid "Access command with"
+#~ msgstr "Åpne kommandoen med"
diff --git a/package/luci/applications/luci-app-commands/po/pl/commands.po b/package/luci/applications/luci-app-commands/po/pl/commands.po
new file mode 100644 (file)
index 0000000..1e5aa68
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-02-25 18:03+0200\n"
+"Last-Translator: TheTranslator2238 <mateusz2238@outlook.com>\n"
+"Language-Team: none\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Krótki opis konfigurowanej komendy"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Zezwól na uruchomienie komendy i pobranie wyjścia bez uprzedniego "
+"uwierzytelnienia"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Pozwól użytkownikowi dodać argumenty wiersza poleceń"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumenty:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Nie wyświetlono danych binarnych, możesz je pobrać."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Kod:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Zbieram dane:"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Komenda"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Zła komenda"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Linia Komendy do wykonania"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Komenda Wykonana"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Komenda:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Konfiguracja"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Własne komendy"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Własne argumenty"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Tablica"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Opis"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Download"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Nie można wykonać komendy!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Łącze"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Ładowanie"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Publiczny dostęp"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Uruchom"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Ta strona pozwala ci skonfigurować niestandardową komendę którą można łatwo "
+"użyć z Web Interfejsa"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Czekanie na wykonanie komendy..."
+
+#~ msgid "Access command with"
+#~ msgstr "Dostęp do komendy przez"
diff --git a/package/luci/applications/luci-app-commands/po/pt-br/commands.po b/package/luci/applications/luci-app-commands/po/pt-br/commands.po
new file mode 100644 (file)
index 0000000..07476fc
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"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: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Uma pequena descrição textual do comando configurado"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permitir a execução do comando e descarregar o resultado sem autenticação "
+"prévia"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permitir ao usuário inserir argumentos de linha de comando adicionais"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumentos:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Dados binários não mostrados, mas podem ser baixados."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Código:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Adquirindo dados..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Comando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "O comando executou com sucesso."
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "O comando encerrou com um estado de erro"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "O comando falhou"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Linha de comandos a executar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Comando executado com sucesso"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Comando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configurar"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Comandos Personalizados"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Argumentos personalizados"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Painel de Controle"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descrição"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Baixar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "Baixar os resultados da execução"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Falha ao executar comando!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Endereço"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Carregando"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "Ou mostre o resultado"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Acesso público"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Executar"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "Saída de Erro"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "Saída Padrão"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Esta página permite a configuração de comandos personalizados que podem ser "
+"facilmente executados através da interface web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Aguardando a conclusão do comando..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acessar o comando com"
diff --git a/package/luci/applications/luci-app-commands/po/pt/commands.po b/package/luci/applications/luci-app-commands/po/pt/commands.po
new file mode 100644 (file)
index 0000000..818e2ef
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-06-02 19:17+0200\n"
+"Last-Translator: joao.f.vieira <joao.f.vieira@gmail.com>\n"
+"Language-Team: none\n"
+"Language: pt\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Uma pequena descrição textual do comando configurado"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permitir a execução do comando e descarregar o resultado sem autenticação "
+"prévia"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+"Permitir que o utilizador forneça argumentos adicionais na linha de comandos"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argumentos:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Dados binários não mostrados, mas pode descarregar."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Código:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "A obter dados..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Comando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "O comando falhou"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Linha de comandos a executar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Comando executado com sucesso"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Comando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configurar"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Comandos Personalizados"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Argumentos personalizados"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Painel de Controlo"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descrição"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Descarregar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Falha ao executar comando!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "A carregar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Acesso público"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Executar"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Esta página permite-lhe configurar uma linha de comandos personalizada que "
+"pode facilmente ser executada a partir da interface web."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "A aguardar que o comando termine..."
+
+#~ msgid "Access command with"
+#~ msgstr "Aceder ao comando com"
diff --git a/package/luci/applications/luci-app-commands/po/ro/commands.po b/package/luci/applications/luci-app-commands/po/ro/commands.po
new file mode 100644 (file)
index 0000000..3682059
--- /dev/null
@@ -0,0 +1,150 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-28 18:45+0200\n"
+"Last-Translator: xxvirusxx <condor20_05@yahoo.it>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "O scurta descriere textuala a comenzii configurate"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permite executarea comenzii si descarcarea rezultatului fara o autentificare "
+"anterioara"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permite utilizatorului sa adauge parametrii in linia de comanda"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Parametrii:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Datele binare nu sunt afisate, descarcale in schimb"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Cod:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Colectare date..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Comandă"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Comandă eşuată"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Linie de comanda pentru a executa"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Comanda reusita"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Comanda:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Configureaza"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Comenzi particulare"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Argumenta particulare"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Descriere"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Descarca"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "S-a esuat executarea comenzii!!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Link"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Se incarca"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Access public"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Ruleaza"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Aceasta pagina permite configurarea de comenzi personale ce pot fi usor "
+"apelate din interfata grafica"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Astept finalizarea comenzii..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acces la comanda cu"
diff --git a/package/luci/applications/luci-app-commands/po/ru/commands.po b/package/luci/applications/luci-app-commands/po/ru/commands.po
new file mode 100644 (file)
index 0000000..97f6662
--- /dev/null
@@ -0,0 +1,153 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: commands\n"
+"POT-Creation-Date: 2013-10-15 16:48+0300\n"
+"PO-Revision-Date: 2018-01-14 11:42+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "Короткое текстовое описание команды"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Разрешить выполнение команды и загрузку ее выходных данных без ввода пароля "
+"пользователя"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+"Разрешить пользователю предоставлять дополнительные аргументы командной "
+"строки"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Аргументы:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Двоичные данные не отображаются, вместо этого загружаются."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Код:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Команда"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "Команда выполнена успешно."
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "Команда вышла с кодом состояния."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Ошибка команды"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Командная строка<br />для выполнения"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Команда выполнена"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Команда:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Настройка панели управления"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Пользовательские команды"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Пользовательские аргументы"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Панель управления"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Описание"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Скачать"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "Результат выполнения загрузки"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Ошибка выполнения команды!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Ссылка"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Загрузка"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "Или отобразить результат"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Публичный доступ"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Запуск"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "Стандартная ошибка"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "Стандартный вывод"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Страница позволяет настроить выполнение консольных команд пользователя, "
+"которые могут быть легко вызваны из веб-интерфейса по нажатию "
+"соответствующей кнопки. Здесь вы можете подписать кнопки и указать команды."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Ожидание завершения выполнения команды..."
diff --git a/package/luci/applications/luci-app-commands/po/sk/commands.po b/package/luci/applications/luci-app-commands/po/sk/commands.po
new file mode 100644 (file)
index 0000000..0fe34ef
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/sv/commands.po b/package/luci/applications/luci-app-commands/po/sv/commands.po
new file mode 100644 (file)
index 0000000..f983eb3
--- /dev/null
@@ -0,0 +1,144 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "En kort textuell beskrivning av det inställda kommandot"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Tillåt att kommandot kan köras och ladda ner dess utmatning utan föregående "
+"autentisering"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Tillåt användaren att tillge extra kommandoradsargument"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "Argument:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "Binärdatan visades inte, ladda ner istället."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Kod:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "Kommando"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "Kommandot utfördes korrekt"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "Kommandot avslutade med statuskod"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Kommandot misslyckades"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "Kommandorad att exekvera"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "Kommandot lyckades"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "Kommando:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Ställ in"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "Anpassade kommandon"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "Anpassade argument"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "Instrumentpanel"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Beskrivning"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Ladda ner"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "Resultatet av nerladdningen"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "Misslyckade med att köra kommando!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "Länk"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Laddar"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "Eller visa resultat"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Publik tillgång"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Kör"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "Standardfel"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "Standardinmatning"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Den här sidan tillåter dig att ställa in anpassade skalkommandon som lättast "
+"kan åberopas från webbgränssnittet."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "Väntar på att kommandot ska slutföras..."
diff --git a/package/luci/applications/luci-app-commands/po/templates/commands.pot b/package/luci/applications/luci-app-commands/po/templates/commands.pot
new file mode 100644 (file)
index 0000000..ed0d490
--- /dev/null
@@ -0,0 +1,132 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/tr/commands.po b/package/luci/applications/luci-app-commands/po/tr/commands.po
new file mode 100644 (file)
index 0000000..602230a
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/uk/commands.po b/package/luci/applications/luci-app-commands/po/uk/commands.po
new file mode 100644 (file)
index 0000000..8bb94f9
--- /dev/null
@@ -0,0 +1,151 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-08-14 12:14+0200\n"
+"Last-Translator: zubr_139 <zubr139@ukr.net>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+#, fuzzy
+msgid "A short textual description of the configured command"
+msgstr "Короткий опис команд налаштування"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+#, fuzzy
+msgid "Arguments:"
+msgstr "Аргументи:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "Код:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "Збирання даних..."
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "Команда не виконана"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "Конфігурація"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+#, fuzzy
+msgid "Dashboard"
+msgstr "Панель керування"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "Опис"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "Завантажити"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+#, fuzzy
+msgid "Failed to execute command!"
+msgstr "Помилка під час запуску команди!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "Триває завантаження"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "Відкритий доступ"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "Запустити"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+#, fuzzy
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Ця сторінка дозволяє налаштувати користувацькі команди оболонки, яка може "
+"бути легко запущена з веб-інтерфейсу."
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+#, fuzzy
+msgid "Waiting for command to complete..."
+msgstr "Очікування завершення команди..."
diff --git a/package/luci/applications/luci-app-commands/po/vi/commands.po b/package/luci/applications/luci-app-commands/po/vi/commands.po
new file mode 100644 (file)
index 0000000..602230a
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr ""
diff --git a/package/luci/applications/luci-app-commands/po/zh-cn/commands.po b/package/luci/applications/luci-app-commands/po/zh-cn/commands.po
new file mode 100644 (file)
index 0000000..006d657
--- /dev/null
@@ -0,0 +1,149 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2018-08-07 17:23+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"POT-Creation-Date: \n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "简短描述命令用途"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr "允许直接执行命令并获取其输出,无须事先验证。"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "允许用户提供额外的命令行参数"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "参数:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "二进制数据未显示,以下载替代。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "状态码:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "正在收集数据…"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "命令"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "命令成功执行。"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "命令退出,状态码:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "执行命令失败"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "执行命令行"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "执行命令成功"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "命令:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "配置"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "自定义命令"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "自定义参数"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "看板"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "描述"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "下载"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "下载执行结果"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "执行命令失败!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "连接"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "加载中"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "显示执行结果"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "公开访问"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "运行"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "标准错误流"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "标准输出流"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr "此页面允许您配置自定义 Shell 命令,并可以从 Web 界面调用。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "正在等待命令完成…"
+
+#~ msgid "Command exited with status code "
+#~ msgstr "命令退出,状态码:"
diff --git a/package/luci/applications/luci-app-commands/po/zh-tw/commands.po b/package/luci/applications/luci-app-commands/po/zh-tw/commands.po
new file mode 100644 (file)
index 0000000..9db77ac
--- /dev/null
@@ -0,0 +1,150 @@
+#
+# omnistack <omnistack@gmail.com>, 2014
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2018-08-07 17:24+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"POT-Creation-Date: \n"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:16
+msgid "A short textual description of the configured command"
+msgstr "簡短描述指令用途"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:25
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr "允許直接執行指令並獲取其輸出,無須事先驗證。"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:22
+msgid "Allow the user to provide additional command line arguments"
+msgstr "允許使用者提供額外的指令列引數"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:146
+msgid "Arguments:"
+msgstr "引數:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:66
+msgid "Binary data not displayed, download instead."
+msgstr "二進位資料未顯示,以下載替代。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:71
+msgid "Code:"
+msgstr "狀態碼:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:164
+msgid "Collecting data..."
+msgstr "正在收集資料…"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:18
+msgid "Command"
+msgstr "指令"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:30
+msgid "Command executed successfully."
+msgstr "指令成功執行。"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:32
+msgid "Command exited with status code"
+msgstr "指令退出,狀態碼:"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command failed"
+msgstr "執行指令失敗"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:19
+msgid "Command line to execute"
+msgstr "執行指令列"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:73
+msgid "Command successful"
+msgstr "執行指令成功"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:144
+msgid "Command:"
+msgstr "指令:"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:9
+msgid "Configure"
+msgstr "配置"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:7
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:6
+#: applications/luci-app-commands/luasrc/view/commands.htm:138
+msgid "Custom Commands"
+msgstr "自訂指令集"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:21
+msgid "Custom arguments"
+msgstr "自訂參數集"
+
+#: applications/luci-app-commands/luasrc/controller/commands.lua:8
+msgid "Dashboard"
+msgstr "儀表板"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:15
+msgid "Description"
+msgstr "描述"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:150
+msgid "Download"
+msgstr "下載"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Download execution result"
+msgstr "下載執行結果"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:79
+msgid "Failed to execute command!"
+msgstr "執行指令失敗!"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:152
+msgid "Link"
+msgstr "連線"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:53
+msgid "Loading"
+msgstr "載入中"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:119
+msgid "Or display result"
+msgstr "顯示執行結果"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:24
+msgid "Public access"
+msgstr "公開訪問"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:149
+msgid "Run"
+msgstr "執行"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:41
+msgid "Standard Error"
+msgstr "標準錯誤流"
+
+#: applications/luci-app-commands/luasrc/view/commands_public.htm:36
+msgid "Standard Output"
+msgstr "標準輸出流"
+
+#: applications/luci-app-commands/luasrc/model/cbi/commands.lua:7
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr "此頁面允許您配置自訂 Shell 指令,並可以從 Web 介面呼叫。"
+
+#: applications/luci-app-commands/luasrc/view/commands.htm:54
+msgid "Waiting for command to complete..."
+msgstr "正在等待指令完成…"
+
+#~ msgid "Command exited with status code "
+#~ msgstr "指令退出,狀態碼:"
diff --git a/package/luci/applications/luci-app-firewall/Makefile b/package/luci/applications/luci-app-firewall/Makefile
new file mode 100644 (file)
index 0000000..4fa85f2
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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:=Firewall and Portforwarding application
+LUCI_DEPENDS:=+firewall
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua b/package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua
new file mode 100644 (file)
index 0000000..4fe7770
--- /dev/null
@@ -0,0 +1,23 @@
+module("luci.controller.firewall", package.seeall)
+
+function index()
+       entry({"admin", "network", "firewall"},
+               alias("admin", "network", "firewall", "zones"),
+               _("Firewall"), 60)
+
+       entry({"admin", "network", "firewall", "zones"},
+               arcombine(cbi("firewall/zones"), cbi("firewall/zone-details")),
+               _("General Settings"), 10).leaf = true
+
+       entry({"admin", "network", "firewall", "forwards"},
+               arcombine(cbi("firewall/forwards"), cbi("firewall/forward-details")),
+               _("Port Forwards"), 20).leaf = true
+
+       entry({"admin", "network", "firewall", "rules"},
+               arcombine(cbi("firewall/rules"), cbi("firewall/rule-details")),
+               _("Traffic Rules"), 30).leaf = true
+
+       entry({"admin", "network", "firewall", "custom"},
+               form("firewall/custom"),
+               _("Custom Rules"), 40).leaf = true
+end
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
new file mode 100644 (file)
index 0000000..21a1b27
--- /dev/null
@@ -0,0 +1,31 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+
+local f = SimpleForm("firewall",
+       translate("Firewall - Custom Rules"),
+       translate("Custom rules allow you to execute arbitrary iptables commands \
+               which are not otherwise covered by the firewall framework. \
+               The commands are executed after each firewall restart, right after \
+               the default ruleset has been loaded."))
+
+local o = f:field(Value, "_custom")
+
+o.template = "cbi/tvalue"
+o.rows = 20
+
+function o.cfgvalue(self, section)
+       return fs.readfile("/etc/firewall.user")
+end
+
+function o.write(self, section, value)
+       value = value:gsub("\r\n?", "\n")
+       fs.writefile("/etc/firewall.user", value)
+       require("luci.sys").call("/etc/init.d/firewall restart >/dev/null 2<&1")
+       require("nixio").syslog('info', 'Restarting firewall on custom /etc/firewall.user change')
+end
+
+f.submit = translate("Restart Firewall")
+
+return f
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua
new file mode 100644 (file)
index 0000000..d51f8fb
--- /dev/null
@@ -0,0 +1,162 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local sys = require "luci.sys"
+local dsp = require "luci.dispatcher"
+local ft  = require "luci.tools.firewall"
+
+local m, s, o
+
+arg[1] = arg[1] or ""
+
+m = Map("firewall",
+       translate("Firewall - Port Forwards"),
+       translate("This page allows you to change advanced properties of the port \
+                  forwarding entry. In most cases there is no need to modify \
+                          those settings."))
+
+m.redirect = dsp.build_url("admin/network/firewall/forwards")
+
+if m.uci:get("firewall", arg[1]) ~= "redirect" then
+       luci.http.redirect(m.redirect)
+       return
+else
+       local name = m:get(arg[1], "name") or m:get(arg[1], "_name")
+       if not name or #name == 0 then
+               name = translate("(Unnamed Entry)")
+       end
+       m.title = "%s - %s" %{ translate("Firewall - Port Forwards"), name }
+end
+
+s = m:section(NamedSection, arg[1], "redirect", "")
+s.anonymous = true
+s.addremove = false
+
+ft.opt_enabled(s, Button)
+ft.opt_name(s, Value, translate("Name"))
+
+
+o = s:option(Value, "proto", translate("Protocol"))
+o:value("tcp udp", "TCP+UDP")
+o:value("tcp", "TCP")
+o:value("udp", "UDP")
+o:value("icmp", "ICMP")
+
+function o.cfgvalue(...)
+       local v = Value.cfgvalue(...)
+       if not v or v == "tcpudp" then
+               return "tcp udp"
+       end
+       return v
+end
+
+
+o = s:option(Value, "src", translate("Source zone"))
+o.nocreate = true
+o.default = "wan"
+o.template = "cbi/firewall_zonelist"
+o.rmempty = false
+
+
+o = s:option(DynamicList, "src_mac",
+       translate("Source MAC address"),
+       translate("Only match incoming traffic from these MACs."))
+o.rmempty = true
+o.datatype = "neg(macaddr)"
+o.placeholder = translate("any")
+
+luci.sys.net.mac_hints(function(mac, name)
+       o:value(mac, "%s (%s)" %{ mac, name })
+end)
+
+
+o = s:option(Value, "src_ip",
+       translate("Source IP address"),
+       translate("Only match incoming traffic from this IP or range."))
+o.rmempty = true
+o.datatype = "neg(ipmask4)"
+o.placeholder = translate("any")
+
+luci.sys.net.ipv4_hints(function(ip, name)
+       o:value(ip, "%s (%s)" %{ ip, name })
+end)
+
+
+o = s:option(Value, "src_port",
+       translate("Source port"),
+       translate("Only match incoming traffic originating from the given source port or port range on the client host"))
+o.rmempty = true
+o.datatype = "neg(portrange)"
+o.placeholder = translate("any")
+
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
+
+o = s:option(Value, "src_dip",
+       translate("External IP address"),
+       translate("Only match incoming traffic directed at the given IP address."))
+
+luci.sys.net.ipv4_hints(function(ip, name)
+       o:value(ip, "%s (%s)" %{ ip, name })
+end)
+
+
+o.rmempty = true
+o.datatype = "neg(ipmask4)"
+o.placeholder = translate("any")
+
+
+o = s:option(Value, "src_dport", translate("External port"),
+       translate("Match incoming traffic directed at the given " ..
+               "destination port or port range on this host"))
+o.datatype = "neg(portrange)"
+
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
+
+o = s:option(Value, "dest", translate("Internal zone"))
+o.nocreate = true
+o.default = "lan"
+o.template = "cbi/firewall_zonelist"
+
+
+o = s:option(Value, "dest_ip", translate("Internal IP address"),
+       translate("Redirect matched incoming traffic to the specified \
+               internal host"))
+o.datatype = "ipmask4"
+
+luci.sys.net.ipv4_hints(function(ip, name)
+       o:value(ip, "%s (%s)" %{ ip, name })
+end)
+
+
+o = s:option(Value, "dest_port",
+       translate("Internal port"),
+       translate("Redirect matched incoming traffic to the given port on \
+               the internal host"))
+o.placeholder = translate("any")
+o.datatype = "portrange"
+
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
+
+o = s:option(Flag, "reflection", translate("Enable NAT Loopback"))
+o.rmempty = true
+o.default = o.enabled
+o.cfgvalue = function(...)
+       return Flag.cfgvalue(...) or "1"
+end
+
+
+s:option(Value, "extra",
+       translate("Extra arguments"),
+       translate("Passes additional arguments to iptables. Use with care!"))
+
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua
new file mode 100644 (file)
index 0000000..5d1ffe0
--- /dev/null
@@ -0,0 +1,133 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local ft = require "luci.tools.firewall"
+
+m = Map("firewall", translate("Firewall - Port Forwards"),
+       translate("Port forwarding allows remote computers on the Internet to \
+                  connect to a specific computer or service within the \
+                  private LAN."))
+
+--
+-- Port Forwards
+--
+
+s = m:section(TypedSection, "redirect", translate("Port Forwards"))
+s.template  = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+s.sortable  = true
+s.extedit   = ds.build_url("admin/network/firewall/forwards/%s")
+s.template_addremove = "firewall/cbi_addforward"
+
+function s.create(self, section)
+       local n = m:formvalue("_newfwd.name")
+       local p = m:formvalue("_newfwd.proto")
+       local E = m:formvalue("_newfwd.extzone")
+       local e = m:formvalue("_newfwd.extport")
+       local I = m:formvalue("_newfwd.intzone")
+       local a = m:formvalue("_newfwd.intaddr")
+       local i = m:formvalue("_newfwd.intport")
+
+       if p == "other" or (p and a) then
+               created = TypedSection.create(self, section)
+
+               self.map:set(created, "target",    "DNAT")
+               self.map:set(created, "src",       E or "wan")
+               self.map:set(created, "dest",      I or "lan")
+               self.map:set(created, "proto",     (p ~= "other") and p or "all")
+               self.map:set(created, "src_dport", e)
+               self.map:set(created, "dest_ip",   a)
+               self.map:set(created, "dest_port", i)
+               self.map:set(created, "name",      n)
+       end
+
+       if p ~= "other" then
+               created = nil
+       end
+end
+
+function s.parse(self, ...)
+       TypedSection.parse(self, ...)
+       if created then
+               m.uci:save("firewall")
+               luci.http.redirect(ds.build_url(
+                       "admin/network/firewall/forwards", created
+               ))
+       end
+end
+
+function s.filter(self, sid)
+       return (self.map:get(sid, "target") ~= "SNAT")
+end
+
+function s.sectiontitle(self, sid)
+       return (self.map:get(sid, "name") or translate("Unnamed forward"))
+end
+
+
+local function forward_proto_txt(self, s)
+       return "%s-%s" %{
+               translate("IPv4"),
+               ft.fmt_proto(self.map:get(s, "proto"),
+                        self.map:get(s, "icmp_type")) or "TCP+UDP"
+       }
+end
+
+local function forward_src_txt(self, s)
+       local z = ft.fmt_zone(self.map:get(s, "src"), translate("any zone"))
+       local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host"))
+       local p = ft.fmt_port(self.map:get(s, "src_port"))
+       local m = ft.fmt_mac(self.map:get(s, "src_mac"))
+
+       if p and m then
+               return translatef("From %s in %s with source %s and %s", a, z, p, m)
+       elseif p or m then
+               return translatef("From %s in %s with source %s", a, z, p or m)
+       else
+               return translatef("From %s in %s", a, z)
+       end
+end
+
+local function forward_via_txt(self, s)
+       local a = ft.fmt_ip(self.map:get(s, "src_dip"), translate("any router IP"))
+       local p = ft.fmt_port(self.map:get(s, "src_dport"))
+
+       if p then
+               return translatef("Via %s at %s", a, p)
+       else
+               return translatef("Via %s", a)
+       end
+end
+
+match = s:option(DummyValue, "match", translate("Match"))
+match.rawhtml = true
+function match.cfgvalue(self, s)
+       return "<small>%s<br />%s<br />%s</small>" % {
+               forward_proto_txt(self, s),
+               forward_src_txt(self, s),
+               forward_via_txt(self, s)
+       }
+end
+
+
+dest = s:option(DummyValue, "dest", translate("Forward to"))
+dest.rawhtml = true
+function dest.cfgvalue(self, s)
+       local z = ft.fmt_zone(self.map:get(s, "dest"), translate("any zone"))
+       local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host"))
+       local p = ft.fmt_port(self.map:get(s, "dest_port")) or
+               ft.fmt_port(self.map:get(s, "src_dport"))
+
+       if p then
+               return translatef("%s, %s in %s", a, p, z)
+       else
+               return translatef("%s in %s", a, z)
+       end
+end
+
+ft.opt_enabled(s, Flag, translate("Enable"))
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua
new file mode 100644 (file)
index 0000000..def01c6
--- /dev/null
@@ -0,0 +1,365 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+local dsp = require "luci.dispatcher"
+local ft = require "luci.tools.firewall"
+local nw = require "luci.model.network"
+local m, s, o, v, _
+
+arg[1] = arg[1] or ""
+
+m = Map("firewall",
+       translate("Firewall - Traffic Rules"),
+       translate("This page allows you to change advanced properties of the \
+                  traffic rule entry, such as matched source and destination \
+                          hosts."))
+
+m.redirect = dsp.build_url("admin/network/firewall/rules")
+
+nw.init(m.uci)
+
+local rule_type = m.uci:get("firewall", arg[1])
+if rule_type == "redirect" and m:get(arg[1], "target") ~= "SNAT" then
+       rule_type = nil
+end
+
+if not rule_type then
+       luci.http.redirect(m.redirect)
+       return
+
+--
+-- SNAT
+--
+elseif rule_type == "redirect" then
+
+       local name = m:get(arg[1], "name") or m:get(arg[1], "_name")
+       if not name or #name == 0 then
+               name = translate("(Unnamed SNAT)")
+       else
+               name = "SNAT %s" % name
+       end
+
+       m.title = "%s - %s" %{ translate("Firewall - Traffic Rules"), name }
+
+       s = m:section(NamedSection, arg[1], "redirect", "")
+       s.anonymous = true
+       s.addremove = false
+
+
+       ft.opt_enabled(s, Button)
+       ft.opt_name(s, Value, translate("Name"))
+
+
+       o = s:option(Value, "proto",
+               translate("Protocol"),
+               translate("You may specify multiple by selecting \"-- custom --\" and \
+                          then entering protocols separated by space."))
+
+       o:value("all", "All protocols")
+       o:value("tcp udp", "TCP+UDP")
+       o:value("tcp", "TCP")
+       o:value("udp", "UDP")
+       o:value("icmp", "ICMP")
+
+       function o.cfgvalue(...)
+               local v = Value.cfgvalue(...)
+               if not v or v == "tcpudp" then
+                       return "tcp udp"
+               end
+               return v
+       end
+
+
+       o = s:option(Value, "src", translate("Source zone"))
+       o.nocreate = true
+       o.default = "wan"
+       o.template = "cbi/firewall_zonelist"
+
+
+       o = s:option(Value, "src_ip", translate("Source IP address"))
+       o.rmempty = true
+       o.datatype = "neg(ipmask4)"
+       o.placeholder = translate("any")
+
+       luci.sys.net.ipv4_hints(function(ip, name)
+               o:value(ip, "%s (%s)" %{ ip, name })
+       end)
+
+
+       o = s:option(Value, "src_port",
+               translate("Source port"),
+               translate("Match incoming traffic originating from the given source \
+                       port or port range on the client host."))
+       o.rmempty = true
+       o.datatype = "neg(portrange)"
+       o.placeholder = translate("any")
+
+       o:depends("proto", "tcp")
+       o:depends("proto", "udp")
+       o:depends("proto", "tcp udp")
+       o:depends("proto", "tcpudp")
+
+       o = s:option(Value, "dest", translate("Destination zone"))
+       o.nocreate = true
+       o.default = "lan"
+       o.template = "cbi/firewall_zonelist"
+
+
+       o = s:option(Value, "dest_ip", translate("Destination IP address"))
+       o.datatype = "neg(ipmask4)"
+
+       luci.sys.net.ipv4_hints(function(ip, name)
+               o:value(ip, "%s (%s)" %{ ip, name })
+       end)
+
+
+       o = s:option(Value, "dest_port",
+               translate("Destination port"),
+               translate("Match forwarded traffic to the given destination port or \
+                       port range."))
+
+       o.rmempty = true
+       o.placeholder = translate("any")
+       o.datatype = "neg(portrange)"
+
+       o:depends("proto", "tcp")
+       o:depends("proto", "udp")
+       o:depends("proto", "tcp udp")
+       o:depends("proto", "tcpudp")
+
+       o = s:option(Value, "src_dip",
+               translate("SNAT IP address"),
+               translate("Rewrite matched traffic to the given address."))
+       o.rmempty = false
+       o.datatype = "ip4addr"
+
+       for _, v in ipairs(nw:get_interfaces()) do
+               local a
+               for _, a in ipairs(v:ipaddrs()) do
+                       o:value(a:host():string(), '%s (%s)' %{
+                               a:host():string(), v:shortname()
+                       })
+               end
+       end
+
+
+       o = s:option(Value, "src_dport", translate("SNAT port"),
+               translate("Rewrite matched traffic to the given source port. May be \
+                       left empty to only rewrite the IP address."))
+       o.datatype = "portrange"
+       o.rmempty = true
+       o.placeholder = translate('Do not rewrite')
+
+       o:depends("proto", "tcp")
+       o:depends("proto", "udp")
+       o:depends("proto", "tcp udp")
+       o:depends("proto", "tcpudp")
+
+       s:option(Value, "extra",
+               translate("Extra arguments"),
+               translate("Passes additional arguments to iptables. Use with care!"))
+
+
+--
+-- Rule
+--
+else
+       local name = m:get(arg[1], "name") or m:get(arg[1], "_name")
+       if not name or #name == 0 then
+               name = translate("(Unnamed Rule)")
+       end
+
+       m.title = "%s - %s" %{ translate("Firewall - Traffic Rules"), name }
+
+
+       s = m:section(NamedSection, arg[1], "rule", "")
+       s.anonymous = true
+       s.addremove = false
+
+       ft.opt_enabled(s, Button)
+       ft.opt_name(s, Value, translate("Name"))
+
+
+       o = s:option(ListValue, "family", translate("Restrict to address family"))
+       o.rmempty = true
+       o:value("", translate("IPv4 and IPv6"))
+       o:value("ipv4", translate("IPv4 only"))
+       o:value("ipv6", translate("IPv6 only"))
+
+
+       o = s:option(Value, "proto", translate("Protocol"))
+       o:value("all", translate("Any"))
+       o:value("tcp udp", "TCP+UDP")
+       o:value("tcp", "TCP")
+       o:value("udp", "UDP")
+       o:value("icmp", "ICMP")
+
+       function o.cfgvalue(...)
+               local v = Value.cfgvalue(...)
+               if not v or v == "tcpudp" then
+                       return "tcp udp"
+               end
+               return v
+       end
+
+
+       o = s:option(DropDown, "icmp_type", translate("Match ICMP type"))
+       o.multiple = true
+       o.display = 10
+       o.dropdown = 10
+       o.custom = true
+       o.cast = "table"
+
+       o:value("", "any")
+       o:value("echo-reply")
+       o:value("destination-unreachable")
+       o:value("network-unreachable")
+       o:value("host-unreachable")
+       o:value("protocol-unreachable")
+       o:value("port-unreachable")
+       o:value("fragmentation-needed")
+       o:value("source-route-failed")
+       o:value("network-unknown")
+       o:value("host-unknown")
+       o:value("network-prohibited")
+       o:value("host-prohibited")
+       o:value("TOS-network-unreachable")
+       o:value("TOS-host-unreachable")
+       o:value("communication-prohibited")
+       o:value("host-precedence-violation")
+       o:value("precedence-cutoff")
+       o:value("source-quench")
+       o:value("redirect")
+       o:value("network-redirect")
+       o:value("host-redirect")
+       o:value("TOS-network-redirect")
+       o:value("TOS-host-redirect")
+       o:value("echo-request")
+       o:value("router-advertisement")
+       o:value("router-solicitation")
+       o:value("time-exceeded")
+       o:value("ttl-zero-during-transit")
+       o:value("ttl-zero-during-reassembly")
+       o:value("parameter-problem")
+       o:value("ip-header-bad")
+       o:value("required-option-missing")
+       o:value("timestamp-request")
+       o:value("timestamp-reply")
+       o:value("address-mask-request")
+       o:value("address-mask-reply")
+
+       o:depends("proto", "icmp")
+
+
+       o = s:option(Value, "src", translate("Source zone"))
+       o.nocreate = true
+       o.allowany = true
+       o.allowlocal = "src"
+       o.template = "cbi/firewall_zonelist"
+
+
+       o = s:option(Value, "src_mac", translate("Source MAC address"))
+       o.datatype = "list(macaddr)"
+       o.placeholder = translate("any")
+
+       luci.sys.net.mac_hints(function(mac, name)
+               o:value(mac, "%s (%s)" %{ mac, name })
+       end)
+
+
+       o = s:option(Value, "src_ip", translate("Source address"))
+       o.datatype = "list(neg(ipmask))"
+       o.placeholder = translate("any")
+
+       luci.sys.net.ipv4_hints(function(ip, name)
+               o:value(ip, "%s (%s)" %{ ip, name })
+       end)
+
+
+       o = s:option(Value, "src_port", translate("Source port"))
+       o.datatype = "list(neg(portrange))"
+       o.placeholder = translate("any")
+
+       o:depends("proto", "tcp")
+       o:depends("proto", "udp")
+       o:depends("proto", "tcp udp")
+       o:depends("proto", "tcpudp")
+
+       o = s:option(Value, "dest_local", translate("Output zone"))
+       o.nocreate = true
+       o.allowany = true
+       o.template = "cbi/firewall_zonelist"
+       o.alias = "dest"
+       o:depends("src", "")
+
+       o = s:option(Value, "dest_remote", translate("Destination zone"))
+       o.nocreate = true
+       o.allowany = true
+       o.allowlocal = true
+       o.template = "cbi/firewall_zonelist"
+       o.alias = "dest"
+       o:depends({["src"] = "", ["!reverse"] = true})
+
+
+       o = s:option(Value, "dest_ip", translate("Destination address"))
+       o.datatype = "list(neg(ipmask))"
+       o.placeholder = translate("any")
+
+       luci.sys.net.ipv4_hints(function(ip, name)
+               o:value(ip, "%s (%s)" %{ ip, name })
+       end)
+
+
+       o = s:option(Value, "dest_port", translate("Destination port"))
+       o.datatype = "list(neg(portrange))"
+       o.placeholder = translate("any")
+
+       o:depends("proto", "tcp")
+       o:depends("proto", "udp")
+       o:depends("proto", "tcp udp")
+       o:depends("proto", "tcpudp")
+
+       o = s:option(ListValue, "target", translate("Action"))
+       o.default = "ACCEPT"
+       o:value("DROP", translate("drop"))
+       o:value("ACCEPT", translate("accept"))
+       o:value("REJECT", translate("reject"))
+       o:value("NOTRACK", translate("don't track"))
+
+
+       s:option(Value, "extra",
+               translate("Extra arguments"),
+               translate("Passes additional arguments to iptables. Use with care!"))
+end
+
+o = s:option(DropDown, "weekdays", translate("Week Days"))
+o.multiple = true
+o.display = 5
+o:value("Sun", translate("Sunday"))
+o:value("Mon", translate("Monday"))
+o:value("Tue", translate("Tuesday"))
+o:value("Wed", translate("Wednesday"))
+o:value("Thu", translate("Thursday"))
+o:value("Fri", translate("Friday"))
+o:value("Sat", translate("Saturday"))
+
+o = s:option(DropDown, "monthdays", translate("Month Days"))
+o.multiple = true
+o.display = 15
+for i = 1,31 do
+       o:value(translate(i))
+end
+
+o = s:option(Value, "start_time", translate("Start Time (hh:mm:ss)"))
+o.datatype = "timehhmmss"
+o = s:option(Value, "stop_time", translate("Stop Time (hh:mm:ss)"))
+o.datatype = "timehhmmss"
+o = s:option(Value, "start_date", translate("Start Date (yyyy-mm-dd)"))
+o.datatype = "dateyyyymmdd"
+o = s:option(Value, "stop_date", translate("Stop Date (yyyy-mm-dd)"))
+o.datatype = "dateyyyymmdd"
+
+o = s:option(Flag, "utc_time", translate("Time in UTC"))
+o.default = o.disabled
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua
new file mode 100644 (file)
index 0000000..f4b6b2a
--- /dev/null
@@ -0,0 +1,273 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local ft = require "luci.tools.firewall"
+
+m = Map("firewall",
+       translate("Firewall - Traffic Rules"),
+       translate("Traffic rules define policies for packets traveling between \
+               different zones, for example to reject traffic between certain hosts \
+               or to open WAN ports on the router."))
+
+--
+-- Rules
+--
+
+s = m:section(TypedSection, "rule", translate("Traffic Rules"))
+s.addremove = true
+s.anonymous = true
+s.sortable  = true
+s.template = "cbi/tblsection"
+s.extedit   = ds.build_url("admin/network/firewall/rules/%s")
+s.defaults.target = "ACCEPT"
+s.template_addremove = "firewall/cbi_addrule"
+
+
+function s.create(self, section)
+       created = TypedSection.create(self, section)
+end
+
+function s.parse(self, ...)
+       TypedSection.parse(self, ...)
+
+       local i_n = m:formvalue("_newopen.name")
+       local i_p = m:formvalue("_newopen.proto")
+       local i_e = m:formvalue("_newopen.extport")
+       local i_x = m:formvalue("_newopen.submit")
+
+       local f_n = m:formvalue("_newfwd.name")
+       local f_s = m:formvalue("_newfwd.src")
+       local f_d = m:formvalue("_newfwd.dest")
+       local f_x = m:formvalue("_newfwd.submit")
+
+       if i_x then
+               created = TypedSection.create(self, section)
+
+               self.map:set(created, "target",    "ACCEPT")
+               self.map:set(created, "src",       "wan")
+               self.map:set(created, "proto",     (i_p ~= "other") and i_p or "all")
+               self.map:set(created, "dest_port", i_e)
+               self.map:set(created, "name",      i_n)
+
+               if i_p ~= "other" and i_e and #i_e > 0 then
+                       created = nil
+               end
+
+       elseif f_x then
+               created = TypedSection.create(self, section)
+
+               self.map:set(created, "target", "ACCEPT")
+               self.map:set(created, "src",    f_s)
+               self.map:set(created, "dest",   f_d)
+               self.map:set(created, "name",   f_n)
+       end
+
+       if created then
+               m.uci:save("firewall")
+               luci.http.redirect(ds.build_url(
+                       "admin/network/firewall/rules", created
+               ))
+       end
+end
+
+function s.sectiontitle(self, sid)
+       return (self.map:get(sid, "name") or translate("Unnamed rule"))
+end
+
+local function rule_proto_txt(self, s)
+       local f = self.map:get(s, "family")
+       local p = ft.fmt_proto(self.map:get(s, "proto"),
+                              self.map:get(s, "icmp_type")) or translate("traffic")
+
+       if f and f:match("4") then
+               return "%s-%s" %{ translate("IPv4"), p }
+       elseif f and f:match("6") then
+               return "%s-%s" %{ translate("IPv6"), p }
+       else
+               return "%s %s" %{ translate("Any"), p }
+       end
+end
+
+local function rule_src_txt(self, s)
+       local z = ft.fmt_zone(self.map:get(s, "src"))
+       local p = ft.fmt_port(self.map:get(s, "src_port"))
+       local m = ft.fmt_mac(self.map:get(s, "src_mac"))
+
+       -- Forward/Input
+       if z and #z > 0 then
+               local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host"))
+               if p and m then
+                       return translatef("From %s in %s with source %s and %s", a, z, p, m)
+               elseif p or m then
+                       return translatef("From %s in %s with source %s", a, z, p or m)
+               else
+                       return translatef("From %s in %s", a, z)
+               end
+
+       -- Output
+       else
+               local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any router IP"))
+               if p and m then
+                       return translatef("From %s on <var>this device</var> with source %s and %s", a, p, m)
+               elseif p or m then
+                       return translatef("From %s on <var>this device</var> with source %s", a, p or m)
+               else
+                       return translatef("From %s on <var>this device</var>", a)
+               end
+       end
+end
+
+local function rule_dest_txt(self, s)
+       local z = ft.fmt_zone(self.map:get(s, "dest"))
+       local p = ft.fmt_port(self.map:get(s, "dest_port"))
+
+       -- Forward
+       if z then
+               local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host"))
+               if p then
+                       return translatef("To %s, %s in %s", a, p, z)
+               else
+                       return translatef("To %s in %s", a, z)
+               end
+
+       -- Input
+       else
+               local a = ft.fmt_ip(self.map:get(s, "dest_ip"),
+                       translate("any router IP"))
+
+               if p then
+                       return translatef("To %s at %s on <var>this device</var>", a, p)
+               else
+                       return translatef("To %s on <var>this device</var>", a)
+               end
+       end
+end
+
+local function snat_dest_txt(self, s)
+       local z = ft.fmt_zone(self.map:get(s, "dest"), translate("any zone"))
+       local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host"))
+       local p = ft.fmt_port(self.map:get(s, "dest_port")) or
+               ft.fmt_port(self.map:get(s, "src_dport"))
+
+       if p then
+               return translatef("To %s, %s in %s", a, p, z)
+       else
+               return translatef("To %s in %s", a, z)
+       end
+end
+
+
+match = s:option(DummyValue, "match", translate("Match"))
+match.rawhtml = true
+function match.cfgvalue(self, s)
+       return "<small>%s<br />%s<br />%s</small>" % {
+               rule_proto_txt(self, s),
+               rule_src_txt(self, s),
+               rule_dest_txt(self, s)
+       }
+end
+
+target = s:option(DummyValue, "target", translate("Action"))
+target.rawhtml = true
+function target.cfgvalue(self, s)
+       local t = ft.fmt_target(self.map:get(s, "target"), self.map:get(s, "src"), self.map:get(s, "dest"))
+       local l = ft.fmt_limit(self.map:get(s, "limit"),
+               self.map:get(s, "limit_burst"))
+
+       if l then
+               return translatef("<var>%s</var> and limit to %s", t, l)
+       else
+               return "<var>%s</var>" % t
+       end
+end
+
+ft.opt_enabled(s, Flag, translate("Enable"))
+
+
+--
+-- SNAT
+--
+
+s = m:section(TypedSection, "redirect",
+       translate("Source NAT"),
+       translate("Source NAT is a specific form of masquerading which allows \
+               fine grained control over the source IP used for outgoing traffic, \
+               for example to map multiple WAN addresses to internal subnets."))
+s.template  = "cbi/tblsection"
+s.addremove = true
+s.anonymous = true
+s.sortable  = true
+s.extedit   = ds.build_url("admin/network/firewall/rules/%s")
+s.template_addremove = "firewall/cbi_addsnat"
+
+function s.create(self, section)
+       created = TypedSection.create(self, section)
+end
+
+function s.parse(self, ...)
+       TypedSection.parse(self, ...)
+
+       local n = m:formvalue("_newsnat.name")
+       local s = m:formvalue("_newsnat.src")
+       local d = m:formvalue("_newsnat.dest")
+       local a = m:formvalue("_newsnat.dip")
+       local p = m:formvalue("_newsnat.dport")
+       local x = m:formvalue("_newsnat.submit")
+
+       if x and a and #a > 0 then
+               created = TypedSection.create(self, section)
+
+               self.map:set(created, "target",    "SNAT")
+               self.map:set(created, "src",       s)
+               self.map:set(created, "dest",      d)
+               self.map:set(created, "proto",     "all")
+               self.map:set(created, "src_dip",   a)
+               self.map:set(created, "src_dport", p)
+               self.map:set(created, "name",      n)
+       end
+
+       if created then
+               m.uci:save("firewall")
+               luci.http.redirect(ds.build_url(
+                       "admin/network/firewall/rules", created
+               ))
+       end
+end
+
+function s.filter(self, sid)
+       return (self.map:get(sid, "target") == "SNAT")
+end
+
+function s.sectiontitle(self, sid)
+       return (self.map:get(sid, "name") or translate("Unnamed SNAT"))
+end
+
+match = s:option(DummyValue, "match", translate("Match"))
+match.rawhtml = true
+function match.cfgvalue(self, s)
+       return "<small>%s<br />%s<br />%s</small>" % {
+               rule_proto_txt(self, s),
+               rule_src_txt(self, s),
+               snat_dest_txt(self, s)
+       }
+end
+
+snat = s:option(DummyValue, "via", translate("Action"))
+snat.rawhtml = true
+function snat.cfgvalue(self, s)
+       local a = ft.fmt_ip(self.map:get(s, "src_dip"))
+       local p = ft.fmt_port(self.map:get(s, "src_dport"))
+
+       if a and p then
+               return translatef("Rewrite to source %s, %s", a, p)
+       else
+               return translatef("Rewrite to source %s", a or p)
+       end
+end
+
+ft.opt_enabled(s, Flag, translate("Enable"))
+
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
new file mode 100644 (file)
index 0000000..e168c3c
--- /dev/null
@@ -0,0 +1,229 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local nw = require "luci.model.network"
+local fw = require "luci.model.firewall"
+local ds = require "luci.dispatcher"
+local ut = require "luci.util"
+
+local m, p, i, v
+local s, name, net, family, msrc, mdest, log, lim
+local s2, out, inp
+
+
+m = Map("firewall", translate("Firewall - Zone Settings"))
+m.redirect = luci.dispatcher.build_url("admin/network/firewall/zones")
+
+fw.init(m.uci)
+nw.init(m.uci)
+
+
+local zone = fw:get_zone(arg[1])
+if not zone then
+       luci.http.redirect(ds.build_url("admin/network/firewall/zones"))
+       return
+else
+       m.title = "%s - %s" %{
+               translate("Firewall - Zone Settings"),
+               translatef("Zone %q", zone:name() or "?")
+       }
+end
+
+
+s = m:section(NamedSection, zone.sid, "zone",
+       translatef("Zone %q", zone:name()),
+       translatef("This section defines common properties of %q. \
+               The <em>input</em> and <em>output</em> options set the default \
+               policies for traffic entering and leaving this zone while the \
+               <em>forward</em> option describes the policy for forwarded traffic \
+               between different networks within the zone. \
+               <em>Covered networks</em> specifies which available networks are \
+               members of this zone.", zone:name()))
+
+s.anonymous = true
+s.addremove = false
+
+m.on_commit = function(map)
+       local zone = fw:get_zone(arg[1])
+       if zone then
+               s.section  = zone.sid
+               s2.section = zone.sid
+       end
+end
+
+
+s:tab("general", translate("General Settings"))
+s:tab("advanced", translate("Advanced Settings"))
+
+
+name = s:taboption("general", Value, "name", translate("Name"))
+name.optional = false
+name.forcewrite = true
+name.datatype = "and(uciname,maxlength(11))"
+
+function name.write(self, section, value)
+       if zone:name() ~= value then
+               fw:rename_zone(zone:name(), value)
+               out.exclude = value
+               inp.exclude = value
+       end
+end
+
+p = {
+       s:taboption("general", ListValue, "input", translate("Input")),
+       s:taboption("general", ListValue, "output", translate("Output")),
+       s:taboption("general", ListValue, "forward", translate("Forward"))
+}
+
+for i, v in ipairs(p) do
+       v:value("REJECT", translate("reject"))
+       v:value("DROP", translate("drop"))
+       v:value("ACCEPT", translate("accept"))
+end
+
+s:taboption("general", Flag, "masq", translate("Masquerading"))
+s:taboption("general", Flag, "mtu_fix", translate("MSS clamping"))
+
+net = s:taboption("general", Value, "network", translate("Covered networks"))
+net.template = "cbi/network_netlist"
+net.widget = "checkbox"
+net.cast = "string"
+
+function net.formvalue(self, section)
+       return Value.formvalue(self, section) or "-"
+end
+
+function net.cfgvalue(self, section)
+       return Value.cfgvalue(self, section) or name:cfgvalue(section)
+end
+
+function net.write(self, section, value)
+       zone:clear_networks()
+
+       local net
+       for net in ut.imatch(value) do
+               local n = nw:get_network(net) or nw:add_network(net, { proto = "none" })
+               if n then
+                       zone:add_network(n:name())
+               end
+       end
+end
+
+
+family = s:taboption("advanced", ListValue, "family",
+       translate("Restrict to address family"))
+
+family.rmempty = true
+family:value("", translate("IPv4 and IPv6"))
+family:value("ipv4", translate("IPv4 only"))
+family:value("ipv6", translate("IPv6 only"))
+
+msrc = s:taboption("advanced", DynamicList, "masq_src",
+       translate("Restrict Masquerading to given source subnets"))
+
+msrc.optional = true
+msrc.datatype = "list(neg(or(uciname,hostname,ipmask4)))"
+msrc.placeholder = "0.0.0.0/0"
+msrc:depends("family", "")
+msrc:depends("family", "ipv4")
+
+mdest = s:taboption("advanced", DynamicList, "masq_dest",
+       translate("Restrict Masquerading to given destination subnets"))
+
+mdest.optional = true
+mdest.datatype = "list(neg(or(uciname,hostname,ipmask4)))"
+mdest.placeholder = "0.0.0.0/0"
+mdest:depends("family", "")
+mdest:depends("family", "ipv4")
+
+s:taboption("advanced", Flag, "conntrack",
+       translate("Force connection tracking"))
+
+log = s:taboption("advanced", Flag, "log",
+       translate("Enable logging on this zone"))
+
+log.rmempty = true
+log.enabled = "1"
+
+lim = s:taboption("advanced", Value, "log_limit",
+       translate("Limit log messages"))
+
+lim.placeholder = "10/minute"
+lim:depends("log", "1")
+
+
+s2 = m:section(NamedSection, zone.sid, "fwd_out",
+       translate("Inter-Zone Forwarding"),
+       translatef("The options below control the forwarding policies between \
+               this zone (%s) and other zones. <em>Destination zones</em> cover \
+               forwarded traffic <strong>originating from %q</strong>. \
+               <em>Source zones</em> match forwarded traffic from other zones \
+               <strong>targeted at %q</strong>. The forwarding rule is \
+               <em>unidirectional</em>, e.g. a forward from lan to wan does \
+               <em>not</em> imply a permission to forward from wan to lan as well.",
+               zone:name(), zone:name(), zone:name()
+
+       ))
+
+out = s2:option(Value, "out",
+       translate("Allow forward to <em>destination zones</em>:"))
+
+out.nocreate = true
+out.widget = "checkbox"
+out.exclude = zone:name()
+out.template = "cbi/firewall_zonelist"
+
+inp = s2:option(Value, "in",
+       translate("Allow forward from <em>source zones</em>:"))
+
+inp.nocreate = true
+inp.widget = "checkbox"
+inp.exclude = zone:name()
+inp.template = "cbi/firewall_zonelist"
+
+function out.cfgvalue(self, section)
+       local v = { }
+       local f
+       for _, f in ipairs(zone:get_forwardings_by("src")) do
+               v[#v+1] = f:dest()
+       end
+       return table.concat(v, " ")
+end
+
+function inp.cfgvalue(self, section)
+       local v = { }
+       local f
+       for _, f in ipairs(zone:get_forwardings_by("dest")) do
+               v[#v+1] = f:src()
+       end
+       return v
+end
+
+function out.formvalue(self, section)
+       return Value.formvalue(self, section) or "-"
+end
+
+function inp.formvalue(self, section)
+       return Value.formvalue(self, section) or "-"
+end
+
+function out.write(self, section, value)
+       zone:del_forwardings_by("src")
+
+       local f
+       for f in ut.imatch(value) do
+               zone:add_forwarding_to(f)
+       end
+end
+
+function inp.write(self, section, value)
+       zone:del_forwardings_by("dest")
+
+       local f
+       for f in ut.imatch(value) do
+               zone:add_forwarding_from(f)
+       end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
new file mode 100644 (file)
index 0000000..46402a8
--- /dev/null
@@ -0,0 +1,104 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local fw = require "luci.model.firewall"
+local fs = require "nixio.fs"
+
+local m, s, o, p, i, v
+
+m = Map("firewall",
+       translate("Firewall - Zone Settings"),
+       translate("The firewall creates zones over your network interfaces to control network traffic flow."))
+
+fw.init(m.uci)
+
+s = m:section(TypedSection, "defaults", translate("General Settings"))
+s.anonymous = true
+s.addremove = false
+
+s:option(Flag, "syn_flood", translate("Enable SYN-flood protection"))
+
+o = s:option(Flag, "drop_invalid", translate("Drop invalid packets"))
+
+p = {
+       s:option(ListValue, "input", translate("Input")),
+       s:option(ListValue, "output", translate("Output")),
+       s:option(ListValue, "forward", translate("Forward"))
+}
+
+for i, v in ipairs(p) do
+       v:value("REJECT", translate("reject"))
+       v:value("DROP", translate("drop"))
+       v:value("ACCEPT", translate("accept"))
+end
+
+-- Netfilter flow offload support
+
+local offload = fs.access("/sys/module/xt_FLOWOFFLOAD/refcnt")
+
+if offload then
+       s:option(DummyValue, "offload_advice",
+               translate("Routing/NAT Offloading"),
+               translate("Experimental feature. Not fully compatible with QoS/SQM."))
+
+       o = s:option(Flag, "flow_offloading",
+               translate("Software flow offloading"),
+               translate("Software based offloading for routing/NAT"))
+       o.optional = true
+
+       o = s:option(Flag, "flow_offloading_hw",
+               translate("Hardware flow offloading"),
+               translate("Requires hardware NAT support. Implemented at least for mt7621"))
+       o.optional = true
+       o:depends( "flow_offloading", 1)
+end
+
+-- Firewall zones
+
+s = m:section(TypedSection, "zone", translate("Zones"))
+s.template = "cbi/tblsection"
+s.anonymous = true
+s.addremove = true
+s.extedit   = ds.build_url("admin", "network", "firewall", "zones", "%s")
+
+function s.sectiontitle(self, sid)
+       local z = fw:get_zone(sid)
+       return z:name()
+end
+
+function s.create(self)
+       local z = fw:new_zone()
+       if z then
+               luci.http.redirect(
+                       ds.build_url("admin", "network", "firewall", "zones", z.sid)
+               )
+       end
+end
+
+function s.remove(self, section)
+       return fw:del_zone(section)
+end
+
+o = s:option(DummyValue, "_info", translate("Zone ⇒ Forwardings"))
+o.template = "cbi/firewall_zoneforwards"
+o.cfgvalue = function(self, section)
+       return self.map:get(section, "name")
+end
+
+p = {
+       s:option(ListValue, "input", translate("Input")),
+       s:option(ListValue, "output", translate("Output")),
+       s:option(ListValue, "forward", translate("Forward"))
+}
+
+for i, v in ipairs(p) do
+       v:value("REJECT", translate("reject"))
+       v:value("DROP", translate("drop"))
+       v:value("ACCEPT", translate("accept"))
+end
+
+s:option(Flag, "masq", translate("Masquerading"))
+s:option(Flag, "mtu_fix", translate("MSS clamping"))
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua b/package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua
new file mode 100644 (file)
index 0000000..055342b
--- /dev/null
@@ -0,0 +1,289 @@
+-- Copyright 2011-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.tools.firewall", package.seeall)
+
+local ut = require "luci.util"
+local ip = require "luci.ip"
+local nx = require "nixio"
+
+local translate, translatef = luci.i18n.translate, luci.i18n.translatef
+
+local function _(...)
+       return tostring(translate(...))
+end
+
+function fmt_neg(x)
+       if type(x) == "string" then
+               local v, neg = x:gsub("^ *! *", "")
+               if neg > 0 then
+                       return v, "%s " % _("not")
+               else
+                       return x, ""
+               end
+       end
+       return x, ""
+end
+
+function fmt_mac(x)
+       if x and #x > 0 then
+               local m, n
+               local l = { _("MAC"), " " }
+               for m in ut.imatch(x) do
+                       m, n = fmt_neg(m)
+                       l[#l+1] = "<var>%s%s</var>" %{ n, m }
+                       l[#l+1] = ", "
+               end
+               if #l > 1 then
+                       l[#l] = nil
+                       if #l > 3 then
+                               l[1] = _("MACs")
+                       end
+                       return table.concat(l, "")
+               end
+       end
+end
+
+function fmt_port(x, d)
+       if x and #x > 0 then
+               local p, n
+               local l = { _("port"), " " }
+               for p in ut.imatch(x) do
+                       p, n = fmt_neg(p)
+                       local a, b = p:match("(%d+)%D+(%d+)")
+                       if a and b then
+                               l[1] = _("ports")
+                               l[#l+1] = "<var>%s%d-%d</var>" %{ n, a, b }
+                       else
+                               l[#l+1] = "<var>%s%d</var>" %{ n, p }
+                       end
+                       l[#l+1] = ", "
+               end
+               if #l > 1 then
+                       l[#l] = nil
+                       if #l > 3 then
+                               l[1] = _("ports")
+                       end
+                       return table.concat(l, "")
+               end
+       end
+       return d and "<var>%s</var>" % d
+end
+
+function fmt_ip(x, d)
+       if x and #x > 0 then
+               local l = { _("IP"), " " }
+               local v, a, n
+               for v in ut.imatch(x) do
+                       v, n = fmt_neg(v)
+                       a, m = v:match("(%S+)/(%d+%.%S+)")
+                       a = a or v
+                       a = a:match(":") and ip.IPv6(a, m) or ip.IPv4(a, m)
+                       if a and (a:is6() and a:prefix() < 128 or a:prefix() < 32) then
+                               l[1] = _("IP range")
+                               l[#l+1] = "<var title='%s - %s'>%s%s</var>" %{
+                                       a:minhost():string(),
+                                       a:maxhost():string(),
+                                       n, a:string()
+                               }
+                       else
+                               l[#l+1] = "<var>%s%s</var>" %{
+                                       n,
+                                       a and a:string() or v
+                               }
+                       end
+                       l[#l+1] = ", "
+               end
+               if #l > 1 then
+                       l[#l] = nil
+                       if #l > 3 then
+                               l[1] = _("IPs")
+                       end
+                       return table.concat(l, "")
+               end
+       end
+       return d and "<var>%s</var>" % d
+end
+
+function fmt_zone(x, d)
+       if x == "*" then
+               return "<var>%s</var>" % _("any zone")
+       elseif x and #x > 0 then
+               return "<var>%s</var>" % x
+       elseif d then
+               return "<var>%s</var>" % d
+       end
+end
+
+function fmt_icmp_type(x)
+       if x and #x > 0 then
+               local t, v, n
+               local l = { _("type"), " " }
+               for v in ut.imatch(x) do
+                       v, n = fmt_neg(v)
+                       l[#l+1] = "<var>%s%s</var>" %{ n, v }
+                       l[#l+1] = ", "
+               end
+               if #l > 1 then
+                       l[#l] = nil
+                       if #l > 3 then
+                               l[1] = _("types")
+                       end
+                       return table.concat(l, "")
+               end
+       end
+end
+
+function fmt_proto(x, icmp_types)
+       if x and #x > 0 then
+               local v, n
+               local l = { }
+               local t = fmt_icmp_type(icmp_types)
+               for v in ut.imatch(x) do
+                       v, n = fmt_neg(v)
+                       if v == "tcpudp" then
+                               l[#l+1] = "TCP"
+                               l[#l+1] = ", "
+                               l[#l+1] = "UDP"
+                               l[#l+1] = ", "
+                       elseif v ~= "all" then
+                               local p = nx.getproto(v)
+                               if p then
+                                       -- ICMP
+                                       if (p.proto == 1 or p.proto == 58) and t then
+                                               l[#l+1] = translatef(
+                                                       "%s%s with %s",
+                                                       n, p.aliases[1] or p.name, t
+                                               )
+                                       else
+                                               l[#l+1] = "%s%s" %{
+                                                       n,
+                                                       p.aliases[1] or p.name
+                                               }
+                                       end
+                                       l[#l+1] = ", "
+                               end
+                       end
+               end
+               if #l > 0 then
+                       l[#l] = nil
+                       return table.concat(l, "")
+               end
+       end
+end
+
+function fmt_limit(limit, burst)
+       burst = tonumber(burst)
+       if limit and #limit > 0 then
+               local l, u = limit:match("(%d+)/(%w+)")
+               l = tonumber(l or limit)
+               u = u or "second"
+               if l then
+                       if u:match("^s") then
+                               u = _("second")
+                       elseif u:match("^m") then
+                               u = _("minute")
+                       elseif u:match("^h") then
+                               u = _("hour")
+                       elseif u:match("^d") then
+                               u = _("day")
+                       end
+                       if burst and burst > 0 then
+                               return translatef("<var>%d</var> pkts. per <var>%s</var>, \
+                                   burst <var>%d</var> pkts.", l, u, burst)
+                       else
+                               return translatef("<var>%d</var> pkts. per <var>%s</var>", l, u)
+                       end
+               end
+       end
+end
+
+function fmt_target(x, src, dest)
+       if not src or #src == 0 then
+               if x == "ACCEPT" then
+                       return _("Accept output")
+               elseif x == "REJECT" then
+                       return _("Refuse output")
+               elseif x == "NOTRACK" then
+                       return _("Do not track output")
+               else --if x == "DROP" then
+                       return _("Discard output")
+               end
+       elseif dest and #dest > 0 then
+               if x == "ACCEPT" then
+                       return _("Accept forward")
+               elseif x == "REJECT" then
+                       return _("Refuse forward")
+               elseif x == "NOTRACK" then
+                       return _("Do not track forward")
+               else --if x == "DROP" then
+                       return _("Discard forward")
+               end
+       else
+               if x == "ACCEPT" then
+                       return _("Accept input")
+               elseif x == "REJECT" then
+                       return _("Refuse input")
+               elseif x == "NOTRACK" then
+                       return _("Do not track input")
+               else --if x == "DROP" then
+                       return _("Discard input")
+               end
+       end
+end
+
+
+function opt_enabled(s, t, ...)
+       if t == luci.cbi.Button then
+               local o = s:option(t, "__enabled")
+               function o.render(self, section)
+                       if self.map:get(section, "enabled") ~= "0" then
+                               self.title      = _("Rule is enabled")
+                               self.inputtitle = _("Disable")
+                               self.inputstyle = "reset"
+                       else
+                               self.title      = _("Rule is disabled")
+                               self.inputtitle = _("Enable")
+                               self.inputstyle = "apply"
+                       end
+                       t.render(self, section)
+               end
+               function o.write(self, section, value)
+                       if self.map:get(section, "enabled") ~= "0" then
+                               self.map:set(section, "enabled", "0")
+                       else
+                               self.map:del(section, "enabled")
+                       end
+               end
+               return o
+       else
+               local o = s:option(t, "enabled", ...)
+               o.default = "1"
+               return o
+       end
+end
+
+function opt_name(s, t, ...)
+       local o = s:option(t, "name", ...)
+
+       function o.cfgvalue(self, section)
+               return self.map:get(section, "name") or
+                       self.map:get(section, "_name") or "-"
+       end
+
+       function o.write(self, section, value)
+               if value ~= "-" then
+                       self.map:set(section, "name", value)
+                       self.map:del(section, "_name")
+               else
+                       self:remove(section)
+               end
+       end
+
+       function o.remove(self, section)
+               self.map:del(section, "name")
+               self.map:del(section, "_name")
+       end
+
+       return o
+end
diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm
new file mode 100644 (file)
index 0000000..38f36b4
--- /dev/null
@@ -0,0 +1,90 @@
+<%-
+       local fw = require "luci.model.firewall".init()
+       local izl = { }
+       local ezl = { }
+       local _, z
+       for _, z in ipairs(fw:get_zones()) do
+               if z:name() ~= "wan" then
+                       izl[#izl+1] = z
+               end
+               if z:name() ~= "lan" then
+                       ezl[#ezl+1] = z
+               end
+       end
+
+       local keys, vals = { }, { }
+       luci.sys.net.ipv4_hints(function(ip, name)
+               keys[#keys+1] = ip
+               vals[#vals+1] = '%s (%s)' %{ ip, name }
+       end)
+-%>
+
+<h4><%:New port forward%></h4>
+<div class="table">
+       <div class="tr table-titles">
+               <div class="th"><%:Name%></div>
+               <div class="th"><%:Protocol%></div>
+               <div class="th"><%:External zone%></div>
+               <div class="th"><%:External port%></div>
+               <div class="th"><%:Internal zone%></div>
+               <div class="th"><%:Internal IP address%></div>
+               <div class="th"><%:Internal port%></div>
+               <div class="th"></div>
+       </div>
+       <div class="tr">
+               <div class="td">
+                       <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New port forward%>" />
+               </div>
+               <div class="td">
+                       <select class="cbi-input-select" id="_newfwd.proto" name="_newfwd.proto">
+                               <option value="tcp udp">TCP+UDP</option>
+                               <option value="tcp">TCP</option>
+                               <option value="udp">UDP</option>
+                               <option value="other"><%:Other...%></option>
+                       </select>
+               </div>
+               <div class="td">
+                       <select class="cbi-input-select" id="_newfwd.extzone" name="_newfwd.extzone">
+                               <% for _, z in ipairs(ezl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
+                       </select>
+               </div>
+               <div class="td">
+                       <input type="text" class="cbi-input-text" id="_newfwd.extport" name="_newfwd.extport" data-type="portrange" data-optional="true" />
+               </div>
+               <div class="td">
+                       <select class="cbi-input-select" id="_newfwd.intzone" name="_newfwd.intzone">
+                               <% for _, z in ipairs(izl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
+                       </select>
+               </div>
+               <div class="td">
+                       <input type="text" class="cbi-input-text" id="_newfwd.intaddr" name="_newfwd.intaddr" data-type="host" data-optional="true"<%=
+                               ifattr(#keys > 0, "data-choices", {keys, vals})
+                       %>/>
+               </div>
+               <div class="td">
+                       <input type="text" class="cbi-input-text" id="_newfwd.intport" name="_newfwd.intport" data-type="portrange" data-optional="true" />
+               </div>
+               <div class="td bottom">
+                       <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+               </div>
+       </div>
+</div>
+
+<script type="text/javascript">//<![CDATA[
+       document.getElementById('_newfwd.extport').addEventListener('blur',
+               function() {
+                       var n = document.getElementById('_newfwd.name');
+                       var p = document.getElementById('_newfwd.proto');
+                       var i = document.getElementById('_newfwd.intport');
+
+                       if (!this.className.match(/invalid/))
+                       {
+                               if (!i.value) i.value = this.value;
+
+                               if (!n.value)
+                               {
+                                       n.value = 'Forward' + this.value;
+                               }
+                       }
+               });
+//]]></script>
diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
new file mode 100644 (file)
index 0000000..e0092a7
--- /dev/null
@@ -0,0 +1,89 @@
+<%
+       local fw = require "luci.model.firewall".init()
+       local zones = fw:get_zones()
+%>
+
+<% if #zones > 0 then %>
+       <h4><%:Open ports on router%></h4>
+       <div class="table">
+               <div class="tr cbi-section-table-titles">
+                       <div class="th"><%:Name%></div>
+                       <div class="th"><%:Protocol%></div>
+                       <div class="th"><%:External port%></div>
+                       <div class="th"></div>
+               </div>
+               <div class="tr">
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newopen.name" name="_newopen.name" placeholder="<%:New input rule%>" />
+                       </div>
+                       <div class="td">
+                               <select class="cbi-input-select" id="_newopen.proto" name="_newopen.proto">
+                                       <option value="tcp udp">TCP+UDP</option>
+                                       <option value="tcp">TCP</option>
+                                       <option value="udp">UDP</option>
+                                       <option value="other"><%:Other...%></option>
+                               </select>
+                       </div>
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newopen.extport" name="_newopen.extport" />
+                       </div>
+                       <div class="td bottom">
+                               <input type="submit" class="cbi-button cbi-button-add" name="_newopen.submit" value="<%:Add%>" />
+                       </div>
+               </div>
+       </div>
+<% end %>
+<% if #zones > 1 then %>
+       <h4><%:New forward rule%></h4>
+       <div class="table">
+               <div class="tr cbi-section-table-titles">
+                       <div class="th"><%:Name%></div>
+                       <div class="th"><%:Source zone%></div>
+                       <div class="th"><%:Destination zone%></div>
+                       <div class="th"></div>
+               </div>
+               <div class="tr">
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New forward rule%>" />
+                       </div>
+                       <div class="td">
+                               <select class="cbi-input-text" id="_newfwd.src" name="_newfwd.src">
+                                       <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+                                               <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                       <%- end %>
+                               </select>
+                       </div>
+                       <div class="td">
+                               <select class="cbi-input-text" id="_newfwd.dest" name="_newfwd.dest">
+                                       <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+                                               <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                       <%- end %>
+                               </select>
+                       </div>
+                       <div class="td bottom">
+                               <input type="submit" class="cbi-button cbi-button-link" name="_newfwd.submit" value="<%:Add and edit...%>" />
+                       </div>
+               </div>
+       </div>
+<% else %>
+       <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+<% end %>
+
+<% if #zones > 0 then %>
+       <script type="text/javascript">//<![CDATA[
+               cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
+               document.getElementById('_newopen.extport').addEventListener('blur',
+                       function() {
+                               var n = document.getElementById('_newopen.name');
+                               var p = document.getElementById('_newopen.proto');
+
+                               if (!this.className.match(/invalid/))
+                               {
+                                       if (!n.value && this.value)
+                                       {
+                                               n.value = 'Open' + this.value;
+                                       }
+                               }
+                       });
+       //]]></script>
+<% end %>
diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm
new file mode 100644 (file)
index 0000000..0b4774c
--- /dev/null
@@ -0,0 +1,59 @@
+<%
+       local fw = require "luci.model.firewall".init()
+       local nw = require "luci.model.network".init()
+       local zones = fw:get_zones()
+
+       local keys, vals, a, k, v = {}, {}
+       for k, v in ipairs(nw:get_interfaces()) do
+               for k, a in ipairs(v:ipaddrs()) do
+                       keys[#keys+1] = a:host():string()
+                       vals[#vals+1] = '%s (%s)' %{ a:host(), v:shortname() }
+               end
+       end
+%>
+
+<% if #zones > 1 then %>
+       <h4><%:New source NAT%></h4>
+       <div class="table">
+               <div class="tr cbi-section-table-titles">
+                       <div class="th"><%:Name%></div>
+                       <div class="th"><%:Source zone%></div>
+                       <div class="th"><%:Destination zone%></div>
+                       <div class="th"><%:To source IP%></div>
+                       <div class="th"><%:To source port%></div>
+                       <div class="th"></div>
+               </div>
+               <div class="tr">
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newsnat.name" name="_newsnat.name" placeholder="<%:New SNAT rule%>" />
+                       </div>
+                       <div class="td">
+                               <select class="cbi-input-text" id="_newsnat.src" name="_newsnat.src">
+                                       <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+                                               <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                       <%- end %>
+                               </select>
+                       </div>
+                       <div class="td">
+                               <select class="cbi-input-text" id="_newsnat.dest" name="_newsnat.dest">
+                                       <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+                                               <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                       <%- end %>
+                               </select>
+                       </div>
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newsnat.dip" name="_newsnat.dip" placeholder="<%:Do not rewrite%>" data-type="ip4addr" data-optional="true"<%=
+                                       ifattr(#keys > 0, "data-choices", { keys, vals })
+                               %> />
+                       </div>
+                       <div class="td">
+                               <input type="text" class="cbi-input-text" id="_newsnat.dport" name="_newsnat.dport" placeholder="<%:Do not rewrite%>" data-type="portrange" data-optional="true" />
+                       </div>
+                       <div class="td bottom">
+                               <input type="submit" class="cbi-button cbi-button-link" name="_newsnat.submit" value="<%:Add and edit...%>" />
+                       </div>
+               </div>
+       </div>
+<% else %>
+       <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+<% end %>
diff --git a/package/luci/applications/luci-app-firewall/po/ca/firewall.po b/package/luci/applications/luci-app-firewall/po/ca/firewall.po
new file mode 100644 (file)
index 0000000..10ce1ce
--- /dev/null
@@ -0,0 +1,940 @@
+#  luci-fw.pot
+#  generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2014-06-17 09:40+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s en %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s amb %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Entrada sense nom)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Regla sense nom)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT sense nom)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> paquets al <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> i limita a %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Acció"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Afegeix"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Afegeix i edita..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Ajusts avançats"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permet el reenviament des dels <em>zones d'origen</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permet el reenviament als <em>zones de destí</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Qualsevol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Xarxes cobertes"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Regles personalitzades"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Les regles personalitzades us permet executar ordres del iptables arbitraris "
+"que la infraestructura de tallafocs no cobreix d'altra manera. Aquests "
+"ordres s'executen després de cada reinici de tallafocs, just després el "
+"conjunt de regles per defecte s'ha carregat."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Adreça IP de destí"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Adreça de destí"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Port de destí"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona de destí"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "No reescriguis"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Descarta els paquets invàlids"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Habilita"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Habilita protecció contra la inundació SYN"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Habilita el registre d'aquesta zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Adreça IP extern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Port extern"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zona extern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Paràmetres extres"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Tallafocs"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Tallafocs - Regles personalitzades"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Tallafocs - Reenviaments de port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Tallafocs - Regles de tràfic"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Tallafocs - Ajusts de zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Força el rastreig de connexió"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Reenvia"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Reenvia a"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Des de %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Des de %s en %s amb origen %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Des de %s en %s amb orígens %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Ajusts generals"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 i IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Només IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Només IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Entrada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Reenviament interzonal"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Adreça IP interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Port intern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zona interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limita els missatges de registre"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Fixació MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Mascarada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Coincideix"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Coincideix amb el tipus ICMP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Coincideix amb trànsit reenviat al port o rang de ports de destí donat."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Coincideix amb trànsit entrant dirigit al port o rang de ports de destí en "
+"aquest host donat"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Coincideix amb trànsit entrant originant en el host client des del port o "
+"rang de ports d'origen donat."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nom"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nova regla SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nova regla de reenviament"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nova regla d'entrada"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nou reenviament de port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nou origen NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Només coincideix amb trànsit entrant dirigit a la adreça IP donada."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Només coincideix amb trànsit entrant des d'aquests MAC."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Només coincideix amb trànsit entrant des d'aquest IP o rang."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Només coincideix amb trànsit originant en el host client des del port o del "
+"rang de ports d'origen donat"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Obre els ports en el encaminador"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Altre..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Sortida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Reenviaments de port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"El reenviament de ports permet que els ordinadors remots en el Internet "
+"connectin a un ordinador o servei específic dins del LAN privat."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Redirigeix trànsit entrant coincidit al host intern especificat"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Restringeix la mascarada a les subxarxes de destí donades"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Restringeix la mascarada a les subxarxes d'origen donades"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Restringeix a la família d'adreces"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Reescriu el trànsit coincidint cap a la adreça donada."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Reescriu el trànsit coincidint cap al port d'origen donat. Pot ser deixat en "
+"blanc per només reescriure l'adreça IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Reescriu a l'origen %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Reescriu als orígens %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Adreça IP de SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Port SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Adreça IP d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Adreça MAC d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"El NAT d'origen és un forma específic de mascarada que permet control de gra "
+"fi sobre l'IP d'origen utilitzat pel trànsit sortint, per exemple per "
+"associar múltiples adreces WAN a subxarxes internes."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Adreça d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Port d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona d'origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"El tallafocs crea zones a les teves interfícies de xarxa per controlar el "
+"flux de tràfic de xarxa."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Les opcions a sota controlen les polítiques de reenviament entre aquesta "
+"zona (%s) i altres zones. <em>Zones de destí</em> cobreixen trànsit reenviat "
+"<strong>originant des de %q</strong>. <em>Zones d'origen</em> coincideixen "
+"amb trànsit reenviat des de altres zones <strong>apuntat a %q</strong>. La "
+"regla de reenviament es <em>unidirectional</em>, per exemple un reenviament "
+"de lan a wan <em>no</em> implica permís per reenviar de wan a lan també."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Aquesta pàgina us permet canviar propietats avançats de l'entrada de "
+"reenviament de port. En la majoria dels casos no hi ha necessitat de "
+"modificar aquests ajusts."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Aquesta pàgina us permet canviar propietats avançats de l'entrada de regla "
+"de trànsit, com als hosts d'origen i de destí coincidits."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Aquesta secció defineix propietats comuns de %q. Les opcions <em>entrada</"
+"em> i <em>sortida</em> estableixen les polítiques per defecte per a trànsit "
+"entrant i sortint aquesta zona mentre l'opció <em>reenvia</em> descriu la "
+"política de trànsit reenviat entre xarxes distintes dins de la zona. "
+"<em>Xarxes cobertes</em> especifica quines xarxes disponibles són membres "
+"d'aquesta zona."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "A %s a %s en <var>aquest dispositiu</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "A %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "A %s en <var>aquest dispositiu</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "A %s, %s en %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "A l'IP d'origen"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Al port d'origen"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Regles de trànsit"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Les regles de trànsit defineixen polítiques per als paquets viatjant entre "
+"zones distintes, per exemple per a rebutjar trànsit entre certs hosts o "
+"obrir ports WAN en el encaminador."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Via %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Via %s a %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Podeu especificar múltiples per seleccionar \"-- personalitzat --\" i "
+"llavors introduir protocols separats per espai."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zona ⇒ Reenviaments"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "accepta"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "qualsevol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "qualsevol host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "qualsevol IP d'encaminador"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "qualsevol zona"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "no rastregis"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "descarta"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "rebutja"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "trànsit"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/cs/firewall.po b/package/luci/applications/luci-app-firewall/po/cs/firewall.po
new file mode 100644 (file)
index 0000000..dce2378
--- /dev/null
@@ -0,0 +1,935 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-21 11:22+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s v %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s s %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s v %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Nepojmenovaný vstup)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Nepojmenované pravidlo)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(Nepojmenovaný SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> paketů za <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> paketů za <var>%s</var>, burst <var>%d</var> paketů."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> a omezit na %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Akce"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Přidat"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Přidat a upravit"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Pokročilé nastavení"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Povolit přesměrování ze <em>zdrojových oblastí</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Povolit přesměrování do <em>zdrojových oblastí</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Libovolné"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Pokryté sítě"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Vlastní pravidla"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Vlastní pravidla vám umožňují spustit libovolné iptables příkazy, které "
+"nejsou jinak pokryté frameworkem firewallu. Příkazy jsou spuštěny po každém "
+"restartu firewallu, právě po načtení výchozí sady pravidel."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Cílová IP adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Cílová adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Cílový port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Cílová oblast"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Nepřepisovat"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Zahazovat neplatné pakety"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Povolit"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Povolit NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Povolit ochranu proti SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Povolit logování v této oblasti"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Vnější IP adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Vnější port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Vnější zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Dodatečné argumenty"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Vlastní pravidla"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Přesměrování portů"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Pravidla síťového provozu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Nastavení zón"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Vynutit sledování připojení"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Přesměrování"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Přesměrovat na"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Z %s v %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Z %s v %s se zdrojovou %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Z %s v %s se zdrojovou %s a %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Obecné nastavení"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 a IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "pouze IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "pouze IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Vstup"
+
+# nebo mimo zóny?
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Přesměrování mezi zónami"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Vnitřní IP adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Vnitřní port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Vnitřní zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Omezit logovací zprávy"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS clamping"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Maškárádování"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Shoda"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Odpovídá ICMP typu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "Vybrat provoz, přesměrovaný na zadaný port nebo rozsah portů"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Vybrat příchozí provoz, směrovaný na zadaný cílový port nebo rozsah portů "
+"tohoto hostitele"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Vybrat příchozí provoz, pocházející ze zadaného portu nebo rozsahu portů "
+"klienta."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Název"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nové pravidlo SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nové přesměrovací pravidlo"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nové vstupní pravidlo"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nové přesměrování portu"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nový zdrojový NAT (SNAT)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Vybrat pouze příchozí provoz, směrovaný na danou IP adresu."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Vybrat pouze příchozí provoz z těchto MAC adres."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Vybrat pouze příchozí provoz z této IP nebo rozsahu IP adres."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Vybrat pouze příchozí provoz, pocházející ze zadaného portu nebo rozsahu "
+"portů klienta."
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Otevřené porty na routeru"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Ostatní ..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Výstup"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Předává další argumenty iptables. Používat opatrně!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Přesměrování portů"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Přesměrování portů (port forwarding) umožňuje vzdáleným počítačům z "
+"Internetu připojení k vybraným počítačům nebo službám uvnitř privátní sítě "
+"LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Přesměrovat vybraný příchozí provoz na uvedený port vnitřního hostitele."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Přesměrovat vybraný příchozí provoz na uvedeného vnitřního hostitele."
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Omezit maškarádování na uvedené cílové podsítě"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Omezit maškarádování na uvedené zdrojové podsítě"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Omezit na rodinu adres"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Přepsat shodný provoz na uvedenou adresu."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Přepsat shodný provoz na uvedený zdrojový port. Může zůstat prázdné, pak "
+"bude přepsána pouze IP adresa."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Přepsat na zdrojovou %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Přepsat na zdrojovou %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "IP adresa SNATu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Port SNATu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Zdrojová IP adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Zdrojová MAC adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Zdrojový NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Zdrojový NAT je specifická forma maškarádování, která umožňuje jemnozrnnou "
+"kontrolu nad zdrojovými IP, použitými pro odchozí provoz. Využívá se "
+"například pro mapování množství WAN adres do vnitřních podsítí."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Zdrojová adresa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Zdrojový port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zdrojová zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Firewall vytváří zóny přes vaše síťová rozhraní za účelem řízení síťového "
+"provozu."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Níže uvedené možnosti řídí přesměrovací politiky mezi touto zónou (%s) a "
+"ostatními zónami. <em>Cílové zóny</em> pokrývají přesměrovávaný provoz, "
+"<strong>pocházející z %q</strong>. <em>Zdrojové zóny</em> porovnávají "
+"přesměrovávaný provoz z ostatních zón, <strong>zaměřený na %q</strong>. "
+"Přesměrovávací pravidlo je <em>jednosměrné</em>, například přesměrování z "
+"lan do wan <em>nepovoluje</em> přesměrování z wan do lan (a naopak)."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Tato stránka vám umožňuje změnit pokročilé vlastností přesměrování portů. Ve "
+"většině případů není potřeba upravovat tato nastavení."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Tato stránka vám umožňuje změnit pokročilé vlastnosti pravidla síťového "
+"provozu, například zdrojové a cílové hostitele."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Tato sekce definuje běžné možnosti %q. <em>Vstupní</em> a <em>výstupní</em> "
+"možnosti nastavují výchozí politiky pro provoz, vstupující do této zóny a "
+"vystupující z ní, zatímco <em>přesměrovací</em> možnosti popisují politiku "
+"pro přesměrování provozu mezi rozdílnými sítěmi uvnitř jedné zóny.<em> "
+"Pokryté sítě</em> určuje, které z dostupných sítí jsou členy této zóny."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Na %s v %s na <var>tomto zařízení</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Na %s v %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Na %s na <var>tomto zařízení</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Na %s, %s v %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Na zdrojovou IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Na zdrojový port"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Pravidla síťového provozu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Pravidla síťového provozu definují politiky pro cestování paketů mezi "
+"různými zónami, například pro odmítnutí provozu mezi jistými hostiteli nebo "
+"pro otevření WAN portů na routeru."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Prostřednictvím %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Lze určit více protokolů. Vyberte \"-- vlastní --\" a vkládejte protokoly "
+"oddělené mezerou."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zóna %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zóna ⇒ Přesměrování"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zóny"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "přijmout"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "libovolný"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "libovolný hostitel"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "libovolná IP routeru"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "libovolná zóna"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "nesledovat"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "zahodit"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "odmítnout"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "provoz"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/de/firewall.po b/package/luci/applications/luci-app-firewall/po/de/firewall.po
new file mode 100644 (file)
index 0000000..ad0cc1f
--- /dev/null
@@ -0,0 +1,941 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2014-03-25 02:04+0200\n"
+"Last-Translator: laryllian <my-lucl@laryllian.de>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s in %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s mit %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s in %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Unbenannter Eintrag)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Unbenannte Regel)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(Unbennanter SNAT-Eintrag)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> Pkte. pro <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> Pkte. pro <var>%s</var>, Häufung <var>%d</var> Pkte."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> und limitieren auf %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Aktion"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Hinzufügen und bearbeiten..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Erweiterte Einstellungen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Erlaube Weiterleitung von <em>Quellzone</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Erlaube Weiterleitung zu <em>Zielzone</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "beliebig"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Abgedeckte Netzwerke"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Benutzerdefinierte Regeln"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Benutzerdefinierte Regeln ermöglichen das Ausführen belieber iptables-"
+"Befehle welche durch das Firewall-Framework nicht unterstützt werden. Die "
+"Befehle werden mit jedem Firewall-Neustart abgearbeitet, direkt nach dem "
+"Laden der Basisregeln."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Ziel IP-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Zieladresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Zielport"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Ziel-Zone"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Nicht umschreiben"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Ungültige Pakete verwerfen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "NAT-Loopback aktivieren"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Schutz vor SYN-flood-Attacken"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Protokollierung innerhalb der Zone aktivieren"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Externe IP-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Externer Port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Externe Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Zusätzliche Argumente"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Benutzerdefinierte Regeln"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Portweiterleitungen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Verkehrsregeln"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Zoneneinstellungen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Connectiontracking erzwingen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Weitergeleitet"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Weiterleiten an"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Von %s in %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Von %s in %s mit Quell-%s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Von %s in %s mit Quell-%s und %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Allgemein"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 und IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "nur IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "nur IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Eingang"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Weiterleitungen zwischen Zonen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Interne IP-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Interner Port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Interne Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Protokollnachrichten limitieren"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS Korrektur"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "NAT aktivieren"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Filter"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Nach ICMP-Typ filtern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "Selektiert weitergeleiteten Verkehr nach den angegebenen Ziel-Ports."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Eingehende Verbindungen filtern welche an den angegebenen Port oder "
+"Portbereich auf dem lokalen Gerät gerichtet sind"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr "Selektiert eingehenden Verkehr nach den angegebenen Quell-Ports."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Name"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Neue SNAT-Regel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Neuer Weiterleitungsregel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Neue Eingangsregel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Neue Portweiterleitung"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Neues SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Selektiere nur Verkehr der an die angegebene IP-Adresse gerichtet ist."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Selektiere nur Verkehr von den angegebenen MAC-Adressen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Selektiere nur Verkehr vom angebenem Quell-IP-Adressbereich."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr "Selektiere nur Verkehr von den angegebenen Quell-Ports auf dem Client."
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Ports auf dem Router öffnen"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Anderes..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Ausgang"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht "
+"benutzen!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Portweiterleitungen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Portweiterleitungen ermöglichen es entfernten Rechnern im Internet auf "
+"bestimmte Computer oder Dienste im lokalen LAN zuzugreifen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Gefilterte Verbindungen an den angegeben Port auf dem internen Host "
+"weiterleiten"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "NAT auf die angegebenen Ziel-Subnetze beschränken"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "NAT auf die angegebenen Quell-Subnetze beschränken"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Beschränke auf Adressfamilie"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Schreibe selektierten Verkehr auf die angegebene Quell-IP-Adresse um."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Schreibe selektierten Verkehr auf den angegebenen Qull-Port um. Kann leer "
+"gelassen werden um nur die IP-Adresse umzuschreiben."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Schreibe um auf Quell-%s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Schreibe um auf Quell-%s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT-IP-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT-Port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Quell-IP-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Quell-MAC-Adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Source NAT ist eine spezifische From von NAT, welche volle Kontrolle über "
+"die verwendete Quell-IP-Adresse für ausgehenden Verkehr zulässt, zum "
+"Beispiel um mehrere WAN-IP-Adressen auf interne Subnetze abzubilden."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Quelladresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Quellport"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Quell-Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um "
+"den Netzverkehr zu trennen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Die untenstehenen Optionen regeln die Verfahreinsweisen für Verkehr zwischen "
+"dieser Zone (%s) und anderen Zonen. <em>Ziel-Zonen</em> decken "
+"weitergeleiteten Verkehr <strong>von %q</strong> ab. <em>Quell-Zonen</em> "
+"treffen auf weitergeleiteten Verkehr aus anderen Zonen zu, welcher "
+"<strong>an %q gerichtet</strong> ist. Die Weiterleitung gilt nur in eine "
+"Richtung, d.h. eine erlaubte Weiterleitung von LAN nach WAN impliziert "
+"<em>nicht</em> zusätzlich die Erlaubnis, auch von WAN nach LAN "
+"weiterzuleiten."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der "
+"Portweiterleitung. In den meisten Fällen ist es unnötig die Eigenschaften zu "
+"ändern."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der "
+"Verkehrsregel, zum Beispiel die Selektion nach Quell- und Zieladressen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Diese Sektion definiert allgemeine Eigenschaften der %q Zone. Die "
+"<em>Eingang</em> und <em>Ausgang</em> Optionen regeln die Verfahrensweise "
+"für Verkehr der in diese Zone eintritt oder diese verlässt. "
+"<em>Weitergeleitet</em> trifft auf Verkehr zwischen verschiedenen "
+"Schnittstellen innerhalb dieser Zone zu. <em>Abgedeckte Netzwerke</em> "
+"definieren die Zugehörigkeit von Schnittstellen zu dieser Zone."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Zu %s an %s auf <var>diesem Gerät</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Zu %s in %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Zu %s auf <var>diesem Gerät</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Zu %s, %s in %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Zu Quell-IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Zu Quell-Port"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Verkehrsregeln"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Verkehrsregeln bestimmen den Fluss der Pakete zwischen verschiedenen Zonen, "
+"zum Beispiel um Verkehr zwischen bestimmten Rechnern zu unterbinden oder um "
+"WAN-Ports auf dem Router zu öffnen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Über %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Über %s an %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Durch die Auswahl von \"-- benutzerdefiniert --\" könnene mehrere Werte "
+"durch Leerzeichen getrennt angegeben werden."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zone %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zone ⇒ Weiterleitungen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zonen"
+
+# Die richtige Übersetzung von ACCEPT im Firewallkontext ist nicht "Annehmen" sondern "Zulassen". Man kann ja keinen
+# ausgehenden Verkehr annehmen. 
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "zulassen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "beliebig"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "beliebiger Rechner"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "beliebige Router-IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "beliebige Zone"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "nicht verfolgen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "verwerfen"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "zurückweisen"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/el/firewall.po b/package/luci/applications/luci-app-firewall/po/el/firewall.po
new file mode 100644 (file)
index 0000000..4fa25b9
--- /dev/null
@@ -0,0 +1,905 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2012-03-31 15:40+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s με %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> πκτ. ανά <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Ενέργεια"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Προσθήκη και επεξεργασία..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Ρυθμίσεις για προχωρημένους"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Οποιοδήποτε"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Προσαρμοσμένοι Κανόνες"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Διεύθυνση IP προορισμού"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Διεύθυνση προορισμού"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Θύρα προορισμού"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+#, fuzzy
+msgid "Destination zone"
+msgstr "Ζώνη προορισμού"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Αγνόηση μη-έγκυρων πακετών"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Ενεργοποίηση"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+#, fuzzy
+msgid "Enable SYN-flood protection"
+msgstr "Προστασία SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Εξωτερική διεύθυνση IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Εξωτερική θύρα"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Επιπλέον παράμετροι"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Τείχος προστασίας"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Τείχος προστασίας - Προσαρμοσμένοι Κανόνες"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Τείχος προστασίας - Προώθηση Θυρών"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Τείχος προστασίας - Κανόνες Κίνησεις"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Τείχος προστασίας - Ρυθμίσεις Ζώνης"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Επιβολή παρακολούθησης σύνδεσης"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Προώθηση"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Απο %s στο %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Γενικές Ρυθμίσεις"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 και IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Μόνο IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Μόνο IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Είσοδος"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+#, fuzzy
+msgid "Internal IP address"
+msgstr "Εσωτερική διεύθυνση"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+#, fuzzy
+msgid "Internal port"
+msgstr "Εξωτερική θύρα"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Εσωτερική ζώνη"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Περιορισμός καταγραφών συστήματος"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+#, fuzzy
+msgid "MSS clamping"
+msgstr "Περιορισμός MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Όνομα"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Άλλο..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Έξοδος"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Προώθηση Θυρών"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Πρωτόκολλο"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+#, fuzzy
+msgid "Source IP address"
+msgstr "Διεύθυνση MAC πηγής"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+#, fuzzy
+msgid "Source address"
+msgstr "Διεύθυνση MAC πηγής"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Θύρα πηγής"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+#, fuzzy
+msgid "Source zone"
+msgstr "Θύρα πηγής"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Το τείχος προστασίας δημιουργεί ζώνες πάνω στις διεπαφές δικτύου για να "
+"ελέγχει την δικτυακή κίνηση."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Ζώνες"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "αποδοχή"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "αγνόηση"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "απόρριψη"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/en/firewall.po b/package/luci/applications/luci-app-firewall/po/en/firewall.po
new file mode 100644 (file)
index 0000000..5c1e66d
--- /dev/null
@@ -0,0 +1,932 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Action"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Destination address"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Destination port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Destination zone"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Drop invalid packets"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Enable SYN-flood protection"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "External port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua      #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Forward"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Input"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Internal IP address"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Internal port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS clamping"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Masquerading"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Name"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Output"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Redirect matched incoming traffic to the given port on the internal host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Redirect matched incoming traffic to the specified internal host"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua      #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# msgid "Traffic Redirection"
+# msgstr ""
+#
+# msgid ""
+# "Traffic redirection allows you to change the destination address of "
+# "forwarded packets."
+# msgstr ""
+#
+# msgid "Overview"
+# msgstr ""
+#
+# msgid "Name"
+# msgstr ""
+#
+# msgid "Source zone"
+# msgstr ""
+#
+# msgid "Source MAC-address"
+# msgstr ""
+#
+# msgid "Source port"
+# msgstr ""
+#
+# msgid "Protocol"
+# msgstr ""
+#
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Source IP address"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Source address"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Source port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Source zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "accept"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "any"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "drop"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "reject"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/es/firewall.po b/package/luci/applications/luci-app-firewall/po/es/firewall.po
new file mode 100644 (file)
index 0000000..c7e9aa2
--- /dev/null
@@ -0,0 +1,941 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2019-05-16 22:32-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language: es\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 2.2.2\n"
+"Language-Team: \n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s en %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s con %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Entrada sin nombre)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Regla sin nombre)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT sin nombre)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> paquetes por <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+"<var>%d</var> paquetes por <var>%s</var>, máximo <var>%d</var> paquetes."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> y limitar a %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "Aceptar reenvío"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "Aceptar entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "Aceptar salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Acción"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Añadir"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Añadir y editar..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Configuración avanzada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permitir reenvío desde <em>zonas de origen</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permitir reenvío a <em>zonas de destino</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Cualquiera"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Redes cubiertas"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Reglas personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Las reglas personalizadas le permiten ejecutar comandos de iptables que no "
+"están disponibles en el marco del firewall. Los comandos se ejecutarán tras "
+"cualquier reinicio del FIrewall, justo tras haber cargado el conjunto de "
+"reglas predeterminadas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Dirección IP destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Dirección de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Puerto de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona de destino"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "Descartar reenvío"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "Descartar entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "Descartar salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "No reescribir"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "No seguir reenvío"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "No seguir entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "No seguir salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Descartar paquetes inválidos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Habilitar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Habilitar bucle NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Habilitar protección contra inundaciones SYN"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Habilitar registro en esta zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "Característica experimental. No es totalmente compatible con QoS/SQM."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Dirección IP externa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Puerto externo"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zona externa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Parámetros extra"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Reglas personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Reenvíos de puertos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Reglas de tráfico"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Configuración de la zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Forzar seguimiento de conexión"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Reenviar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Reenviar a"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "Viernes"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Desde %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Desde %s en %s con origen %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Desde %s en %s con origen %s y %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "Desde %s en <var>este dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "Desde %s en <var>este dispositivo</var> con la fuente %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "De %s en <var>este dispositivo</var> con la fuente %s y %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Configuración general"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "Flow Offloading por hardware"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "Rango de IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IPs"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 e IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Sólo IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Sólo IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Entrada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Reenvío entre zonas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Dirección IP interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Puerto interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zona interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limitar registro de mensajes"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MACs"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Fijado de MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Enmascaramiento"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Coincidir"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Coincidir con tipo ICMP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "Coincidir con tráfico reenviado al puerto o rango de puertos destino."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Coincidir con tráfico de entrada dirigido al puerto o rango de puertos "
+"destino en este host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Haga coincidir el tráfico entrante que se origina en el puerto de origen o "
+"el rango de puertos en el host del cliente."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Lunes"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Días del mes"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nombre"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nueva regla SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nueva regla de reenvío"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nueva regla de entrada"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nuevo reenvío de puerto"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nuevo origen NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Coincidir sólo con tráfico de entrada a esta dirección IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Coincidir sólo con tráfico de entrada desde estas MACs."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Coincidir sólo con tráfico de entrada desde esta IP o rango."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Solo coincida con el tráfico entrante que se origina desde el puerto de "
+"origen o el rango de puertos en el host del cliente"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Abrir puertos en el router"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Otros..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "Zona de salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Agrega más parámetros a iptables. ¡Utilice con cuidado!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Reenvíos de puertos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"El reenvío de puertos permite a ordenadores remotos en internet conectar a "
+"un ordenador o servicio específico en la LAN privada."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Redirigir el tráfico de entrada que coincida al puerto dado en el host "
+"interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+"Redirigir el tráfico de entrada que coincida al host interno especificado"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "Rechazar reenvío"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "Rechazar entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "Rechazar salida"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+"Requiere soporte de NAT por hardware. Implementado al menos para mt7621"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Reiniciar Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Restringir enmascaramiento a las subredes destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Restringir enmascaramiento a las subredes origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Restringir a la familia de direcciones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Reescribir el tráfico que coincida a estas direcciones."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Reescribir el tráfico que coincida con este puerto origen. Deje en blanco "
+"para reescribir sólo la dirección IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Reescribir a origen %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Reescribir a origen %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Enrutamiento/NAT Offloading"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "Regla deshabilitada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "Regla habilitada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Dirección IP SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Puerto SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Sábado"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "Offloading basado en software para enrutamiento/NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "Flow Offloading por software"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Dirección IP origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Dirección MAC origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Origen NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Origen NAT es una forma específica de enmascaramiento que permite el control "
+"fino del origen IP que se usa en el tráfico de salida por ejemplo para "
+"dirigir múltiples direcciones WAN a las subredes internas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Dirección de origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Puerto de origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona de origen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Fecha de inicio (aaaa-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Hora de inicio (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Fecha de finalización (aaaa-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Hora de finalización (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Domingo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"El Firewall crea zonas sobre sus interfaces de red para controlar el flujo "
+"del tráfico."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Estas opciones controlan las políticas de reenvío entre esta zona (%s) y "
+"otras. <em>Las zonas de origen</em> cubren el tráfico reenviado desde "
+"<strong>%q</strong>. <em>Las zonas origen</em> coinciden con el tráfico "
+"reenviado desde otras zonas dirigido a <strong>%q</strong>. La regla de "
+"reenvío es <em>unidireccional</em>, por ejemplo una regla de reenvío desde "
+"la LAN a la WAN <em>no</em> implica permiso para reenviar desde la WAN a la "
+"LAN también."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Propiedades avanzadas de la entrada \"reenvío de puertos\". No suele ser "
+"necesario modificar esta configuración."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Esta página le permite cambiar las propiedades avanzadas de la entrada de la "
+"regla de tráfico, como los hosts de origen y destino coincidentes."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Esta sección define propiedades comunes de %q. Las opciones de <em>entrada</"
+"em> y la <em>salida</em> marcan las políticas por defecto para el tráfico "
+"que entra y deja esta zona mientras que la opción <em>reenvío</em> describe "
+"la política para tráfico reenviado desde diferentes redes en la zona. "
+"<em>Redes cubiertas</em> especifican qué redes disponibles son miembros de "
+"esta zona."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Jueves"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Tiempo en UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "A %s en %s por <var>este dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "A %s en %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "A %s por <var>este dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "A %s, %s en %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "A IP origen"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "A puerto origen"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Reglas de tráfico"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Las reglas de tráfico definen políticas para los paquetes que viajan entre "
+"diferentes zonas, por ejemplo, para rechazar el tráfico entre ciertos hosts "
+"o para abrir puertos WAN en el enrutador."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Martes"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "SNAT sin nombre"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "Reenvío sin nombre"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "Regla sin nombre"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Vía %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Vía %s a %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Miércoles"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Días de la semana"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Puede poner varios seleccionando \"-- personalizado --\" e introduciendo los "
+"protocolos separados por espacio."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zona ⇒ Reenvíos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zonas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "Aceptar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "cualquiera"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "cualquier host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "cualquier router IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "cualquier zona"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "Día"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "No seguir"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "Descartar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "Hora"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "Minuto"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "No"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "Puerto"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "Puertos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "Rechazar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "segundo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "Tráfico"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "Tipo"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "Tipos"
diff --git a/package/luci/applications/luci-app-firewall/po/fr/firewall.po b/package/luci/applications/luci-app-firewall/po/fr/firewall.po
new file mode 100644 (file)
index 0000000..ac136a5
--- /dev/null
@@ -0,0 +1,959 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2013-02-26 00:44+0200\n"
+"Last-Translator: val56 <valentin_sonet@hotmail.fr>\n"
+"Language-Team: French\n"
+"Language: fr\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Action"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Paramètres avancés"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permettre la transmission des <em>zones source</em> :"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permettre la transmission vers les <em>zones destination</em> :"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "N'importe lequel"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Réseaux couverts"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Régles spécifiques"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Adresse IP de destination"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Adresse de destination"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Port de destination"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zone de destination"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Supprimer les paquets invalides"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Activer"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Activer le NAT sur la boucle-locale"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Activer la protection contre le SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Activer les traces (logs) sur cette zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Adresse IP externe"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Port externe"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zone externe"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#  applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua                    #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Pare-feu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Pare-feu -- Règles personnalisées"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Pare-feu -- Redirections de ports"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Pare-feu -- Règles de trafic"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Pare-feu - Configuration des zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Forcer le suivi des connexions"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Transfert"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Transférer à"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Paramètres généraux"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 et IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "IPv4 seulement"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "IPv6 seulement"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Entrée"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Transmission entre zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Adresse IP interne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Port interne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zone interne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limiter les messages de journalisation"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Contrainte du MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Masquage"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Type ICMP correspondant"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Prendre en compte le trafic dirigé vers le port de destination donné (ou la "
+"gamme de ports) sur cet hôte"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nom"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nouvelle règle SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nouvelle règle d'entrée"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nouvelle redirection de port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nouvelle source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Montrer seulement le trafic entrant provenant de ces adresses MAC."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Ports ouverts sur le routeur"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Autre..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Sortie"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Redirections de port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"La redirection de port permet aux ordinateurs distants sur Internet, de se "
+"connecter à un ordinateur ou service spécifié dans le réseau local privé."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocole"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Rediriger le trafic entrant correspondant vers le port donné sur l'hôte "
+"interne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux "
+"destinataires"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux "
+"sources"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Restreindre à cette famille d'adresses"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Adresse IP SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Port SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#  applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua                    #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# msgid "Traffic Redirection"
+# msgstr ""
+#
+# msgid ""
+# "Traffic redirection allows you to change the destination address of "
+# "forwarded packets."
+# msgstr ""
+#
+# msgid "Overview"
+# msgstr ""
+#
+# msgid "Name"
+# msgstr ""
+#
+# msgid "Source zone"
+# msgstr ""
+#
+# msgid "Source MAC-address"
+# msgstr ""
+#
+# msgid "Source port"
+# msgstr ""
+#
+# msgid "Protocol"
+# msgstr ""
+#
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Adresse IP source"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Adresse MAC source"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Adresse source"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Port source"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zone source"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Le pare-feu crée des zones sur les interfaces réseau pour contrôler le flux "
+"du trafic réseau."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Les options ci-dessous contrôlent les politiques de transmission entre cette "
+"zone (%s) et les autres zones. <em>Zones de destination</em> couvre le "
+"trafic transfmis <strong>venant de %q</strong>. <em>Zones source</em> "
+"correspond au trafic transféré d'autres zones <strong> à destination de %q</"
+"strong>. La règle de transmission est <em>unidirectionnelle</em>, la "
+"transmission du LAN au WAN n'implique <em>pas</em> également l'autorisation "
+"de transmission du WAN au LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Cette page vous permet de modifier les propriétés avancées parmi les entrées "
+"de redirection de port. Dans la plupart des cas, cela n'est pas nécessaire "
+"de modifier ces paramètres."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Cette section définit des propriétés communes de %q. Les options <em>entrée</"
+"em> et <em>sortie</em> définissent les politiques par défaut pour le trafic "
+"entrant et sortant de cette zone, tandis que l'option <em>transmission</em> "
+"décrit la politique pour le trafic transmis entre différents réseaux dans "
+"cette zone. Les <em>réseaux couverts</em> indiquent quels réseaux "
+"disponibles sont membre de cette zone."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Règles de trafic"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zone %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zone ⇒ Transmissions"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "accepter"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+#, fuzzy
+msgid "any"
+msgstr "tous"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "ignorer"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "rejeter"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/he/firewall.po b/package/luci/applications/luci-app-firewall/po/he/firewall.po
new file mode 100644 (file)
index 0000000..7878ee5
--- /dev/null
@@ -0,0 +1,890 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/hu/firewall.po b/package/luci/applications/luci-app-firewall/po/hu/firewall.po
new file mode 100644 (file)
index 0000000..4f8a783
--- /dev/null
@@ -0,0 +1,942 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-01-31 16:54+0200\n"
+"Last-Translator: Gabor <juhosg@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s %s-ban"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s %s-el"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s %s-ben"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Névtelen bejegyzés)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Névtelen szabály)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(Névtelen SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> csomag/<var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> csom. <var>%s</var>-enként, burst <var>%d</var> csom."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> és korlátozás %s-re"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Művelet"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Hozzáadás"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Hozzáadás és szerkesztés..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Haladó beállítások"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Továbbítás engedélyezése ezekből a <em>forrás zónákból</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Továbbítás engedélyezése ezekbe a <em>cél zónákba</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Bármelyik"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Lefedett hálózatok"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Egyéni szabályok"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Az egyedi szabályok lehetővé teszik tetszőleges iptables parancsok "
+"futtatását melyekre a tűzfal keretrendszer egyébként nem biztosít "
+"lehetőséget. A parancsok a tűzfal minden újraindításakor futtatásra "
+"kerülnek, közvetlenül az alapértelmezett szabálykészletek betöltése után."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Cél IP-cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Cél cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Cél port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Cél zóna"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Ne írja felül"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Érvénytelen csomagok eldobása"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Engedélyezés"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "NAT visszacsatolás engedélyezése"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "SYN-flood védelem engedélyezése"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Naplózás engeélyezése ezen a zónán"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Külső IP cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Külső port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Külső zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "További argumentumok"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Tűzfal"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Tűzfal - Egyéni szabályok"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Tűzfal - Port továbbítások"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Tűzfal - Forgalmi szabályok"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Tűzfal - Zóna beállítások"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Kapcsolat követés kényszerítése"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Továbbítás"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Továbbítás ennek"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "%s felől %s-ben"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "%s felől %s-ben %s forrással"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "%s felől %s-ben %s és %s forrással"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Általános beállítások"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 és IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "csak IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "csak IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Bemenet"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Zónák-közötti továbbítás"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Belső IP cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Belső port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Belső zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Napló üzenetek korlátozása"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS clamping engegélyezése"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Álcázás"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Szűrés"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Szűrés ICMP típus alapján"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Továbbított forgalom szűrése a megadott cél port, vagy port tartomány "
+"szerint."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Adott portra vagy port tartományra irányított bejövő forgalom szűrése ezen a "
+"gépen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Az ügyfél gép megadott portjáról, vagy port tartományából indított forgalom "
+"szűrése. "
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Név"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Új SNAT szabály"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Új továbbítási szabály"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Új bemeneti szabály"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Új port továbbítás"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Új forrás NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Csak a megadott IP címre irányított bejövő forgalmat egyeztesse."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Csak a megadott MAC címekről érkező bejövő forgalmat egyeztesse."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+"Csak a megadott IP címről illetve IP címtartományból érkező bejövő forgalmat "
+"egyeztesse."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Csak az ügyfél gép megadott forrás portjáról illetve forrás port "
+"tartományába tartozó portról indított bejövő forgalmat egyeztesse."
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Port megnyitása a routeren"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Egyéb..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Kimenet"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"További argumentumok küldése az iptables részére. Használja körültekintően!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Port továbbítás"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"A port továbbítás lehetővé teszi az interneten lévő távoli számítógépeknek a "
+"privát helyi hálózat bizonyos számítógépéhez vagy szolgáltatásához történő "
+"csatlakozását."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr "Átirányítja az egyező bejövő forgalmat a belső gép megadott portjához"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Átirányítja az egyező bejövő forgalmat a megadott belső géphez"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Álcázás korlátozása a megadott cél alhálózatokra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Álcázás korlátozása a megadott forrás alhálózatokra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Korlátozás cím családra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Az összeíllő forgalom átírása a megadott címre."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Az összeillő forgalom átírása a megadott forrás portra. Amennyibe üresen van "
+"hagyva, csak az IP cím kerül átírásra."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Átírás %s forrásra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Átírás %s, %s forrásra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT IP cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Forrás IP cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Forrás MAC cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Forrás NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"A forrás NAT az álcázás olyan speciális formája, mely lehetővé teszi a "
+"kimenő forgalomhoz használt forrás IP címek aprólékos szabályozását, például "
+"több WAN cím hozzárendelését a belső alhálózatokhoz."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Forrás cím"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Forrás port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Forrás zóna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"A tűzfal zónákat határoz meg a hálózati interfészek fölött a hálózati "
+"forgalom áramlásának szabályozására."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Az alábbi beállítások vezérlik a továbbítási irányelveket a jelenlegi zóna "
+"(%s) és a többi zóna között. A <em>cél zónák</em> fedik le a továbbított "
+"forgalmat <strong>amelynek forrása %q</strong>. A <em>forrás zónák</em> "
+"szűrik a továbbított forgalmat más zónákból <strong>melynek célja %q</"
+"strong>. A továbbítási szabály <em>egyirányú</em>, tehát pl. egy továbbítás "
+"LAN-ból WAN-ba <em>nem</em> jelenti azt, hogy a továbbítás WAN-ból LAN-ba is "
+"engedélyezett."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Ez a lap lehetővé teszi a port továbbítási bejegyzések speciális "
+"tulajdonságainak módosítását. A legtöbb esetben ezeknek a beállításoknak a "
+"módosítása nem szükséges."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Ez a lap lehetővé teszi a forgalmi szabály bejegyzés speciális "
+"tulajdonságainak módosítását, mint a forrás- és célgépek megfeleltetése."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Ez a rész a(z) %q általános beállításait határozza meg. A <em>bejövő</em> és "
+"<em>kimenő</em> beállítások határozzák meg a zónába be- és kilépő forgalom "
+"alapértelmezett szabályait, míg a <em>továbbítási</em> beállítás a különböző "
+"hálózatok közötti forgalomtovábbítás szabályát írja le a zónán belül. A "
+"<em>lefedett hálózatok</em> adják meg, hogy mely elérhető hálózatok tagjai "
+"ennek a zónának."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "%s-re %s-nél a <var>eszközön</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "%s-re %s-ben"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "%s-re a <var>eszközön</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "%s-re, %s %s-ben"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Forrás IP-re"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Forrás portra"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Forgalmi szabályok"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"A forgalmi szabályok a különböző zónák között utazó csomagokra vonatkozó "
+"házirendet határozzák meg, például bizonyos gépek közötti forgalom "
+"megakadályozához vagy WAN portok megnyitásához a routeren."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "%s-en át"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "%s-en át %s-nél"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Az \"-- egyéni --\" lehetőség választásával több protokoll megadása "
+"lehetséges egymástól szóközzell elválasztva."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zóna %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zóna ⇒ Továbbítások"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zónák"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "elfogadás"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "bármelyik"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "bármelyik gép"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "bármelyik router IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "bármelyik zóna"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "ne kövesse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "eldobás"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "visszautasítás"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/it/firewall.po b/package/luci/applications/luci-app-firewall/po/it/firewall.po
new file mode 100644 (file)
index 0000000..4064148
--- /dev/null
@@ -0,0 +1,958 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2017-09-02 23:05+0200\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s con %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> e limita a %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Azione"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Aggiungi"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Aggiungi e modifica..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Opzioni Avanzate"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permetti routing da <em>zone di origine</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permetti rounting a <em>zone di destinazione</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Qualsiasi"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Reti coperte"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Regole Personalizzate"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Le regole personalizzate ti permettorno di eseguire comandi iptables "
+"arbitrari che non sono altrimenti coperti dall'applicazione firewall. I "
+"comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre "
+"regole che sono state caricate."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Indirizzo IP destinazione"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Indirizzo di destinazione"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Porta di destinazione"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona di destinazione"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Non riscrivere"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Scarta pacchetti invalidi"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Attiva"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Attiva NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Attiva protezione SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Attiva registro su questa zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Indirizzo IP Esterno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Porta Esterna"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zona Esterna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Comandi extra"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Regole Personalizzate"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Inoltro Porte"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Regole Traffico"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Opzioni delle Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Forza tracciamento connessione"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Inoltra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Inoltra a"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "Venerdì"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Da %s a %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Da %s a %s con sorgente %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Da %s a %s con sorgente %s e %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Opzioni Generali"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 e IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Solo IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Solo IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Ingresso"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Inoltro tra le zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Indirizzo IP interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Porta interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zona Interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limita messaggi del registro"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Corrispondenza"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Corrispondenza tipo ICMP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "Corrispondi traffico inoltrato alla porta o intervallo di porte dato."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Corrispondi traffico in entrata diretto alla porta o intervallo di porte "
+"dato su questo host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Corrispondi traffico in entrata originato dalla porta o intervallo di porte "
+"dato su host cliente"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Lunedì"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Giorni del Mese"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nome"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nuova regola SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nuova regola di inoltro"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nuova regola di ingresso"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nuova porta di inoltro"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nuova sorgente NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Corrispondi solo traffico in entrata da questi MAC."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Corrispondi solo traffico in entrata originato dalla porta o intervallo di "
+"porte sorgenti su host cliente"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Porte aperte sul router"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Altri..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Passa comandi addizionali a iptables. Usare con cura!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Inoltri Porta"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"L'inoltro delle porte permette ai computer in remoto su Internet di "
+"connettersi a uno specifico computer o servizio presente nella LAN privata"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocollo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr "Reindirizza il traffico in entrata alla porta data su host interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Reindirizza il traffico in entrata allo specifico host interno"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Riavvia Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Limita il Masquerading alle subnet di destinazione date"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Limita il Masquerading alle subnet sorgente date"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Limita agli indirizzi famiglia"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Riscrivi il traffico verso l'indirizzo dato."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Riscrivi il traffico corrispondente alla porta sorgente data. Può essere "
+"lasciato vuoto per riscrivere solo l'indirizzo IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Riscrivi alla sorgente %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Riscrivi alla sorgente %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Indirizzo IP SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Porta SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Sabato"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua      #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# msgid "Traffic Redirection"
+# msgstr ""
+# msgid ""
+# "Traffic redirection allows you to change the destination address of "
+# "forwarded packets."
+# msgstr ""
+# msgid "Overview"
+# msgstr ""
+# msgid "Name"
+# msgstr ""
+# msgid "Source zone"
+# msgstr ""
+# msgid "Source MAC-address"
+# msgstr ""
+# msgid "Source port"
+# msgstr ""
+# msgid "Protocol"
+# msgstr ""
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Indirizzo IP di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Indirizzo MAC di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"La sorgente NAT è una forma specifica di masquerading che consente un "
+"controllo preciso sull'IP sorgente usato per il traffico in uscita, per "
+"esempio per mappare indirizzi WAN multipli verso le subnet interne."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Indirizzo di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Porta di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona di origine"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Data di Inizio (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Ora di Inizio (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Data di Stop (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Ora di Stop (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Domenica"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Il firewall crea delle zone nelle tue interfacce di rete per controllare il "
+"flusso del traffico."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Queste opzioni controllano le regole di inoltro tra questa zona (%s) e altre "
+"zone. Le <em>zone di destinazione</em> coprono il traffico inoltrato "
+"<strong>originato da %q</strong>. Le <em>zone di origine</em> corrispondono "
+"il traffico inoltrato da altre zone <strong>che puntano a %q</strong>. La "
+"regola di inoltro è <em>unidirezionale</em>, esempio: un inoltro dalla lan "
+"alla wan <em>non</em> implica anche un permesso da inoltrare dalla wan alla "
+"lan."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce porta "
+"di inoltro. Nella maggioranza dei casi non serve modificare queste "
+"impostazioni."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce regola "
+"del traffico, come la sorgente corrispondente e gli host di destinazione."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Questa sezione definisce le proprietà comuni di %q. Le opzioni "
+"di<em>ingresso</em> e <em>uscita</em> definiscono le regole di default per "
+"il traffico in entrata e uscita di questa zona mentre l'opzione di "
+"<em>inoltro</em> descrive il metodo per il traffico inoltrato tra reti "
+"differenti nella zona. Le <em>reti coperte</em> specificano quali reti "
+"disponibili sono membri di questa zona."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Giovedì"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Orario in UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Verso %s a %s su <var>questo dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Verso %s in %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Verso %s su <var>questo dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Verso %s, %s in %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Verso IP sorgente"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Verso la porta sorgente"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Regole di Traffico"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Le regole del traffico definiscono il metodo per il viaggio dei pacchetti "
+"tra zone differenti, per esempio per rifiutare il traffico tra certi host o "
+"per aprire porte WAN sul router."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Martedì"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Via %s a %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Mercoledì"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Giorni della Settimana"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo i "
+"protocolli separati da uno spazio."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zona ⇒ Inoltri"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "accetta"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "qualsiasi"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "qualsiasi host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "qualsiasi router IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "qualsiasi zona"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "non tracciare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "scarta"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "rifiuta"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "traffico"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ja/firewall.po b/package/luci/applications/luci-app-firewall/po/ja/firewall.po
new file mode 100644 (file)
index 0000000..dda7c2e
--- /dev/null
@@ -0,0 +1,975 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2018-06-30 23:19+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.7\n"
+"Language-Team: \n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s (%s)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s ,%s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s (%s)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(名前設定の無いエントリー)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(名前設定の無いルール)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(名前設定の無いSNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> パケット / <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+"<var>%d</var> パケット / <var>%s</var>, バースト <var>%d</var> パケット"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var>, %s を上限に設定"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "転送を許可"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "入力を許可"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "出力を許可"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "動作"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "追加"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "追加及び編集..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "詳細設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "<em>送信元ゾーン</em>からの転送を許可する:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "<em>宛先ゾーン</em>への転送を許可する:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "全て"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "対象ネットワーク"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "手動設定ルール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"手動設定ルールの設定では、ファイアウォールの設定画面ではサポートされていない"
+"ような、任意のiptablesコマンドを実行することが可能です。これらの任意のコマン"
+"ドは、ファイアウォール機能の起動ごとに、標準のルールが読み込まれた後に実行さ"
+"れます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "宛先IPアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "宛先アドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "宛先ポート"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "宛先ゾーン"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "無効"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "転送を破棄"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "入力を破棄"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "出力を破棄"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "リライトしない"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "転送を追跡しない"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "入力を追跡しない"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "出力を追跡しない"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "無効なパケットを遮断する"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "有効"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "NATループバックを有効にする"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "SYN-Floodプロテクションを有効にする"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "このゾーンのログ記録を有効にする"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "実験的な機能です。 QoS/SQM との完全な互換性はありません。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "外部IPアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "外部ポート"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "外部ゾーン"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "追加設定"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "ファイアウォール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "ファイアウォール - 手動設定ルール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "ファイアウォール - ポートフォワーディング"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "ファイアウォール - トラフィック・ルール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "ファイアウォール - ゾーン設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "強制的にコネクション追跡を行う"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "転送"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "転送先"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "金曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "送信元 %s (%s)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "送信元 %s (%s) , %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "送信元 %s (%s) , %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "送信元 %s (<var>デバイス</var>)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "送信元 %s, %s (<var>デバイス</var>)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "送信元 %s, %s, %s (<var>デバイス</var>)"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "一般設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "ハードウェア フローオフロード"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "IP の範囲"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4及びIPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "IPv4のみ"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "IPv6のみ"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "受信"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "内部ゾーン転送"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "内部IPアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "内部ポート"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "内部ゾーン"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "ログメッセージを制限"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSSクランプ"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "マスカレード"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "対象"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "ICMPタイプの一致"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"設定された宛先ポート(またはポート範囲)に一致した転送トラフィックが対象になり"
+"ます"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"設定された宛先ポート(またはポート範囲)に一致した受信トラフィックが対象になり"
+"ます"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"設定されたクライアントホストの送信元ポート(またはポート範囲)からの受信トラ"
+"フィックと一致したトラフィックが対象になります。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "月曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "月間"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "名前"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "SNATルールの新規作成"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "転送ルールの新規作成"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "受信ルールの新規作成"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "転送設定の新規作成"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "SNATルールの新規作成"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "設定された宛先IPアドレスと一致した受信トラフィックが対象になります。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "設定されたMACアドレスと一致した受信したトラフィックが対象になります。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+"設定されたIPアドレス (または範囲) と一致した受信したトラフィックが対象になり"
+"ます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"設定されたクライアントホストの送信元ポート(またはポート範囲)からの受信トラ"
+"フィックと一致したトラフィックのみを対象にします。"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "ポートの開放"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "その他のプロトコル"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "送信"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "出力ゾーン"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"iptablesにパススルーする追加の引数を設定してください。ただし、注意して設定し"
+"てください!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "ポートフォワーディング"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"ポートフォワーディングは、インターネット上のリモートコンピュータから、プライ"
+"ベートなネットワーク上の、特定のコンピュータやサービスへのアクセスを可能にし"
+"ます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "プロトコル"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"ルールに一致した受信トラフィックを、内部ホストの設定されたポートへ転送します"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "転送を拒否"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "入力を拒否"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "出力を拒否"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+"ハードウェア NAT サポートが必要です。 mt7621 のみにおいて実装されています。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "ファイアウォールの再起動"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "設定された宛先サブネットへのマスカレードを制限する"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "設定された送信元サブネットへのマスカレードを制限する"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "アドレスファミリの制限"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+"ルールに一致したトラフィックの送信元アドレスを設定した値にリライトします。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"ルールに一致したトラフィックの送信元ポートを設定した値にリライトします。空欄"
+"にした場合、IPアドレスのみを書き直します。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "送信元 %s にリライト"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "送信元 %s, %s にリライト"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "ルーティング/NAT オフロード"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "ルールは無効です"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "ルールは有効です"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT IPアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT ポート"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "土曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "ソフトウェア フローオフロード"
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua      #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# msgid "Traffic Redirection"
+# msgstr ""
+#
+# msgid ""
+# "Traffic redirection allows you to change the destination address of "
+# "forwarded packets."
+# msgstr ""
+#
+# msgid "Overview"
+# msgstr ""
+#
+# msgid "Name"
+# msgstr ""
+#
+# msgid "Source zone"
+# msgstr ""
+#
+# msgid "Source MAC-address"
+# msgstr ""
+#
+# msgid "Source port"
+# msgstr ""
+#
+# msgid "Protocol"
+# msgstr ""
+#
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "送信元IPアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "送信元MACアドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "送信元NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"送信元NAT設定は、複数のWANアドレスを内部のサブネットにマッピングするような、"
+"出力トラフィックに対する送信元IPアドレスのきめ細かい制御を行うマスカレードの"
+"設定フォームです。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "送信元アドレス"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "送信元ポート"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "送信元ゾーン"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "開始日 (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "開始時刻 (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "停止日 (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "停止時刻 (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "日曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"ファイアウォール機能は、各ネットワークインターフェース上にゾーンを作成してト"
+"ラフィックの制御を行います。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"下記の設定は、このゾーン (%s)とその他のゾーン間の転送ポリシーを制御します。"
+"<em>宛先ゾーンへの転送</em> は、<strong>%q から</strong>転送されたトラフィッ"
+"クに対して転送を許可します。 <em>送信元ゾーンからの転送</em> は、別のゾーンか"
+"ら<strong>%qへ</strong> の転送を許可します。トラフィック転送設定は、<em>一方"
+"向</em>であり、例えばlanからwanへの転送設定は、wanからlanへの転送を<em>許可し"
+"ません。</em>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"このページでは、各転送ルールの詳細設定を行うことができます。ただし、ほとんど"
+"のケースは、これらの設定を変更する必要はありません。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"このページでは、各トラフィックルールの送信元・宛先ホストの設定などの詳細設定"
+"を行うことができます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"このセクションでは、%sの標準的な動作を設定します。<em>受信</em>及び<em>送信</"
+"em>オプションは、このゾーンに対して入出力するトラフィックに対する標準のポリ"
+"シーを設定し、<em>転送</em>オプションは、ゾーン間の転送トラフィックに対する標"
+"準のポリシーになります。<em>対象ネットワーク</em>は、どのネットワーク設定がこ"
+"のゾーンに属するかを設定します。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "木曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "UTC時刻を使用"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "宛先 %s, %s (<var>デバイス</var>)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "宛先 %s (%s)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "宛先 %s (<var>デバイス</var>)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "宛先 %s, %s (%s)"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "変換後送信元IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "変換後送信元ポート"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "トラフィック・ルール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"トラフィック・ルールの設定では、ゾーン間を行き来するパケットのポリシーを設定"
+"します。例えば、特定のホスト間や、ルーターのWANポートへのトラフィックの拒否を"
+"設定することができます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "火曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "名称未設定の SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "名称未設定の転送"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "名称未設定のルール"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "経由 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "経由 %s , %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "水曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "曜日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"\"-- 手動設定 --\"を選択し、プロトコルをスペースで区切って入力することで複数"
+"のプロトコルを指定することができます。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "ゾーン %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "ゾーン ⇒ 転送"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "ゾーン"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "許可"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "全て"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "全てのホスト"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "全てのルーターIP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "全てのゾーン"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "コネクション追跡を行わない"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "破棄"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "時間"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "分"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "ポート"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "ポート"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "拒否"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "秒"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "トラフィック"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "タイプ"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "タイプ"
diff --git a/package/luci/applications/luci-app-firewall/po/ko/firewall.po b/package/luci/applications/luci-app-firewall/po/ko/firewall.po
new file mode 100644 (file)
index 0000000..2d8cbbf
--- /dev/null
@@ -0,0 +1,924 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2012-11-14 17:32+0200\n"
+"Last-Translator: Weongyo Jeong <weongyo@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ko\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s ,%s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "추가 후 수정..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "<em>Source zone</em> 로부터의 forward 허용:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "<em>Destination zone</em> 으로 forward 허용:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Custom Rule"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Custom rule 은 방화벽 UI 로 해결이 되지 않는 임의의 iptables 명령을 실행할 "
+"수 있도록 합니다.  입력된 명령어들은 매 방화벽 재시작시 실행되는데 default "
+"ruleset 이 load 된 후 시점입니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Destination IP 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Destination 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "활성화"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "NAT Loopback 활성화"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "SYN-flood protection 활성화"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "zone 의 logging 활성화"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "외부 IP 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "외부 port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "외부 zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "추가 argument"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "방화벽"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "방화벽 - Custom Rules"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "방화벽 - Port Forwards"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "방화벽 - Traffic Rules"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "방화벽 - Zone 설정"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "금요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "내부 IP 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "내부 port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "내부 zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "월요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "이름"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "새로운 SNAT rule"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "새로운 forward rule"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "새로운 input rule"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "새로운 port forward"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "새로운 source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "iptables 명령에 추가 인자들을 더합니다.  조심해 사용하세요!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Port Forward"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Port forwarding 기능은 인터넷 상의 원격 컴퓨터가 내부 LAN 에 속한 특정 컴퓨터"
+"나 서비스에 접속할 수 있도록 합니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "주어진 destination subnet 으로 Masquerading 제한"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "주어진 source subnet 으로 Masquerading 제한"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Address family 제한"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "토요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Source IP 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Source MAC 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Source NAT 기능은 masquerading 의 한 형태로써 outgoing 트래픽이 사용할 "
+"source IP 를 세밀하게 제어할 수 있습니다.  예를 들어 다수의 WAN 주소들을 내"
+"부 subnet 에 매핑(mapping) 할 경우 사용됩니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Source 주소"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "시작 날짜 (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "시작 시간 (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "종료 날짜 (yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "종료 시간 (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "일요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"방화벽 기능을 이용하여 네트워크 인터페이스와 연결된 zone 을 생성할 수 있고 이"
+"를 이용하여 네트워크 traffic flow 를 제어할 수 있습니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"이 zone (%s) 과 다른 zone 들 사이의 forwarding 정책을 제어하는 옵션들입니다. "
+"<em>Destination zones</em> 은 <strong>%q 에서 출발한 </strong> forward "
+"traffic 을 뜻하고, <em>Source zones</em> 은 다른 zone 들에서 <strong>%q 로 전"
+"달되는</strong> forward traffic 을 뜻합니다. Forwarding rule 은 "
+"<em>unidirectional</em> 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 "
+"WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"이 메뉴에서는 port forwarding 의 고급 설정 정보를 변경할 수 있습니다. 대부분"
+"의 경우 이 설정을 수정할 일이 없습니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"이 메뉴에서는 traffic rule 항목의 고급 설정, 예를 들어 source host 와 "
+"destination host 매칭, 을 변경할 수 있습니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다.  <em>input</em> 과 "
+"<em>output</em> 옵션은 이 zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기"
+"본 정책을 뜻합니다. <em>forward</em> 옵션은 zone 내에서 다른 네트워크들 사이"
+"를 오가는 forward traffic 에 대한 정책을 뜻합니다. <em>Covered networks</em> "
+"에서는 zone 의 영향을 받을 네트워크들을 지정할 수 있습니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "목요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "UTC 기준시"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Traffic Rule"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Traffic rule 은 서로 다른 zone 사이를 오가는 패킷들에 대한 정책을 정의합니"
+"다. 예를 들어 특정 host 들 사이의 트래픽을 차단하거나 공유기의 WAN port 를 "
+"open 할때 사용됩니다."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "화요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "수요일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "주일"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zone 내역"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ms/firewall.po b/package/luci/applications/luci-app-firewall/po/ms/firewall.po
new file mode 100644 (file)
index 0000000..ed239a5
--- /dev/null
@@ -0,0 +1,889 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/no/firewall.po b/package/luci/applications/luci-app-firewall/po/no/firewall.po
new file mode 100644 (file)
index 0000000..11ed8e8
--- /dev/null
@@ -0,0 +1,936 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2013-03-25 16:42+0200\n"
+"Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language: no\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s i %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s med %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(oppføring uten navn)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(regel uten navn)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT uten navn)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> pakker per <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> pakker per <var>%s</var>, burst <var>%d</var>pakker."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> og begrens til %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Handling"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Legg til"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Legg til og redigere..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Avanserte Innstillinger"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Tillat videresending fra <em>kilde soner</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Tillat videresending til <em>destinasjon soner</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Enhver"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Gjeldene nettverk"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Egendefinerte Regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Egendefinerte regler tillater deg å utføre vilkårlige iptables kommandoer "
+"som ikke dekkes av brannmurens standardoppsett. Kommandoene utføres etter "
+"hver omstart av brannmuren, rett etter at standard regelsett er lastet."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Destinasjon IP adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Destinasjon adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Destinasjon port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Destinasjon sone"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Ikke omskriv"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Forkast ugyldige pakker"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Aktiver"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Aktiver NAT <abbr title=\"Loopback\">Tilbakekobling</abbr>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Aktiver SYN-flood beskyttelse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Aktiver logging av denne sonen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Ekstern IP adressse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Ekstern port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Ekstern sone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Ekstra argumenter"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Brannmur"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Brannmur - Egendefinerte Regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Brannmur - Port Videresending"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Brannmur - Trafikk Regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Brannmur - Sone Innstillinger"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+"Bruk <abbr title=\\\"connection tracking\\\">forbindelse sporing</abbr>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Videresend"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Videresend til"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Fra %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Fra %s i %s med kilde %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Fra %s i %s med kilde %s og %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Generelle Innstillinger"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 og IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Kun IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Kun IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Inndata"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Sone til Sone Videresending"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Intern IP adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Intern port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Intern sone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Begrens logging"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS Kontroll (Clamping)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Masquerading"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Match"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Match ICMP type"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Match videresendt trafikk til den oppgitte destinasjonsport eller "
+"portområdet."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Match innkommende trafikk rettet mot den oppgitte destinasjonsport eller "
+"portområdet på denne verten"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Match innkommende trafikk som kommer fra den oppgitte kildeport eller "
+"portområdet på klienten."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Navn"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Ny SNAT regel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Ny videresending regel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Ny inndata regel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Ny port videresending"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Ny kilde NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Match kun innkommende trafikk rettet mot den oppgitt IP adresse."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Match kun innkommende trafikk fra disse MAC adresser."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Match kun innkommende trafikk fra denne IP eller IP område."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Match kun innkommende trafikk som kommer fra den oppgitte kildeport eller "
+"fra portområdet til klienten"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Åpne porter på ruteren"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Andre..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Utdata"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Port Videresendinger"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Port videresending tillater at eksterne datamaskiner på Internett kan koble "
+"seg til en bestemt maskin eller tjeneste innenfor det private LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Viderekoble matchet innkommende trafikk til den oppgitte porten på intern "
+"vert"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Begrens Masquerading til oppgitt destinasjons subnett"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Begrens Masqeuerading til oppgitt kilde subnett"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Begrens til adresse familie"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Omskriv matchet trafikk til den oppgitte adressen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Omskriv matchet trafikk til den oppgitte kildeport. Kan stå tom for kun "
+"omskriving av IP adressen."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Omskriv til kilde %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Omskriv til kilde %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT IP adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Kilde IP adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Kilde MAC adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Kilde NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Kilde NAT er en spesifikk form for masquerading som tillater finkornet "
+"kontroll over kilde IP adressen som brukes for utgående trafikk, for "
+"eksempel for å mappe flere WAN adresser til interne subnett."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Kilde adresse"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Kilde port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Kilde sone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Brannmuren skaper soner over nettverkets grensesnitt for å styre "
+"nettverkstrafikken."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Med valgene under konfigurerer man videresending mellom denne sone (%s) og "
+"andre soner. <em>Destinasjons soner</em> omhandler videresendt trafikk "
+"<strong>med opprinnelse fra %q</strong>. <em>Kilde soner</em> matcher "
+"videresendt trafikk fra andre soner <strong>rettet mot %q</strong>. Reglene "
+"ved videresending er <em>enveis</em>, d.v.s at videresending fra LAN til WAN "
+"<em>ikke</em> automatisk også tillater videresending fra WAN til LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Denne siden lar deg endre avanserte egenskaper til port videresending "
+"oppføringer. I de fleste tilfeller er det ikke nødvendig å endre disse "
+"innstillingene."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Denne siden lar deg endre de avanserte egenskapene til trafikken regel "
+"oppføringer, som for eksempel matchet kilde og destinasjons vert."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Denne seksjonen definerer de vanligste valg for %q. Med <em>Inndata</em> og "
+"<em>Utdata</em> fastsetter man vanlige regler for trafikk gjennom sonen, "
+"mens <em>videresend</em> valget definerer regler for videresendt trafikk "
+"mellom forskjellige nettverk i sonen. <em>Gjeldene nettverk</em> "
+"spesifiserer hvilken av de tilgjengelige nettverk som er medlem av denne "
+"sone."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Til %s på %s på <var>denne enheten</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Til %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Til %s på <var>denne enheten</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Til %s, %s i %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Til kilde IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Til kilde port"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Trafikk Regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Trafikk regler definerer regler for sending av pakker mellom ulike soner, "
+"for eksempel for å avvise trafikk mellom visse verter eller for å åpne WAN "
+"porter på ruteren."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Via %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Via %s på %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Du kan spesifisere flere ved å velge \"-- egendefinert --\" og deretter "
+"skrive flere protokoller atskilt med mellomrom."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Sone %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Sone = Videresendinger"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Soner"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "godta"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "enhver"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "enhver vert"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "enhver ruter IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "enhver sone"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "ikke track"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "forkast"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "avslå"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/pl/firewall.po b/package/luci/applications/luci-app-firewall/po/pl/firewall.po
new file mode 100644 (file)
index 0000000..a3c7b1f
--- /dev/null
@@ -0,0 +1,949 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2013-06-22 15:49+0200\n"
+"Last-Translator: obsy <cezary@eko.one.pl>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s w %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s z %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s w %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Nienazwany wpis)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Nienazwana reguła)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(Nienazwany SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> pakiet. na <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+"<var>%d</var> pakiet. na <var>%s</var>, popsutych <var>%d</var> pakiet."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> i ograniczone do %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Działanie"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Dodaj"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Dodaj i edytuj..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Ustawienia zaawansowane"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Zezwól na przekazywanie z <em>source zones</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Zezwól na przekazywanie do <em>destination zones</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Każdy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Objęte sieci"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Własne reguły"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Własne reguły pozwalają na arbitralne wykonanie poleceń iptables, które nie "
+"są objęte składnią zapory. Polecenia wykonywane są po każdym restarcie "
+"zapory, zaraz po załadowaniu zestawu reguł domyślnych."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Docelowy adres IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Adres docelowy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Port docelowy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Strefa docelowa"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Nie przepisuj"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Porzuć wadliwe pakiety"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Włącz"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Włącz NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Włącz ochronę przed atakiem SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Włącz logowanie na tej strefy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Zewnętrzne adresy IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Port zewnętrzny"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Strefa zewnętrzna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Dodatkowe argumenty"
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua      #
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Zapora"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Zapora - Reguły własne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Zapora - Przekazywanie portów"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Zapora - Reguły ruchu"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Zapora - Ustawienia strefy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Wymuś śledzenie połączeń"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Przekazuj"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Przekazuj do"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Z %s w %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Z %s w %s ze źródłem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Z %s w %s ze źródłem %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Ustawienia ogólne"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 i IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Tylko IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Tylko IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Ruch przychodzący"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Przekazywanie pomiędzy strefami"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Wewnętrzny adres IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Wewnętrzny port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Strefa wewnętrzna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Ograniczenie logowania"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Dostosuj MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Maskarada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Dopasuj"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Dopasuj typ ICMP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Dopasuj przekazywany ruch do danego docelowego portu lub zakresu portów"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Dopasuj ruch przychodzący do danego portu docelowego lub zakresu portów na "
+"tym hoście"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Dopasuj przychodzący ruch pochodzący z danego portu źródłowego lub zakresu "
+"portów na hoście klienta."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nazwa"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nowa reguła SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nowa reguła przekazywania (forward)"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nowa reguła wejściowa (input)"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Nowe przekierowanie portu"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nowy NAT źródłowy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Dopasuj tylko przychodzący ruch skierowany do danego adresu IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Dopasuj tylko ruch z tych adresów MAC."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Dopasuj tylko ruch przychodzący z tego adresu IP lub zakresu adresów."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Dopasuj tylko ruch przychodzący z podanego portu źródłowego lub zakresu "
+"portów na hoście klienta"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Otwarte porty na routerze"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Inne..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Wyjście (Output)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Przekierowania portów"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Przekierowanie portów pozwala komputerom z internetu na połączenia z "
+"komputerami z sieci LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokół"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Przekieruj ruch przychodzący na podany port do wskazanego hosta w sieci "
+"wewnętrznej"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Ogranicz maskaradę do wskazanych sieci docelowych"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Ogranicz maskaradę do wskazanych sieci źródłowych"
+
+# Wstawiłem rodzinę gdyż gdzieś wcześniej było tak opisane ale klasa pasuje mi tu bardziej.
+# Obsy - niestety ale "rodzina". W gui dotyczy to wyboru IPv4/IPv6, więc "rodzina" a nie klasa.
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Ogranicz do rodziny adresów"
+
+# Dosłownie przetłumaczone, nie bardzo wiem czy chodzi o czynność przepisywania pakietu przez usługę czy to jakieś ogólne sformułowanie...
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Przepisz dopasowany ruch do wskazanych adresów."
+
+# Jak wyżej chodzi o przepisanie pakietu przez usługę?
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Przepisz dopasowany ruch do danego portu źródłowego. Można zostawić puste "
+"aby przepisać tylko adres IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Przepisz do źródła %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Przepisz do źródła %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Adres IP SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Port SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Źródłowy adres IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Źródłowy adres MAC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT źródłowy"
+
+# http://www.digipedia.pl/def/doc/id/677604507/name/SNAT/
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"SNAT używany jest wtedy, gdy zmieniane są adresy pakietów połączenia "
+"wychodzącego, czyli pakiety źródłowe. Wykonywany jest zawsze po routowaniu "
+"(POSTROUTING), a więc w chwili, gdy pakiety są gotowe opuścić host. "
+"IPmasquerading jest formą SNAT."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Adres źródłowy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Port źródłowy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Strefa źródłowa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Firewall tworzy strefy z Twoich interfejsów sieciowych, aby kontrolować ruch "
+"sieciowy."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Opcje poniżej kontrolują politykę przekazywania pomiędzy tą strefą (%s) a "
+"innymi strefami. <em>Strefy docelowe</em> obejmują przekazywany ruch "
+"<strong>pochodzący z %q</strong>. <em>Strefy źródłowe</em> match forwarded "
+"traffic from other zones <strong>skierowane do %q</strong>. Reguła "
+"przekazywania jest <em>jednokierunkowa</em>, np. przekazywanie z sieci LAN "
+"do WAN <em>nie</em> implikuje pozwolenia na przekazywanie z sieci WAN do LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Ta strona pozwala zmienić zaawansowane ustawienia przekierowania portów. W "
+"większości przypadków nie ma potrzeby zmieniać tych ustawień."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Ta strona pozwala zmienić zaawansowane ustawienia reguły ruchu sieciowego, "
+"takie jak pasujące źródło i hosty docelowe."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+#, 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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Ta sekcja definiuje ustawienia ogólne %q. Opcje <em>\"wejście\"</em> i <em>"
+"\"wyjście\"</em> określają domyślną politykę dla ruchu przychodzącego i "
+"wychodzącego w tej strefie, podczas gdy <em>\"przekazywanie\"</em> opisuje "
+"politykę ruchu przekazywanego pomiędzy różnymi sieciami wewnątrz strefy. "
+"<em>Objęte sieci</em> określają dostępne sieci będące członkami tej strefy."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Do %s w %s na <var>tym urządzeniu</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Do %s w %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Do %s na <var>tym urządzeniu</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Do %s, %s w %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Do źródłowego IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Do źródłowego portu"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Reguły ruchu sieciowego"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Reguły ruchu sieciowego definiują politykę dla pakietów przechodzących "
+"między strefami, na przykład aby odrzucać ruch między konkretnymi hostami "
+"albo otworzyć porty WAN routera."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Przez %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Przez %s w %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Możesz określić kilka wybierając \"-- własne --\" i wpisując protokoły "
+"rozdzielone spacją."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Strefa %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Strefa ⇒ Przekazywanie"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Strefy"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "akceptuj"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "dowolny"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "dowolny host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "dowolne IP routera"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "dowolna strefa"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "nie śledź"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "porzucaj"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "odrzucaj"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po b/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po
new file mode 100644 (file)
index 0000000..e6be5d0
--- /dev/null
@@ -0,0 +1,941 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2018-09-20 19:57-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: Poedit 2.1.1\n"
+"Language-Team: \n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s in %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s com %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Entrada Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Regra Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> pcts. por <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> pcts. por <var>%s</var>, pico <var>%d</var> pcts."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> e limite a %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "Aceitar o encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "Aceitar a entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "Aceitar a saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Ação"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Adicionar"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Adicionar e editar..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Configurações Avançadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permite o encaminhamento da <em>zona de origem</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permite o encaminhamento para a <em>zona de destino</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Qualquer"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Redes cobertas"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Regras Personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"As regras personalizadas permitem executar comandos iptables arbitrários não "
+"cobertos por esta ferramenta. Os comandos serão executados após cada "
+"reinício do firewall, logo após a carga do conjunto de regras padrão."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Endereço IP de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Endereço de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Porta de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona de destino"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "Desabilitar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "Descartar o encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "Descartar a entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "Descartar a saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Não sobrescreva"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "Não rastrear o encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "Não rastrear a entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "Não rastrear a saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Descartar pacotes inválidos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Habilitar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Habilite o Loopback do NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Habilite proteção contra SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Habilite o registro nesta zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+"Funcionalidade experimental. Ela não é totalmente compatível com QoS/SQM."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Endereço IP externo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Porta Externa"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zona externa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Argumentos extras"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Regras personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Encaminhamento de Portas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Regras de Tráfego"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Configurações de Zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Force o rastreamento da conexão"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Encaminhar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Encaminhar para"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "Sexta-feira"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Vindo de %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Vindo de %s em %s com origem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Vindo de %s em %s com origem %s e %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "De %s <var>neste dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "De %s <var>neste dispositivo</var> com origem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "De %s <var>neste dispositivo</var> com origem %s e %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "Aceleração de fluxo de dados via Hardware"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "Faixa IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IPs"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 e IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Somente IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Somente IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Entrada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Encaminhamento entre Zonas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Endereço IP interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Porta Interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zona interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limita as mensagens de registro"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MACs"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Ajuste do MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Mascaramento"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Casa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Casa com ICMP tipo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Casa o tráfego encaminhado para uma porta ou faixa de portas de destino "
+"específica."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Casa o tráfego entrante direcionado para uma porta ou faixa de portas de "
+"destino específica neste computador"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Casa o tráfego entrante originado de uma porta ou faixa de portas no "
+"equipamento cliente."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Segunda-Feira"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Dias do mês"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nome"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nova regra de SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nova regra de encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nova regra de entrada"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Novo encaminhamento de porta"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nova origem NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+"Somente case o tráfego entrante direcionado para o endereço IP fornecido."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Somente case o tráfego entrante destes endereços MAC."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Somente case o tráfego entrante desta faixa de endereços IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Somente case o tráfego entrante vindo da porta de origem fornecida ou "
+"intervalo de portas no equipamento cliente"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Abrir portas no roteador"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Outro..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "Zona de saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Encaminhamentos de Porta"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"O encaminhamento de portas permite que computadores remotos na Internet "
+"conectem a um computador ou serviço específico dentro da rede local privada."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Redireciona tráfego entrante para a porta especificada no computador interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Redireciona tráfego entrante para o computador interno especificado"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "Recusar encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "Recusar entrada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "Recusar saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr "Requer suporte de NAT em hardware. Implementado ao menos para mt7621"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Reiniciar o Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Restringe o mascaramento para uma subrede de destino específica"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Restringe o mascaramento para uma subrede de origem específica"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Restringe para uma família de endereços"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Reescreva o tráfego correspondente para o endereço fornecido."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Reescreva o tráfego correspondente para a porta de origem fornecida. Pode "
+"ficar em branco para somente reescrever o endereço IP."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Reescrever para a origem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Reescrever para a origem %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Aceleração de Roteamento/NAT"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "A regra está desabilitada"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "A regra está habilitada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Endereço IP da SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Porta da SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Sábado"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "Aceleração de roteamento/NAT baseada em Software"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "Aceleração de fluxo de dados via Software"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Endereço IP de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Endereço MAC de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"NAT origem é uma forma específica de mascaramento que permite o controle "
+"fino do endereço IP de origem usado no tráfego sainte. Por exemplo, para "
+"mapear múltiplos endereços WAN para subredes internas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Endereço de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Porta de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Dia inicial (aaaa-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Hora inicial (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Dia final (aaaa-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Hora final (hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Domingo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"O firewall cria zonas sobre as interfaces de rede para controlar o fluxo do "
+"tráfego de rede."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"As opções abaixo controlam as políticas de encaminhamento entre esta zona "
+"(%s) e outras zonas. <em>Zonas de destino</em> incluem tráfego encaminhado "
+"<strong>originado de %q</strong>. <em>Zonas de origem</em> casam com tráfego "
+"encaminhado de outras zonas <strong>apontando para %q</strong>. A regra de "
+"encaminhamento é <em>unidirecional</em>, ex: um encaminhamento da LAN para "
+"WAN <em>não</em> implica na permissão de encaminhar da WAN para LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"Esta página permite que você mude propriedades avançadas da entrada do "
+"encaminhamento de porta. Na maioria dos casos, não é necessário modificar "
+"estas configurações."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+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."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Esta seção define as propriedades comuns de %q. As opções de <em>entrada</"
+"em> e <em>saída</em> definem as políticas padrão para o tráfego entrando e "
+"saindo desta zona, enquanto a opção de <em>encaminhamento</em> descreve a "
+"política para encaminhar o tráfego entre diferentes redes dentro da zona. "
+"<em>Redes Cobertas</em> especificam que redes disponíveis são membros desta "
+"zona."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Quita-feira"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Hora em UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Para %s em %s <var>neste dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Para %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Para %s <var>neste dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Para %s, %s em %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Para o endereço IP de origem"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Para a porta de origem"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Regras de tráfego"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Regras de tráfego definem políticas para a passagem de pacotes entre as "
+"diferentes zonas. Por exemplo, rejeitar o tráfego entre certos equipamentos "
+"ou abrir portas WAN no roteador."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Terça-feira"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "SNAT sem nome"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "Encaminhamento sem nome"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "Regra sem nome"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Via %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Via %s at %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Quarta-feira"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Dias da semana"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Você pode especificar múltiplas entradas selecionando \"-- personalizado --"
+"\" e então entrando os protocolos separados por espaço."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zona ⇒ Encaminhamentos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zonas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "aceitar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "qualquer"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "qualquer equipamento"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "qualquer endereço IP do roteador"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "qualquer zona"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "dia"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "não rastrear"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "descartar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "hora"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "minuto"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "não"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "porta"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "portas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "rejeitar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "segundo"
+
+# 20140621: edersg: tradução
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "tráfego"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "tipo"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "tipos"
diff --git a/package/luci/applications/luci-app-firewall/po/pt/firewall.po b/package/luci/applications/luci-app-firewall/po/pt/firewall.po
new file mode 100644 (file)
index 0000000..907dd7e
--- /dev/null
@@ -0,0 +1,924 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2013-06-03 13:37+0200\n"
+"Last-Translator: joao.f.vieira <joao.f.vieira@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s em %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s with %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Entrada Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Regra Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT Sem Nome)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> pkts. por <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Acção"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Adicionar"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Adicionar e editar..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Definições Avançadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permitir encaminhamento de <em>zonas de origem</em>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permitir encaminhamento para <em>zonas de destino</em>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Qualquer"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Redes abrangidas"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Regras Personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"As regras personalizadas permitem-lhe executar comandos arbitrários iptables "
+"os quais não são possiveis de aplicar usando a framework da firewall. Os "
+"comandos são executados a seguir ao reinicio da firewall, logo a seguir ao "
+"conjunto de regras predefinidas serem carregadas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Endereço IP de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Endereço de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Porta de destino"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona de destino"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Não re-escrever"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Cancelar pacotes inválidos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Ativar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Ativar NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Ativar a Proteção SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Ativar registo nesta zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Endereço IP externo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Porta externa"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zona externa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Argumentos extra"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Regras Personalizadas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Firewall - Encaminhamento de Portas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Firewall - Regras de Tráfego"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Firewall - Definições de Zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Forçar rasto de ligação"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Encaminhar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Encaminhar para"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "De %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "De %s em %s com origem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "De %s em %s com origem %s e %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Definições Gerais"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 e IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Só IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Só IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Entrada"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Encaminhamento Inter-Zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Endereço IP interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Porta interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zona Interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limitar registo de mensagens"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+#, fuzzy
+msgid "MSS clamping"
+msgstr "MSS-Correction"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Corresponder"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"O tráfego encaminhado corresponde a uma determinada porta de destino ou "
+"intervalo de portas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"O tráfego de entrada corresponde a uma dada porta de destino ou intervalo de "
+"portas neste host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"O tráfego de entrada corresponde a uma dada porta ou de um intervalo de "
+"portas no host cliente."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nome"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Nova regra SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Nova regra de encaminhamento"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Nova regra de entrada"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Novo encaminhamento de porta"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Nova origem de NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Só se tráfego de entrada corresponder ao endereço IP fornecido."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Só se o tráfego de entrada corresponder a um destes MACs."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Só se o tráfego de entrada corresponder a este IP ou intervalo."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Só se o tráfego de entrada corresponder à porta de origem fornecida ou de um "
+"intervalo de portas no host cliente"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Abrir portas no router"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Outro..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Saída"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Encaminhamento de Portas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"O Encaminhamento de Portas permite que computadores remotos na internet se "
+"liguem a um computador ou serviço especifico na rede privada (LAN)."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Redirecionar a entrada de trafego correspondente à porta fornecida no host "
+"interno"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Redirecionar o tráfego de entrada correspondente para o host interno"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Restringir a família de endereços"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Re-escrever para a origem %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Re-escrever para a origem %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "Endereço IP da SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Porta SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Endereço IP de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Endereço MAC de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"NAT de origem é uma forma especifica de mascarar que permite um controlo "
+"melhorado sobre o IP de origem usado para o tráfego de saída, por exemplo, "
+"para mapear múltiplos endereços para as sub-redes internas."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Endereço de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Porta de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona de origem"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"A firewall cria zonas sobre as interfaces de rede para controlar o fluxo do "
+"tráfego."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"Esta página permite-lhe alterar as definições avançadas da regra de entrada "
+"de tráfego, tal como correspondências de hosts de origem e destino."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Para %s no %s em <var>este dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Para %s em %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Para %s em <var>este dispositivo</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Para %s, %s em %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "Para o IP de origem"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "Para a porta de origem"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Regras de Tráfego"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"As Regras de Tráfego definem políticas para os pacotes que viajam entre "
+"diferentes zonas, por exemplo, para rejeitar trafego entre certos hosts ou "
+"para abrir portas WAN no router."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Via %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Via %s no %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Pode especificar múltiplos seleccionando \"-- personalizado --\" e depois "
+"introduzir os protocolos separados por espaço."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Zona ⇒ Encaminhamentos"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zonas"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "aceitar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "qualquer"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "qualquer host"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "qualquer IP do router"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "qualquer zona"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "não seguir"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "drop"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "rejeitar"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ro/firewall.po b/package/luci/applications/luci-app-firewall/po/ro/firewall.po
new file mode 100644 (file)
index 0000000..555d9d7
--- /dev/null
@@ -0,0 +1,894 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-29 19:33+0200\n"
+"Last-Translator: xxvirusxx <condor20_05@yahoo.it>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s în %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s cu %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s în %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Intrare fără nume)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Regulă fără nume)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT fără nume)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Acţiune"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Adaugă"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Adaugă şi editează..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Setări avansate"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Permite trecerea din <em>zonele sursa</em>."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Permite trecerea catre <em>zonele sursa</em>."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Oricare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Retele acoperite"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Reguli suplimentare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Destinaţie adresă IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Destinaţie adresă"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Portul destinatie"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Zona destinatie"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Nu rescrie"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Descarcă pachetele invalide"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Activează"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Activează loopback NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Activează protecţia SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Activeaza log in aceasta zona"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Adresă IP externă"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Port extern"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Zonă externă"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Firewall - Reguli particularizate"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Setari zona la firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Forteaza urmarirea conexiunilor"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Forward"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Setari generale"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 şi IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "doar IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "doar IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Intrare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Forwardare intre-zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Adresa IP interna"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Port intern"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Zonă internă"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Limitează mesaje în log"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Ajustare MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Translatare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Potrivire"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Potriveste pe tipul de ICMP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Nume"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Regulă nouă SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Altele..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Ieşire"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "Sursă adresă IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "Sursă adresă MAC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Sursă NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Adresa sursa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Port sursa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Zona sursa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zona %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zone"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "accept"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "oricare"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ru/firewall.po b/package/luci/applications/luci-app-firewall/po/ru/firewall.po
new file mode 100644 (file)
index 0000000..e049d9f
--- /dev/null
@@ -0,0 +1,946 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: firewall\n"
+"POT-Creation-Date: 2013-09-05 16:02+0200\n"
+"PO-Revision-Date: 2018-09-06 09:29+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s в %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s с %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s в %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Запись без имени)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Правило без имени)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT без имени)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> пакетов за <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> пакетов за <var>%s</var>, подряд <var>%d</var> пакетов"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> с пределом в %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "Принимать перенаправляемый трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "Принимать входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "Принимать исходящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Действие"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Добавить"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Добавить и редактировать..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Разрешить перенаправление из <em>'зон источников'</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Разрешить перенаправление в <em>'зоны назначения'</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Любой"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Использовать сети"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Пользовательские правила"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Пользовательские правила позволяют выполнять произвольные команды iptables, "
+"которые не охвачены рамками межсетевого экрана. Команды выполняются после "
+"каждой перезагрузки межсетевого экрана, сразу после загрузки набора правил "
+"по умолчанию."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "IP-адрес назначения"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Адрес назначения"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Порт назначения"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Зона назначения"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "Отключить"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "Отклонять перенаправляемый трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "Отклонять входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "Отклонять исходящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Не перезаписывать"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "Не отслеживать перенаправляемый трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "Не отслеживать входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "Не отслеживать исходящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Отбрасывать некорректные пакеты"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Включить"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Включить NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Включить защиту от SYN-flood атак"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Включить журналирование в этой зоне"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "Экспериментальный функционал. Не полностью совместим с QoS/SQM."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Внешний IP-адрес"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Внешний порт"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Внешняя зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Дополнительные аргументы"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Межсетевой экран"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Межсетевой экран - Пользовательские правила"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Межсетевой экран - Перенаправление портов"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Межсетевой экран - Правила для трафика"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Межсетевой экран - Настройка зон"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Включить отслеживание соединений"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Перенаправление"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Перенаправлять на"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "Пятница"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Из %s в %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Из %s в %s с источником %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Из %s в %s с источниками %s и %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "Из %s в <var>это устройство</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "Из %s в <var>это устройство</var> с источником %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "Из %s в <var>это устройство</var> с источниками %s and %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Основные настройки"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "Аппаратный flow offloading"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP-адрес"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "Диапазон IP-адресов"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IP-адреса"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 и IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Только IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Только IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Перенаправление между зонами"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Внутренний IP-адрес"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Внутренний порт"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Внутренняя зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Ограничить журнал сообщений"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC-адрес"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MAC-адреса"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Ограничение MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Маскарадинг"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Соответствовать ICMP типу"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Перенаправлять соответствующий трафик на указанный порт или диапазон портов."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Порт или диапазон портов, входящие подключения на который будут "
+"перенаправляться на внутренний порт внутреннего IP-адреса (см. ниже)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Выбирать входящий трафик, исходящий из порта или диапазона портов "
+"клиентского хоста."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Понедельник"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Дни месяца"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Имя"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Новое правило SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Новое правило перенаправления"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Новое правило для входящего трафика"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Новое перенаправление порта"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Новый SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+"Применять правило только для входящих подключений на указанный IP-адрес"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Применять правило только для входящего трафика от этих MAC-адресов."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+"Применять правило только для входящего трафика от этого IP-адреса или "
+"диапазона адресов."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Применять правило только для входящего трафика от указанного порта или "
+"диапазона портов клиентского хоста"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Открыть порты на маршрутизаторе"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Другое..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Исходящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "Исходящая зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"Передаёт дополнительные аргументы таблице iptables. Используйте с "
+"осторожностью!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Перенаправление портов"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Перенаправленные портов позволяет удалённым компьютерам из Интернета "
+"соединяться с компьютером или службой внутри частной локальной сети."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Протокол"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-"
+"адреса"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Перенаправлять трафик на указанный IP-адрес"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "Сбрасывать перенаправляемый трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "Сбрасывать входящий трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "Сбрасывать исходящий трафик"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+"Требуется аппаратная поддержка NAT. Реализовано, по крайней мере, для mt7621"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Перезапустить межсетевой экран"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Использовать маскарадинг только для указанных подсетей-получателей"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Использовать маскарадинг только для указанных подсетей-отправителей"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Использовать протокол"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Перенаправлять соответствующий трафик к указанному адресу."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Перенаправлять соответствующий трафик к указанному порту источника. Может "
+"быть пустым в случае, если необходимо перенаправить только IP-адрес."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Перенаправлять к источнику %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "Перенаправлять к источнику %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Маршрутизация/NAT offloading"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "Правило отключено"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "Правило включено"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "IP-адрес SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Порт SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Суббота"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "Программная реализация offloading для маршрутизации/NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "Программный flow offloading"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "IP-адрес источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "MAC-адрес источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"SNAT - это особая форма маскарадинга (masquerading), позволяющая "
+"осуществлять детальный контроль над IP-адресом источника для исходящего "
+"трафика, например, перенаправление нескольких WAN-адресов во внутреннюю "
+"подсеть."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Адрес источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Порт источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Зона источника"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Дата начала (год-мес-день)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Время начала (чч:мм:сс)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Дата окончания (год-мес-день)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Время окончания (чч:мм:сс)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Воскресенье"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr "Межсетевой экран создает зоны в вашей сети для контроля трафика."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Данные настройки управляют политиками перенаправления трафика между этой "
+"(%s) и другими зонами. Трафиком <em>'зон-назначения'</em> является "
+"перенаправленный трафик <strong>'исходящий из %q'</strong>. Трафиком "
+"<em>'зон-источников'</em> является трафик <strong>'направленый в %q'</"
+"strong>. Перенаправление является <em>'однонаправленным'</em>, то есть "
+"перенаправление из lan в wan <em>'не'</em> допускает перенаправление трафика "
+"из wan в lan."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"На этой странице можно изменить расширенные настройки перенаправления портов."
+"В большинстве случаев нет необходимости изменять эти параметры."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"На этой странице можно изменить расширенные настройки правил для трафика.В "
+"большинстве случаев нет необходимости изменять эти параметры."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Страница содержит общие свойства %q. Режимы <em>'Входящий трафик'</em> и "
+"<em>'Исходящий трафик'</em> устанавливают политики по умолчанию для трафика, "
+"поступающего и покидающего эту зону, в то время как режим "
+"<em>'Перенаправление'</em> описывает политику перенаправления трафика между "
+"различными сетями внутри зоны. <em>'Использовать сети'</em> указывает, какие "
+"доступные сети являются членами этой зоны."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Четверг"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Время UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "К %s, %s на <var>этом устройстве</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "К %s в %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "К %s на <var>этом устройстве</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "К %s, %s в %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "К IP-адресу источника"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "К порту источника"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Правила для трафика"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Правила для трафика определяют политику прохождения пакетов между разными "
+"зонами, например, запрет трафика между некоторыми хостами или открытие WAN-"
+"портов маршрутизатора."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Вторник"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "SNAT без имени"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "Перенаправление без имени"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "Правило без имени"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Через %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Через %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Среда"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Дни недели"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Вы можете указать несколько, выбрав '-- пользовательский --' и перечислив "
+"через пробел названия протоколов."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Зона %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Зона ⇒ Перенаправления"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Зоны"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "принимать"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "любой"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "любого хоста"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "любой IP-адрес маршрутизатора"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "любой зоны"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "день"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "не отслеживать"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "не обрабатывать"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "час"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "минута"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "нет"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "порт"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "порты"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "отвергать"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "секунда"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "трафик"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "тип"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "типы"
diff --git a/package/luci/applications/luci-app-firewall/po/sk/firewall.po b/package/luci/applications/luci-app-firewall/po/sk/firewall.po
new file mode 100644 (file)
index 0000000..ee7b7c9
--- /dev/null
@@ -0,0 +1,890 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/sv/firewall.po b/package/luci/applications/luci-app-firewall/po/sv/firewall.po
new file mode 100644 (file)
index 0000000..f74da09
--- /dev/null
@@ -0,0 +1,896 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s i %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s med %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%2, %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Namnlös post)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Namnlös regel)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(Namnlös SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> pkt. per <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> pkt. per <var>%s</var>, brustna <var>%d</var> pkt."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> och gränsen till %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Åtgärd"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Lägg till"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Lägg till och redigera..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Avancerade inställningar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Tillåt vidarebefordring från <em>källzonerna</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Till vidarebefordring till <em>destinationszonerna:</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Alla"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Nätverk som omfattas"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Anpassade regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "Destinationens IP-adress"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Destinationens adress"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Destinationsport"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Destinationens zon"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Skriv inte om igen"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Släpp ogiltiga paket"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Aktivera"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Aktivera loggning i den här zonen"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Extern IP-adress"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Extern port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Extern zon"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Extra argument"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Brandvägg"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Brandvägg - Anpassade regler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Brandvägg - Vidarebefordring av port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Brandvägg - Trafikregler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Brandvägg - Zoninställningar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Vidarebefordra"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "Vidarebefordra till"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "Fredag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "Från %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "Från %s i %s med källa %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "Från %s i %s med källa %s och %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Generella inställningar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 och IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Endast IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Endast IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Inmatning"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Intern IP-adress"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Intern port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Intern zon"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Begränsa loggmeddelanden"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Maskering"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Matcha"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Matchar ICMP-typ"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Matcha vidarebefordrad trafik till den angivna destinationsporten eller "
+"portens räckvidd."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Matcha inkommande trafik dirigerad till den angivna destinationsporten eller "
+"portens räckvidd på den här värden"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Måndag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Dagar i månaden"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Namn"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Ny SNAT-regel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Ny regel för vidarebefordring"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Ny inmatningsregel"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Ny vidarebefordring av port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Ny käll-NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+"Matcha endast inkommande trafik från den här IP-adressen eller räckvidden."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Öppna portar i router"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Andra..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Utmatning"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Vidarebefordringar av port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Starta om brandvägg"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Begränsa till adressfamilj"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "Skriv om igen till källan %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "IP-adress för SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT-port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Lördag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "IP-adress för källa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "MAC-adress för källa"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Startdatum (åååå-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Starttid (tt:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Stopptid (åååå-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Stopptid (tt:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Söndag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Torsdag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Tid enligt UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "Till %s vid %s på <var>den här enheten</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "Till %s i %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "Till %s på <var>den här enheten</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "Till %s, %s i %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Trafikregler"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Tisdag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Via %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Onsdag"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Veckodagar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Zon %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zoner"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "acceptera"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "alla"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "alla värdar"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "alla zoner"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "spåra inte"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "släpp"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "neka"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "trafik"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/templates/firewall.pot b/package/luci/applications/luci-app-firewall/po/templates/firewall.pot
new file mode 100644 (file)
index 0000000..e08ff3f
--- /dev/null
@@ -0,0 +1,883 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/tr/firewall.po b/package/luci/applications/luci-app-firewall/po/tr/firewall.po
new file mode 100644 (file)
index 0000000..f5c95b9
--- /dev/null
@@ -0,0 +1,890 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/uk/firewall.po b/package/luci/applications/luci-app-firewall/po/uk/firewall.po
new file mode 100644 (file)
index 0000000..40b3fb9
--- /dev/null
@@ -0,0 +1,936 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2018-12-29 23:25+0200\n"
+"Last-Translator: Yurii <yuripet@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s у %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s із %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s у %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(Запис без назви)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(Правило без назви)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(SNAT без назви)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> пакетів за <var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> пакетів за <var>%s</var>, підряд <var>%d</var> пакетів"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> з лімітом %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "Приймати переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "Приймати вхідний"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "Приймати вихідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Дія"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "Додати"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "Додати та редагувати..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "Розширені настройки"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "Дозволити переспрямовування від <em>зон джерела</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "Дозволити переспрямовування до <em>зон призначення</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "Будь-який"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "Покриті мережі"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "Настроювані правила"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Настроювані правила дозволяють виконувати довільні команди <em>iptables</"
+"em>, які в іншому випадку не охоплені в межах брандмауера. Команди "
+"виконуються після кожного перезавантаження брандмауера, відразу після "
+"завантаження типового набору правил."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "IP-адреса призначення"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Адреса призначення"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Порт призначення"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "Зона призначення"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "Вимкнути"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "Відкидати переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "Відкидати вхідний"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "Відкидати вихідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "Не перезаписувати"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "Не відслідковувати переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "Не відслідковувати вхідний"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "Не відслідковувати вихідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Відкидати помилкові пакети"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "Увімкнути"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "Увімкнути NAT Loopback"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "Увімкнути захист від SYN-flood"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "Увімкнути реєстрування у цій зоні"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "Експериментальна функція. Не повністю сумісно з QoS / SQM."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "Зовнішня IP-адреса"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "Зовнішній порт"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "Зовнішня зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "Додаткові аргументи"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Брандмауер"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "Брандмауер — Настроювані правила"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "Брандмауер — Переспрямовування портів"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "Брандмауер — Правила трафіка"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "Брандмауер — Параметри зон"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "Увімкнути відстеження з'єднань"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "Переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "переспрямовування до"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "П'ятниця"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "%s у %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "%s у %s з джерелом %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "%s у %s з джерелом %s та %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "Від %s на <var>цьому пристрої</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "Від %s на <var>цьому пристрої</var> з джерелом %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "Від %s на <var>цьому пристрої</var> з джерелом %s та %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "Загальні настройки"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "Апаратні засоби розвантаження потоку"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP-адреса"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "Діапазон IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IP-адреси"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 та IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "Лише IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "Лише IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Вхідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "Переспрямовування між зонами"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "Внутрішня IP-адреса"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "Внутрішній порт"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "Внутрішня зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "Обмеження повідомлень журналу"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC-адреса"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MAC-адреси"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "Затискання MSS"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "Підміна"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "Зіставляти"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "Зіставляти ICMP типу"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+"Зіставляти трафік, що переспрямовується на заданий порт призначення або "
+"діапазон портів."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+"Зіставляти вхідний трафік, спрямований на заданий порт призначення або "
+"діапазон портів цього вузла."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+"Зіставляти вхідний трафік, що виникає на заданому порту джерела або "
+"діапазоні портів вузла клієнта."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "Понеділок"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "Дні місяця"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "Ім'я"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "Нове правило SNAT"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "Нове правило переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "Нове вхідне правило"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "Нове переспрямовування порту"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "Новий NAT джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "Зіставляти тільки вхідний трафік, спрямований на задану IP-адресу."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "Зіставляти тільки вхідний трафік від цих MAC-адрес."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "Зіставляти тільки вхідний трафік від цього IP чи діапазону."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+"Зіставляти тільки вхідний трафік, що виникає на заданому порту джерела або "
+"діапазоні портів вузла клієнта."
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "Відкрити порти на роутері"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "Інше..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Вихідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "Вихідна зона"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+"Передача додаткових аргументів для IPTables. Використовуйте з обережністю!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "Переспрямовування портів"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Переспрямовування портів дозволяє віддаленим комп'ютерам з Інтернету "
+"підключатися до певного комп'ютера або служби у приватній мережі."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "Протокол"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+"Переспрямувати відповідний вхідний трафік на заданий порт внутрішнього вузла"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "Відхиляти переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "Відхиляти вхідний"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "Відхиляти вихідний"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr "Необхідна апаратна підтримка NAT. Упроваджено принаймні для mt7621"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "Перезавантажити брандмауер"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "Обмежити підміну заданими підмережами призначення"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "Обмежити підміну заданими підмережами джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "Обмежити сімейство протоколів"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "Переписувати зіставлений трафік на вказану адресу."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+"Переписувати зіставлений трафік на вказаний порт джерела. Може залишатися "
+"порожнім, щоб переписувати тільки IP-адресу."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "перезапис на джерело %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "перезапис на джерело %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Розвантаження маршрутизації/NAT"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "Правило вимкнено"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "Правило ввімкнено"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "IP-адреса SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "Порт SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "Субота"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "Програмне розвантаження для маршрутизації/NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "Програмне розвантаження потоку"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "IP-адреса джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "MAC-адреса джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "NAT джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"NAT джерела є специфічною формою маскування, яка дозволяє мати детальний "
+"контроль над IP джерела, що використовуються для вихідного трафіку, "
+"наприклад, для зіставлення кількох WAN-адрес внутрішнім підмережам."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "Адреса джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Порт джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "Зона джерела"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "Дата початку (рррр-мм-дд)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "Час початку (гг:хх:сс)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "Дата зупинки (рррр-мм-дд)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "Час зупинки (гг:хх:сс)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "Неділя"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"Брандмауер створює зони поверх ваших мережевих інтерфейсів для управління "
+"потоком мережевого трафіку."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"Опції, наведені нижче, керують політиками переспрямовування між цією (%s) та "
+"іншими зонами. <em>Зони призначення</em> покриваються переспрямованим "
+"трафіком, що <strong>виходить з %q</strong>. <em>Зони джерела</em> "
+"покриваються трафіком з інших зон, <strong>переспрямованим на %q</strong>. "
+"Правило переспрямовування є <em>односпрямованим</em>, тобто, спрямовування "
+"від LAN до WAN <em>не</em> означає, що є також дозвіл спрямовувати від WAN "
+"до LAN."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"На цій сторінці можна змінити додаткові властивості елемента "
+"переспрямовування портів. У більшості випадків змінювати ці параметри немає "
+"потреби."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"На цій сторінці можна змінити додаткові властивості елемента правил трафіка, "
+"таких як відповідні параметри джерела та вузлів призначення."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"Цей розділ визначає загальні властивості %q. Параметри <em>вхідний</em> і "
+"<em>вихідний</em> задають типову політику для трафіку на вході й виході з "
+"цієї зони, а параметр \"переспрямовування\" описує політику спрямовування "
+"трафіку між різними мережами в межах зони. Пункт <em>Покриті мережі</em> "
+"визначає, які доступні мережі є членами цієї зони."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "Четвер"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "Час в UTC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "%s на %s <var>цього пристрою</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "%s у %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "%s на <var>цього пристрою</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "%s, %s у %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "До IP джерела"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "До порту джерела"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "Правила трафіка"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Правила трафіка визначають політику для пакетів, що пересилаються між "
+"різними зонами, наприклад, відхиляти трафік між певними вузлами або відкрити "
+"порти WAN на маршрутизаторі."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "Вівторок"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "SNAT без назви"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "Переспрямовування без назви"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "Правило без назви"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "Через %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "Через %s на %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "Середа"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "Дні тижня"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+"Ви можете вказати кілька протоколів, вибравши \"-- додатково --\", а потім "
+"увівши їх, розділяючи пробілами."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "Зона %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "Зона ⇒ Переспрямовування"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Зони"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "приймати"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "будь-який"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "будь-який вузол"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "будь-який IP роутера"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "будь-якій зоні"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "день"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "не відстеж."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "опускати"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "година"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "хвилина"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "не"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "порт"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "порти"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "відкидати"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "секунда"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "трафік"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "типом"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "типами"
diff --git a/package/luci/applications/luci-app-firewall/po/vi/firewall.po b/package/luci/applications/luci-app-firewall/po/vi/firewall.po
new file mode 100644 (file)
index 0000000..d25d15b
--- /dev/null
@@ -0,0 +1,905 @@
+#  luci-fw.pot
+#  generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2009-08-16 14:02+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "Action"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "Địa chỉ điểm đến"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "Cổng điểm đến"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+#, fuzzy
+msgid "Destination zone"
+msgstr "Điểm đến"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "Bỏ qua nhưng gói không hợp lý"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+#, fuzzy
+msgid "Enable SYN-flood protection"
+msgstr "SYN-flood bảo vệ "
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "External port"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "Firewall"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "Input"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+#, fuzzy
+msgid "Internal IP address"
+msgstr "Internal address"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+#, fuzzy
+msgid "Internal port"
+msgstr "External port"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+#, fuzzy
+msgid "MSS clamping"
+msgstr "MSS Clamping"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "Output"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+#, fuzzy
+msgid "Source IP address"
+msgstr "Đỉa chỉ MAC nguồn"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+#, fuzzy
+msgid "Source address"
+msgstr "Đỉa chỉ MAC nguồn"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "Cổng nguồn"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+#, fuzzy
+msgid "Source zone"
+msgstr "Cổng nguồn"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"The firewall tạo zones trên giao diện mạng lưới để điều triển sự dòng lưu "
+"thông của mạng."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "Zones"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "chấp nhận"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "drop"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "Không chấp nhận"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr ""
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po
new file mode 100644 (file)
index 0000000..3df951c
--- /dev/null
@@ -0,0 +1,907 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-08 08:28+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s 位于 %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s 和 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s 位于 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(未命名条目)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(未命名规则)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(未命名 SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> 数据包/<var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> 数据包/<var>%s</var>,突发 <var>%d</var> 数据包。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> 并限制到 %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "接受转发"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "接受入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "接受出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "动作"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "添加"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "添加并编辑…"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "高级设置"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "允许从<em>源区域</em>转发:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "允许转发到<em>目标区域</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "任何"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "覆盖网络"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "自定义规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"自定义规则允许您执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时,"
+"在默认的规则运行后这些命令将立即执行。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "目标 IP 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "目标地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "目标端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "目标区域"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "禁用"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "丢弃转发"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "丢弃入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "丢弃出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "不重写"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "不跟踪转发"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "不跟踪入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "不跟踪出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "丢弃无效数据包"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "启用"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "启用 NAT 环回"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "启用 SYN-flood 防御"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "启用此区域的日志记录"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "实验特性。与 QoS/SQM 不完全兼容。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "外部 IP 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "外部端口"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "外部区域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "附加参数"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "防火墙"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "防火墙 - 自定义规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "防火墙 - 端口转发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "防火墙 - 通信规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "防火墙 - 区域设置"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "强制连接追踪"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "转发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "转发到"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "星期五"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "来自 %s 位于 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "来自 %s 位于 %s 源于 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "来自 %s 位于<var>本设备</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "来自 %s 位于<var>本设备</var>源于 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "来自 %s 位于<var>本设备</var>源端口 %s 源 MAC %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "基本设置"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "硬件流量分载"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "IP 范围"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 和 IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "仅 IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "仅 IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "入站数据"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "端口触发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "内部 IP 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "内部端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "内部区域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "限制日志信息"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS 钳制"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "IP 动态伪装"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "匹配规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "匹配 ICMP 类型"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "匹配指定目标端口或目标端口范围的转发流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr "匹配指向此主机上指定目标端口或目标端口范围的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr "匹配来自客户端主机上指定源端口或源端口范围的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "星期一"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "日期"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "名字"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "新建 SNAT 规则"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "新建转发规则"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "新建进入规则"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "新建端口转发"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "新建 Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "仅匹配指定目的 IP 地址的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "仅匹配来自这些 MAC 的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "仅匹配来自此 IP 或 IP 范围的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr "仅匹配源自客户端主机上给定源端口或源端口范围的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "打开路由器端口"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "其它..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "出站数据"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "出站区域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "传递到 iptables 的额外参数。小心使用!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "端口转发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"端口转发允许 Internet 上的远程计算机连接到内部网络中的特定计算机或服务。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "协议"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr "重定向匹配的入站流量到内部主机的端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "重定向匹配的入站流量到指定的内部主机"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "拒绝转发"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "拒绝入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "拒绝出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr "需要硬件 NAT 支持。目前 mt7621 已实现"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "重启防火墙"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "要限制 IP 动态伪装的目标子网"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "要限制 IP 动态伪装的源子网"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "限制地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "将匹配流量的源地址改写成指定地址。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr "将匹配流量的源端口改写成指定端口。留空只改写 IP 地址。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "源地址改写成 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "源地址改写成 %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Routing/NAT 分载"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "规则已禁用"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "规则已启用"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT IP 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT 端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "星期六"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "基于软件的 Routing/NAT 分载"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "软件流量分载"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "源 IP 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "源 MAC 地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Source NAT 是一种特殊形式的封包伪装,它允许精细的控制传出流量的源 IP,例如:"
+"将多个 WAN 地址映射到内部子网。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "源地址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "源端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "源区域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "开始日期(yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "开始时间(hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "停止日期(yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "停止时间(hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "星期日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr "防火墙通过在网络接口上创建区域来控制网络流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"以下选项可以控制区域(%s)和其它区域间的转发规则。<em>目标区域</em>接收"
+"<strong>源自 %q</strong> 的转发流量。<em>源区域</em>匹配从<strong>目标为 %q</"
+"strong> 的区域的需转发流量。转发规则的作用是<em>单向</em>的,例如:一条允许"
+"从 lan 到 wan 的转发规则并不隐含有允许相反方向从 wan 到 lan 的流量转发。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr "本页面可以更改端口转发的高级设置。大多数情况下,不需要更改这些设置。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr "本页面可以更改通信规则的高级设置,比如:需匹配的源主机和目标主机。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"本节定义 %q 的通用属性,<em>入站数据</em>和<em>出站数据</em>选项用于设置此区"
+"域入站和出站流量的默认策略,<em>转发</em>选项描述该区域内不同网络之间的流量转"
+"发策略。<em>覆盖网络</em>指定从属于这个区域的网络。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "星期四"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "UTC 时间"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "到 %s 在 %s 位于<var>本设备</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "到 %s 位于 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "到 %s 位于<var>本设备</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "到 %s, %s 位于 %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "到源 IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "到源端口"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "通信规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信,开放"
+"路由器 WAN 上的端口。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "星期二"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "未命名 SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "未命名转发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "未命名规则"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "通过 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "通过 %s 在 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "星期三"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "星期"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr "您也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "区域 %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "区域 ⇒ 转发"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "区域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "接受"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "所有"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "所有主机"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "所有路由 IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "所有区域"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "不跟踪"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "丢弃"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "小时"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "分钟"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "非"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "端口"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "端口"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "拒绝"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "秒"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "通信"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "类型"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "类型"
diff --git a/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po
new file mode 100644 (file)
index 0000000..5816626
--- /dev/null
@@ -0,0 +1,906 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-08 08:28+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:127
+msgid "%s in %s"
+msgstr "%s 位於 %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:154
+msgid "%s%s with %s"
+msgstr "%s%s 和 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:125
+msgid "%s, %s in %s"
+msgstr "%s, %s 位於 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:26
+msgid "(Unnamed Entry)"
+msgstr "(未命名條目)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:169
+msgid "(Unnamed Rule)"
+msgstr "(未命名規則)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:37
+msgid "(Unnamed SNAT)"
+msgstr "(未命名 SNAT)"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:195
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr "<var>%d</var> 資料包/<var>%s</var>"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:192
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr "<var>%d</var> 資料包/<var>%s</var>,突發 <var>%d</var> 資料包。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:180
+msgid "<var>%s</var> and limit to %s"
+msgstr "<var>%s</var> 並限制到 %s"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:214
+msgid "Accept forward"
+msgstr "接受轉發"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:224
+msgid "Accept input"
+msgstr "接受入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:204
+msgid "Accept output"
+msgstr "接受出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:322
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:257
+msgid "Action"
+msgstr "動作"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:68
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:31
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:69
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:58
+msgid "Add"
+msgstr "新增"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:64
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:53
+msgid "Add and edit..."
+msgstr "新增並編輯…"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:57
+msgid "Advanced Settings"
+msgstr "高階設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:178
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "允許從<em>源區域</em>轉發:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:170
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "允許轉發到<em>目標區域</em>:"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:191
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:89
+msgid "Any"
+msgstr "任何"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:88
+msgid "Covered networks"
+msgstr "覆蓋網路"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:22
+msgid "Custom Rules"
+msgstr "自訂規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:8
+msgid ""
+"Custom rules allow you to execute arbitrary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"自訂規則允許您執行不屬於防火牆框架的任意 iptables 指令。每次重啟防火牆時,在"
+"預設的規則執行後這些指令將立即執行。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:108
+msgid "Destination IP address"
+msgstr "目標 IP 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:304
+msgid "Destination address"
+msgstr "目標位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:117
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:313
+msgid "Destination port"
+msgstr "目標埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:102
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:295
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:42
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:21
+msgid "Destination zone"
+msgstr "目標區域"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:242
+msgid "Disable"
+msgstr "禁用"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:220
+msgid "Discard forward"
+msgstr "丟棄轉發"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:230
+msgid "Discard input"
+msgstr "丟棄入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:210
+msgid "Discard output"
+msgstr "丟棄出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:151
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:45
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:50
+msgid "Do not rewrite"
+msgstr "不重寫"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:218
+msgid "Do not track forward"
+msgstr "不跟蹤轉發"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:228
+msgid "Do not track input"
+msgstr "不跟蹤入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:208
+msgid "Do not track output"
+msgstr "不跟蹤出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:22
+msgid "Drop invalid packets"
+msgstr "丟棄無效資料包"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:131
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:270
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:246
+msgid "Enable"
+msgstr "啟用"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:149
+msgid "Enable NAT Loopback"
+msgstr "啟用 NAT 環回"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:20
+msgid "Enable SYN-flood protection"
+msgstr "啟用 SYN-flood 防禦"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:144
+msgid "Enable logging on this zone"
+msgstr "啟用此區域的日誌記錄"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:43
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "實驗特性。與 QoS/SQM 不完全相容。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:98
+msgid "External IP address"
+msgstr "外部 IP 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:111
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:28
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:12
+msgid "External port"
+msgstr "外部埠"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:27
+msgid "External zone"
+msgstr "外部區域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:158
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:331
+msgid "Extra arguments"
+msgstr "附加引數"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:6
+msgid "Firewall"
+msgstr "防火牆"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:7
+msgid "Firewall - Custom Rules"
+msgstr "防火牆 - 自訂規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:13
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:8
+msgid "Firewall - Port Forwards"
+msgstr "防火牆 - 埠轉發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:12
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:42
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:172
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:9
+msgid "Firewall - Traffic Rules"
+msgstr "防火牆 - 通訊規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:15
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:28
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:11
+msgid "Firewall - Zone Settings"
+msgstr "防火牆 - 區域設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:141
+msgid "Force connection tracking"
+msgstr "強制連線追蹤"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:76
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:27
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:92
+msgid "Forward"
+msgstr "轉發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:116
+msgid "Forward to"
+msgstr "轉發到"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:343
+msgid "Friday"
+msgstr "星期五"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:106
+msgid "From %s in %s"
+msgstr "來自 %s 位於 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:88
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:104
+msgid "From %s in %s with source %s"
+msgstr "來自 %s 位於 %s 源於 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:102
+msgid "From %s in %s with source %s and %s"
+msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:117
+msgid "From %s on <var>this device</var>"
+msgstr "來自 %s 位於<var>本裝置</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:115
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "來自 %s 位於<var>本裝置</var>源於 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:113
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "來自 %s 位於<var>本裝置</var>源埠 %s 源 MAC %s"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:10
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:56
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:16
+msgid "General Settings"
+msgstr "基本設定"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:51
+msgid "Hardware flow offloading"
+msgstr "硬體流量分載"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:75
+msgid "IP"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:83
+msgid "IP range"
+msgstr "IP 範圍"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:100
+msgid "IPs"
+msgstr "IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:85
+msgid "IPv4"
+msgstr "IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:185
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:118
+msgid "IPv4 and IPv6"
+msgstr "IPv4 和 IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:186
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:119
+msgid "IPv4 only"
+msgstr "僅 IPv4"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:87
+msgid "IPv6"
+msgstr "IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:187
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:120
+msgid "IPv6 only"
+msgstr "僅 IPv6"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:25
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:90
+msgid "Input"
+msgstr "入站資料"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:157
+msgid "Inter-Zone Forwarding"
+msgstr "埠觸發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:127
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:30
+msgid "Internal IP address"
+msgstr "內部 IP 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:138
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:31
+msgid "Internal port"
+msgstr "內部埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:121
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:29
+msgid "Internal zone"
+msgstr "內部區域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:150
+msgid "Limit log messages"
+msgstr "限制日誌資訊"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:31
+msgid "MAC"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:40
+msgid "MACs"
+msgstr "MAC"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:102
+msgid "MSS clamping"
+msgstr "MSS 鉗制"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:85
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:101
+msgid "Masquerading"
+msgstr "IP 動態偽裝"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:105
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:162
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:247
+msgid "Match"
+msgstr "匹配規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:206
+msgid "Match ICMP type"
+msgstr "匹配 ICMP 型別"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:118
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr "匹配指定目標埠或目標埠範圍的轉發流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:112
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr "匹配指向此主機上指定目標埠或目標埠範圍的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:91
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr "匹配來自客戶端主機上指定源埠或源埠範圍的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:339
+msgid "Monday"
+msgstr "星期一"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:346
+msgid "Month Days"
+msgstr "日期"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:36
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:50
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:180
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:60
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:25
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:10
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:40
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:19
+msgid "Name"
+msgstr "名字"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:28
+msgid "New SNAT rule"
+msgstr "新建 SNAT 規則"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47
+msgid "New forward rule"
+msgstr "新建轉發規則"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17
+msgid "New input rule"
+msgstr "新建進入規則"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:22
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:36
+msgid "New port forward"
+msgstr "新建埠轉發"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:16
+msgid "New source NAT"
+msgstr "新建 Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:99
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr "僅匹配指定目的 IP 位址的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:63
+msgid "Only match incoming traffic from these MACs."
+msgstr "僅匹配來自這些 MAC 的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:75
+msgid "Only match incoming traffic from this IP or range."
+msgstr "僅匹配來自此 IP 或 IP 範圍的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:87
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr "僅匹配源自客戶端主機上給定源埠或源埠範圍的入站流量。"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:7
+msgid "Open ports on router"
+msgstr "開啟路由器埠"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:43
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:24
+msgid "Other..."
+msgstr "其它..."
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:75
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:26
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:91
+msgid "Output"
+msgstr "出站資料"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:288
+msgid "Output zone"
+msgstr "出站區域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:159
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:160
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:332
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "傳遞到 iptables 的額外引數。小心使用!"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:14
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:17
+msgid "Port Forwards"
+msgstr "埠轉發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:9
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr "埠轉發允許 Internet 上的遠端計算機連線到內部網路中的特定計算機或服務。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:39
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:190
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm:26
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:11
+msgid "Protocol"
+msgstr "協議"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:139
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr "重定向匹配的入站流量到內部主機的埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:128
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr "重定向匹配的入站流量到指定的內部主機"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:216
+msgid "Refuse forward"
+msgstr "拒絕轉發"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:226
+msgid "Refuse input"
+msgstr "拒絕入站"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:206
+msgid "Refuse output"
+msgstr "拒絕出站"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:52
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr "需要硬體 NAT 支援。目前 mt7621 已實現"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua:29
+msgid "Restart Firewall"
+msgstr "重啟防火牆"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:132
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "要限制 IP 動態偽裝的目標子網"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:123
+msgid "Restrict Masquerading to given source subnets"
+msgstr "要限制 IP 動態偽裝的源子網"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:183
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:115
+msgid "Restrict to address family"
+msgstr "限制位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:132
+msgid "Rewrite matched traffic to the given address."
+msgstr "將匹配流量的源位址改寫成指定位址。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:147
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr "將匹配流量的源埠改寫成指定埠。留空只改寫 IP 位址。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:266
+msgid "Rewrite to source %s"
+msgstr "源位址改寫成 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:264
+msgid "Rewrite to source %s, %s"
+msgstr "源位址改寫成 %s, %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:42
+msgid "Routing/NAT Offloading"
+msgstr "Routing/NAT 分載"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:245
+msgid "Rule is disabled"
+msgstr "規則已禁用"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:241
+msgid "Rule is enabled"
+msgstr "規則已啟用"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:131
+msgid "SNAT IP address"
+msgstr "SNAT IP 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:146
+msgid "SNAT port"
+msgstr "SNAT 埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:344
+msgid "Saturday"
+msgstr "星期六"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:47
+msgid "Software based offloading for routing/NAT"
+msgstr "基於軟體的 Routing/NAT 分載"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:46
+msgid "Software flow offloading"
+msgstr "軟體流量分載"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:74
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:79
+msgid "Source IP address"
+msgstr "源 IP 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:62
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:261
+msgid "Source MAC address"
+msgstr "源 MAC 位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194
+msgid "Source NAT"
+msgstr "Source NAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Source NAT 是一種特殊形式的封包偽裝,它允許精細的控制傳出流量的源 IP,例如:"
+"將多個 WAN 位址對映到內部子網。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:270
+msgid "Source address"
+msgstr "源位址"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:86
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:279
+msgid "Source port"
+msgstr "源埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:54
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:73
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:254
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:41
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:20
+msgid "Source zone"
+msgstr "源區域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:357
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "開始日期(yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:353
+msgid "Start Time (hh:mm:ss)"
+msgstr "開始時間(hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:359
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "停止日期(yyyy-mm-dd)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355
+msgid "Stop Time (hh:mm:ss)"
+msgstr "停止時間(hh:mm:ss)"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338
+msgid "Sunday"
+msgstr "星期日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:12
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr "防火牆通過在網路介面上建立區域來控制網路流量。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:158
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"以下選項可以控制區域(%s)和其它區域間的轉發規則。<em>目標區域</em>接收"
+"<strong>源自 %q</strong> 的轉發流量。<em>源區域</em>匹配從<strong>目標為 %q</"
+"strong> 的區域的需轉發流量。轉發規則的作用是<em>單向</em>的,例如:一條允許"
+"從 lan 到 wan 的轉發規則並不隱含有允許相反方向從 wan 到 lan 的流量轉發。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:14
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr "本頁面可以更改埠轉發的高階設定。大多數情況下,不需要更改這些設定。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:13
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr "本頁面可以更改通訊規則的高階設定,比如:需匹配的源主機和目標主機。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:36
+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 "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"本節定義 %q 的通用屬性,<em>入站資料</em>和<em>出站資料</em>選項用於設定此區"
+"域入站和出站流量的預設策略,<em>轉發</em>選項描述該區域內不同網路之間的流量轉"
+"發策略。<em>覆蓋網路</em>指定從屬於這個區域的網路。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:342
+msgid "Thursday"
+msgstr "星期四"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:362
+msgid "Time in UTC"
+msgstr "UTC 時間"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:141
+msgid "To %s at %s on <var>this device</var>"
+msgstr "到 %s 在 %s 位於<var>本裝置</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:132
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:157
+msgid "To %s in %s"
+msgstr "到 %s 位於 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:143
+msgid "To %s on <var>this device</var>"
+msgstr "到 %s 位於<var>本裝置</var>"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:130
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:155
+msgid "To %s, %s in %s"
+msgstr "到 %s, %s 位於 %s"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:22
+msgid "To source IP"
+msgstr "到源 IP"
+
+#: applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm:23
+msgid "To source port"
+msgstr "到源埠"
+
+#: applications/luci-app-firewall/luasrc/controller/firewall.lua:18
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:18
+msgid "Traffic Rules"
+msgstr "通訊規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:10
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放"
+"路由器 WAN 上的埠。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:340
+msgid "Tuesday"
+msgstr "星期二"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:244
+msgid "Unnamed SNAT"
+msgstr "未命名 SNAT"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:67
+msgid "Unnamed forward"
+msgstr "未命名轉發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:76
+msgid "Unnamed rule"
+msgstr "未命名規則"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:101
+msgid "Via %s"
+msgstr "通過 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:99
+msgid "Via %s at %s"
+msgstr "通過 %s 在 %s"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:341
+msgid "Wednesday"
+msgstr "星期三"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:335
+msgid "Week Days"
+msgstr "星期"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:55
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr "您也可以選擇“--自訂--”來定義多個協議,在多個協議間需加空格。"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:29
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:35
+msgid "Zone %q"
+msgstr "區域 %q"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:83
+msgid "Zone ⇒ Forwardings"
+msgstr "區域 ⇒ 轉發"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:59
+msgid "Zones"
+msgstr "區域"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:325
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98
+msgid "accept"
+msgstr "接受"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:90
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:108
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:141
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:82
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:122
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:263
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:272
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:281
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:306
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:315
+msgid "any"
+msgstr "所有"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:120
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:100
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:128
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:150
+msgid "any host"
+msgstr "所有主機"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:95
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:111
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:138
+msgid "any router IP"
+msgstr "所有路由 IP"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua:119
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:149
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:110
+msgid "any zone"
+msgstr "所有區域"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:189
+msgid "day"
+msgstr "日"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327
+msgid "don't track"
+msgstr "不跟蹤"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:32
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:97
+msgid "drop"
+msgstr "丟棄"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:187
+msgid "hour"
+msgstr "小時"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:185
+msgid "minute"
+msgstr "分鐘"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:20
+msgid "not"
+msgstr "非"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:50
+msgid "port"
+msgstr "埠"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:55
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:65
+msgid "ports"
+msgstr "埠"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:326
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:80
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96
+msgid "reject"
+msgstr "拒絕"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:183
+msgid "second"
+msgstr "秒"
+
+#: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:82
+msgid "traffic"
+msgstr "通訊"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:121
+msgid "type"
+msgstr "型別"
+
+#: applications/luci-app-firewall/luasrc/tools/firewall.lua:130
+msgid "types"
+msgstr "型別"
diff --git a/package/luci/applications/luci-app-openvpn/Makefile b/package/luci/applications/luci-app-openvpn/Makefile
new file mode 100644 (file)
index 0000000..380ee73
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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:=LuCI Support for OpenVPN
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua b/package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua
new file mode 100644 (file)
index 0000000..c9a932d
--- /dev/null
@@ -0,0 +1,54 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.openvpn", package.seeall)
+
+function index()
+       entry( {"admin", "services", "openvpn"}, cbi("openvpn"), _("OpenVPN") )
+       entry( {"admin", "services", "openvpn", "basic"},    cbi("openvpn-basic"),    nil ).leaf = true
+       entry( {"admin", "services", "openvpn", "advanced"}, cbi("openvpn-advanced"), nil ).leaf = true
+       entry( {"admin", "services", "openvpn", "file"},     form("openvpn-file"),    nil ).leaf = true
+       entry( {"admin", "services", "openvpn", "upload"},   call("ovpn_upload"))
+end
+
+function ovpn_upload()
+       local fs     = require("nixio.fs")
+       local http   = require("luci.http")
+       local util   = require("luci.util")
+       local uci    = require("luci.model.uci").cursor()
+       local upload = http.formvalue("ovpn_file")
+       local name   = http.formvalue("instance_name2")
+       local file   = "/etc/openvpn/" ..name.. ".ovpn"
+
+       if name and upload then
+               local fp
+
+               http.setfilehandler(
+                       function(meta, chunk, eof)
+                               local data = util.trim(chunk:gsub("\r\n", "\n")) .. "\n"
+                               data = util.trim(data:gsub("[\128-\255]", ""))
+
+                               if not fp and meta and meta.name == "ovpn_file" then
+                                       fp = io.open(file, "w")
+                               end
+                               if fp and data then
+                                       fp:write(data)
+                               end
+                               if fp and eof then
+                                       fp:close()
+                               end
+                       end
+               )
+
+               if fs.access(file) then
+                       if not uci:get_first("openvpn", name) then
+                               uci:set("openvpn", name, "openvpn")
+                               uci:set("openvpn", name, "config", file)
+                               uci:save("openvpn")
+                               uci:commit("openvpn")
+                       end
+               end
+       end
+       http.redirect(luci.dispatcher.build_url('admin/services/openvpn'))
+end
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
new file mode 100644 (file)
index 0000000..40201ba
--- /dev/null
@@ -0,0 +1,873 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require("nixio.fs")
+
+local knownParams = {
+       --
+       --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") },
+               { ListValue,
+                       "compress",
+                       { "lzo", "lz4" },
+                       translate("Enable a compression algorithm") },
+       } },
+
+       { "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") },
+               { 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") },
+               { Flag,
+                       "allow_recursive_routing",
+                       0,
+                       translate("Don't drop incoming tun packets with same destination as host") },
+               { 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"),
+                       { 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="" } },
+               { 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,
+                       "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" } },
+               { FileUpload,
+                       "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" } },
+               { Value,
+                       "verify_client_cert",
+                       {  "none", "optional", "require" },
+                       translate("Specify whether the client is required to supply a valid certificate") },
+       } },
+
+       { "Cryptography", {
+               { 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",
+                       {
+                               "AES-128-CBC",
+                               "AES-128-CFB",
+                               "AES-128-CFB1",
+                               "AES-128-CFB8",
+                               "AES-128-GCM",
+                               "AES-128-OFB",
+                               "AES-192-CBC",
+                               "AES-192-CFB",
+                               "AES-192-CFB1",
+                               "AES-192-CFB8",
+                               "AES-192-GCM",
+                               "AES-192-OFB",
+                               "AES-256-CBC",
+                               "AES-256-CFB",
+                               "AES-256-CFB1",
+                               "AES-256-CFB8",
+                               "AES-256-GCM",
+                               "AES-256-OFB",
+                               "BF-CBC",
+                               "BF-CFB",
+                               "BF-OFB",
+                               "CAST5-CBC",
+                               "CAST5-CFB",
+                               "CAST5-OFB",
+                               "DES-CBC",
+                               "DES-CFB",
+                               "DES-CFB1",
+                               "DES-CFB8",
+                               "DES-EDE-CBC",
+                               "DES-EDE-CFB",
+                               "DES-EDE-OFB",
+                               "DES-EDE3-CBC",
+                               "DES-EDE3-CFB",
+                               "DES-EDE3-CFB1",
+                               "DES-EDE3-CFB8",
+                               "DES-EDE3-OFB",
+                               "DES-OFB",
+                               "DESX-CBC",
+                               "RC2-40-CBC",
+                               "RC2-64-CBC",
+                               "RC2-CBC",
+                               "RC2-CFB",
+                               "RC2-OFB"
+                       },
+                       translate("Encryption cipher for packets") },
+       -- parse
+               { Value,
+                       "keysize",
+                       1024,
+                       translate("Size of cipher key") },
+       -- parse
+               { Value,
+                       "engine",
+                       "dynamic",
+                       translate("Enable OpenSSL hardware crypto engines") },
+               { 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,
+                       "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,
+                       "tls_crypt",
+                       "/etc/openvpn/tlscrypt.key",
+                       translate("Encrypt and authenticate all control channel packets with the key") },
+       --      { 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") },
+               { ListValue,
+                       "key_direction",
+                       { 0, 1 },
+                       translate("The key direction for 'tls-auth' and 'secret' options") },
+               { Flag,
+                       "ncp_disable",
+                       0,
+                       translate("This completely disables cipher negotiation") },
+               { Value,
+                       "ncp_ciphers",
+                       "AES-256-GCM:AES-128-GCM",
+                       translate("Restrict the allowed ciphers to be negotiated") },
+       } }
+}
+
+
+local cts = { }
+local params = { }
+
+local m = Map("openvpn")
+m.redirect = luci.dispatcher.build_url("admin", "services", "openvpn")
+m.apply_on_parse = true
+
+local p = m:section( SimpleSection )
+p.template = "openvpn/pageswitch"
+p.mode     = "advanced"
+p.instance = arg[1]
+p.category = arg[2] or "Service"
+
+for _, c in ipairs(knownParams) do
+       cts[#cts+1] = c[1]
+       if c[1] == p.category then params = c[2] end
+end
+
+p.categories = cts
+
+
+local s = m:section(
+       NamedSection, arg[1], "openvpn",
+       translate("%s" % arg[2])
+)
+
+s.title     = translate("%s" % arg[2])
+s.addremove = false
+s.anonymous = true
+
+
+for _, option in ipairs(params) do
+       local o = s:option(
+               option[1], option[2],
+               option[2], option[4]
+       )
+
+       o.optional = true
+
+       if option[1] == DummyValue then
+               o.value = option[3]
+       elseif option[1] == FileUpload then
+
+               function o.cfgvalue(self, section)
+                       local cfg_val = AbstractValue.cfgvalue(self, section)
+
+                       if cfg_val then
+                               return cfg_val
+                       end
+               end
+
+               function o.formvalue(self, section)
+                       local sel_val = AbstractValue.formvalue(self, section)
+                       local txt_val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+
+                       if sel_val and sel_val ~= "" then
+                               return sel_val
+                       end
+
+                       if txt_val and txt_val ~= "" then
+                               return txt_val
+                       end
+               end
+
+               function o.remove(self, section)
+                       local cfg_val = AbstractValue.cfgvalue(self, section)
+                       local txt_val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+                       
+                       if cfg_val and fs.access(cfg_val) and txt_val == "" then
+                               fs.unlink(cfg_val)
+                       end
+                       return AbstractValue.remove(self, section)
+               end
+       elseif option[1] == Flag then
+               o.default = nil
+       else
+               if option[1] == DynamicList then
+                       function o.cfgvalue(...)
+                               local val = AbstractValue.cfgvalue(...)
+                               return ( val and type(val) ~= "table" ) and { val } or val
+                       end
+               end
+
+               if type(option[3]) == "table" then
+                       if o.optional then o:value("", "-- remove --") end
+                       for _, v in ipairs(option[3]) do
+                               v = tostring(v)
+                               o:value(v)
+                       end
+                       o.default = tostring(option[3][1])
+               else
+                       o.default = tostring(option[3])
+               end
+       end
+
+       for i=5,#option do
+               if type(option[i]) == "table" then
+                       o:depends(option[i])
+               end
+       end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
new file mode 100644 (file)
index 0000000..132c4d8
--- /dev/null
@@ -0,0 +1,180 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require("nixio.fs")
+
+local basicParams = {
+       --
+       -- Widget, Name, Default(s), Description
+       --
+       { ListValue,
+               "verb",
+               { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
+               translate("Set output verbosity") },
+       { Value,
+               "nice",
+               0,
+               translate("Change process priority") },
+       { Value,
+               "port",
+               1194,
+               translate("TCP/UDP port # for both local and remote") },
+       { ListValue,
+               "dev_type",
+               { "tun", "tap" },
+               translate("Type of used device") },
+       { Value,
+               "ifconfig",
+               "10.200.200.3 10.200.200.1",
+               translate("Set tun/tap adapter parameters") },
+       { Value,
+               "server",
+               "10.200.200.0 255.255.255.0",
+               translate("Configure server mode") },
+       { Value,
+               "server_bridge",
+               "192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254",
+               translate("Configure server bridge") },
+       { Flag,
+               "nobind",
+               0,
+               translate("Do not bind to local address and port") },
+       { 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", "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") },
+       { DynamicList,
+               "remote",
+               "vpnserver.example.org",
+               translate("Remote host name or ip address") },
+       { FileUpload,
+               "secret",
+               "/etc/openvpn/secret.key",
+               translate("Enable Static Key encryption mode (non-TLS)") },
+       { ListValue,
+               "key_direction",
+               { 0, 1 },
+               translate("The key direction for 'tls-auth' and 'secret' options") },
+       { FileUpload,
+               "pkcs12",
+               "/etc/easy-rsa/keys/some-client.pk12",
+               translate("PKCS#12 file containing keys") },
+       { 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") },
+}
+
+
+local m = Map("openvpn")
+m.redirect = luci.dispatcher.build_url("admin", "services", "openvpn")
+m.apply_on_parse = true
+
+local p = m:section( SimpleSection )
+p.template = "openvpn/pageswitch"
+p.mode     = "basic"
+p.instance = arg[1]
+
+
+local s = m:section( NamedSection, arg[1], "openvpn" )
+
+for _, option in ipairs(basicParams) do
+       local o = s:option(
+               option[1], option[2],
+               option[2], option[4]
+       )
+
+       o.optional = true
+
+       if option[1] == DummyValue then
+               o.value = option[3]
+       elseif option[1] == FileUpload then
+
+               function o.cfgvalue(self, section)
+                       local cfg_val = AbstractValue.cfgvalue(self, section)
+
+                       if cfg_val then
+                               return cfg_val
+                       end
+               end
+
+               function o.formvalue(self, section)
+                       local sel_val = AbstractValue.formvalue(self, section)
+                       local txt_val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+
+                       if sel_val and sel_val ~= "" then
+                               return sel_val
+                       end
+
+                       if txt_val and txt_val ~= "" then
+                               return txt_val
+                       end
+               end
+
+               function o.remove(self, section)
+                       local cfg_val = AbstractValue.cfgvalue(self, section)
+                       local txt_val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+                       
+                       if cfg_val and fs.access(cfg_val) and txt_val == "" then
+                               fs.unlink(cfg_val)
+                       end
+                       return AbstractValue.remove(self, section)
+               end
+       elseif option[1] == Flag then
+               o.default = nil
+       else
+               if option[1] == DynamicList then
+                       function o.cfgvalue(...)
+                               local val = AbstractValue.cfgvalue(...)
+                               return ( val and type(val) ~= "table" ) and { val } or val
+                       end
+               end
+
+               if type(option[3]) == "table" then
+                       if o.optional then o:value("", "-- remove --") end
+                       for _, v in ipairs(option[3]) do
+                               v = tostring(v)
+                               o:value(v)
+                       end
+                       o.default = tostring(option[3][1])
+               else
+                       o.default = tostring(option[3])
+               end
+       end
+
+       for i=5,#option do
+               if type(option[i]) == "table" then
+                       o:depends(option[i])
+               end
+       end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua
new file mode 100644 (file)
index 0000000..9d50601
--- /dev/null
@@ -0,0 +1,82 @@
+-- Licensed to the public under the Apache License 2.0.
+
+local ip        = require("luci.ip")
+local fs        = require("nixio.fs")
+local util      = require("luci.util")
+local uci       = require("luci.model.uci").cursor()
+local cfg_file  = uci:get("openvpn", arg[1], "config")
+local auth_file = cfg_file:match("(.+)%..+").. ".auth"
+
+local m = Map("openvpn")
+
+local p = m:section( SimpleSection )
+p.template = "openvpn/pageswitch"
+p.mode     = "file"
+p.instance = arg[1]
+
+if not cfg_file or not fs.access(cfg_file) then
+       local f = SimpleForm("error", nil, translatef("The OVPN config file (%s) could not be found, please check your configuration.", cfg_file or "n/a"))
+       f:append(Template("openvpn/ovpn_css"))
+       f.reset = false
+       f.submit = false
+       return m, f
+end
+
+if fs.stat(cfg_file).size >= 102400 then
+       f = SimpleForm("error", nil,
+               translatef("The size of the OVPN config file (%s) is too large for online editing in LuCI (&ge; 100 KB). ", cfg_file)
+               .. translate("Please edit this file directly in a terminal session."))
+       f:append(Template("openvpn/ovpn_css"))
+       f.reset = false
+       f.submit = false
+       return m, f
+end
+
+f = SimpleForm("cfg", nil)
+f:append(Template("openvpn/ovpn_css"))
+f.submit = translate("Save")
+f.reset = false
+
+s = f:section(SimpleSection, nil, translatef("Section to modify the OVPN config file (%s)", cfg_file))
+file = s:option(TextValue, "data1")
+file.datatype = "string"
+file.rows = 20
+
+function file.cfgvalue()
+       return fs.readfile(cfg_file) or ""
+end
+
+function file.write(self, section, data1)
+       return fs.writefile(cfg_file, "\n" .. util.trim(data1:gsub("\r\n", "\n")) .. "\n")
+end
+
+function file.remove(self, section, value)
+       return fs.writefile(cfg_file, "")
+end
+
+function s.handle(self, state, data1)
+       return true
+end
+
+s = f:section(SimpleSection, nil, translatef("Section to add an optional 'auth-user-pass' file with your credentials (%s)", auth_file))
+file = s:option(TextValue, "data2")
+file.datatype = "string"
+file.rows = 5
+
+function file.cfgvalue()
+       return fs.readfile(auth_file) or ""
+end
+
+function file.write(self, section, data2)
+       return fs.writefile(auth_file, util.trim(data2:gsub("\r\n", "\n")) .. "\n")
+end
+
+function file.remove(self, section, value)
+       return fs.writefile(auth_file, "")
+end
+
+function s.handle(self, state, data2)
+       return true
+end
+
+return m, f
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
new file mode 100644 (file)
index 0000000..41266d8
--- /dev/null
@@ -0,0 +1,175 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs  = require "nixio.fs"
+local sys = require "luci.sys"
+local uci = require "luci.model.uci".cursor()
+local testfullps = sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have
+local psstring = (string.len(testfullps)>0) and  "ps w" or  "ps axfw" --set command we use to get pid
+
+local m = Map("openvpn", translate("OpenVPN"))
+local s = m:section( TypedSection, "openvpn", translate("OpenVPN instances"), translate("Below is a list of configured OpenVPN instances and their current state") )
+s.template = "cbi/tblsection"
+s.template_addremove = "openvpn/cbi-select-input-add"
+s.addremove = true
+s.add_select_options = { }
+
+local cfg = s:option(DummyValue, "config")
+function cfg.cfgvalue(self, section)
+       local file_cfg = self.map:get(section, "config")
+       if file_cfg then
+               s.extedit = luci.dispatcher.build_url("admin", "services", "openvpn", "file", "%s")
+       else
+               s.extedit = luci.dispatcher.build_url("admin", "services", "openvpn", "basic", "%s")
+       end
+end
+
+uci:load("openvpn_recipes")
+uci:foreach( "openvpn_recipes", "openvpn_recipe",
+       function(section)
+               s.add_select_options[section['.name']] =
+                       section['_description'] or section['.name']
+       end
+)
+
+function s.getPID(section) -- Universal function which returns valid pid # or nil
+       local pid = sys.exec("%s | grep -w '[o]penvpn(%s)'" % { psstring, section })
+       if pid and #pid > 0 then
+               return tonumber(pid:match("^%s*(%d+)"))
+       else
+               return nil
+       end
+end
+
+function s.parse(self, section)
+       local recipe = luci.http.formvalue(
+               luci.cbi.CREATE_PREFIX .. self.config .. "." ..
+               self.sectiontype .. ".select"
+       )
+
+       if recipe and not s.add_select_options[recipe] then
+               self.invalid_cts = true
+       else
+               TypedSection.parse( self, section )
+       end
+end
+
+function s.create(self, name)
+       local recipe = luci.http.formvalue(
+               luci.cbi.CREATE_PREFIX .. self.config .. "." ..
+               self.sectiontype .. ".select"
+       )
+       local name = luci.http.formvalue(
+               luci.cbi.CREATE_PREFIX .. self.config .. "." ..
+               self.sectiontype .. ".text"
+       )
+       if #name > 3 and not name:match("[^a-zA-Z0-9_]") then
+               local s = uci:section("openvpn", "openvpn", name)
+               if s then
+                       local options = uci:get_all("openvpn_recipes", recipe)
+                       for k, v in pairs(options) do
+                               if k ~= "_role" and k ~= "_description" then
+                                       if type(v) == "boolean" then
+                                               v = v and "1" or "0"
+                                       end
+                                       uci:set("openvpn", name, k, v)
+                               end
+                       end
+                       uci:save("openvpn")
+                       uci:commit("openvpn")
+                       if extedit then
+                               luci.http.redirect( self.extedit:format(name) )
+                       end
+               end
+       elseif #name > 0 then
+               self.invalid_cts = true
+       end
+       return 0
+end
+
+function s.remove(self, name)
+       local cfg_file  = "/etc/openvpn/" ..name.. ".ovpn"
+       local auth_file = "/etc/openvpn/" ..name.. ".auth"
+       if fs.access(cfg_file) then
+               fs.unlink(cfg_file)
+       end
+       if fs.access(auth_file) then
+               fs.unlink(auth_file)
+       end
+       uci:delete("openvpn", name)
+       uci:save("openvpn")
+       uci:commit("openvpn")
+end
+
+s:option( Flag, "enabled", translate("Enabled") )
+
+local active = s:option( DummyValue, "_active", translate("Started") )
+function active.cfgvalue(self, section)
+       local pid = s.getPID(section)
+       if pid ~= nil then
+               return (sys.process.signal(pid, 0))
+                       and translatef("yes (%i)", pid)
+                       or  translate("no")
+       end
+       return translate("no")
+end
+
+local updown = s:option( Button, "_updown", translate("Start/Stop") )
+updown._state = false
+updown.redirect = luci.dispatcher.build_url(
+       "admin", "services", "openvpn"
+)
+function updown.cbid(self, section)
+       local pid = s.getPID(section)
+       self._state = pid ~= nil and sys.process.signal(pid, 0)
+       self.option = self._state and "stop" or "start"
+       return AbstractValue.cbid(self, section)
+end
+function updown.cfgvalue(self, section)
+       self.title = self._state and "stop" or "start"
+       self.inputstyle = self._state and "reset" or "reload"
+end
+function updown.write(self, section, value)
+       if self.option == "stop" then
+               sys.call("/etc/init.d/openvpn stop %s" % section)
+       else
+               sys.call("/etc/init.d/openvpn start %s" % section)
+       end
+       luci.http.redirect( self.redirect )
+end
+
+local port = s:option( DummyValue, "port", translate("Port") )
+function port.cfgvalue(self, section)
+       local val = AbstractValue.cfgvalue(self, section)
+       if not val then
+               local file_cfg = self.map:get(section, "config")
+               if file_cfg  and fs.access(file_cfg) then
+                       val = sys.exec("awk '{if(match(tolower($1),/^port$/)&&match($2,/[0-9]+/)){cnt++;printf $2;exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg)
+                       if val == "-" then
+                               val = sys.exec("awk '{if(match(tolower($1),/^remote$/)&&match($3,/[0-9]+/)){cnt++;printf $3;exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg)
+                       end
+               end
+       end
+       return val or "-"
+end
+
+local proto = s:option( DummyValue, "proto", translate("Protocol") )
+function proto.cfgvalue(self, section)
+       local val = AbstractValue.cfgvalue(self, section)
+       if not val then
+               local file_cfg = self.map:get(section, "config")
+               if file_cfg and fs.access(file_cfg) then
+                       val = sys.exec("awk '{if(match(tolower($1),/^proto$/)&&match(tolower($2),/^udp[46]*$|^tcp[46]*-server$|^tcp[46]*-client$/)){cnt++;printf tolower($2);exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg)
+                       if val == "-" then
+                               val = sys.exec("awk '{if(match(tolower($1),/^remote$/)&&match(tolower($4),/^udp[46]*$|^tcp[46]*-server$|^tcp[46]*-client$/)){cnt++;printf $4;exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg)
+                       end
+               end
+       end
+       return val or "-"
+end
+
+function m.on_after_apply(self,map)
+       sys.call('/etc/init.d/openvpn reload')
+end
+
+return m
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm b/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
new file mode 100644 (file)
index 0000000..e75bfda
--- /dev/null
@@ -0,0 +1,111 @@
+
+<script type="text/javascript">
+//<![CDATA[
+       function vpn_add()
+       {
+               var vpn_name     = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,'');
+               var vpn_template = div_add.querySelector("#instance_template").value;
+               var form         = document.getElementsByName('cbi')[0];
+
+               if (!vpn_name || !vpn_name.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
+               }
+
+               document.getElementById("instance_name1").value = vpn_name;
+               if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
+               }
+
+               if (!vpn_template || !vpn_template.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Please select a valid VPN template!"))%>", 2000);
+               }
+
+               if (form)
+               {
+                       form.submit();
+               }
+       }
+
+       function vpn_upload()
+       {
+               var vpn_name = div_upload.querySelector("#instance_name2").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,'');
+               var vpn_file = document.getElementById("ovpn_file").value;
+               var form     = document.getElementsByName('cbi')[0];
+
+               if (!vpn_name || !vpn_name.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
+               }
+
+               document.getElementById("instance_name2").value = vpn_name;
+               if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
+               }
+
+               if (!vpn_file || !vpn_file.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Please select a valid OVPN config file to upload!"))%>", 2000);
+               }
+
+               if (form)
+               {
+                       form.enctype = 'multipart/form-data';
+                       form.action  = '<%=url('admin/services/openvpn/upload')%>';
+                       form.submit();
+               }
+       }
+
+       function info_message(output, msg, timeout)
+       {
+               timeout = timeout || 0;
+               output.innerHTML = '<em>' + msg + '</em>';
+               if (timeout > 0)
+               {
+                       setTimeout(function(){ output.innerHTML=""}, timeout);
+               }
+       }
+//]]>
+</script>
+
+<%+openvpn/ovpn_css%>
+
+<div class="cbi-section-node">
+       <div class="table cbi-section-table">
+               <h4><%:Template based configuration%></h4>
+               <div class="tr cbi-section-table-row" id="div_add">
+                       <div class="td left">
+                               <input type="text" maxlength="20" placeholder="Instance name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" id="instance_name1" />
+                       </div>
+                       <div class="td left">
+                               <select id="instance_template" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
+                                       <option value="" selected="selected" disabled="disabled"><%:Select template ...%></option>
+                                       <%- for k, v in luci.util.kspairs(self.add_select_options) do %>
+                                               <option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
+                                       <% end -%>
+                               </select>
+                       </div>
+                       <div class="td left">
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br />
+                       </div>
+               </div>
+               <h4><%:OVPN configuration file upload%></h4>
+               <div class="tr cbi-section-table-row" id="div_upload">
+                       <div class="td left">
+                               <input type="text" maxlength="20" placeholder="Instance name" name="instance_name2" id="instance_name2" />
+                       </div>
+                       <div class="td left">
+                               <input type="file" name="ovpn_file" id="ovpn_file" accept="application/x-openvpn-profile,.ovpn" />
+                       </div>
+                       <div class="td left">
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" />
+                       </div>
+               </div>
+       </div>
+       <div class="vpn-output">
+               <span id="vpn_output"></span>
+       </div>
+</div>
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm b/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm
new file mode 100644 (file)
index 0000000..55c0a54
--- /dev/null
@@ -0,0 +1,38 @@
+<style type="text/css">
+       h4
+       {
+               white-space: nowrap;
+               border-bottom: 0px;
+               margin: 10px 5px 5px 5px;
+       }
+       .tr
+       {
+               border: 0px;
+               text-align: left;
+       }
+       .vpn-output
+       {
+               box-shadow: none;
+               margin: 10px 5px 5px 5px;
+               color: #a22;
+       }
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
+       }
+       a
+       {
+               line-height: 1.5;
+       }
+       hr
+       {
+               margin: 0.5em 0;
+       }
+</style>
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm b/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm
new file mode 100644 (file)
index 0000000..c1fe052
--- /dev/null
@@ -0,0 +1,30 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+openvpn/ovpn_css%>
+
+<div class="cbi-section">
+       <h3>
+               <a href="<%=url('admin/services/openvpn')%>"><%:Overview%></a> &#187;
+               <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%>
+       </h3>
+       <% if self.mode == "basic" then %>
+               <a href="<%=url('admin/services/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration%> &#187;</a><p/>
+               <hr />
+       <% elseif self.mode == "advanced" then %>
+               <a href="<%=url('admin/services/openvpn/basic', self.instance)%>"><%:Switch to basic configuration%> &#187;</a><p/>
+               <hr />
+               <%:Configuration category%>:
+               <% for i, c in ipairs(self.categories) do %>
+                       <% if c == self.category then %>
+                               <strong><%=translate(c)%></strong>
+                       <% else %>
+                               <a href="<%=luci.dispatcher.build_url("admin", "services", "openvpn", "advanced", self.instance, c)%>"><%=translate(c)%></a>
+                       <% end %>
+                       <% if next(self.categories, i) then %>|<% end %>
+               <% end %>
+       <% end %>
+</div>
diff --git a/package/luci/applications/luci-app-openvpn/po/ca/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ca/openvpn.po
new file mode 100644 (file)
index 0000000..b9174f6
--- /dev/null
@@ -0,0 +1,831 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2014-08-07 20:41+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', o 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Accepta opcions rebudes del servidor"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Afegeix"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Afegeix ruta després d'establir connexió"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Autenticació addicional sobre TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Permet tràfic client a client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permet múltiples clients amb el mateix certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Permet només una sessió"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Permet al remot canviar la seva IP o port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Màxim de clients connectats pemès"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Màxim permès d'interns"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Màxim de noves connexions permesès"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Afegeix el registre al fitxer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autentica utilitzant nom d'usuari/contrasenya"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Readreça automàticament la ruta per defecte"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"A sota hi ha una llista d'instàncies OpenVPN configurades i el seu estat "
+"actual"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+"Crida l'script/comanda de desactivació abans de tancar el dispositiu TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Autoritat de certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Canvia la prioritat del procés"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Canvia el directori abans de la inicialització"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Comprova el certificat de peer contra un CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Chroot al directori després de la inicialització"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "El client està inhabilitat"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Categoria de configuració"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configura el mode client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configura el pont de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configura el mode servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Connecta't a través un proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Connecta al host remot a través d'un intermediari HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Interval de reintent de connexió"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Dimonitza després d'inicialitzar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Retarda l'obertura tun/tap i l'execució d'script d'activació"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Paràmetres Diffie-Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Directori per fitxers de configuració de client personalitzats"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Desactiva Paging"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Desactiva la comprovació de consistència d'opcions"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "No vinculis a adreça i port locals"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "No executis ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "No afegeixis rutes automàticament"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "No desis a la memòria cau contrasenyes --askpass o --auth-user-pass"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "No heretis les opcions globals enviades pel servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "No registris les marques horàries"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "No rellegeixis la clau al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "No utilitzis compressió adaptativa LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "No alertis d'inconsistències ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Escriu els paràmetres al registre"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Mesura empíricament l'MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Habilita els motors criptogràfics de maquinari del OpenSSL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Habilita el descobriment de ruta MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Activa el mode d'encriptació de Clau Estàtica (no-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Activa el TLS i assumeix el rol de client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Activa el TLS i assumeix el rol de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Activa la fragmentació de datagrames interna"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Activa la interfície de gestió a <em>IP</em> <em>port</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Activat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Xifra d'encriptació per paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Executa comanda després d'afegir les rutes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Executa una ordre de consola quan hi hagi un canvi d'IP remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Surt en fallar la negociació TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Aconsegueix contrasenya PEM de controlar tty abans de dimonitzar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autenticació HMAC per paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Gestió de fallades d'autenticació"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Si la resolució del nom de màquina falla, reintenta-ho"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instància \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Mantingues l'adreça IP local al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Mantingues l'adreça IP remota al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Mantingues el dispositiu tun/tap obert al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Finestra de transició de clau"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limita els missatges de registre repetits"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certificat local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Nom de màquina local o adreça IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Clau privada local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Mode major"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Número màxim de paquets TCP encuats a la sortida"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Número de memòries intermèdies de difusió assignades"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Número de línies per historial de fitxer de registre"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Accepta connexions només d'un cert nom X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Processa l'excés de temps d'espera de pings remots si la ruta existeix"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Instàncies OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optimitza les escriptures TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Sortida al syslog i no dimonitzis"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Visió de conjunt"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Fitxer PKCS#12 contenidor de claus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Passa les variables d'ambient a l'script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Persisteix l'estat de protecció de reproducció"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Persisteix/deixa de persistir ifconfig-pool"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Ping remot cada n segons sobre port TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Temps d'espera màxim de proxy en segons"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Envia una opció ifconfig al remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Envia opcions al peer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Consulta el canal de gestió per una clau privada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Tria aleatòriament el servidor remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Refusa la connexió si no hi ha configuració de client personalitzada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Remapeja senyals SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Nom de màquina remot o adreça IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Temps d'espera màxim de ping remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renegocia clau de canal de dades després de bytes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renegocia clau de canal de dades després de paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Renegocia clau de canal de dades després de segons"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Mida de la finestra lliscant de protecció de reproducció"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Requereix una designació explícita al certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Requereix ús de clau explícit al certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Reinicia després d'excedir el temps d'espera de ping remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Temps d'espera de retransmissió en canal de control TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Reintenta indefinidament en errors de proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Reintenta indefinidament en errors de proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Enruta subxarxa al client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Executa com un servidor inetd o xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Executa l'script en connectar-se el client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Executa l'script en desconnectar-te el client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Executa els scripts d'activació/desactivació per tots els reinicis."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Envia notificació al peer en desconnectar-se"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Estableix el GID al grup"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Estableix la MTU de TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Estableix l'UID per l'usuari"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Deixa de banda un conjunt de subxarxes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Estableix les opcions de proxy HTTP exteses"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Estableix el detall de sortida"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+"Estableix la mida de les taules de dispersió d'adreces reals i virtuals"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Estableix la mida de memòria intermèdia de recepció TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Estableix la mida de memòria intermèdia d'enviament TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Estableix la mida de cua TX de tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Estableix la MTU del dispositiu tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Estableix la càrrega (overhead) del dispositiu tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Estableix el límit superior al TCP MSS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Configuració d'ample de banda d'un peer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Ordre a executar després que s'obri un dispositiu tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Ordre a executar després que es tanqui un dispositiu tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Ordre de comanda per verificar el nom X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Silencia la sortida d'alertes de reproducció"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Mida de la clau de xifratge"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Especifica una passarel·la per defecte per rutes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Inicia l'OpenVPN en un estat d'hivernació"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Iniciat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Versió de format de fitxer d'estat"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Canvia a configuració avançada"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Canvia a configuració bàsica"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Port TCP/UDP tan per local com per remot"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Port TCP/UDP per local (defecte=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Port TCP/UDP per remot (defecte=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Xifrador TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "Pas TOS (aplica només a IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Directori temporal pel fitxer de retorn per la connexió de client"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Calendari per intercanvi de claus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Tipus de dispositiu utilitzat"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Utilitza compressió ràpida LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Utilitza protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Utilitza un node de dispositiu tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Utilitza el nom d'usuari com a nom comú"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Escriu registre al fitxer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Escriu l'ID del procés al fitxer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Escriu l'estat al fitxer cada n segons"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "no"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "dispositiu tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "temps d'espera màxim d'inactivitat tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "sí (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Invàlid"
diff --git a/package/luci/applications/luci-app-openvpn/po/cs/openvpn.po b/package/luci/applications/luci-app-openvpn/po/cs/openvpn.po
new file mode 100644 (file)
index 0000000..a9375f1
--- /dev/null
@@ -0,0 +1,825 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-07-12 19:47+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', nebo 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Přijmout nastavení, přijatá ze serveru"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Přidat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Přidat trasu po navázání spojení"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Dodatečné ověření přes TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Povolit provoz typu klient-klient"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Povolit více klientů se stejným certifikátem"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Povolit pouze jedno sezení"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Maximální povolené množství připojených klientů"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Maximální povolené množství nových připojení"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Připojit log do souboru"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Ověřit prostřednictvím uživatelského jména / hesla"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Certifikační autorita"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Změnit prioritu procesu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Klient je zakázáný"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Konfigurace kategorie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parametry Diffie Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Adresář s uživatelskými konfiguračními soubory"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Povolit hardwarovou akceleraci OpenSSL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Povolit Path MTU discovery (PMTUD)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Povolit TLS a převzít roli klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Povolit TLS a převzít roli serveru"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Povolit interní fragmentaci datagramů"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Povoleno"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instance \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Lokální certifikát"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Lokální soukromý klíč"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN instance"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Přehled"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protokol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Spustit skript cmd pro připojení klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Spustit skript cmd pro odpojení klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Velikost šifrovacího klíče"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Start/Stop"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Spuštěno"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Přepnout na pokročilou konfiguraci"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Přepnout na základní konfiguraci"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS šifra"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "ne"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "ano (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Neplatné"
diff --git a/package/luci/applications/luci-app-openvpn/po/de/openvpn.po b/package/luci/applications/luci-app-openvpn/po/de/openvpn.po
new file mode 100644 (file)
index 0000000..697c87f
--- /dev/null
@@ -0,0 +1,836 @@
+msgid ""
+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-01-28 22:15+0200\n"
+"Last-Translator: DAC324 <gerd_roethig@web.de>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "Topologietyp"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Vom Server übertragene Optionen lokal akzeptieren"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Netzwerkrouten nach Verbindungsaufbau einrichten"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Erweiterte Authentifikation über TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Netzwerkverkehr zwischen Teilnehmern zulassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Mehrere Teilnehmer mit selbem Zertifikat erlauben"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Nur eine einzige Verbindung zulassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Address- und Port-Änderungen der Gegenstelle zulassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Betriebsmodus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Maximal erlaubte Anzahl an Netzwerkrouten pro Teilnehmer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Wiederholrate für Verbindungversuche"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "An Protokolldatei anfügen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Authentifikation mittels Benutzername und Passwort"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Automatisch die Standard-Route umleiten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "Liste der konfigurierten OpenVPN Instanzen und ihr momentaner Status"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+"Shell-Kommando <em>vor</em> Deaktivierung der TUN/TAP Schnittstelle ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Zertifikat der Zertifizierungsstelle"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Prozess-Priorität anpassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "<em>Vor</em> der Initialisierung in Verzeichnis wechseln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Teilnehmerzertifikat mit Sperrliste abgleichen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "<em>Nach</em> der Initialisierung in Verzeichnis wechseln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Teilnehmer-Konto deaktivieren"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Kategorie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Clientmodus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Server-zu-Server Netzwerkbrücke"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Server-Modus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Verbindung über einen Socks 5 - Proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Verbindung zum entfernten Rechner über HTTP-Proxy aufbauen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Wiederholrate für Verbindungversuche"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Nach der Initialisierung als Hintergrundprozess ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Nach dem Verbindungsaufbau um n Sekunden verzögern"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Shell-Kommando nach Schnittstelleneinrichtung verzögern"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie-Hellman-Parameter"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Verzeichnis für eigene Konfigurationsdateien"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Benutzten Arbeitsspeicher sperren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Konsistenzprüfungen für Optionen durchführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "An keine spezielle Adresse binden"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Schnittstellenkonfiguration nicht durchführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Netzwerkrouten nicht automatisch einrichten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Authentifikationsdaten nicht zwischenspeichern"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Nur teilnehmerspezifische Optionen übertragen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Keine Zeitangaben protokollieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Schlüssel bei Neustarts beibehalten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Adaptive LZO-Kompression deaktivieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Keine Warnung bei inkonsistenter Schnittstellenkonfiguration"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Parameter in Protokolldatei speichern"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "MTU regelmäßig testen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "OpenSSL-Unterstützung für Kryptographie-Hardware benutzen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "MTU-Erkennung aktivieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Verschlüsselung mittels statischer Schlüssel (kein TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "TLS im Client-Betriebsmodus aktivieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "TLS im Server-Betriebsmodus aktivieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Datenpakete bei Bedarf fragmentieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Administratorschnittstelle aktivieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Einschalten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Verschlüsselungsalgorithmus für Pakete"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Shell-Befehl nach Routen-Einrichtung ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Programm bei Adressänderung der Gegenstelle aufrufen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Wird bei neuen Client-Verbindungen im Servermodus ausgeführt, wenn dem "
+"Clienten noch nicht vertraut wird"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Wird im Servermodus ausgeführt, wann immer eine IPv4-Adresse/Route oder MAC-"
+"Adresse zur internen Routingtabelle von OpenVPN hinzugefügt wird"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Terminieren nach fehlgeschlagenem Schlüsselaustausch"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "PEM-Passwort von Konsole abfragen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "HMAC-Authentifizierung für Pakete"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Behandlung von Authentifikationsfehlern"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Helfer-Direktive, um den Ausdruck von --ping und --ping-restart in "
+"Servermodus-Konfigurationen zu vereinfachen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Neuer Verbindungsversuch wenn Namensauflösung fehlschlägt"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instanz \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Lokale IP-Adresse bei Neustarts beibehalten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "IP-Adresse der Gegenstelle bei Neustarts beibehalten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "TUN/TAP Schnittelle bei Neustarts offen halten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Maximaler Zeitraum für Schlüsselwechsel"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Wiederholende Protokollmeldungen unterdrücken"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Lokales Zertifikat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Lokaler Rechnername oder IP Adresse"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Lokaler privater Schlüssel"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Betriebsmodus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Maximale Anzahl an TCP-Paketen in der Warteschlange"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Anzahl der benutzten Broadcast-Puffer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Anzahl der Zeilen im Protokoll-Zwischenspeicher"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Nur Verbindungen vom angegebenem X.509 Name zulassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Ping-Timeouts nur bei vorhandenen Routen auslösen"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN Instanzen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "TUN-, TAP- und UDP-Schreibvorgänge optimieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Ausgaben ins Systemprotokoll umleiten und im Vordergrund ausführen"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Übersicht"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS#12 Schlüsselarchiv"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Umgebungsvariablen für Shell-Befehle"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Persistenter Status für \"Replay\"-Schutz"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Persistenten IP-Adressbereich nutzen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Ping-Intervall für Gegenstellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Policy-Ebene über Nutzung von externen Programmen und Skripten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Netzwerkport"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Maximaler Timeout für Proxy-Verbindungen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "IP-Adresskonfiguration an Teilnehmer übertragen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Optionen an Teilnehmer übertragen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Privaten Schlüssel über Management-Kanal abfragen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Entfernten Server zufällig wählen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Teilnehmer-Verbindung verweigern wenn Teilnehmer-Konfiguration fehlt"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "\"USR1\" Systemsignal umleiten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Entfernter Rechnername oder IP-Adresse"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Ping-Timeout für Gegenstellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Schlüssel nach maximale Verkehrsmenge neu aushandeln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Schlüssel nach maximaler Anzahl von Paketen neu aushandeln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Schlüssel nach maximaler Verbindungsdauer neu aushandeln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Fenstergröße für \"Replay\"-Schutz"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Verwendungszweck von Zertifikaten überprüfen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Zertifikat explizit auf einfachen Verwendungszweck prüfen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Neu Starten nach Ping-Timeout an Gegenstellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "TLS Timeout"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Neue Verbindung bei Proxy-Fehlern aufbauen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Neue Verbindung bei Proxy-Fehlern aufbauen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Subnetz an Teilnehmer routen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Als <em>inetd</em> oder <em>xinetd</em> Server laufen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Shell-Kommando bei neuer Teilnehmer-Verbindung ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Shell-Kommando beim Trennen von Teilnehmer-Verbindungen ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Shell-Kommandos bei jedem Neustart ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Teilnehmer über Verbindungstrennung informieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Dienst mit Benutzergruppe laufen lassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "MTU für TCP/UDP Protokoll festlegen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Dienst als Benutzer laufen lassen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "IP-Adressbereich für zu vergebende Subnetze"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Erweiterte HTTP-Proxy Einstellungen vornehmen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Detailstufe für Protokolle"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Größe für interne Adresstabellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Größe des TCP/UDP Empfangs-Puffers"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Größe des TCP/UDP Sende-Puffers"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Größe der Sende-Warteschlange"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Tun/Tap parameter einstellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "MTU für TUN/TAP Schnittstelle festlegen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Overhead für TUN/TAP Schnittstelle festlegen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Maximale TCP-MSS erzwingen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Verbindungsrate von Gegenstellen limitieren"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Shell-Kommando nach Einrichtung von TUN/TAP Schnittstelle ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+"Shell-Kommando <em>nach</em> Deaktivierung der TUN/TAP Schnittstelle "
+"ausführen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Shell-Kommando zum Überprüfen das X.509 Namens"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "\"Replay\"-Warnungen unterdrücken"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Größe des Schlüssels"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Standard-Gateway für Netzwerkrouten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "OpenVPN im Schlafmodus starten"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Start/Stopp"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Gestartet"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Format für Status-Datei"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Erweiterte Einstellungen"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Zur vereinfachten Konfiguration wechseln"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Benutzter TCP oder UDP Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Lokaler TCP oder UDP Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP oder UDP Port der Gegenstelle"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS Verschlüsselungsalgorithmus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "\"TOS\" Durchleitung (nur für IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Temporäres Verzeichnis für Teilnehmer-Verbindungen"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Maximaler Zeitraum für Schlüsselaustausch"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Schnittstellentyp"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Schnelle LZO-Kompression benutzen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Netzwerkprotokoll"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "TUN/TAP Gerätedatei"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Benutzernamen als Common-Name benutzen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "In Protokolldatei schreiben"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Prozess-Nummer in Datei schreiben"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Status-Datei schreiben"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "Nicht gestartet"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "TUN/TAP Schnittstelle"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Inaktivitäts-Timeout für TUN/TAP Schnittstellen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "Gestartet (%s)"
+
+#~ msgid "Invalid"
+#~ msgstr "Ungültig"
diff --git a/package/luci/applications/luci-app-openvpn/po/el/openvpn.po b/package/luci/applications/luci-app-openvpn/po/el/openvpn.po
new file mode 100644 (file)
index 0000000..92d55bb
--- /dev/null
@@ -0,0 +1,827 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-28 02:08+0200\n"
+"PO-Revision-Date: 2012-03-18 15:23+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Επιτρέπουμε στον απομακρυσμένο να αλλάξει την IP ή τη θύρα"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Παρακάτω είναι μία λίστα των ρυθμισμένων περιστατικών OpenVPN και της "
+"τρέχουσας κατάστασής τους"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Σύνδεση μέσω διαμεσολαβητή Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Διάστημα επαναπροσπάθειας σύνδεσης"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Μη συνδέσεις σε τοπική διεύθυνση και θύρα"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Ενεργοποιημένο"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Εκτέλεση της εντολής κελύφους στην αλλαγή IP του απομακρυσμένου"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+"Αν αποτύχει η μετατροπή του ονόματος του μηχανήματος σε IP, ξαναπροσπάθησε"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Όνομα τοπικού μηχανήματος ή διεύθυνση IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Διεργασίες OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Θύρα"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Πρωτόκολλο"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Τέλος χρόνου μεσολαβητή σε δευτερόλεπτα"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Τυχαία επιλογή απομακρυσμένου διακομιστή"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Όνομα απομακρυσμένου μηχανήματος ή διεύθυνση IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Επαναπροσπάθεια για πάντα αν υπάρχουν λάθη HTTP στο μεσολαβητή"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Επαναπροσπάθεια για πάντα σε περίπτωση λαθών στο διαμεσολαβητή Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Ορισμός εκτεταμένων ρυθμίσεων διαμεσολαβητή HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Εκκίνηση/Τερματισμός"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Ξεκίνησε"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Μετάβαση στις προχωρημένες ρυθμίσεις"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Μετάβαση στις βασικές επιλογές"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "TCP/UDP νούμερο θύρας για το τοπικό και το απομακρυσμένο"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "TCP/UDP αριθμός θύρας για το τοπικό (εξ'ορισμού=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP/UDP αριθμός θύρας για τον απομακρυσμένο (εξ'ορισμού=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Είδος χρησιμοποιούμενης συσκευής"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "όχι"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Συσκευή tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "ναι (%i)"
diff --git a/package/luci/applications/luci-app-openvpn/po/en/openvpn.po b/package/luci/applications/luci-app-openvpn/po/en/openvpn.po
new file mode 100644 (file)
index 0000000..a26bfe9
--- /dev/null
@@ -0,0 +1,825 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2012-04-03 08:45+0200\n"
+"Last-Translator: juhosg <juhosg@openwrt.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', or 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Accept options pushed from server"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Add route after establishing connection"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Additional authentication over TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Allow client-to-client traffic"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Allow multiple clients with same certificate"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Allow only one session"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Allow remote to change its IP or port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Allowed maximum of connected clients"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Allowed maximum of internal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Allowed maximum of new connections"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Append log to file"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Authenticate using username/password"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Automatically redirect default route"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Below is a list of configured OpenVPN instances and their current state"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Call down cmd/script before TUN/TAP close"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Certificate authority"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Change process priority"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Change to directory before initialization"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Check peer certificate against a CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Chroot to directory after initialization"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Client is disabled"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configure client mode"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configure server bridge"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configure server mode"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Connect through Socks5 proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Connection retry interval"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Daemonize after initialization"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Delay tun/tap open and up script execution"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie Hellman parameters"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Directory for custom client config files"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Disable Paging"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Disable options consistency check"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Do not bind to local address and port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Don't actually execute ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Don't add routes automatically"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Don't cache --askpass or --auth-user-pass passwords"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Don't inherit global push options"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Don't log timestamps"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Don't re-read key on restart"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Don't use adaptive lzo compression"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Don't warn on ifconfig inconsistencies"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Echo parameters to log"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Empirically measure MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Enable OpenSSL hardware crypto engines"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Enable Path MTU discovery"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Enable Static Key encryption mode (non-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Enable TLS and assume client role"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Enable TLS and assume server role"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Enable internal datagram fragmentation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Enable management interface on <em>IP</em> <em>port</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Enabled"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Encrypt and authenticate all control channel packets with the key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Encryption cipher for packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Execute shell cmd after routes are added"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Execute shell command on remote ip change"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Exit on TLS negotiation failure"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Get PEM password from controlling tty before we daemonize"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "HMAC authentication for packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Handling of authentication failures"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "If hostname resolve fails, retry"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instance \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Keep local IP address on restart"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Keep remote IP address on restart"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Keep tun/tap device open on restart"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Key transition window"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limit repeated log messages"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Local certificate"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Local host name or ip address"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Local private key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Major mode"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Maximum number of queued TCP output packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Number of allocated broadcast buffers"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Number of lines for log file history"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Only accept connections from given X509 name"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Only process ping timeouts if routes exist"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN instances"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optimize TUN/TAP/UDP writes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Output to syslog and do not daemonize"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS#12 file containing keys"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Pass environment variables to script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Persist replay-protection state"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Persist/unpersist ifconfig-pool"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Ping remote every n seconds over TCP/UDP port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Proxy timeout in seconds"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Push an ifconfig option to remote"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Push options to peer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Query management channel for private key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Randomly choose remote server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Refuse connection if no custom client config"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Remap SIGUSR1 signals"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Remote host name or ip address"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Remote ping timeout"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renegotiate data chan. key after bytes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renegotiate data chan. key after packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Renegotiate data chan. key after seconds"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Replay protection sliding window size"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Require explicit designation on certificate"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Require explicit key usage on certificate"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Restart after remote ping timeout"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Retransmit timeout on TLS control channel"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Retry indefinitely on HTTP proxy errors"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Retry indefinitely on Socks proxy errors"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Route subnet to client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Run as an inetd or xinetd server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Run script cmd on client connection"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Run script cmd on client disconnection"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Run up/down scripts for all restarts"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Send notification to peer on disconnect"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Set GID to group"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Set TCP/UDP MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Set UID to user"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Set aside a pool of subnets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Set extended HTTP proxy options"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Set output verbosity"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Set size of real and virtual address hash tables"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Set the TCP/UDP receive buffer size"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Set the TCP/UDP send buffer size"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Set tun/tap TX queue length"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Set tun/tap device MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Set tun/tap device overhead"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Set upper bound on TCP MSS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Shaping for peer bandwidth"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Shell cmd to execute after tun device open"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Shell cmd to run after tun device close"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Shell command to verify X509 name"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Silence the output of replay warnings"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Size of cipher key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Specify a default gateway for routes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Start OpenVPN in a hibernating state"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Started"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Status file format version"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Switch to advanced configuration"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Switch to basic configuration"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "TCP/UDP port # for both local and remote"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "TCP/UDP port # for local (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP/UDP port # for remote (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS cipher"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "TOS passthrough (applies to IPv4 only)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Temporary directory for client-connect return file"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Timeframe for key exchange"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Type of used device"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Use fast LZO compression"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Use protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Use tun/tap device node"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Use username as common name"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Write log to file"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Write process ID to file"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Write status to file every n seconds"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "no"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "tun/tap device"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "tun/tap inactivity timeout"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "yes (%i)"
diff --git a/package/luci/applications/luci-app-openvpn/po/es/openvpn.po b/package/luci/applications/luci-app-openvpn/po/es/openvpn.po
new file mode 100644 (file)
index 0000000..477de36
--- /dev/null
@@ -0,0 +1,844 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2019-03-02 14:45-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language: es\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 2.2.1\n"
+"Language-Team: \n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', o 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Aceptar opciones envidadas desde el servidor"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Añadir"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Añadir la ruta tras establecer la conexión"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr "Agregar configuración basada en plantillas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Autentificación adicional con TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Permitir el tráfico cliente-a-cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permitir múltiples clientes con el mismo certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Permitir sólo una sesión"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Permitir al conectado cambiar su IP o puerto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Máximo de clientes conectados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Máximo de internos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Máximo de nuevas conexiones"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Unir registro al archivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autentificar con nombre usuario y contraseña"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Redirigir automáticamente la ruta por defecto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "Conexiones OpenVPN configuradas y estado actual"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Comando/script a llamar al cerrar el dispositivo TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Autoridad certificativa"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Cambiar la prioridad del proceso"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Cambiar a este directorio antes de inicializar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Comprobar certificados contra un CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Restringir a este directorio tras inicializar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Cliente dehabilitado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Categoría de configuración"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configurar el modo cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configurar el puente servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configurar el modo servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Conectar por un proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Conectar a la máquina remota usando un proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Intervalo de reconexión"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Demonizar tras inicialización"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Espera tras conexión (segundos)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Espera para la apertura TUN/TAP y ejecución del script de arranque"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parámetros Diffie-Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Directorio de configuraciones personalizadas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Deshabilitar paginación"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Deshabilitar comprobación de consistencia de opciones"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "No asociar a un puerto y dirección locales"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "No ejecutar ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "No añadir rutas automáticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "No guardar las contraseñas --askpass o --auth-user-pass"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+"No suelte los paquetes de tun entrantes con el mismo destino que el host"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "No heredar opciones push globales"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "No guardar en registro horas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr "No tirar de las rutas automáticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "No releer la clave al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "No usar compresión adaptativa LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "No avisar de inconsistencias en ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Guardar parámetros en el registro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Medir MTU empíricamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Habilitar los motores criptográficos de hardware OpenSSL."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Habilitar el descubrimiento de MTU de ruta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Habilitar el modo de cifrado de clave estática (no TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Habilitar TLS y asumir el rol de cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Habilitar TLS y asumir el rol del servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr "Habilitar un algoritmo de compresión."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Habilitar la fragmentación interna del datagrama."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Habilitar la interfaz de administración en <em>IP</em> <em>puerto</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "habilitado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+"Cifre y autentique todos los paquetes del canal de control con la clave"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Cifra de encriptación de paquetes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Comandos a ejecutar tras añadir rutas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Comando a ejecutar si se cambia la IP remota"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Ejecutado en modo servidor en nuevas conexiones de clientes, cuando no se "
+"confía aún en el cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Ejecutado en modo servidor cuando una ruta, dirección IPv4 o dirección MAC "
+"se añade a la tabla de rutas interna de OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Salir si falla la negociación"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Obtener la clave PEM del tty de control antes de demonizar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autentificación HMAC de paquetes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Gestión de fallos de autentificación"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Directriz para simplificar la expresión de --ping y --ping-restart en "
+"configuraciones en modo servido"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Reintentar si falla la resolución de nombre de máquina"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Conexión \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr "¡Ya existe una conexión con ese nombre!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Mantener la dirección IP local al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Mantener la dirección IP remota al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Mantener el dispositivo TUN/TAP abierto al reiniciar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Ventana de transición de clave"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limitar mensajes repetidos al registro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certificado local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Nombre de máquina local o dirección IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Clave privada local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Modo principal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Paquetes máximos en la cola de salida TCP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Número de buffers de propagación"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Líneas en el archivo de registro histórico"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr "Carga del archivo de configuración OVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Aceptar solo conexiones desde este nombre X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Procesa solo las esperas a ping si existe la ruta"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Conexiones OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optimizar escrituras TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Escribir en SysLog y no demonizar"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Resumen"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Archivo PKCS#12 de claves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Pasar variables de entorno al script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Estado continuo de protección antireproducción"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Mantener/no mantener el listado de interfaces"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Ping al remoto cada n segundos sobre un puerto TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr "Por favor, edite este archivo directamente en una sesión de terminal."
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+"Por favor, seleccione un archivo de configuración OVPN válido para cargar!"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr "Por favor, seleccione una plantilla VPN válida!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Política sobre el uso de programas externos y scripts"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Puerto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Espera del proxy en segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Enviar un opción de ifconfig al puesto remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Enviar opciones al otro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Consulta el canal de gestión por la clave privada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Elegir aleatoriamente un servidor remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+"Rechazar conexión si no tiene una configuración de cliente personalizada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Redirigir señales SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Nombre de máquina remota o dirección IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Tiempo de espera de ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Bytes tras los que renegociar la clave del canal del datos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Paquetes tras los que renegociar la clave del canal del datos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Segundos tras los que renegociar la clave del canal del datos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Tamaño de la ventana deslizante de la protección de reproducción"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Designación explícita de certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Clave de uso explícita de certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Reiniciar después de tiempo de espera de ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr "Restringir los cifrados permitidos para ser negociados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Espera de retransmisión en el canal de control TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Reintentar indefinidamente en errores del proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Reintentar indefinidamente en errores del proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Enrutar subred a cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Ejecutar como servidor inetd o xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Script a ejecutar tras una conexión de cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Script a ejecutar tras una desconexión de cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Ejecutar scripts de activación/desactivación en todos los reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr "Guardar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+"Sección para agregar un archivo opcional 'auth-user-pass' con sus "
+"credenciales (%s)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr "Sección para modificar el archivo de configuración OVPN (% )"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr "Seleccionar plantilla..."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Enviar notificación al otro en caso de desconexión"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "GID del grupo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "MTU TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "UID del usuario"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Reservar un bloque de subredes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Opciones HTTP extendidas del proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Nivel de detalle de mensajes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Tamaño de las tablas real y virtual de hashes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Tamaño del búfer de recepción TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Tamaño del búfer de envío TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Longitud de la cola de transmisión TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Parámetros del adaptador TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "MTU del dispositivo TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Sobrecarga del dispositivo TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Límite superior de MSS de TCP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Adaptar ancho de banda de clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Comando shell a ejecutar tras abrir el dispositivo TUN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Comando shell a ejecutar tras cerrar el dispositivo TUN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Comando shell a ejecutar para verificar un nombre X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "No mostrar avisos de reproducción"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Tamaño de la clave de cifrado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Especifique una puerta de enlace predeterminada para las rutas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr "Especifique si el cliente debe proporcionar un certificado válido."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Iniciar OpenVPN en estado hibernado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Iniciar/Detener"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Iniciado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Versión del formato del archivo de estado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Cambiar a configuración avanzada"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Cambiar a configuración básica"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Número de puerto TCP/UDP para local y remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Número de puerto TCP/UDP para local (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Número de puerto TCP/UDP para remoto (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Cifrado TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "Paso a través TOS (sólo para IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr "Configuración basada en plantillas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+"Directorio temporal para el archivo de retorno de la conexión del cliente"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr "¡El campo 'Nombre' no debe estar vacío!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+"No se pudo encontrar el archivo de configuración OVPN (%s), verifique su "
+"configuración."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr "La versión TLS más alta soportada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr "La dirección clave para las opciones 'tls-auth' y 'secret'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr "La versión TLS más baja soportada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+"El tamaño del archivo de configuración OVPN (%s) es demasiado grande para la "
+"edición en línea en LuCI (&ge; 100 KB)."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr "Esto deshabilita completamente la negociación de cifrado."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Tiempo de intercambio de clave"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Tipo de dispositivo usado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr "Subir"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr "Subir archivo ovpn"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Compresión rápida LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Nodo de dispositivo TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Nombre de usuario como nombre común"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Escribir registro al archivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Escribir ID del proceso al archivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Segundos tras los que escribir el archivo de estado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "no"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "dispositivo TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Espera de inactividad tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "sí (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "No válido"
diff --git a/package/luci/applications/luci-app-openvpn/po/fr/openvpn.po b/package/luci/applications/luci-app-openvpn/po/fr/openvpn.po
new file mode 100644 (file)
index 0000000..24fbee8
--- /dev/null
@@ -0,0 +1,850 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2014-01-26 12:53+0200\n"
+"Last-Translator: kyas <rimk_71@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p' ou 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Accepter les options envoyées par le serveur"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Ajouter"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Ajouter un routage après l'établissement de la connexion"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Authentification supplémentaire par dessus TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Autoriser le trafic entre clients"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permettre à plusieurs clients d'utiliser le même certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Autoriser seulement une session"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Autoriser l'hôte distant à changer d'adresse IP ou de port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Maximum autorisé de clients connectés"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Admis au maximum interne"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Maximum autorisé de nouvelles connexions"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Ajouter les journaux en fin de ce fichier"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "S'authentifier par identifiant/mot-de-passe"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Rediriger automatiquement la route par défaut"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Voici ci-dessous la liste d'instances OpenVPN configurées et leur état "
+"courant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+"Appelle une commande/script d'arrêt avant que le périphérique TUN/TAP soit "
+"fermé"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Autorité des certificats"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Modifier la priorité du processus"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Aller dans ce répertorie avant l'initialisation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+"Confronter le certificat du distant à une liste des certificats révoqués "
+"(CRL)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Faire un « chroot » dans ce répertoire après initialisation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Client désactivé"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Catégorie de configuration"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configurer le mode client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configurer le mode pont"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configurer le mode serveur"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Se connecter via un proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Se connecter à un hôte distant via un mandataire HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Intervalle entre 2 tentatives de connexion"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Transformer en démon après l'initialisation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Attends n secondes après la connexion"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+"Attends avant l'ouverture de tun/tap et l'exécution de scripts de mise en "
+"marche"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Paramètres Diffie Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Répertoire contenant vos fichiers de config client spécifiques"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Désactiver la pagination"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Désactiver la vérification de la cohérence des options"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Ne pas attacher à l'adresse et au port local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Ne pas exécuter réellement ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Ne pas ajouter de routes automatiquement"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+"Ne pas copier en cache les mots de passe des options --askpass ou --auth-"
+"user-pass"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Ne pas hériter des options d'envoi globales"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Ne pas journaliser les horodatages"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Ne pas relire la clef au redémarrage"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Ne pas utiliser la compression adaptative LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Ne pas alerter en cas d'incohérence d'ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Écrire les paramètres dans le journal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Mesurer le MTU empiriquement"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Activer les systèmes de cryptages OpenSSL matériels"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Activer la découverte du MTU du chemin"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Activer le mode de cryptage à clef statique (non TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Activer le TLS et prendre le rôle du client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Activer le TLS et prendre le rôle du serveur"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Autoriser la fragmentation des datagrammes en interne"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Activer l'interface de gestion sur <em>IP</em> <em>port</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Activé"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Méthode de chiffrement des paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Exécuter une commande shell après l'ajout des routes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+"Exécuter une commande Shell suite à un changement d'IP de l'hôte distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Lancé en mode serveur pour les nouvelles connexions client, quand le client "
+"n'est pas encore reconnu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Lancé en mode serveur à chaque fois qu'une adresse/route IPv4 ou une adresse "
+"MAC est ajoutée à la table de routage interne d'OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Arrêter suite à l'échec de la négociation TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+"Obtenir le mot de passe du certificat depuis le terminal avant de passer en "
+"mode démon"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Authentification HMAC des paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Gestion des erreurs d'authentification"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Aide pour simplifier l'expression des --ping et --ping-restart dans les "
+"configurations en mode serveur"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Si la résolution du nom de l'hôte échoue, ré-essayer"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instance \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Conserver l'adresse IP locale lors du redémarrage"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Conserver l'adresse IP distante lors du redémarrage"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Conserver le périphérique tun/tap ouvert au redémarrage"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limiter les messages répétés dans les journaux"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certificat local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Nom ou adresse IP de l'hôte local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Clef privée locale"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Mode principal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Nombre maximum de paquets TCP en attente d'émission"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Nombre de tampons de diffusion alloués"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Nombre de lignes de l'historique du fichier-journal"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Accepte seulement des connexions du nom X509 donné"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+"Traiter l'expiration des délais des pings seulement si les routes existent"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Instances OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optimiser les écritures TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Envoyer à syslog et ne pas transformer en démon"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Vue d'ensemble"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Fichier au format PKCS#12 contenant les clefs"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Transmettre les variables d'environnement au script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Reconduire l'état de protection anti-rejeu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Reconduire ou non le lot d'ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+"Envoyer un ping à l'hôte distant toutes les n secondes sur le port TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Règle de sécurité appliqué à l'usage de programmes et scripts externes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocole"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Délai d'attente du mandataire, en secondes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Envoyer une option ifconfig au distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Envoyer les options au client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Canal de requête de gestion pour clef privée"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Choisir au hasard un serveur distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Refuser la connexion en l'absence de config client spécifique"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Rediriger les signaux SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Nom ou adresse IP de l'hôte distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Délai de ping du distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renégocier la clé du canal de données après tant d'octets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renégocier la clé du canal de données après tant de paquets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+"Renégocier la clé du canal de données après tant de temps (en secondes)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Taille de la fenêtre glissante pour la protection anti-rejeu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Exiger l'appellation explicite sur le certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Exiger l'utilisation explicite de la clé sur le certificat"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Redémarrer aprés le dépassement du délai de ping du distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Renvoyer l'expiration du délai sur le canal de contrôle TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Ré-essayer indéfiniment suite à des erreurs du proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Ré-essayer indéfiniment suite à des erreurs du proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Router le sous-réseau vers le client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Exécuter en tant que serveur inetd ou xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Exécuter une commande de script lors de la connexion d'un client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Exécuter une commande de script lors de la déconnexion d'un client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Exécuter les scripts up/down à tous les redémarrages"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Envoyer une notification au distant à la déconnexion"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Utiliser le GID de ce groupe"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Définir le MTU TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Utiliser l'UID de cet utilisateur"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Mettre de coté un lot de sous-réseaux"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Définir les options de mandataire HTTP étendu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Définir la verbosité des écrits"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+"Définir la taille des tables de haché des adresses réelles et virtuelles"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Définir la taille de la pile de réception TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Définir la taille de la pile d'envoi TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Définir la taille de la pile TX tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Définir les paramètres de l'adaptateur tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Définir le MTU du périphérique tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Définir la borne supérieure du MSS TCP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Gère la bande-passante du distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Commande Shell à exécuter après l'ouverture du périphérique tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Commande Shell à exécuter après la fermeture du périphérique tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Commande shell de vérification du nom X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Supprime les messages d'alertes anti-rejeu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Taille de la clé de cryptage"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Définir la passerelle par défaut des routes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Démarrer OpenVPN dans un état d'hibernation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Démarrer/Arrêter"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Démarré"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Version du format du fichier de status"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Afficher les paramètres de configuration avancés"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Afficher les paramètres de configuration standards"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Numéro de port TCP/UDP valable pour l'hôte local et l'hôte distant"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Numéro de port TCP/UDP pour l'hôte local (par défaut 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Numéro de port TCP/UDP pour l'hôte distant (par défaut 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Méthode de chiffrement TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Répertoire pour le fichier temporaire lié à la connexion d'un client"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Période d'un échange de clés"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Type de périphérique utilisé"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Utiliser la compression LZO rapide"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Utiliser le protocole"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Utiliser le périphérique tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Utiliser le nom d'utilisateur comme nom « commun » (du certificat)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Écrire le journal dans le fichier"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Écrire le numéro de processus dans le fichier"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Écrire le status dans le fichier chaque n secondes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "non"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Périphérique tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Délai d'inactivité tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "oui (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Invalide"
diff --git a/package/luci/applications/luci-app-openvpn/po/he/openvpn.po b/package/luci/applications/luci-app-openvpn/po/he/openvpn.po
new file mode 100644 (file)
index 0000000..17a73dd
--- /dev/null
@@ -0,0 +1,820 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/hu/openvpn.po b/package/luci/applications/luci-app-openvpn/po/hu/openvpn.po
new file mode 100644 (file)
index 0000000..1684fb5
--- /dev/null
@@ -0,0 +1,827 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-01-31 12:06+0200\n"
+"Last-Translator: Gabor <juhosg@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p' vagy 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "A kiszolgáló által küldött opciók elfogadás"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Hozzáadás"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Útvonal hozzáadása a kapcsolat létrejötte után"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "További hitelesítés TLS-en keresztül"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Ügyfél-ügyfél közötti kapcsolat engedélyezése"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Több ügyfél engedélyezése ugyanazzal a tanúsítvánnyal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Csak egy munkafolyamat engedélyezése"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "A távoli gép IP címének vagy portjának megváltozatásának engedélyezése"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "A csatlakozott ügyfelek maximális megengedett száma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Belső kapcsolatok maximális száma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Az új kapcsolatok maximálisan megengedett száma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Napló hozzáfűzése fájlhoz"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Azonosítás felhasználónév és jelszó használatával"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Az alapértelmezett útvonal automatikus átirányítása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Az alábbi listában találhatóak a beállított OpenVPN példányok és azok "
+"aktuális állapota"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "A TUN/TAP interfész lezárása előtt futtatandó shell script."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Hitelesítésszolgáltató"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Folyamat prioritásának módosítása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Váltás a könyvtárra inicializáslás előtt"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Kliens tanúsítvány összevetése a tiltólistával."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Gyökérkönyvtár váltás inicializáció után"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Ügyfél letiltva"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Beállítások / Visszavonás"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Ügyfél mód beállítása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Kiszolgáló híd beállítása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Kiszolgáló mód beállítása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Kapcsolódás Sock5 proxy-n keresztül"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Kapcsolódás a távoli géphez HTTP proxyn keresztül"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Kapcsolódás újrapróbálkozási időköz"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Váltás démon módba inicializálás után"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Kapcsolat felépítés után 'n' másodperc késleltetés"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie Hellman paraméterek"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Egyéni ügyfél konfigurációs fájlok könyvtára "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Lapozás letiltása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Ne adjon hozzá útvonalakat automatikusan "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Időbélyegeket ne naplózza"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Ne használjon adaptív LZO tömörítést"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "A paramétereket írja a naplóba"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "OpenSSL hardveres titkosítás engedélyezése"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Engedélyezve"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Helyi IP cím megtartása újraindításkor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Távoli IP cím megtartása újraindításkor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "tun/tap eszközök nyitva tartása újraindításkor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Helyi tanúsítvány"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Helyi gép név vagy IP cím"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Helyi privát kulcs"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "A sorbaállított kimenő TCP csomagok maximális száma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Lefoglalt broadcast pufferek száma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Naplófájl történet sorainak száma"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN példányok"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Áttekintés"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Proxy várakozási idő (másodperc)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Kapcsolat megtagadás ha nincs egyéni ügyfél konfiguráció"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Távoli gép név vagy IP cím"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Indítás/Leállítás"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Elindítva"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Váltás haladó beállításokra"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Váltás alap beállításokra"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS titkosító"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "A használt eszköz típusa"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Gyors LZO tömörítés használata"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Napló írása fájlba"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Folyamat azonosító (PID) fájlba írása"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Állapot fájlba írása 'n' másodpercenként"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "nem"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "tun/tap/ eszköz"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "tun/tap tétlenségi idő"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "igen (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Érvénytelen"
diff --git a/package/luci/applications/luci-app-openvpn/po/it/openvpn.po b/package/luci/applications/luci-app-openvpn/po/it/openvpn.po
new file mode 100644 (file)
index 0000000..07e65ba
--- /dev/null
@@ -0,0 +1,826 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2012-04-20 10:36+0200\n"
+"Last-Translator: claudyus <claudyus84@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Accetta opzioni inviate dal server"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Aggiungi"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Aggiungi rotte dopo aver stabilito la connessione"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Autenticazione addizionale over TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Permetti traffico client-client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permetti più client con lo stesso certificato"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Permetti solo una sessione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Permetti ai remote di cambiare il proprio IP o porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Numero massimo di clienti connessi"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Numero massimo di interni"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Numero massimo di nuove connessioni ammesse"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Appendi il log al file"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autenticazione usando username/passoword"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Modifica automaticamente la default route"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "Sotto c'è una lista di istanze OpenVPN configurate e il loro stato"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Richiama un cmd/script prima della chiusura del TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "CA"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Cambia priorità del processo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Cambia cartella prima dell'inizializzazione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Verifica il certificato del nodo su una CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Fai chroot alla cartella dopo l'inizializzazione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Client disabilitato"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Categoria di configurazione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configura la modalità client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configura un server bridge"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configura la modalità server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Connetti attraverso un proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Connetti attraverso un proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Intervallo per riprovare la connessione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Usa come daemon dopo l'inizializzazione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Ritarda n secondi dopo la connessione"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Ritarda lo script di apertura e avvio del tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parametri Diffie Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Cartella per file personalizzati di configuarazione client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Disabilita il controllo della consistenza delle opzioni"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Non effettuare il bind sull'indirizzo/porta locale"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Non eseguire realmente ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Non aggiungere rotte automaticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Non tenere in memoria le password di --askpass o di --auth-user-pass"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Non loggare il timestamps"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr "Non spingere automaticamente le rotte"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Non rileggere le chiavi al riavvio"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Non usare compressione lzo adattiva"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Non avvisare inconsistenze a livello ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Parametri Echo da loggare"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Misura empericamente l'MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Abilita il supporto criptografico hardware per OpenSSL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Abilita la ricerca Path MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Abilita la modalità di criptazione chiave statica (non-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Abilita TLS e usa il ruolo client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Abilita TLS e usa il ruolo server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Abilita frammentazione interna dei datagram"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Abilita l'interfaccia di controllo su <em>IP</em> <em>port</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+"Crittografa e autentica tutti i pacchetti del canale di controllo con la "
+"chiave"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Cifratura di criptazione dei pacchetti"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Esegui un comando shell dopo che le rotte sono aggiunte"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Esegui un comando shell al cambio di ip remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autenticazione HMAC per i pacchetti"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Istanza \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Mantieni l'IP local al riavvio"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Mantieni l'IP remoto al riavvio"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Mantienti il device tun/tap aperto al riavvio"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limita le ripetizioni di messaggi nel log"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Chiave privata local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN istanze"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Ottimizza le scritture su TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Anteprima"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS#12 file containing keys"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Passa le variabili d'ambiente allo script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocollo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Avviato"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Passa alla configurazione avanzata"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Passa alla configurazione base"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "no"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "si (%i)"
diff --git a/package/luci/applications/luci-app-openvpn/po/ja/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ja/openvpn.po
new file mode 100644 (file)
index 0000000..335379a
--- /dev/null
@@ -0,0 +1,842 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2012-04-09 08:12+0200\n"
+"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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: Pootle 2.0.4\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', または 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "追加"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "クライアント間通信を許可する"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "1つのセッションのみを許可する"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "現在設定済のOpenVPNの設定とステータスを表示しています。"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "設定カテゴリ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "クライアントモードに設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "サーバーモードに設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "再接続間隔"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "初期化後にデーモン化する"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "セッション接続後、n秒ディレイする"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie Hellman パラメータ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "ページングを無効にする"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "時刻をログに書き込まない"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "再起動時にキーの再読み込みを行わない"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "OpenSSL暗号化のハードウェアサポートを有効にする"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Path MTU discovery を有効にする"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "有効"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "設定 \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN 設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "概要"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "ポート"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "プロトコル"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "TCP/UDP のMTUを設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "ログ出力レベルの設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "TCP/UDP の受信バッファサイズ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "TCP/UDP の送信バッファサイズ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "tun/tap デバイスの送信キューサイズ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "tun/tap デバイスのMTU設定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "開始 / 停止"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "実行中"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "詳細設定へ移動"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "基本設定へ移動"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "TCP/UDP ポート (ローカル・リモート共用)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "TCP/UDP ポート (ローカル, 標準設定=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP/UDP ポート (リモート, 標準設定=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS 暗号化方式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "高速LZO圧縮機能を使用する"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "使用するプロトコル"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "いいえ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "はい (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "無効"
+
+#~ msgid "Make tun device IPv6 capable"
+#~ msgstr "tun デバイスでIPv6機能を有効にする"
+
+#~ msgid "Cryptography"
+#~ msgstr "暗号設定"
+
+#~ msgid "Networking"
+#~ msgstr "ネットワーク"
+
+#~ msgid "Service"
+#~ msgstr "サービス"
+
+#~ msgid "VPN"
+#~ msgstr "VPN"
diff --git a/package/luci/applications/luci-app-openvpn/po/ms/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ms/openvpn.po
new file mode 100644 (file)
index 0000000..d8d6a44
--- /dev/null
@@ -0,0 +1,819 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/no/openvpn.po b/package/luci/applications/luci-app-openvpn/po/no/openvpn.po
new file mode 100644 (file)
index 0000000..17a73dd
--- /dev/null
@@ -0,0 +1,820 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/pl/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pl/openvpn.po
new file mode 100644 (file)
index 0000000..cd23c21
--- /dev/null
@@ -0,0 +1,842 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-05 03:41+0200\n"
+"Last-Translator: piosl <sleczek.piotr@gmail.com>\n"
+"Language-Team: none\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', lub 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Zaakceptuj opcje narzucone przez serwer"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Dodaj"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Dodaj trasę po nawiązaniu połączenia"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Dodatkowe uwierzytelnianie poprzez TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Zezwól na łączność klient-klient"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Zezwól na łączenie wielu klientów z tym samym certyfikatem."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Zezwól tylko na jedną sesję"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Zezwól na zmianę IP lub portu odległemu hostowi."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Maksymalna dozwolona liczba klientów"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Maksymalna dozwolona liczba wewnętrznych"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Maksymalna dozwolona liczba nowych połączeń"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Dopisz log do pliku"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autoryzacja z użyciem loginu oraz hasła"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Automatycznie przekieruj domyślną trasę"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Ponieżej znajduje się lista skonfigurowanych procesów OpenVPN wraz z ich "
+"aktualnymi stanami."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Zatrzymaj skrypt przed wyłączeniem interfejsu TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Urząd certyfikacji"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Zmień priorytet procesu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Przejdź do katalogu przed inicjalizacją"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Sprawdź certyfikat peera na obecność w CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Zmień root (chroot) na katalog po inicjalizacji"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Klient jest wyłączony"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Kategoria konfiguracji"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Konfiguruj tryb klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Konfiguruj serwer w trybie mostu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Konfiguruj serwer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Połącz poprzez SOCKS5 proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Połącz ze zdalnym hostem poprzez HTTP proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Interwał powtarzania połączeń"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Przejdź w tryb demona po inicjalizacji"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Opóźnienie n sekund po nawiązaniu połączenia"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Opóźnienie otwarcia interfejsu tun/tap i wykonania skryptu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parametry Diffie Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Katalog na pliki konfiguracyjne"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Wyłącz stronicowanie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Wyłącz sprawdzanie poprawności ustawień"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Nie związuj z lokalnym adresem i portem"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Nie uruchamiaj obecnie ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Nie dodawaj tras (routes) automatycznie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Nie cacheuj haseł --askpass lub --auth-user-pass"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Nie dziedzicz globalnej opcji push"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Nie zapisuj czasu w logu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Nie wczytuj ponownie klucza podczas restartu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Nie używaj adaptatywnej kompresji lzo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Nie ostrzegaj przed niespójnością w ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Zapisuj parametry w logu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Mierz MTU empirycznie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Włącz sprzętowe przyspieszenie OpenSSL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Włącz wykrywanie \"Path MTU\""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Włącz tryb szyfrowania statycznym kluczem (non-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Włącz TLS i przyjmij rolę klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Włącz TLS i przyjmij rolę serwera"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Włącz wewnętrzną fragmentację datagramu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Włącz interfejs zarządzalny na <em>IP</em> <em>port</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Włączone"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Szyfrowanie dla pakietów"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Wykonaj komendę powłoki po dodaniu tras"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Wykonaj komendę powłoki po zmianie zdalnego IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Wykonane w trybie serwera na nowych połączeniach klienta, gdy klient jest "
+"nadal niezaufany"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Wykonane w trybie serwera, gdy adres IPv4, trasa lub adres MAC są dodane do "
+"wewnętrznej tablicy routingu w OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Wyjdź przy niepowodzeniu negocjacji TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Uzyskaj hasło PEM z kontroli tty przed demonizacją"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autoryzacja HMAC dla pakietów"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Postępowanie z błędami uwierzytelniania"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Dyrektywa Helper w celu uproszczenia wyrażenie --ping i --ping-restart w "
+"konfiguracjach w trybie serwera"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Jeżeli ustanowienie nazwy hosta nie powiedzie się, spróbuj ponownie"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instancja \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Zachowaj lokalny adres IP przy restarcie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Zachowaj zdalny adres IP przy restarcie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Utrzymaj urządzenie tun/tap po restarcie jako otwarte"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Okno zmiany klucza"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limit powtarzających się wiadomości w logu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certyfikat lokalny"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Lokalna nazwa hosta lub adres IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Lokalny klucz prywatny"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Tryb główny"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Maksymalna liczba wychodzących pakietów TCP w kolejce"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Liczba przydzielonych buforów nadawczych"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Liczba linii w pliku dziennika historii"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Akceptuj tylko połączenia z podanej nazwy X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Wykonaj procedurę \"ping timeout\" tylko jeżeli trasy istnieją"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Instancje OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optymalizuj wpisy TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Wysyłaj do syslog'a i nie demonizuj"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Przegląd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Plik PKCS#12 zawierający klucze"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Przekaż zmienne środowiskowe do skryptu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Utrzymaj status ochrony odpowiedzi"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Utrzymuj/Nie utrzymuj ifconfig-pool"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Pinguj zdalnego co n sekund przez port TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+"Poziom zasad odnoszących się do używania zewnętrznych programów i skryptów"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protokół"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Czas bezczynności proxy w sekundach"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Wyślij opcje ifconfig do zdalnego"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Wyślij opcje do peera"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Kanał zarządzania zapytaniami dla klucza prywatnego"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Losowo wybierz serwer zdalny"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Odmów połączenie gdy nie standardowy klient konfiguracja"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Przemapuj SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Nazwa lub IP zdalnego hosta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Zdalny ping upłynął czas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renegocjacja danych charakteru klucza po bajtach"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renegocjacja danych charakteru klucza po pakietach"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Renegocjacja danych charakteru klucza po sekundach"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Powtórzenie osłony okna rozmiaru"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Potrzebna Podpis na Certyfikacie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Potrzebna klucza używanego w certyfikacie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "restart po zdalnym ping upływie czasu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Retransmisja po upływie czasu TLS na kanale kontrolnym"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Ponownie spróbować na Http proxy Błędzie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Trasa podsieci do klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Uruchom jako serwer inetd lub xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Uruchom skrypt cmd po połączeniu klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Uruchom skrypt cmd po rozłączeniu klienta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Uruchom skrypty up/down dla wszystkich restartów"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+#, fuzzy
+msgid "Send notification to peer on disconnect"
+msgstr "Wyślij zgłoszenie o rozłączeniu do peer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Ustaw GID dla grupy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Ustaw TCP/UDP MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Ustaw UID dla użytkownika"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+#, fuzzy
+msgid "Set aside a pool of subnets"
+msgstr "Odłożyć na bok pulę podsieci"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Ustaw rozszerzone opcje proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Ustaw rozmiar rzeczywistych i wirtualnych adresów tablicy hash"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+#, fuzzy
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Ustaw rozmiar buforu wysyłania TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+#, fuzzy
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Ustaw rozmiar buforu wysyłania TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+#, fuzzy
+msgid "Set tun/tap TX queue length"
+msgstr "Ustaw długość kolejki tun / tap TX "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Ustaw parametr adaptera tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Ustaw górną granicę TCP MSS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Formowanie wzajemnego pasma"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+#, fuzzy
+msgid "Shell cmd to execute after tun device open"
+msgstr "cmd Shell po uruchomieniu urzadzenie tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+#, fuzzy
+msgid "Shell cmd to run after tun device close"
+msgstr "cmd Shell po wyłączeniu urzadzenie tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "polecenie Shell aby sprawdzić nazwę X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Wycisz powtórne pojawianie się ostrzeżeń"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Rozmiar klucza szyfrowania"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Określ domyślną bramę dla tras"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Uruchom OpenVPN w stanie hibernacji"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Start/Stop"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Uruchomiono"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Wersja formatu pliku statusu"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Konfiguracja zaawansowana"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Konfiguracja podstawowa"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Numer portu TCP/UDP zarówno dla lokalnego jak i zdalnego"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Numer portu TCP/UDP dla lokalnego (domyślnie=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Numer portu TCP/UDP dla zdalnego (domyślnie=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Kodowanie TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "Przepuszczanie TOS (dotyczy tylko IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Katalog tymczasowy dla pliku zwrotnego połączenia klienta"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Typ użytego urządzenia"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Użyj szybkiej kompresji LZO"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Użyj protokołu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Użyj węzła urządzenia tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Użyj nazwy użytkownika jako nazwy wspólnej"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Zapisz log do pliku"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Zapisz numer ID procesu do pliku"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Zapisz status do pliku co n sekund"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "nie"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "urządzenie tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "czas bezczynności tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "tak (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Nieprawidłowe"
diff --git a/package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po
new file mode 100644 (file)
index 0000000..cdf1d99
--- /dev/null
@@ -0,0 +1,835 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2018-09-20 19:35-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: Poedit 2.1.1\n"
+"Language-Team: \n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', ou 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Aceitar opções enviadas pelo servidor"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Adicionar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Adicionar rota após estabelecimento da conexão"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Autenticação adicional por TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Permitir tráfego entre os clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permitir múltiplos clientes com o mesmo certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Permitir apenas uma sessão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Permitir a um equipamento remoto altere o seu IP ou porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Máximo permitido de clientes conectados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Máximo permitido internamente para rotas de clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Máximo permitido de novas conexões"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Acrescentar registos ao arquivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autenticar com usuário/senha"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Redirecionar automaticamente a rota padrão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Abaixo está uma lista de todas as instâncias OpenVPN configuradas e o seu "
+"estado atual"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Executar o comando/script antes do tun/tap fechar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Autoridade certificadora"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Alterar prioridade do processo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Mudar para o diretório antes da iniciação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Verificar certificado do parceiro conta uma CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Chroot para o diretório após a iniciação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Cliente desativado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Categoria da configuração"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configurar modo cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configurar ponte de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configurar modo de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Conectar através de um proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Conectar a equipamento remoto através de um proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Intervalo de reestabelecimento de conexão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Entre em segundo plano após a iniciação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Atrase n segundos depois da conexão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Retardar o script de abertura e ativação do tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parâmetros Diffie-Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Diretório para configurações personalizadas dos clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Desativar paginação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Desativar opções de verificação de consistência"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Não ativar no endereço e porta locais"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Não executar ifconfig de verdade"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Não adicionar rotas automaticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Não colocar em cache as senhas do --askpass ou --auth-user-pass "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Não herdar as opções globais de envio (push)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Não registar a data/hora"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr "Não puxe as rotas automaticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Não reler a chave entre os reinícios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Não usar compressão LZO adaptiva"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Não avisar quando existirem inconsistências no ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Escrever parâmetros no registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Medir empíricamente o MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Ativar motor OpenSSL por hardware"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Ativar a descoberta do MTU do caminho"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Ativar modo de encriptação por chave estática (não-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Ativar TLS e assumir papel de cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Ativar TLS e assumir papel de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Ativar a fragmentação interna de datagramas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Ativar o interface de gestão em <em>IP</em> <em>porta</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Ativado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Cifre e autentique todos os pacotes do canal de controle com a chave"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Cifra de encriptação para pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Executar o comando shell após as rotas serem adicionadas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Executar o comando shell quando existir alteração do IP remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Executado em modo servidor na nova conexão de cliente, enquanto o cliente "
+"ainda não é confiável"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Executado em modo servidor quando um endereço/rota IPv4 é adicionao na "
+"tabela de roteamento interna do OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Fechar quando existir falha na negociacao TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Obter password PEM do terminal de controlo antes de passar a daemon"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autenticação HMAC para pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Gestão de falhas de autenticação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Diretiva de ajuda para simplificar a expressão --ping e --ping-restart nas "
+"configurações de modo servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Se a resolução de nomes falhar, tentar novamente"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instância \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Manter o endereço IP local entre os reinícios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Manter o endereço IP remoto entre os reinícios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Manter o dispositivo tun/tap aberto entre os reinícios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Janela para transição de chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limitar entradas repetidas no registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certificado local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Nome do equipamento ou endereço IP local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Chave privada local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Modo principal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Número máximo de pacotes TCP na fila de saída"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Número de buffers de broadcast alocados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Número de linhas para o histórico do registo"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Aceitar conexões apenas de um dado nome X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Só processe os estouros de tempo de pings se as rotas existirem"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Instâncias OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Otimizar as escritas TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Enviar para o syslog os registos e não vá para segundo plano"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Visão Geral"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Arquivo PKCS#12 com as chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Passar variáveis de ambiente ao script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Manter persistência da proteção replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Manter ou não o conjunto de subredes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Pingar o remoto a cada n segundos sobre a porta TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Nível da política sobre o uso de programas e scripts externos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Tempo limite do proxy em segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Enviar uma opção ifconfig ao remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Enviar opções ao remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Solicitar chave privada ao canal de gestão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Escolher o server remoto aleatoriamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Recusar conexões de clientes que não tenham configuração personalizada"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Remapear os sinais SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Nome do equipamento ou endereço IP remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Tempo limite do ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renegociar chave do canal de dados após n bytes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renegociar chave do canal de dados após n pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Renegociar chave do canal de dados após n segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Tamanho da janela de proteção conta replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Requerer designação específica no certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Requerer que o uso da chave seja explicitado no certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Reiniciar após estouro do tempo do ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Estouro de tempo de retransmissão no canal de controle TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Tentar infinitamente a conexão quando existirem erros de proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Tentar infinitamente a conexão quando existirem erros de proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Encaminhar rota da subrede para o cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Executar através do inetd ou xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Executar script quando o cliente conectar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Executar script quando o cliente desconectar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Executar scripts de subida/descida para todos os reinícios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Notificar parceiro remoto ao desconectar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Usar o GID do grupo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Definir o MTU TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Usar o UID do usuário"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Reservar um conjunto de subredes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Definir opções extendidas para o proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Definir detalhamento do registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Definir tamanho das tabelas hash de endereços reais e virtuais"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Definir o tamanho do buffer de recepção TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Definir o tamanho do buffer de envio TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Definir o tamanho da fila de transmissão tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Definir parâmetros do adaptador TUN/TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Definir o MTU do dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Definir o overhead do dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Definir teto do MSS TCP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Restringir a largura de banda ao parceiro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Comando shell para executar após abertura do dispositivo tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Comando shell para executar após o fechamento do dispositivo tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Comando shell para verificar o nome do X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Silenciar a saída dos avisos de replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Tamanho da chave de cifragem"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Especificar uma roteador padrão para as rotas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Iniciar o OpenVPN em estado de hibernação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Iniciar/Parar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Iniciado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Versão de formato do arquivo de estado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Mudar para configuração avançada"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Mudar para configuração básica"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Porta TCP/UDP tanto para local e remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Porta TCP/UDP para local (padrão=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Porta TCP/UDP para remoto (padrão=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Cifra TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "Encaminhe TOS (aplicável apenas a IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Diretório temporário para arquivo de retorno de conexão-cliente"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr "A mais alta versão suporta do TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr "A direção da chave para as opções 'tls-auth' e 'secret'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr "A mais baixa versão suporta do TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Janela temporal para troca de chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Tipo de dispositivo utilizado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Usar compressão LZO rápida"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Usar protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Utilizar dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Usar o nome do usuário como 'common name' (CN)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Escrever registo no arquivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Escrever PID no arquivo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Escrever estado para arquivo a cada n segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "não"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Tempo limite de inatividade tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "sim (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Inválido"
diff --git a/package/luci/applications/luci-app-openvpn/po/pt/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pt/openvpn.po
new file mode 100644 (file)
index 0000000..bceaf37
--- /dev/null
@@ -0,0 +1,835 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:03+0200\n"
+"PO-Revision-Date: 2013-06-03 13:43+0200\n"
+"Last-Translator: joao.f.vieira <joao.f.vieira@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', ou 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Aceitar opções enviadas pelo servidor"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Adicionar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Adicionar rota após estabelecimento da ligação"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Autenticação adicional por TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Permitir tráfego cliente-a-cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Permitir multiplos clientes com o mesmo certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Permitir apenas uma sessão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Permitir a um host remoto que altere o seu IP ou porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Máximo permitido de clientes ligados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Máximo permitido internamente para rotas de clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Maximo permitido de novas ligações"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Acrescentar registos ao ficheiro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Autenticar com username/password"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Redireccionar automaticamente a rota pre-definida"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Abaixo está uma lista de todas as instâncias OpenVPN configuradas e o seu "
+"estado actual"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Executar o comando/script antes do fecho tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Autoridade certificadora"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Alterar prioridade do processo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Mudar para o directório antes da inicialização"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Verificar certificado do remoto conta uma CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Chroot para o directorio apos a inicialização"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Cliente desativado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Categoria da configuração"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Configurar modo cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Configurar bridge de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Configurar modo de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Ligar através de um proxy Socks5"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Ligar ao host remoto através de um proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Intervalo de reestabelecimento de ligação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Passar a daemon após a inicialização"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Aguardar n segundos após a ligação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Retardar o script de abertura/ativação tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Parametros Diffie-Hellman"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Directório para configurações personalizadas dos clientes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Desativar Paging"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Desativar opções de verificação de consistência"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Não vincular o endereço e porta locais"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Não executar ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Não adicionar rotas automaticamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Não colocar em cache as passwords --askpass ou --auth-user-pass "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Não herdar as opções globais de envio (push)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Não registar timestamps"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Não reler a chave entre reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Não usar compressão LZO adaptiva"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Não avisar quando existirem inconsistencias no ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Escrever parametros no registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Medição empírica de MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Ativar motor OpenSSL por hardware"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Ativar a descoberta do MTU do caminho"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Ativar modo de encriptação por chave estática (não-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Activar TLS e assumir papel de cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Activar TLS e assumir papel de servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Activar a fragmentação interna de datagramas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Activar o interface de gestão em <em>IP</em> <em>porta</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Activado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Cifra de encriptação para pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Executar o comando shell após as rotas serem adicionadas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Executar o comando shell quando existir alteração do IP remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Executado em modo de servidor em novas ligações de cliente, quando o cliente "
+"ainda não é de confiável"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Executado em modo de servidor quando um endereço IPv4/rota ou endereço MAC é "
+"adicionado à tabela interna de roteamento do OpernVPN."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Fechar quando existir falha na negociação TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Obter password PEM do terminal de controlo antes de passar a daemon"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Autenticação HMAC para pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Gestão de falhas de autenticação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Directiva auxiliar para simplificar a expressão de --ping e --ping-restart "
+"nas configurações do modo servidor"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Se a resolução de nomes falhar, tentar novamente"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instância \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Manter o endereço IP local entre reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Manter o endereço IP remoto entre reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Manter o dispositivo tun/tap aberto entre reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Janela para transição de chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Limitar repetição de entradas no registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Certificado local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Hostname ou endereço IP local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Chave privada local"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Modo principal"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Maximo de pacotes TCP na queue de output"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Numero de buffers de broadcast alocados"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Numero de linhas para o historico do registo"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Aceitar ligações apenas de um dado nome X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Só processar timeouts de pings se existirem rotas"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Instâncias OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Optimizar as escritas TUN/TAP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Registos para o syslog e não passar a daemon"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Visão Geral"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "Ficheiro PKCS#12 com chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Passar variaveis de ambiente ao script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Manter persistência da protecção replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Manter ou não o conjunto de subredes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Pingar o remoto a cada n segundos sobre a porta TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Nível da política sobre o uso de programas externos e scripts"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Timeout do proxy em segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Enviar uma opção ifconfig ao remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Enviar opções ao remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Solicitar chave privada ao canal de gestão"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Escolher o server remoto aleatoriamente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Recusar ligações de clientes que não tenham configurações "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Mapear os sinais SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Hostname endereço IP remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Timeout do ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Renegociar chave do canal de dados após n bytes "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Renegociar chave do canal de dados após n pacotes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Renegociar chave do canal de dados após n segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Tamanho da janela de protecção conta replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Requerer designação específica no certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Requerer utilização explicita de utilização de chave no certificado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Reiniciar após timeout do ping remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Timeout de retransmissão no canal de controlo TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Tentar infinitamente sempre que existam erros de proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Tentar continuamente a ligação quando existirem erros de proxy Socks"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Encaminhar rota da subrede para o cliente"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Executar via inetd ou xinetd"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Executar script quando o cliente ligar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Executar script quando o cliente desligar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Executar scripts de abertura/activação para todos os reinicios"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Notificar remoto ao desligar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Assumir GID para o grupo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Definir o MTU TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Assumir UID para o utilizador"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Reservar um conjunto de subredes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Definir opções extra para o proxy HTTP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Definir verbosidade do registo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Definir tamanho das tabelas hash de endereços reais e virtuais"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Definir o buffer de recepção TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Definir o buffer de envio TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Definir o tamanho da queue de transmissão tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "Definir os parâmetros do adaptador tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Definir o MTU do dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Definir o overhead do dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Definir tecto do MSS TCP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Restringir a largura de banda ao remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Comando shell a executar após abertura do dispositivo tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Comando shell a executar após fecho do dispositivo tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Comando shell para verificar o nome X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Silenciar o output dos avisos de replay"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Tamanho da chave de cifra"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Especificar uma gateway para as rotas"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Iniciar o OpenVPN em estado de hibernação"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Iniciar/Parar"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Iniciado"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Versão de formato do ficheiro de estado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Mudar para configuração avançada"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Mudar para configuração básica"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Porta TCP/UDP para local e remoto"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Porta TCP/UDP para local (predefinição=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Porta TCP/UDP para remoto (predefinição=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Cifra TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "Passthrough TOS (aplicavel apenas a IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Directório temporário para ficheiro de retorno de ligação-cliente"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Janela temporal para troca de chaves"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Tipo de dispositivo utilizado"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Usar compressão LZO rápida"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Usar protocolo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Utilizar dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Usar o username como nome comum"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Escrever registo para o ficheiro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Escrever PID no ficheiro"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Escrever estado para ficheiro a cada n segundos"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "não"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Dispositivo tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Timeout de inactividade tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "sim (%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "Inválido"
diff --git a/package/luci/applications/luci-app-openvpn/po/ro/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ro/openvpn.po
new file mode 100644 (file)
index 0000000..e925bba
--- /dev/null
@@ -0,0 +1,821 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/ru/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ru/openvpn.po
new file mode 100644 (file)
index 0000000..64139ef
--- /dev/null
@@ -0,0 +1,911 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: openvpn\n"
+"POT-Creation-Date: 2013-09-06 10:01+0200\n"
+"PO-Revision-Date: 2019-01-15 07:16+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский интерфейс, "
+"все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p' или 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Принимать параметры, переданные с сервера"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Добавить"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Добавить маршрут после установки соединения"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr "Добавить конфигурацию на основе шаблона"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Дополнительная аутентификация используя TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Разрешить трафик между клиентами"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+"Разрешить одновременное подключение нескольких клиентов с одним сертификатом"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Разрешить только одну сессию"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Разрешить удаленное изменение IP-адреса или порта"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Разрешено максимальное количество подключенных клиентов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+"Разрешено максимальное кол-во внутренних маршрутов клиенту (по умолчанию 256)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Разрешено максимальное кол-во новых соединений"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Добавить запись в файл журнала"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Аутентификация используя имя пользователя и пароль"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Автоматически перенаправлять маршруты по умолчанию"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "Список настроенных экземпляров OpenVPN и их текущее состояние"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+"Команда/скрипт для командной строки, запускаемая(ый) перед отключением TUN/"
+"TAP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Центр сертификации"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Изменить приоритет процесса после инициализации"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Перейти в указанную папку перед инициализацией"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Проверить сертификат узла на соответствие файлу CRL в формате PEM"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+"Корневой каталог после инициализации. OpenVPN не сможет получить доступ к "
+"файлам за его пределами"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Клиент отключен"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "Категория настройки"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Настроить режим клиента"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Настроить мост сервера"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Настроить режим сервера"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Соединяться используя Socks5 прокси"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "Подключиться к удалённому хосту используя HTTP прокси"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Интервал между попытками подключения"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Запустить в режиме демона после инициализации"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "Задержка n секунд после подключения"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Использовать задержку запуска tun/tap до выполнения скрипта"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Файл параметров Диффи Хелмана"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Папка для пользовательских config файлов клиента"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+"Отключить пейджинг, путём вызвова функции 'POSIX mlockall'. Требуется, чтобы "
+"OpenVPN был первоначально запущен от root.<br />Хотя OpenVPN может "
+"впоследствии понизить свой UID с помощью опции '-user'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Выключить проверку согласованности параметров"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+"Не выполнять привязку к локальному адресу и порту. Используется динамический "
+"порт, подключение только с параметром 'remote'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+"На самом деле не выполнять команды 'ifconfig/netsh'. Вместо этого передавать "
+"параметры '-ifconfig' сценариям с использованием переменных окружения"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+"Не добавлять маршруты автоматически. Вместо этого передавать маршруты в '-"
+"route-up' скрипт используя переменные окружения"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+"Не кэшировать пароли '-askpass' или '-auth-user-pass' в виртуальной памяти"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+"Не отбрасывать входящие tun пакеты с таким же адресом назначения, как и у "
+"хоста"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+"Не наследовать общие параметры 'Push Options' для конкретного клиента.  Это "
+"позволит игнорировать 'Push Options' на уровне конфиг файла"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Не записывать метки времени в системный журнал"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+"Когда используется опция '-client' или '-pull', принять опции переданные "
+"сервером ИСКЛЮЧАЯ опции для маршрутов и dhcp опции например DNS серверы.<br /"
+">Когда используется на клиенте, эта опция эффективно 'затыкает' сервер от "
+"попытки добавить маршруты в таблицу маршрутизации клиента. <br />Хотя имейте "
+"ввиду что эта опция по прежнему позволяет серверу устанавливать свойства TCP/"
+"IP для клиентского TUN/TAP интерфейса"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+"Не перечитывайте файлы ключей при перезапуске (выполнении 'SIGUSR1' или "
+"'ping-restart')"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Не использовать адаптивное сжатие 'lzo'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+"Не выводить предупреждение проверки согласованности параметров, если "
+"параметр 'ifconfig' с этой стороны соединения не совпадает с удаленной "
+"стороной"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Записывать параметры эхо-ответов в системный журнал"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Эмпирически измерять MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Включить поддержку аппаратного шифрования OpenSSL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Включить обнаружение пути MTU (PMTUD)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+"Включить режим шифрования с использованием Статического ключа (не TLS). "
+"Использовать общий секретный файл, который был сгенерирован 'genkey'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Включить TLS и выступить в роли клиента во время подтверждения TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Включить в режиме сервера протокол TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr "Включить алгоритм сжатия"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+"Включить внутреннюю фрагментацию датаграмм, чтобы не отправлялись UDP-"
+"датаграммы, размер которых превышает максимальное число байтов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+"Включить интерфейс управления, назначив ему <em>IP-адрес</em> <em>порт</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Включено"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+"Шифрование и проверка подлинности всех пакетов каналов управления с помощью "
+"ключа"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Алгоритм шифрования для пакетов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Выполнить shell команду после добавления маршрутов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Выполнить shell команду при изменении IP-адреса удалённого хоста"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+"Выполнять в режиме сервера '-mode server' при появлении новых клиентских "
+"соединений, если к клиенту ещё нет доверия"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"Выполнять в режиме сервера '-mode server' каждый раз, когда адрес/маршрут "
+"IPv4 или MAC-адрес добавлен в таблицу маршрутизации OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Выйти при ошибке согласования использования протокола TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Получить PEM пароль от управления tty, прежде чем включить демон"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Аутентификация с помощью HMAC ключа для пакетов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+"Настройка реакции на ошибки проверки имени пользователя / пароля, такие как "
+"ответ клиента на AUTH_FAILED сообщение от сервера или провал проверки пароля "
+"закрытого ключа"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+"Вспомогательная команда предназначенная для упрощения выражений '-ping' и '-"
+"ping-restart' в режиме настройки сервера"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Пытаться подключиться снова при ошибке определения имени хоста"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Экземпляр \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr "Экзмепляр с таким именем уже существует!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Не изменять локальный IP-адрес при перезапуске"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Не изменять удалённый IP-адрес при перезапуске"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Сохранять виртуальное устройство tun/tap запущенным при перезагрузке"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Окно передачи ключей"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Ограничить повторяющиеся сообщения в журнале"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Локальный сертификат"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Имя локального хоста или IP-адрес"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Локальный Приватный ключ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Основной режим"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Максимальное количество исходящих TCP пакетов в очереди"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Количество выделенных широковещательных буферов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Количество строк в файле журнала"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr "Загрузка конфигурационного файла OVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Принимать только соединения от имени указанного сертификата X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+"Использовать временную задержку пинг-запросов только в случае, когда "
+"существует необходимый маршрут"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "Экземпляры OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Оптимизация записей ввода/вывода TUN/TAP/UDP (экспериментальная опция)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Записывать события в системный журнал и не переходить в режим демона"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "Обзор"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+"Задайте файл 'PKCS #12', содержащий локальный приватный ключ, локальный "
+"сертификат и root CA сертификат"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Передавать переменные окружения скрипту"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+"Сохранять состояние защиты от воспроизведения в сеансах, используя файл для "
+"сохранения и перезагрузки состояния"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Сохранять/не сохранять пул ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Выполнять пинг-запрос каждые n секунд, используя порт TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+"Пожалуйста отредактируйте данный файл напрямую через терминальную сессию"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr "Пожалуйста выберите корректный OVPN файл для загрузки!"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr "Пожалуйста выберите корректный шаблон конфигурации!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "Уровень безопасности для внешних программ и скриптов."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Порт"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Протокол"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Время ожидания прокси в секундах"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Выполнить команду ifconfig на удалённом узле"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Параметры узла - 'Push options'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Канал управления запросами для Приватного ключа"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Случайный выбор удалённого сервера"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+"Разорвать соединение, если пользовательский config файл клиента отсутствует"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+"Управление внутренними или внешними сигналами генерируемыми 'SIGUSR1' и "
+"переназначаемыми 'SIGHUP'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Имя удалённого хоста или IP-адрес"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "Время ожидания удаленного пинг-запроса"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+"Повторное согласование ключа канала данных после отправки или получения n "
+"байт (по умолчанию отключено)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+"Повторное согласование ключа канала данных после отправки и получения n "
+"пакетов (по умолчанию отключено)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+"Повторное согласование ключа канала данных через n секунд (по умолчанию 3600)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+"Использовать защиту от повтора - скользящее окно размером 'n' с интервалом "
+"времени 't' секунд"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Требовать явного указания в сертификате"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Требовать явного использования ключа в сертификате"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Перезапуск после таймаута ожидания удаленного пинг-запроса"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr "Ограничить разрешенные шифры согласования"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+"Пакет ретранслирует тайм-аут на канале управления протокола TLS, если нет "
+"подтверждения от удаленного узла в течение секунд (по умолчанию 2)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+"Постоянно пытаться заново подключиться при ошибке HTTP прокси. Если "
+"возникает ошибка прокси-сервера HTTP, имитировать сброс 'SIGUSR1'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+"Постоянно пытаться заново подключиться при ошибке Socks прокси. Если "
+"возникает ошибка прокси-сервера HTTP, имитировать сброс 'SIGUSR1'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Маршрутизировать подсеть клиенту"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Запуск от имени сервера 'inetd' или 'xinetd'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Запустить скрипт командной строки при подключении клиента"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Запустить скрипт командной строки при отключении клиента"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Запускать 'up/down' скрипты во время всех перезапусков"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr "Сохранить"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+"Раздел для добавления дополнительного 'auto-user-pass' файла с вашими "
+"учётными данными (%s)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr "Раздел для изменения конфигурационного OVPN файла (%s)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr "Выберите шаблон..."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Отправить уведомление на узел при отключении"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Задайте GID группы"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Задайте MTU для TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Задайте UID пользователя"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Выделить пул подсетей"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Задайте расширенные параметры HTTP прокси"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Задайте детализацию ведения журнала"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+"Задайте размер реального адреса хэш-таблицы 'r' и виртуального адреса хэш-"
+"таблицы 'v'. По умолчанию для обеих таблиц установлено значение 256"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Задайте размер буфера приёма TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Задайте размер буфера передачи TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+"Задайте длину очереди передачи интерфейса tun/tap. В настоящее время по "
+"умолчанию 100"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+"Задайте параметры адаптеру tun/tap. l это IP-адрес локальной конечной точки "
+"VPN. Для устройств TUN rn является IP-адресом удаленной конечной точки VPN. "
+"Для устройств TAP rn-это маска подсети сегмента виртуального Ethernet, к "
+"которому создается или подключается"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Задайте MTU для виртуального устройства tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+"Задайте возможное превышение размера MTU для виртуального устройства tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Задайте верхнюю границу для TCP MSS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Формирование полосы пропускания узлов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Выполнить shell команду после старта виртуального устройства tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Выполнить shell команду после закрытия виртуального устройства tun"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Команда shell для проверки имени сертификата X509"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+"Заглушить вывод предупреждений о повторах, которые являются обычным ложным "
+"сигналом в Wi-Fi сетях"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Размер ключа алгоритма шифрования"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Назначить шлюз по умолчанию для маршрутов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr "Требуется ли от клиента предоставление действительного сертификата"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Запустить OpenVPN в спящем режиме"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "Старт/Стоп"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Запущено"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Версия формата файла состояния"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Перейти к расширенным настройкам"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Перейти к основным настройкам"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Номер локального и удалённого TCP/UDP порта"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Номер локального TCP/UDP порта (1194 по умолчанию)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Номер удалённого TCP/UDP порта (1194 по умолчанию)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "Алгоритм шифрования TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "TOS пересылки (применяется только к IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr "Конфигурация на основе шаблонов"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Временная папка для файла возврата '-client-connect'"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr "Поле 'Имя' не должно быть пустым!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr "OPVN файл (%s) не найден, проверьте вашу конфигурацию."
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr "Самая высокая поддерживаемая версия протокола TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr "Указать ключ для параметров 'tls-auth' и 'secret'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr "Самая низкая поддерживаемая версия протокола TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+"Размер OPVN файла (%s) слишком большой для онлайн редактирования в LuCI (&ge "
+"100 Кб)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr "Отключение механизма согласования шифров"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Временные рамки для обмена ключами"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Тип используемого устройства."
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr "Загрузить"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr "Загрузка OVPN файла"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Использовать быстрое сжатие 'lzo'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Использовать протокол"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Использование виртуального  устройства tun/tap узлом"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Использовать имя пользователя в качестве общего имени"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Записывать события в файл"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Записать ID процесса в файл"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Записывать состояние в файл каждые n секунд"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "нет"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Виртуальное устройство tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "Промежуток времени простоя tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "да (%i)"
diff --git a/package/luci/applications/luci-app-openvpn/po/sk/openvpn.po b/package/luci/applications/luci-app-openvpn/po/sk/openvpn.po
new file mode 100644 (file)
index 0000000..7913d6f
--- /dev/null
@@ -0,0 +1,819 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po b/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po
new file mode 100644 (file)
index 0000000..25fdceb
--- /dev/null
@@ -0,0 +1,820 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', eller 'subnät'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "Lägg till"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Ytterligare autentisering via TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Tillåt klient-till-klienttraffik"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot b/package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot
new file mode 100644 (file)
index 0000000..d518696
--- /dev/null
@@ -0,0 +1,812 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/tr/openvpn.po b/package/luci/applications/luci-app-openvpn/po/tr/openvpn.po
new file mode 100644 (file)
index 0000000..6bef476
--- /dev/null
@@ -0,0 +1,819 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/uk/openvpn.po b/package/luci/applications/luci-app-openvpn/po/uk/openvpn.po
new file mode 100644 (file)
index 0000000..e17d107
--- /dev/null
@@ -0,0 +1,823 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2011-11-30 09:14+0200\n"
+"Last-Translator: Pavel <pavel.gumenyuk@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.4\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Дозволити обмін трафіком між клієнтами"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Дозволити декілька клієнтів з однаковим сертифікатом"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Дозволити лише одну сесію"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/vi/openvpn.po b/package/luci/applications/luci-app-openvpn/po/vi/openvpn.po
new file mode 100644 (file)
index 0000000..b8c6d3a
--- /dev/null
@@ -0,0 +1,825 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-16 06:58+0200\n"
+"PO-Revision-Date: 2009-08-16 12:27+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "'net30', 'p2p', or 'subnet'"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "Chấp nhận tùy chọn được đảy từ server"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "Thêm tuyến sau khi kết nối thành lập"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "Xác thực bổ xung trên TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "Cho phép lưu thông đối tượng - đến - đối tượng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "Cho phép nhiều đối tượng với cùng một chứng chỉ"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "Chỉ cho phép một session"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "Cho phép đối tượng ngoài vùng thay đổi IP hoặc cổng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "Cho phép tối đa đối tượng kết nối mới là"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "Internal tối đa được cho phép"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "Cho phép tối đa kết nối mới là"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "Nối thêm log lên tập tin"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "Xác thực username/password đang sử dụng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "Tự động chuyển hướng tuyến mặc định"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr ""
+"Dưới đây là một list của OpenVPN instances đã được cấu hình và tình trạng "
+"hiện tại"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "Call down cmd/script trước khi TUN/TAP đóng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "Giấy chứng nhận ủy quyền"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "Thay đổi quy trình ưu tiên"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "Chuyển qua thư mục trước khi khởi tạo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "Kiểm tra chứng chỉ đối tác với một CRL"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "Chroot vào thư mục sau khi khởi tạo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "Đối tượng bị vô hiệu hóa"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "Định cấu hình chế độ đối tượng "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "Định cấu hình cầu nối server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "Định cấu hình chế độ server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "Kết nối qua Socks5 proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "Khoảng thử kết nối"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "Daemonize sau khi khởi tạo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "Trì hoãn tun/tap mở và up script execution"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Tham số Diffie Hellman "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "Dạnh mục cho các tập tin config đối tương tùy chỉnh"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "Vô hiệu hóa Paging"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "Vô hiệu hóa tùy chọn kiểm tra nhất quán"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "Đừng đóng kết địa chỉ địa phương và cổng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "Đừng thực sự thực hiện ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "Đừng tự động thêm vào đường dẫn"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "Don't cache --askpass or --auth-user-pass passwords"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "Đừng thừa hưởng tùy chọn đẩy toàn cầu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "Đừng log timestamps"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "Đừng đọc lại key ở chế độ khởi động "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "Đừng dùng bộ nén lzo thích ứng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "Đừng cảnh báo về sự không nhất quán của ifconfig"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "Báo tham số lên log"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "Đo MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "Kích hoạt OpenSSL hardware crypto engines"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "Kích hoạt khám phá đường dẫn MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "Kích hoạt chế độ mã hóa khóa tĩnh (non-TLS)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "Kích hoạt TLS và giả định vải trò của client"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "Kích hoạt TLS và giả định vải trò của server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "Kích hoạt internal datagram fragmentation"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "Kích hoạt giao diện điều hành trên <em>IP</em> <em>cổng</em>"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "Kích hoạt "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "Encryption cipher cho các gói"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "Thực hiện shell cmd sau khi tuyến đã thêm vào"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "Thực hiện lệnh shell trên ip thay đổi từ xa"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "Exit trên TLS khi thương lượng thất bại"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "Lấy mật mã PEM từ điều khiển tty trước khi chúng ta daemonize"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "Sự xác thực HMAC cho gói"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "Xử lý những sai soát khi xác thực "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "Nếu hostname resolve thất bại, thử lại"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "Instance \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "Giữ địa chỉ IP ở chế độ khởi động"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "Giữ remote địa chỉ IP ở chế độ khởi động"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "Giữ công cụ tun/tap mở khi khởi động lại  "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "Key transition window"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "Giới hạn lập log tin nhắn"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "Chứng chỉ địa phương"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "Tên host địa phương và địa chỉ IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "Phím bảo mật địa phương"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "Chế độ chính"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "Số lượng tối đa của queued TCP output packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "Số lượng phân bổ phát sóng buffers"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "Số dòng cho tập tin log history"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "Chỉ chấp nhận kết nối từ những tên X509 cho sẵn"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "Chỉ xử lý ping timouts nếu tuyến tồn tại"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN instances"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "Tối ưu hóa TUN/TAP/UDP writes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "Output tới syslog và đừng daemonize"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS # 12 tập tin có chứa key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "Bỏ qua yếu tố môi trường tới script"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "Tiếp tục tình trạng replay-protection"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "Persist/unpersist ifconfig-pool"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "Ping remote mỗi n giây trên cổng TCP/UDP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "Cổng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "Protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "Proxy timeout in seconds"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "Đảy một tùy chọn ifconfig tới remote"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "Đẩy lựa chọn cho đối tác"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "Tra vấn kênh điều hành cho phím bảo mật "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "Ngẫu nhiên chọn server ngoài vùng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "Từ chối kết nối nêu không có config đối tượng tùy chỉnh"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "Remap tín hiệu SIGUSR1"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "Tên host ngoài vùng và địa chỉ IP"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "PING timeout từ xa"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "Thương lượng lại data chan. key sau bytes"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "Thương lượng lại data chan. key sau packets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "Thương lượng lại data chan. key sau seconds"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "Replay chế độ bảo vệ kích thước window trượt"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "Yêu cầu rõ ràng về giấy chứng nhận "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "Yêu cầu key dùng rõ rãng trên chứng nhận"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "Khởi động lại sau khi remote ping timeout"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "Retransmit timeout trên kênh kiểm soát TLS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "Thử lại trên HTTP proxy lỗi"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "Thử lại trên Socks proxy lỗi"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "Tuyến subnet tới khách hàng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "Chạy như inetd hoặc xinetd server"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "Chạy script cmd trên đối tượng kết nối"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "Chạy script cmd trên đối tượng không kết nối"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "Chạy up/down scripts cho tất cả khởi động"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "Gửi thông báo cho bạn bè về ngắt kết nối"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "Cài đặt GID tới nhóm"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "Cài đặt TCP/UDP MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "Cài đặt UID tới người dùng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "Để sang một bên một pool của subnets"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "Thiết lập các tùy chọn mở rộng HTTP proxy"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "Đặt output verbosity"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "Đặt dung lượng của bảng address hash thực và ảo"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "Đặt TCP/UDP nhận dung lượng buffer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "Đặt TCP/UDP gửi dung lượng buffer"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "Đặt tun/tap độ dài queue"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "Đặt công cụ tun/tap MTU"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "Đặt thiết bị tun/tap overhead"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "Đặt upper bound trên TCP MSS"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "Shaping cho peer bandwidth"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "Shell cmd để thực thi sau khi thiết bị tun mở"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "Shell cmd để chạy sau khi thiết bị tun đóng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "Shell command để hợp thức hóa tên X509 "
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "Silence the output của các cảnh báo reply"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "Dung lượng của cipher key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "Chỉ định một cổng mặc định cho tuyến"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "Bắt đầu OpenVPN trong một hibernating state"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "Bắt đầu"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "Tình trạng tập tin phiên bản format"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "Chuyển sang cấu hình cấp cao"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "Chuyển sang cấu hình căn bản"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "Cổng TCP/UDP # cho cả địa phương và ngoài vùng"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "Cổng TCP/UDP # cho địa phương (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "Cổng TCP/UDP # cho ngoài vùng (default=1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS cipher"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "TOS passthrough (chỉ áp dụng cho IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "Danh mục tạm thời cho tập tin client-connect return"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "Timeframe cho trao đổi key"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "Loại công cụ sử dụng"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "Dùng LZO nén nhanh"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "Dùng protocol"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "Dùng chế độ công cụ tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "Dùng tên đăng nhập như tên thông thường"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "Viết log lên tập tin"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "Viết xử lý ID lên tập tin"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "Viết tình trạng tới tập tin mỗi n giây"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "không"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "Công cụ tun/tap"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "tun/tap timeout không có hành động"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "Có (%i)"
diff --git a/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po
new file mode 100644 (file)
index 0000000..40b920d
--- /dev/null
@@ -0,0 +1,831 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2019-01-15 11:20+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "“net30”,“p2p”,或“subnet”"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "接受从服务器推送的选项"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "添加"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "建立连接后添加路由"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr "添加基于模板的配置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "TLS 以外的验证"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "允许客户端到客户端的通信"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "允许多用户共用同一证书"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "只允许一个会话"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "允许远端改变 IP 或端口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "允许最大已连接客户端数"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "允许最大内部连接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "允许最大新建连接数"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "添加日志至文件"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "以用户名/密码的方式进行验证"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "自动重定向至默认路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "以下是 OpenVPN 已配置实例及其当前状态的列表"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "TUN/TAP 关闭前的命令行及脚本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "认证授权"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "改变进程优先级"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "初始化前改变根目录"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "验证客户端证书以确保其是否过期"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "初始化后改变根目录"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "客户端已被禁止"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "配置分类"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "配置客户端模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "配置服务器桥接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "配置服务器模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "通过 Sock5 代理连接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "通过 HTTP 代理连接到远程主机"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "连接重试时间间隔"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "初始化后进入后台运行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "连接后延迟时间(秒)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "延迟 tun/tap 的打开及 up 脚本的执行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie–Hellman/DH 密钥交换参数"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "自定义客户端配置文件的目录"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "禁止分页"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "禁止选项一致性检查"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "不绑定本地地址和端口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "不实际执行 ifconfig 命令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "不自动添加路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "不缓存 --askpass 或 --auth-user-pass passwords"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr "不丢弃目的地址与本机相同的 tun 报文"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "不继承全局主动发送选项"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "不记录时间戳"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr "不自动拉取路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "服务重启时不重读密钥值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "不用自适应 lzo 压缩"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "ifconfig 不一致时不警告"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "把参数写入日志"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "以历史值估算 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "打开 OpenSSL 硬件加密引擎"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "启用路径 MTU 发现"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "允许静态密钥加密模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "允许 TLS 并伪装为客户端"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "允许 TLS 并伪装为服务器"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr "启用压缩算法"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "允许内部数据报分片"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "在 <em>IP</em> <em>port</em> 上启用可管理接口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "启用"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "使用密钥加密及认证所有的控制通道数据包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "加密数据包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "添加路由后执行 shell 命令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "当远程 ip 改变时执行 shell 命令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr "在服务器模式下执行新的客户端连接,当客户端仍然是不可信"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"服务器模式下,将每个 IPv4 地址/路由或 MAC 地址添加到 OpenVPN 的内部路由表中。"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "TLS 验证失败后退出"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "后台运行前从控制的 tty 中获取 PEM 密码"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "利用 HMAC 算法校验数据包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "处理验证失败"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr "在服务配置模式下简化 Helper 指令 --ping 和 --ping-restart 的表达式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "如果主机名解析错误,重试"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "实例 \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr "具有该名称的实例已存在!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "服务重启时保持本地 IP 地址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "服务重启时保持远程 IP 地址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "服务重启时自动打开 tun/tap 设备"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "密钥传输滑动窗口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "限制重复的日志消息"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "本地证书"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "本地主机名或 ip 地址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "本地私钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "主要模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "TCP队列中输出包的最大数量"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "已分配的广播缓冲区数量"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "历史日志文件的行数"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr "OVPN 配置文件上传"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "只接收已给定的 X509 名称的连接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "仅当路由存在时处理 ping 超时"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN 实例"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "优化 TUN/TAP/UDP 写入"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "输出到 syslog,不运行守护进程"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "概览"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS#12 文件包含的密钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "传递环境变量至脚本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "保存重播保护的状态"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "持久/非持久 ifconfig 池"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "每 n 秒 ping 一次远程 TCP/UDP 端口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr "请直接在终端会话中编辑此文件。"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr "请选择要上传的有效 OVPN 配置文件!"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr "请选择有效的 VPN 模板!"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "外部程序和脚本超出了策略允许的使用范围"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "端口"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "协议"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "代理超时,单位秒"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "主动向远程发送 ifconfig 选项"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "主动向端点发送选项"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "为私钥查询管理通道"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "随机选择远程服务器"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "拒接没有自定义客户端配置的连接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "重映射 SIGUSR1 信号"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "远程主机名或 ip 地址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "远程 ping 超时"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "传输若干字节后重新验证数据通道密钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "传输若干数据包后重新验证数据通道密钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "传输若干秒后重新验证数据通道密钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "重播保护的滑动窗口大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "证书需要显式指定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "证书需要明确的密钥"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "远程 ping 超时后重启"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr "限定协商时允许的密码算法"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "TLS 控制通道超时后重新发送"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "无限重试直至代理正确"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "无限重试直至 Socks 代理正确"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "路由子网至客户端"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "以 inetd 或 xinetd 服务方式运行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "当客户端连接时在命令行下允许脚本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "当客户端断开时在命令行下允许脚本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "每次重启都执行启动/关闭脚本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr "在此区域编辑“auth-user-pass”文件的内容(%s)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr "在此区域修改 OVPN 配置文件(%s)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr "选择模板…"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "断开连接时向客户端发送通知"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "为群组设置 GID 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "设置 TCP/UDP 的 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "为用户设置 UID 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "设置子网池"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "设置 HTTP 扩展代理选项"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "设置输出冗余级别"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "设置实际和虚拟地址的哈希表大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "设置 TCP/UDP 接收缓冲区大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "设置 TCP/UDP 发送缓冲区大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "设置 tun/tap 发送队列长度"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "设置 tun/tap 适配器参数"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "设置 tun/tap 设备的 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "设置 tun/tap 设备的开销"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "设置 TCP MSS 上限"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "改变结点带宽"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "tun 设备打开后运行的 shell 命令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "tun 设备关闭后运行的 shell 命令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "运行 shell 命令以验证 X509 名称"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "以静音的方式发出重播警告"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "密钥大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "指定路由默认网关"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr "指定是否要求客户端提供有效证书"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "以休眠的状态打开 OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "启动/停止"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "已运行的"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "显式文件格式版本的状态"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "高级配置"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "基本配置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "TCP/UDP 端口 # 同时针对本地和远程"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "TCP/UDP 端口 # 本地(默认 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP/UDP 端口 # 远程(默认 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS 加密"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "TOS 穿透(仅限 IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr "基于模板的配置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "客户端连接返回文件的临时目录"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr "“名称”字段不能为空"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr "无法找到 OVPN 配置文件(%s),请检查您的配置。"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr "最高支持的 TLS 版本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr "“tls-auth”和“secret”选项的密钥类型"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr "最低支持的 TLS 版本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr "OVPN 配置文件(%s)过大,无法使用 LuCI 在线编辑(&ge; 100 KB)。"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr "这将完全禁用密码协商"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "密钥交换时间表"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "使用设备类型"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr "上传"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr "上传 opvn 文件"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "使用快速 LZO 压缩"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "采用协议"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "使用 tun/tap 设备节点"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "把用户名作为通用名称"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "保存日志至文件"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "记录进程 ID 至文件"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "每 n 秒后写入状态至文件"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "否"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "tun/tap 设备"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "tun/tap 休眠超时"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "是(%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "无效"
diff --git a/package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po b/package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po
new file mode 100644 (file)
index 0000000..e1768ef
--- /dev/null
@@ -0,0 +1,831 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2018-08-07 17:36+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:794
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:797
+msgid "%s"
+msgstr "%s"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:363
+msgid "'net30', 'p2p', or 'subnet'"
+msgstr "“net30”,“p2p”,或“subnet”"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:480
+msgid "Accept options pushed from server"
+msgstr "接受從伺服器傳送過來的選項"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add"
+msgstr "新增"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:224
+msgid "Add route after establishing connection"
+msgstr "建立連線後新增路由"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:92
+msgid "Add template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:718
+msgid "Additional authentication over TLS"
+msgstr "TLS 以外的驗證"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:416
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:61
+msgid "Allow client-to-client traffic"
+msgstr "允許客戶端到客戶端的通訊"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:421
+msgid "Allow multiple clients with same certificate"
+msgstr "允許多使用者共用同一證書"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:710
+msgid "Allow only one session"
+msgstr "只允許一個會話"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:192
+msgid "Allow remote to change its IP or port"
+msgstr "允許遠端改變 IP 或埠"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:456
+msgid "Allowed maximum of connected clients"
+msgstr "允許最大已連線客戶端數"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:461
+msgid "Allowed maximum of internal"
+msgstr "允許最大內部連線"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:466
+msgid "Allowed maximum of new connections"
+msgstr "允許最大新建連線數"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:67
+msgid "Append log to file"
+msgstr "新增日誌至檔案"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:485
+msgid "Authenticate using username/password"
+msgstr "以使用者名稱/密碼的方式進行驗證"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:556
+msgid "Automatically redirect default route"
+msgstr "自動重定向至預設路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "Below is a list of configured OpenVPN instances and their current state"
+msgstr "以下是 OpenVPN 已配置例項及其當前狀態的列表"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:119
+msgid "Call down cmd/script before TUN/TAP close"
+msgstr "TUN/TAP 關閉前的指令列及指令碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:658
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:81
+msgid "Certificate authority"
+msgstr "認證授權"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:79
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:17
+msgid "Change process priority"
+msgstr "改變程序優先順序"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:39
+msgid "Change to directory before initialization"
+msgstr "初始化前改變根目錄"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:746
+msgid "Check peer certificate against a CRL"
+msgstr "驗證客戶端證書以確保其是否過期"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:43
+msgid "Chroot to directory after initialization"
+msgstr "初始化後改變根目錄"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:391
+msgid "Client is disabled"
+msgstr "客戶端已被禁止"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:20
+msgid "Configuration category"
+msgstr "配置分類"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:476
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:57
+msgid "Configure client mode"
+msgstr "配置客戶端模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:376
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:37
+msgid "Configure server bridge"
+msgstr "配置伺服器橋接"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:371
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:33
+msgid "Configure server mode"
+msgstr "配置伺服器模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:540
+msgid "Connect through Socks5 proxy"
+msgstr "通過 Sock5 代理連線"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:520
+msgid "Connect to remote host through an HTTP proxy"
+msgstr "通過 HTTP 代理連線到遠端主機"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:515
+msgid "Connection retry interval"
+msgstr "連線重試時間間隔"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:47
+msgid "Daemonize after initialization"
+msgstr "初始化後進入後臺執行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:232
+msgid "Delay n seconds after connection"
+msgstr "連線後延遲時間(秒)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:111
+msgid "Delay tun/tap open and up script execution"
+msgstr "延遲 tun/tap 的開啟及 up 指令碼的執行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:662
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:85
+msgid "Diffie Hellman parameters"
+msgstr "Diffie–Hellman/DH 金鑰交換引數"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:426
+msgid "Directory for custom client config files"
+msgstr "自訂客戶端配置檔案的目錄"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:23
+msgid "Disable Paging"
+msgstr "禁止分頁"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:27
+msgid "Disable options consistency check"
+msgstr "禁止選項一致性檢查"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:196
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:41
+msgid "Do not bind to local address and port"
+msgstr "不繫結本地位址和埠"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:216
+msgid "Don't actually execute ifconfig"
+msgstr "不實際執行 ifconfig 指令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:236
+msgid "Don't add routes automatically"
+msgstr "不自動新增路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:730
+msgid "Don't cache --askpass or --auth-user-pass passwords"
+msgstr "不快取 --askpass 或 --auth-user-pass passwords"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:244
+msgid "Don't drop incoming tun packets with same destination as host"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:386
+msgid "Don't inherit global push options"
+msgstr "不繼承全域性主動傳送選項"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:71
+msgid "Don't log timestamps"
+msgstr "不記錄時間戳"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:240
+msgid "Don't pull routes automatically"
+msgstr "不自動拉取路由"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:331
+msgid "Don't re-read key on restart"
+msgstr "服務重啟時不重讀金鑰值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:260
+msgid "Don't use adaptive lzo compression"
+msgstr "不用自適應 lzo 壓縮"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:220
+msgid "Don't warn on ifconfig inconsistencies"
+msgstr "ifconfig 不一致時不警告"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:87
+msgid "Echo parameters to log"
+msgstr "把引數寫入日誌"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:252
+msgid "Empirically measure MTU"
+msgstr "以歷史值估算 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:632
+msgid "Enable OpenSSL hardware crypto engines"
+msgstr "開啟 OpenSSL 硬體加密引擎"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:248
+msgid "Enable Path MTU discovery"
+msgstr "啟用路徑 MTU 發現"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:568
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:69
+msgid "Enable Static Key encryption mode (non-TLS)"
+msgstr "允許靜態金鑰加密模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:653
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:678
+msgid "Enable TLS and assume client role"
+msgstr "允許 TLS 並偽裝為客戶端"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:648
+msgid "Enable TLS and assume server role"
+msgstr "允許 TLS 並偽裝為伺服器"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:164
+msgid "Enable a compression algorithm"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:277
+msgid "Enable internal datagram fragmentation"
+msgstr "允許內部資料報分片"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:344
+msgid "Enable management interface on <em>IP</em> <em>port</em>"
+msgstr "在 <em>IP</em> <em>port</em> 上啟用可管理介面"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:104
+msgid "Enabled"
+msgstr "啟用"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:722
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "使用金鑰加密及認證所有的控制通道資料包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:622
+msgid "Encryption cipher for packets"
+msgstr "加密資料包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:127
+msgid "Execute shell cmd after routes are added"
+msgstr "新增路由後執行 shell 指令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:131
+msgid "Execute shell command on remote ip change"
+msgstr "當遠端 ip 改變時執行 shell 指令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:156
+msgid ""
+"Executed in server mode on new client connections, when the client is still "
+"untrusted"
+msgstr "在伺服器模式下執行新的客戶端連線,當客戶端仍然是不可信"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:152
+msgid ""
+"Executed in server mode whenever an IPv4 address/route or MAC address is "
+"added to OpenVPN's internal routing table"
+msgstr ""
+"伺服器模式下,將每個 IPv4 位址/路由或 MAC 位址新增到 OpenVPN 的內部路由表中。"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:714
+msgid "Exit on TLS negotiation failure"
+msgstr "TLS 驗證失敗後退出"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:726
+msgid "Get PEM password from controlling tty before we daemonize"
+msgstr "後臺執行前從控制的 tty 中獲取 PEM 密碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:573
+msgid "HMAC authentication for packets"
+msgstr "利用 HMAC 演算法校驗資料包"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:490
+msgid "Handling of authentication failures"
+msgstr "處理驗證失敗"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:307
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:49
+msgid ""
+"Helper directive to simplify the expression of --ping and --ping-restart in "
+"server mode configurations"
+msgstr "在服務配置模式下簡化 Helper 指令 --ping 和 --ping-restart 的表示式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:551
+msgid "If hostname resolve fails, retry"
+msgstr "如果主機名解析錯誤,重試"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:12
+msgid "Instance \"%s\""
+msgstr "例項 \"%s\""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:18
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:46
+msgid "Instance with that name already exists!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:335
+msgid "Keep local IP address on restart"
+msgstr "服務重啟時保持本地 IP 位址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:339
+msgid "Keep remote IP address on restart"
+msgstr "服務重啟時保持遠端 IP 位址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:327
+msgid "Keep tun/tap device open on restart"
+msgstr "服務重啟時自動開啟 tun/tap 裝置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:706
+msgid "Key transition window"
+msgstr "金鑰傳輸滑動視窗"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:103
+msgid "Limit repeated log messages"
+msgstr "限制重複的日誌訊息"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:666
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:89
+msgid "Local certificate"
+msgstr "本地證書"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:176
+msgid "Local host name or ip address"
+msgstr "本地主機名或 ip 位址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:670
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:93
+msgid "Local private key"
+msgstr "本地私鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:172
+msgid "Major mode"
+msgstr "主要模式"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:451
+msgid "Maximum number of queued TCP output packets"
+msgstr "TCP佇列中輸出包的最大數量"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:446
+msgid "Number of allocated broadcast buffers"
+msgstr "已分配的廣播緩衝區數量"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:359
+msgid "Number of lines for log file history"
+msgstr "歷史日誌檔案的行數"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:95
+msgid "OVPN configuration file upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:734
+msgid "Only accept connections from given X509 name"
+msgstr "只接收已給定的 X509 名稱的連線"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:323
+msgid "Only process ping timeouts if routes exist"
+msgstr "僅當路由存在時處理 ping 超時"
+
+#: applications/luci-app-openvpn/luasrc/controller/openvpn.lua:8
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:10
+msgid "OpenVPN"
+msgstr "OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:11
+msgid "OpenVPN instances"
+msgstr "OpenVPN 例項"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:83
+msgid "Optimize TUN/TAP/UDP writes"
+msgstr "優化 TUN/TAP/UDP 寫入"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:51
+msgid "Output to syslog and do not daemonize"
+msgstr "輸出到 syslog,不執行守護程序"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:11
+msgid "Overview"
+msgstr "概覽"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:674
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:77
+msgid "PKCS#12 file containing keys"
+msgstr "PKCS#12 檔案包含的金鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:136
+msgid "Pass environment variables to script"
+msgstr "傳遞環境變數至指令碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:644
+msgid "Persist replay-protection state"
+msgstr "儲存重播保護的狀態"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:401
+msgid "Persist/unpersist ifconfig-pool"
+msgstr "持久/非持久 ifconfig 池"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:311
+msgid "Ping remote every n seconds over TCP/UDP port"
+msgstr "每 n 秒 ping 一次遠端 TCP/UDP 埠"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:28
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:51
+msgid "Please select a valid OVPN config file to upload!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:23
+msgid "Please select a valid VPN template!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:160
+msgid "Policy level over usage of external programs and scripts"
+msgstr "外部程式和指令碼超出了策略允許的使用範圍"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:141
+msgid "Port"
+msgstr "埠"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:156
+msgid "Protocol"
+msgstr "協議"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:530
+msgid "Proxy timeout in seconds"
+msgstr "代理超時,單位秒"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:406
+msgid "Push an ifconfig option to remote"
+msgstr "主動向遠端傳送 ifconfig 選項"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:381
+msgid "Push options to peer"
+msgstr "主動向端點發送選項"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:349
+msgid "Query management channel for private key"
+msgstr "為私鑰查詢管理通道"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:505
+msgid "Randomly choose remote server"
+msgstr "隨機選擇遠端伺服器"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:431
+msgid "Refuse connection if no custom client config"
+msgstr "拒接沒有自訂客戶端配置的連線"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:91
+msgid "Remap SIGUSR1 signals"
+msgstr "重對映 SIGUSR1 訊號"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:500
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:65
+msgid "Remote host name or ip address"
+msgstr "遠端主機名或 ip 位址"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:315
+msgid "Remote ping timeout"
+msgstr "遠端 ping 超時"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:690
+msgid "Renegotiate data chan. key after bytes"
+msgstr "傳輸若干位元組後重新驗證資料通道金鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:694
+msgid "Renegotiate data chan. key after packets"
+msgstr "傳輸若干資料包後重新驗證資料通道金鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:698
+msgid "Renegotiate data chan. key after seconds"
+msgstr "傳輸若干秒後重新驗證資料通道金鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:636
+msgid "Replay protection sliding window size"
+msgstr "重播保護的滑動視窗大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:738
+msgid "Require explicit designation on certificate"
+msgstr "證書需要顯式指定"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:742
+msgid "Require explicit key usage on certificate"
+msgstr "證書需要明確的金鑰"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:319
+msgid "Restart after remote ping timeout"
+msgstr "遠端 ping 超時後重啟"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:766
+msgid "Restrict the allowed ciphers to be negotiated"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:686
+msgid "Retransmit timeout on TLS control channel"
+msgstr "TLS 控制通道超時後重新發送"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:525
+msgid "Retry indefinitely on HTTP proxy errors"
+msgstr "無限重試直至代理正確"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:546
+msgid "Retry indefinitely on Socks proxy errors"
+msgstr "無限重試直至 Socks 代理正確"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:411
+msgid "Route subnet to client"
+msgstr "路由子網至客戶端"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:59
+msgid "Run as an inetd or xinetd server"
+msgstr "以 inetd 或 xinetd 伺服器的方式執行"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:144
+msgid "Run script cmd on client connection"
+msgstr "當客戶端連線時在指令列下允許指令碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:148
+msgid "Run script cmd on client disconnection"
+msgstr "當客戶端斷開時在指令列下允許指令碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:123
+msgid "Run up/down scripts for all restarts"
+msgstr "每次重啟都執行啟動/關閉指令碼"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:37
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:61
+msgid ""
+"Section to add an optional 'auth-user-pass' file with your credentials (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:40
+msgid "Section to modify the OVPN config file (%s)"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:85
+msgid "Select template ..."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:495
+msgid "Send notification to peer on disconnect"
+msgstr "斷開連線時向客戶端傳送通知"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:35
+msgid "Set GID to group"
+msgstr "為群組設定 GID 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:265
+msgid "Set TCP/UDP MTU"
+msgstr "設定 TCP/UDP 的 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:31
+msgid "Set UID to user"
+msgstr "為使用者設定 UID 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:396
+msgid "Set aside a pool of subnets"
+msgstr "設定子網池"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:535
+msgid "Set extended HTTP proxy options"
+msgstr "設定 HTTP 擴充套件代理選項"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:19
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:13
+msgid "Set output verbosity"
+msgstr "設定輸出冗餘級別"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:441
+msgid "Set size of real and virtual address hash tables"
+msgstr "設定實際和虛擬位址的雜湊表大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:291
+msgid "Set the TCP/UDP receive buffer size"
+msgstr "設定 TCP/UDP 接收緩衝區大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:287
+msgid "Set the TCP/UDP send buffer size"
+msgstr "設定 TCP/UDP 傳送緩衝區大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:295
+msgid "Set tun/tap TX queue length"
+msgstr "設定 tun/tap 傳送佇列長度"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:212
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:29
+msgid "Set tun/tap adapter parameters"
+msgstr "設定 tun/tap 介面卡引數"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:269
+msgid "Set tun/tap device MTU"
+msgstr "設定 tun/tap 裝置的 MTU 值"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:273
+msgid "Set tun/tap device overhead"
+msgstr "設定 tun/tap 裝置的開銷"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:282
+msgid "Set upper bound on TCP MSS"
+msgstr "設定 TCP MSS 上限"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:299
+msgid "Shaping for peer bandwidth"
+msgstr "改變結點頻寬"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:107
+msgid "Shell cmd to execute after tun device open"
+msgstr "tun 裝置開啟後執行的 shell 指令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:115
+msgid "Shell cmd to run after tun device close"
+msgstr "tun 裝置關閉後執行的 shell 指令"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:140
+msgid "Shell command to verify X509 name"
+msgstr "執行 shell 指令以驗證 X509 名稱"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:640
+msgid "Silence the output of replay warnings"
+msgstr "以靜音的方式發出重播警告"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:627
+msgid "Size of cipher key"
+msgstr "金鑰大小"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:228
+msgid "Specify a default gateway for routes"
+msgstr "指定路由預設閘道器"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:561
+msgid "Specify whether the client is required to supply a valid certificate"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:354
+msgid "Start OpenVPN in a hibernating state"
+msgstr "以休眠的狀態開啟 OpenVPN"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:117
+msgid "Start/Stop"
+msgstr "啟動/停止"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:106
+msgid "Started"
+msgstr "已執行的"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:99
+msgid "Status file format version"
+msgstr "顯式檔案格式版本的狀態"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:15
+msgid "Switch to advanced configuration"
+msgstr "高階配置"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm:18
+msgid "Switch to basic configuration"
+msgstr "基本配置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:180
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:21
+msgid "TCP/UDP port # for both local and remote"
+msgstr "TCP/UDP 埠 # 同時針對本地和遠端"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:184
+msgid "TCP/UDP port # for local (default=1194)"
+msgstr "TCP/UDP 埠 # 本地(預設 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:188
+msgid "TCP/UDP port # for remote (default=1194)"
+msgstr "TCP/UDP 埠 # 遠端(預設 1194)"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:682
+msgid "TLS cipher"
+msgstr "TLS 加密"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:55
+msgid "TOS passthrough (applies to IPv4 only)"
+msgstr "TOS 穿透(僅限 IPv4)"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:78
+msgid "Template based configuration"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:436
+msgid "Temporary directory for client-connect return file"
+msgstr "客戶端連線返回檔案的臨時目錄"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:12
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:40
+msgid "The 'Name' field must not be empty!"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:18
+msgid ""
+"The OVPN config file (%s) could not be found, please check your "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:754
+msgid "The highest supported TLS version"
+msgstr "最高支援的 TLS 版本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:758
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:73
+msgid "The key direction for 'tls-auth' and 'secret' options"
+msgstr "“tls-auth”和“secret”選項的金鑰型別"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:750
+msgid "The lowest supported TLS version"
+msgstr "最低支援的 TLS 版本"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua:27
+msgid ""
+"The size of the OVPN config file (%s) is too large for online editing in "
+"LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:762
+msgid "This completely disables cipher negotiation"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:702
+msgid "Timeframe for key exchange"
+msgstr "金鑰交換時間表"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:204
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:25
+msgid "Type of used device"
+msgstr "使用裝置型別"
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm:104
+msgid "Upload ovpn file"
+msgstr ""
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:256
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:45
+msgid "Use fast LZO compression"
+msgstr "使用快速 LZO 壓縮"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:510
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua:53
+msgid "Use protocol"
+msgstr "採用協議"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:208
+msgid "Use tun/tap device node"
+msgstr "使用 tun/tap 裝置節點"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:471
+msgid "Use username as common name"
+msgstr "把使用者名稱作為通用名稱"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:63
+msgid "Write log to file"
+msgstr "儲存日誌至檔案"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:75
+msgid "Write process ID to file"
+msgstr "記錄程序 ID 至檔案"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:95
+msgid "Write status to file every n seconds"
+msgstr "每 n 秒後寫入狀態至檔案"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:112
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:114
+msgid "no"
+msgstr "否"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:200
+msgid "tun/tap device"
+msgstr "tun/tap 裝置"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua:303
+msgid "tun/tap inactivity timeout"
+msgstr "tun/tap 休眠超時"
+
+#: applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua:111
+msgid "yes (%i)"
+msgstr "是(%i)"
+
+#~ msgid "Invalid"
+#~ msgstr "無效"
diff --git a/package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes b/package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes
new file mode 100644 (file)
index 0000000..12a49ee
--- /dev/null
@@ -0,0 +1,101 @@
+#
+# Routed point-to-point server
+#
+config openvpn_recipe server_tun_ptp
+       option _description     'Simple server configuration for a routed point-to-point VPN'
+       option _role            'server'
+       option dev              'tun'
+       option ifconfig         '10.0.0.1 10.0.0.2'
+       option secret           'shared-secret.key'
+       option keepalive        '10 60'
+       option comp_lzo         'yes'
+       option verb             '3'
+       option mssfix           '1420'
+
+#
+# Routed point-to-point client
+#
+config openvpn_recipe client_tun_ptp
+       option _description     'Simple client configuration for a routed point-to-point VPN'
+       option _role            'client'
+       option dev              'tun'
+       list remote             'vpnserver.example.org'
+       option ifconfig         '10.0.0.2 10.0.0.1'
+       option secret           'shared-secret.key'
+       option nobind           '1'
+       option comp_lzo         'yes'
+       option verb             '3'
+
+#
+# Routed multi-client server
+#
+config openvpn_recipe server_tun
+       option _description     'Server configuration for a routed multi-client VPN'
+       option _role            'server'
+       option dev              'tun'
+       option server           '10.0.100.0 255.255.255.0'
+       option ca               'ca.crt'
+       option cert             'server.crt'
+       option key              'server.key'
+       option dh               'dh1024.pem'
+       option keepalive        '10 60'
+       option comp_lzo         'yes'
+       option verb             '3'
+       option mssfix           '1420'
+
+#
+# Routed client
+#
+config openvpn_recipe client_tun
+       option _description     'Client configuration for a routed multi-client VPN'
+       option _role            'client'
+       option client           '1'
+       option dev              'tun'
+       list remote             'vpnserver.example.org'
+       option pkcs12           'my_client.p12'
+       option remote_cert_tls  'server'
+       option comp_lzo         'yes'
+       option nobind           '1'
+       option persist_key      '1'
+       option persist_tun      '1'
+       option verb             '3'
+       option reneg_sec        '0'
+       option float            '1'
+
+#
+# Multi-client ethernet bridge server
+#
+config openvpn_recipe server_tap_bridge
+       option _description     'Server configuration for an ethernet bridge VPN'
+       option _role            'server'
+       option dev              'tap'
+       option server_bridge    '192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254'
+       option ca               'ca.crt'
+       option cert             'server.crt'
+       option key              'server.key'
+       option dh               'dh1024.pem'
+       option keepalive        '10 60'
+       option comp_lzo         'yes'
+       option verb             '3'
+       option mssfix           '1420'
+
+#
+# Ethernet bridge client
+#
+config openvpn_recipe client_tap_bridge
+       option _description     'Client configuration for an ethernet bridge VPN'
+       option _role            'client'
+       option client           '1'
+       option dev              'tap'
+       list remote             'vpnserver.example.org'
+       option ca               'ca.crt'
+       option cert             'my_client.crt'
+       option key              'my_client.key'
+       option dh               'dh1024.pem'
+       option remote_cert_tls  'server'
+       option comp_lzo         'yes'
+       option nobind           '1'
+       option persist_key      '1'
+       option verb             '3'
+       option reneg_sec        '0'
+       option float            '1'
diff --git a/package/luci/applications/luci-app-opkg/Makefile b/package/luci/applications/luci-app-opkg/Makefile
new file mode 100644 (file)
index 0000000..5763e91
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2018 Jo-Philipp Wich <jo@mein.io>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=OPKG package management application
+LUCI_DEPENDS:=+opkg
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js b/package/luci/applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js
new file mode 100644 (file)
index 0000000..9f10b2f
--- /dev/null
@@ -0,0 +1,825 @@
+var packages = {
+       available: { providers: {}, pkgs: {} },
+       installed: { providers: {}, pkgs: {} }
+};
+
+var currentDisplayMode = 'available', currentDisplayRows = [];
+
+function parseList(s, dest)
+{
+       var re = /([^\n]*)\n/g,
+           pkg = null, key = null, val = null, m;
+
+       while ((m = re.exec(s)) !== null) {
+               if (m[1].match(/^\s(.*)$/)) {
+                       if (pkg !== null && key !== null && val !== null)
+                               val += '\n' + RegExp.$1.trim();
+
+                       continue;
+               }
+
+               if (key !== null && val !== null) {
+                       switch (key) {
+                       case 'package':
+                               pkg = { name: val };
+                               break;
+
+                       case 'depends':
+                       case 'provides':
+                               var list = val.split(/\s*,\s*/);
+                               if (list.length !== 1 || list[0].length > 0)
+                                       pkg[key] = list;
+                               break;
+
+                       case 'installed-time':
+                               pkg.installtime = new Date(+val * 1000);
+                               break;
+
+                       case 'installed-size':
+                               pkg.installsize = +val;
+                               break;
+
+                       case 'status':
+                               var stat = val.split(/\s+/),
+                                   mode = stat[1],
+                                   installed = stat[2];
+
+                               switch (mode) {
+                               case 'user':
+                               case 'hold':
+                                       pkg[mode] = true;
+                                       break;
+                               }
+
+                               switch (installed) {
+                               case 'installed':
+                                       pkg.installed = true;
+                                       break;
+                               }
+                               break;
+
+                       case 'essential':
+                               if (val === 'yes')
+                                       pkg.essential = true;
+                               break;
+
+                       case 'size':
+                               pkg.size = +val;
+                               break;
+
+                       case 'architecture':
+                       case 'auto-installed':
+                       case 'filename':
+                       case 'sha256sum':
+                       case 'section':
+                               break;
+
+                       default:
+                               pkg[key] = val;
+                               break;
+                       }
+
+                       key = val = null;
+               }
+
+               if (m[1].trim().match(/^([\w-]+)\s*:(.+)$/)) {
+                       key = RegExp.$1.toLowerCase();
+                       val = RegExp.$2.trim();
+               }
+               else {
+                       dest.pkgs[pkg.name] = pkg;
+
+                       var provides = dest.providers[pkg.name] ? [] : [ pkg.name ];
+
+                       if (pkg.provides)
+                               provides.push.apply(provides, pkg.provides);
+
+                       provides.forEach(function(p) {
+                               dest.providers[p] = dest.providers[p] || [];
+                               dest.providers[p].push(pkg);
+                       });
+               }
+       }
+}
+
+function display(pattern)
+{
+       var src = packages[currentDisplayMode === 'updates' ? 'installed' : currentDisplayMode],
+           table = document.querySelector('#packages'),
+           pager = document.querySelector('#pager');
+
+       currentDisplayRows.length = 0;
+
+       if (typeof(pattern) === 'string' && pattern.length > 0)
+               pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'ig');
+
+       for (var name in src.pkgs) {
+               var pkg = src.pkgs[name],
+                   desc = pkg.description || '',
+                   altsize = null;
+
+               if (!pkg.size && packages.available.pkgs[name])
+                       altsize = packages.available.pkgs[name].size;
+
+               if (!desc && packages.available.pkgs[name])
+                       desc = packages.available.pkgs[name].description || '';
+
+               desc = desc.split(/\n/);
+               desc = desc[0].trim() + (desc.length > 1 ? '…' : '');
+
+               if ((pattern instanceof RegExp) &&
+                   !name.match(pattern) && !desc.match(pattern))
+                       continue;
+
+               var btn, ver;
+
+               if (currentDisplayMode === 'updates') {
+                       var avail = packages.available.pkgs[name],
+                           inst  = packages.installed.pkgs[name];
+
+                       if (!inst || !inst.installed)
+                               continue;
+
+                       if (!avail || compareVersion(avail.version, pkg.version) <= 0)
+                               continue;
+
+                       ver = '%s » %s'.format(
+                               truncateVersion(pkg.version || '-'),
+                               truncateVersion(avail.version || '-'));
+
+                       btn = E('div', {
+                               'class': 'btn cbi-button-positive',
+                               'data-package': name,
+                               'click': handleInstall
+                       }, _('Upgrade…'));
+               }
+               else if (currentDisplayMode === 'installed') {
+                       if (!pkg.installed)
+                               continue;
+
+                       ver = truncateVersion(pkg.version || '-');
+                       btn = E('div', {
+                               'class': 'btn cbi-button-negative',
+                               'data-package': name,
+                               'click': handleRemove
+                       }, _('Remove'));
+               }
+               else {
+                       var inst = packages.installed.pkgs[name];
+
+                       ver = truncateVersion(pkg.version || '-');
+
+                       if (!inst || !inst.installed)
+                               btn = E('div', {
+                                       'class': 'btn cbi-button-action',
+                                       'data-package': name,
+                                       'click': handleInstall
+                               }, _('Install…'));
+                       else if (inst.installed && inst.version != pkg.version)
+                               btn = E('div', {
+                                       'class': 'btn cbi-button-positive',
+                                       'data-package': name,
+                                       'click': handleInstall
+                               }, _('Upgrade…'));
+                       else
+                               btn = E('div', {
+                                       'class': 'btn cbi-button-neutral',
+                                       'disabled': 'disabled'
+                               }, _('Installed'));
+               }
+
+               name = '%h'.format(name);
+               desc = '%h'.format(desc || '-');
+
+               if (pattern) {
+                       name = name.replace(pattern, '<ins>$&</ins>');
+                       desc = desc.replace(pattern, '<ins>$&</ins>');
+               }
+
+               currentDisplayRows.push([
+                       name,
+                       ver,
+                       pkg.size ? '%.1024mB'.format(pkg.size)
+                                : (altsize ? '~%.1024mB'.format(altsize) : '-'),
+                       desc,
+                       btn
+               ]);
+       }
+
+       currentDisplayRows.sort(function(a, b) {
+               if (a[0] < b[0])
+                       return -1;
+               else if (a[0] > b[0])
+                       return 1;
+               else
+                       return 0;
+       });
+
+       pager.parentNode.style.display = '';
+       pager.setAttribute('data-offset', 100);
+       handlePage({ target: pager.querySelector('.prev') });
+}
+
+function handlePage(ev)
+{
+       var filter = document.querySelector('input[name="filter"]'),
+           pager = ev.target.parentNode,
+           offset = +pager.getAttribute('data-offset'),
+           next = ev.target.classList.contains('next');
+
+       if ((next && (offset + 100) >= currentDisplayRows.length) ||
+           (!next && (offset < 100)))
+           return;
+
+       offset += next ? 100 : -100;
+       pager.setAttribute('data-offset', offset);
+       pager.querySelector('.text').firstChild.data = currentDisplayRows.length
+               ? _('Displaying %d-%d of %d').format(1 + offset, Math.min(offset + 100, currentDisplayRows.length), currentDisplayRows.length)
+               : _('No packages');
+
+       if (offset < 100)
+               pager.querySelector('.prev').setAttribute('disabled', 'disabled');
+       else
+               pager.querySelector('.prev').removeAttribute('disabled');
+
+       if ((offset + 100) >= currentDisplayRows.length)
+               pager.querySelector('.next').setAttribute('disabled', 'disabled');
+       else
+               pager.querySelector('.next').removeAttribute('disabled');
+
+       var placeholder = _('No information available');
+
+       if (filter.value)
+               placeholder = [
+                       E('span', {}, _('No packages matching "<strong>%h</strong>".').format(filter.value)), ' (',
+                       E('a', { href: '#', onclick: 'handleReset(event)' }, _('Reset')), ')'
+               ];
+
+       cbi_update_table('#packages', currentDisplayRows.slice(offset, offset + 100),
+               placeholder);
+}
+
+function handleMode(ev)
+{
+       var tab = findParent(ev.target, 'li');
+       if (tab.getAttribute('data-mode') === currentDisplayMode)
+               return;
+
+       tab.parentNode.querySelectorAll('li').forEach(function(li) {
+               li.classList.remove('cbi-tab');
+               li.classList.add('cbi-tab-disabled');
+       });
+
+       tab.classList.remove('cbi-tab-disabled');
+       tab.classList.add('cbi-tab');
+
+       currentDisplayMode = tab.getAttribute('data-mode');
+
+       display(document.querySelector('input[name="filter"]').value);
+
+       ev.target.blur();
+       ev.preventDefault();
+}
+
+function orderOf(c)
+{
+       if (c === '~')
+               return -1;
+       else if (c === '' || c >= '0' && c <= '9')
+               return 0;
+       else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
+               return c.charCodeAt(0);
+       else
+               return c.charCodeAt(0) + 256;
+}
+
+function compareVersion(val, ref)
+{
+       var vi = 0, ri = 0,
+           isdigit = { 0:1, 1:1, 2:1, 3:1, 4:1, 5:1, 6:1, 7:1, 8:1, 9:1 };
+
+       val = val || '';
+       ref = ref || '';
+
+       if (val === ref)
+               return 0;
+
+       while (vi < val.length || ri < ref.length) {
+               var first_diff = 0;
+
+               while ((vi < val.length && !isdigit[val.charAt(vi)]) ||
+                      (ri < ref.length && !isdigit[ref.charAt(ri)])) {
+                       var vc = orderOf(val.charAt(vi)), rc = orderOf(ref.charAt(ri));
+                       if (vc !== rc)
+                               return vc - rc;
+
+                       vi++; ri++;
+               }
+
+               while (val.charAt(vi) === '0')
+                       vi++;
+
+               while (ref.charAt(ri) === '0')
+                       ri++;
+
+               while (isdigit[val.charAt(vi)] && isdigit[ref.charAt(ri)]) {
+                       first_diff = first_diff || (val.charCodeAt(vi) - ref.charCodeAt(ri));
+                       vi++; ri++;
+               }
+
+               if (isdigit[val.charAt(vi)])
+                       return 1;
+               else if (isdigit[ref.charAt(ri)])
+                       return -1;
+               else if (first_diff)
+                       return first_diff;
+       }
+
+       return 0;
+}
+
+function versionSatisfied(ver, ref, vop)
+{
+       var r = compareVersion(ver, ref);
+
+       switch (vop) {
+       case '<':
+       case '<=':
+               return r <= 0;
+
+       case '>':
+       case '>=':
+               return r >= 0;
+
+       case '<<':
+               return r < 0;
+
+       case '>>':
+               return r > 0;
+
+       case '=':
+               return r == 0;
+       }
+
+       return false;
+}
+
+function pkgStatus(pkg, vop, ver, info)
+{
+       info.errors = info.errors || [];
+       info.install = info.install || [];
+
+       if (pkg.installed) {
+               if (vop && !versionSatisfied(pkg.version, ver, vop)) {
+                       var repl = null;
+
+                       (packages.available.providers[pkg.name] || []).forEach(function(p) {
+                               if (!repl && versionSatisfied(p.version, ver, vop))
+                                       repl = p;
+                       });
+
+                       if (repl) {
+                               info.install.push(repl);
+                               return E('span', {
+                                       'class': 'label',
+                                       'data-tooltip': _('Requires update to %h %h')
+                                               .format(repl.name, repl.version)
+                               }, _('Needs upgrade'));
+                       }
+
+                       info.errors.push(_('The installed version of package <em>%h</em> is not compatible, require %s while %s is installed.').format(pkg.name, truncateVersion(ver, vop), truncateVersion(pkg.version)));
+
+                       return E('span', {
+                               'class': 'label warning',
+                               'data-tooltip': _('Require version %h %h,\ninstalled %h')
+                                       .format(vop, ver, pkg.version)
+                       }, _('Version incompatible'));
+               }
+
+               return E('span', { 'class': 'label notice' }, _('Installed'));
+       }
+       else if (!pkg.missing) {
+               if (!vop || versionSatisfied(pkg.version, ver, vop)) {
+                       info.install.push(pkg);
+                       return E('span', { 'class': 'label' }, _('Not installed'));
+               }
+
+               info.errors.push(_('The repository version of package <em>%h</em> is not compatible, require %s but only %s is available.')
+                               .format(pkg.name, truncateVersion(ver, vop), truncateVersion(pkg.version)));
+
+               return E('span', {
+                       'class': 'label warning',
+                       'data-tooltip': _('Require version %h %h,\ninstalled %h')
+                               .format(vop, ver, pkg.version)
+               }, _('Version incompatible'));
+       }
+       else {
+               info.errors.push(_('Required dependency package <em>%h</em> is not available in any repository.').format(pkg.name));
+
+               return E('span', { 'class': 'label warning' }, _('Not available'));
+       }
+}
+
+function renderDependencyItem(dep, info)
+{
+       var li = E('li'),
+           vop = dep.version ? dep.version[0] : null,
+           ver = dep.version ? dep.version[1] : null,
+           depends = [];
+
+       for (var i = 0; dep.pkgs && i < dep.pkgs.length; i++) {
+               var pkg = packages.installed.pkgs[dep.pkgs[i]] ||
+                         packages.available.pkgs[dep.pkgs[i]] ||
+                         { name: dep.name };
+
+               if (i > 0)
+                       li.appendChild(document.createTextNode(' | '));
+
+               var text = pkg.name;
+
+               if (pkg.installsize)
+                       text += ' (%.1024mB)'.format(pkg.installsize);
+               else if (pkg.size)
+                       text += ' (~%.1024mB)'.format(pkg.size);
+
+               li.appendChild(E('span', { 'data-tooltip': pkg.description },
+                       [ text, ' ', pkgStatus(pkg, vop, ver, info) ]));
+
+               (pkg.depends || []).forEach(function(d) {
+                       if (depends.indexOf(d) === -1)
+                               depends.push(d);
+               });
+       }
+
+       if (!li.firstChild)
+               li.appendChild(E('span', {},
+                       [ dep.name, ' ',
+                         pkgStatus({ name: dep.name, missing: true }, vop, ver, info) ]));
+
+       var subdeps = renderDependencies(depends, info);
+       if (subdeps)
+               li.appendChild(subdeps);
+
+       return li;
+}
+
+function renderDependencies(depends, info)
+{
+       var deps = depends || [],
+           items = [];
+
+       info.seen = info.seen || [];
+
+       for (var i = 0; i < deps.length; i++) {
+               if (deps[i] === 'libc')
+                       continue;
+
+               if (deps[i].match(/^(.+)\s+\((<=|<|>|>=|=|<<|>>)(.+)\)$/)) {
+                       dep = RegExp.$1.trim();
+                       vop = RegExp.$2.trim();
+                       ver = RegExp.$3.trim();
+               }
+               else {
+                       dep = deps[i].trim();
+                       vop = ver = null;
+               }
+
+               if (info.seen[dep])
+                       continue;
+
+               var pkgs = [];
+
+               (packages.installed.providers[dep] || []).forEach(function(p) {
+                       if (pkgs.indexOf(p.name) === -1) pkgs.push(p.name);
+               });
+
+               (packages.available.providers[dep] || []).forEach(function(p) {
+                       if (pkgs.indexOf(p.name) === -1) pkgs.push(p.name);
+               });
+
+               info.seen[dep] = {
+                       name:    dep,
+                       pkgs:    pkgs,
+                       version: [vop, ver]
+               };
+
+               items.push(renderDependencyItem(info.seen[dep], info));
+       }
+
+       if (items.length)
+               return E('ul', { 'class': 'deps' }, items);
+
+       return null;
+}
+
+function truncateVersion(v, op)
+{
+       v = v.replace(/\b(([a-f0-9]{8})[a-f0-9]{24,32})\b/,
+               '<span data-tooltip="$1">$2…</span>');
+
+       if (!op || op === '=')
+               return v;
+
+       return '%h %h'.format(op, v);
+}
+
+function handleReset(ev)
+{
+       var filter = document.querySelector('input[name="filter"]');
+
+       filter.value = '';
+       display();
+}
+
+function handleInstall(ev)
+{
+       var name = ev.target.getAttribute('data-package'),
+           pkg = packages.available.pkgs[name],
+           depcache = {},
+           size;
+
+       if (pkg.installsize)
+               size = _('~%.1024mB installed').format(pkg.installsize);
+       else if (pkg.size)
+               size = _('~%.1024mB compressed').format(pkg.size);
+       else
+               size = _('unknown');
+
+       var deps = renderDependencies(pkg.depends, depcache),
+           tree = null, errs = null, inst = null, desc = null;
+
+       if (depcache.errors && depcache.errors.length) {
+               errs = E('ul', { 'class': 'errors' });
+               depcache.errors.forEach(function(err) {
+                       errs.appendChild(E('li', {}, err));
+               });
+       }
+
+       var totalsize = pkg.installsize || pkg.size || 0,
+           totalpkgs = 1;
+
+       if (depcache.install && depcache.install.length)
+               depcache.install.forEach(function(ipkg) {
+                       totalsize += ipkg.installsize || ipkg.size || 0;
+                       totalpkgs++;
+               });
+
+       inst = E('p', {},
+               _('Require approx. %.1024mB size for %d package(s) to install.')
+                       .format(totalsize, totalpkgs));
+
+       if (deps) {
+               tree = E('li', '<strong>%s:</strong>'.format(_('Dependencies')));
+               tree.appendChild(deps);
+       }
+
+       if (pkg.description) {
+               desc = E('div', {}, [
+                       E('h5', {}, _('Description')),
+                       E('p', {}, pkg.description)
+               ]);
+       }
+
+       L.showModal(_('Details for package <em>%h</em>').format(pkg.name), [
+               E('ul', {}, [
+                       E('li', '<strong>%s:</strong> %h'.format(_('Version'), pkg.version)),
+                       E('li', '<strong>%s:</strong> %h'.format(_('Size'), size)),
+                       tree || '',
+               ]),
+               desc || '',
+               errs || inst || '',
+               E('div', { 'class': 'right' }, [
+                       E('div', {
+                               'class': 'btn',
+                               'click': L.hideModal
+                       }, _('Cancel')),
+                       ' ',
+                       E('div', {
+                               'data-command': 'install',
+                               'data-package': name,
+                               'class': 'btn cbi-button-action',
+                               'click': handleOpkg
+                       }, _('Install'))
+               ])
+       ]);
+}
+
+function handleManualInstall(ev)
+{
+       var name_or_url = document.querySelector('input[name="install"]').value,
+           install = E('div', {
+                       'class': 'btn cbi-button-action',
+                       'data-command': 'install',
+                       'data-package': name_or_url,
+                       'click': function(ev) {
+                               document.querySelector('input[name="install"]').value = '';
+                               handleOpkg(ev);
+                       }
+               }, _('Install')), warning;
+
+       if (!name_or_url.length) {
+               return;
+       }
+       else if (name_or_url.indexOf('/') !== -1) {
+               warning = E('p', {}, _('Installing packages from untrusted sources is a potential security risk! Really attempt to install <em>%h</em>?').format(name_or_url));
+       }
+       else if (!packages.available.providers[name_or_url]) {
+               warning = E('p', {}, _('The package <em>%h</em> is not available in any configured repository.').format(name_or_url));
+               install = '';
+       }
+       else {
+               warning = E('p', {}, _('Really attempt to install <em>%h</em>?').format(name_or_url));
+       }
+
+       L.showModal(_('Manually install package'), [
+               warning,
+               E('div', { 'class': 'right' }, [
+                       E('div', {
+                               'click': L.hideModal,
+                               'class': 'btn cbi-button-neutral'
+                       }, _('Cancel')),
+                       ' ', install
+               ])
+       ]);
+}
+
+function handleConfig(ev)
+{
+       L.showModal(_('OPKG Configuration'), [
+               E('p', { 'class': 'spinning' }, _('Loading configuration data…'))
+       ]);
+
+       L.get('admin/system/opkg/config', null, function(xhr, conf) {
+               var body = [
+                       E('p', {}, _('Below is a listing of the various configuration files used by <em>opkg</em>. Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for custom repository entries. The configuration in the other files may be changed but is usually not preserved by <em>sysupgrade</em>.'))
+               ];
+
+               Object.keys(conf).sort().forEach(function(file) {
+                       body.push(E('h5', {}, '%h'.format(file)));
+                       body.push(E('textarea', {
+                               'name': file,
+                               'rows': Math.max(Math.min(conf[file].match(/\n/g).length, 10), 3)
+                       }, '%h'.format(conf[file])));
+               });
+
+               body.push(E('div', { 'class': 'right' }, [
+                       E('div', {
+                               'class': 'btn cbi-button-neutral',
+                               'click': L.hideModal
+                       }, _('Cancel')),
+                       ' ',
+                       E('div', {
+                               'class': 'btn cbi-button-positive',
+                               'click': function(ev) {
+                                       var data = {};
+                                       findParent(ev.target, '.modal').querySelectorAll('textarea[name]')
+                                               .forEach(function(textarea) {
+                                                       data[textarea.getAttribute('name')] = textarea.value
+                                               });
+
+                                       L.showModal(_('OPKG Configuration'), [
+                                               E('p', { 'class': 'spinning' }, _('Saving configuration data…'))
+                                       ]);
+
+                                       L.post('admin/system/opkg/config', { data: JSON.stringify(data) }, L.hideModal);
+                               }
+                       }, _('Save')),
+               ]));
+
+               L.showModal(_('OPKG Configuration'), body);
+       });
+}
+
+function handleRemove(ev)
+{
+       var name = ev.target.getAttribute('data-package'),
+           pkg = packages.installed.pkgs[name],
+           avail = packages.available.pkgs[name] || {},
+           size, desc;
+
+       if (avail.installsize)
+               size = _('~%.1024mB installed').format(avail.installsize);
+       else if (avail.size)
+               size = _('~%.1024mB compressed').format(avail.size);
+       else
+               size = _('unknown');
+
+       if (avail.description) {
+               desc = E('div', {}, [
+                       E('h5', {}, _('Description')),
+                       E('p', {}, avail.description)
+               ]);
+       }
+
+       L.showModal(_('Remove package <em>%h</em>').format(pkg.name), [
+               E('ul', {}, [
+                       E('li', '<strong>%s:</strong> %h'.format(_('Version'), pkg.version)),
+                       E('li', '<strong>%s:</strong> %h'.format(_('Size'), size))
+               ]),
+               desc || '',
+               E('div', { 'style': 'display:flex; justify-content:space-between; flex-wrap:wrap' }, [
+                       E('label', {}, [
+                               E('input', { type: 'checkbox', checked: 'checked', name: 'autoremove' }),
+                               _('Automatically remove unused dependencies')
+                       ]),
+                       E('div', { 'style': 'flex-grow:1', 'class': 'right' }, [
+                               E('div', {
+                                       'class': 'btn',
+                                       'click': L.hideModal
+                               }, _('Cancel')),
+                               ' ',
+                               E('div', {
+                                       'data-command': 'remove',
+                                       'data-package': name,
+                                       'class': 'btn cbi-button-negative',
+                                       'click': handleOpkg
+                               }, _('Remove'))
+                       ])
+               ])
+       ]);
+}
+
+function handleOpkg(ev)
+{
+       var cmd = ev.target.getAttribute('data-command'),
+           pkg = ev.target.getAttribute('data-package'),
+           rem = document.querySelector('input[name="autoremove"]'),
+           url = 'admin/system/opkg/exec/' + encodeURIComponent(cmd);
+
+       var dlg = L.showModal(_('Executing package manager'), [
+               E('p', { 'class': 'spinning' },
+                       _('Waiting for the <em>opkg %h</em> command to complete…').format(cmd))
+       ]);
+
+       L.post(url, { package: pkg, autoremove: rem ? rem.checked : false }, function(xhr, res) {
+               dlg.removeChild(dlg.lastChild);
+
+               if (res.stdout)
+                       dlg.appendChild(E('pre', [ res.stdout ]));
+
+               if (res.stderr) {
+                       dlg.appendChild(E('h5', _('Errors')));
+                       dlg.appendChild(E('pre', { 'class': 'errors' }, [ res.stderr ]));
+               }
+
+               if (res.code !== 0)
+                       dlg.appendChild(E('p', _('The <em>opkg %h</em> command failed with code <code>%d</code>.').format(cmd, (res.code & 0xff) || -1)));
+
+               dlg.appendChild(E('div', { 'class': 'right' },
+                       E('div', {
+                               'class': 'btn',
+                               'click': function() {
+                                       L.hideModal();
+                                       updateLists();
+                               }
+                       }, _('Dismiss'))));
+       });
+}
+
+function updateLists()
+{
+       cbi_update_table('#packages', [],
+               E('div', { 'class': 'spinning' }, _('Loading package information…')));
+
+       packages.available = { providers: {}, pkgs: {} };
+       packages.installed = { providers: {}, pkgs: {} };
+
+       L.get('admin/system/opkg/statvfs', null, function(xhr, stat) {
+               var pg = document.querySelector('.cbi-progressbar'),
+                   total = stat.blocks || 0,
+                   free = stat.bfree || 0;
+
+               pg.firstElementChild.style.width = Math.floor(total ? ((100 / total) * free) : 100) + '%';
+               pg.setAttribute('title', '%s (%.1024mB)'.format(pg.firstElementChild.style.width, free * (stat.frsize || 0)));
+
+               L.get('admin/system/opkg/list/available', null, function(xhr) {
+                       parseList(xhr.responseText, packages.available);
+                       L.get('admin/system/opkg/list/installed', null, function(xhr) {
+                               parseList(xhr.responseText, packages.installed);
+                               display(document.querySelector('input[name="filter"]').value);
+                       });
+               });
+       });
+}
+
+window.requestAnimationFrame(function() {
+       var filter = document.querySelector('input[name="filter"]'),
+           keyTimeout = null;
+
+       filter.value = filter.getAttribute('value');
+       filter.addEventListener('keyup',
+               function(ev) {
+                       if (keyTimeout !== null)
+                               window.clearTimeout(keyTimeout);
+
+                       keyTimeout = window.setTimeout(function() {
+                               display(ev.target.value);
+                       }, 250);
+               });
+
+       document.querySelector('#pager > .prev').addEventListener('click', handlePage);
+       document.querySelector('#pager > .next').addEventListener('click', handlePage);
+       document.querySelector('.cbi-tabmenu.mode').addEventListener('click', handleMode);
+
+       updateLists();
+});
diff --git a/package/luci/applications/luci-app-opkg/luasrc/controller/opkg.lua b/package/luci/applications/luci-app-opkg/luasrc/controller/opkg.lua
new file mode 100644 (file)
index 0000000..74aa166
--- /dev/null
@@ -0,0 +1,100 @@
+-- Copyright 2018 Jo-Philipp Wich <jo@mein.io>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.opkg", package.seeall)
+
+function index()
+       entry({"admin", "system", "opkg"}, template("opkg"), _("Software"), 30)
+       entry({"admin", "system", "opkg", "list"}, call("action_list")).leaf = true
+       entry({"admin", "system", "opkg", "exec"}, post("action_exec")).leaf = true
+       entry({"admin", "system", "opkg", "statvfs"}, call("action_statvfs")).leaf = true
+       entry({"admin", "system", "opkg", "config"}, post_on({ data = true }, "action_config")).leaf = true
+end
+
+function action_list(mode)
+       local cmd
+
+       if mode == "installed" then
+               cmd = { "/bin/cat", "/usr/lib/opkg/status" }
+       else
+               cmd = { "/bin/sh", "-c", [[find /tmp/opkg-lists/ -type f '!' -name '*.sig' | xargs -r gzip -cd]] }
+       end
+
+       luci.http.prepare_content("text/plain; charset=utf-8")
+       luci.sys.process.exec(cmd, luci.http.write)
+end
+
+function action_exec(command, package)
+       local sys = require "luci.sys"
+       local cmd = { "/bin/opkg", "--force-removal-of-dependent-packages", "--force-overwrite" }
+       local pkg = luci.http.formvalue("package")
+
+       if luci.http.formvalue("autoremove") == "true" then
+               cmd[#cmd + 1] = "--autoremove"
+       end
+
+       cmd[#cmd + 1] = command
+
+       if pkg then
+               cmd[#cmd + 1] = pkg
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(sys.process.exec(cmd, true, true))
+end
+
+function action_statvfs()
+       local fs = require "nixio.fs"
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(fs.statvfs("/") or {})
+end
+
+function action_config()
+       local fs = require "nixio.fs"
+       local js = require "luci.jsonc"
+       local data = luci.http.formvalue("data")
+
+       if data then
+               data = js.parse(data)
+
+               if not data then
+                       luci.http.status(400, "Bad Request")
+                       return
+               end
+
+               local file, content
+               for file, content in pairs(data) do
+                       if type(content) ~= "string" or
+                          (file ~= "opkg.conf" and not file:match("^opkg/[^/]+%.conf$"))
+                       then
+                               luci.http.status(400, "Bad Request")
+                               return
+                       end
+
+                       local path = "/etc/%s" % file
+                       if not fs.access(path, "w") then
+                               luci.http.status(403, "Permission denied")
+                               return
+                       end
+
+                       fs.writefile(path, content:gsub("\r\n", "\n"))
+               end
+
+               luci.http.status(204, "Saved")
+       else
+               local rv = { ["opkg.conf"] = fs.readfile("/etc/opkg.conf") }
+               local entries = fs.dir("/etc/opkg")
+               if entries then
+                       local entry
+                       for entry in entries do
+                               if entry:match("%.conf$") then
+                                       rv["opkg/%s" % entry] = fs.readfile("/etc/opkg/%s" % entry)
+                               end
+                       end
+               end
+
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(rv)
+       end
+end
diff --git a/package/luci/applications/luci-app-opkg/luasrc/view/opkg.htm b/package/luci/applications/luci-app-opkg/luasrc/view/opkg.htm
new file mode 100644 (file)
index 0000000..0d2a4e2
--- /dev/null
@@ -0,0 +1,140 @@
+<%#
+ Copyright 2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<style type="text/css">
+       .controls {
+               display: flex;
+               margin: .5em 0 1em 0;
+               flex-wrap: wrap;
+               justify-content: space-around;
+       }
+
+       .controls > * {
+               padding: .25em;
+               white-space: nowrap;
+               flex: 1 1 33%;
+               box-sizing: border-box;
+               display: flex;
+               flex-wrap: wrap;
+       }
+
+       .controls > *:first-child,
+       .controls > * > label {
+               flex-basis: 100%;
+               min-width: 250px;
+       }
+
+       .controls > * > .btn {
+               flex-basis: 20px;
+               text-align: center;
+       }
+
+       .controls > * > * {
+               flex-grow: 1;
+               align-self: center;
+       }
+
+       .controls > div > input {
+               width: auto;
+       }
+
+       .td.version,
+       .td.size {
+               white-space: nowrap;
+       }
+
+       ul.deps, ul.deps ul, ul.errors {
+               margin-left: 1em;
+       }
+
+       ul.deps li, ul.errors li {
+               list-style: none;
+       }
+
+       ul.deps li:before {
+               content: "↳";
+               display: inline-block;
+               width: 1em;
+               margin-left: -1em;
+       }
+
+       ul.deps li > span {
+               white-space: nowrap;
+       }
+
+       ul.errors li {
+               color: #c44;
+               font-size: 90%;
+               font-weight: bold;
+               padding-left: 1.5em;
+       }
+
+       ul.errors li:before {
+               content: "⚠";
+               display: inline-block;
+               width: 1.5em;
+               margin-left: -1.5em;
+       }
+</style>
+
+<h2><%:Software%></h2>
+
+<div class="controls">
+       <div>
+               <label><%:Free space%>:</label>
+               <div class="cbi-progressbar" title="<%:unknown%>">
+                       <div>&#160;</div>
+               </div>
+       </div>
+
+       <div>
+               <label><%:Filter%>:</label>
+               <input type="text" name="filter" placeholder="<%:Type to filter…%>"<%=attr("value", luci.http.formvalue("query") or "")%> /><!--
+               --><button class="btn cbi-button" onclick="handleReset(event)"><%:Clear%></button>
+       </div>
+
+       <div>
+               <label><%:Download and install package%>:</label>
+               <input type="text" name="install" placeholder="<%:Package name or URL…%>" onkeydown="if (event.keyCode === 13) handleManualInstall(event)" /><!--
+               --><button class="btn cbi-button cbi-button-action" onclick="handleManualInstall(event)"><%:OK%></button>
+       </div>
+
+       <div>
+               <label><%:Actions%>:</label>
+               <button class="btn cbi-button-positive" data-command="update" onclick="handleOpkg(event)"><%:Update lists…%></button>
+               &#160;
+               <button class="btn cbi-button-neutral" onclick="handleConfig(event)"><%:Configure opkg…%></button>
+       </div>
+</div>
+
+<ul class="cbi-tabmenu mode">
+       <li data-mode="available" class="available cbi-tab"><a href="#"><%:Available%></a></li>
+       <li data-mode="installed" class="installed cbi-tab-disabled"><a href="#"><%:Installed%></a></li>
+       <li data-mode="updates" class="installed cbi-tab-disabled"><a href="#"><%:Updates%></a></li>
+</ul>
+
+<div class="controls" style="display:none">
+       <div id="pager" class="center">
+               <button class="btn cbi-button-neutral prev" aria-label="<%:Previous page%>">«</button>
+               <div class="text">dummy</div>
+               <button class="btn cbi-button-neutral next" aria-label="<%:Next page%>">»</button>
+       </div>
+</div>
+
+<div class="table" id="packages">
+       <div class="tr cbi-section-table-titles">
+               <div class="th col-2 left"><%:Package name%></div>
+               <div class="th col-2 left version"><%:Version%></div>
+               <div class="th col-1 center size"><%:Size (.ipk)%></div>
+               <div class="th col-10 left"><%:Description%></div>
+               <div class="th right">&#160;</div>
+       </div>
+</div>
+
+<script type="text/javascript" src="<%=resource%>/view/opkg.js"></script>
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-opkg/po/ca/opkg.po b/package/luci/applications/luci-app-opkg/po/ca/opkg.po
new file mode 100644 (file)
index 0000000..ec08024
--- /dev/null
@@ -0,0 +1,314 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2014-06-06 11:17+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Accions"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configuració"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descripció"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Descarrega i instal·la el paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Error"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtre"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Espai lliure"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instal·la"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Instal·la"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instal·la"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Vés a la pàgina de configuració"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Descarrega i instal·la el paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "No hi ha informació disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Cerca paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Total disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "No connectat"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "D'acord"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configuració d&#39;OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nom del paquet"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nom del paquet"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Treu"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Restableix"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Desa"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Configuració de dispositiu"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Mida"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Mida (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Programari"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Actualitza les llistes"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Actualitza les llistes"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versió"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Esperant que s'acabi l'ordre..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "desconegut"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/cs/opkg.po b/package/luci/applications/luci-app-opkg/po/cs/opkg.po
new file mode 100644 (file)
index 0000000..2c45270
--- /dev/null
@@ -0,0 +1,312 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-31 13:59+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Akce"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Dostupné"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Storno"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Nastavení"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Popis"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Stáhnout a nainstalovat balíček"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Chyba"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtr"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Volné místo"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instalovat"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Instalovat"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instalovat"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Přejít na související konfigurační stránku"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Stáhnout a nainstalovat balíček"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Údaje nejsou k dispozici"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Vyhledat balíček"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Dostupná celkem"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Nepřipojeno"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Konfigurace balíčků OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Název balíčku"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Název balíčku"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Odstranit"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Uložit"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Nastavení zařízení"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Velikost"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Aktualizovat seznamy"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Aktualizovat seznamy"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Verze"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Čekání na dokončení příkazu..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "neznámý"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/de/opkg.po b/package/luci/applications/luci-app-opkg/po/de/opkg.po
new file mode 100644 (file)
index 0000000..4d899e4
--- /dev/null
@@ -0,0 +1,323 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 17:57+0200\n"
+"PO-Revision-Date: 2018-11-20 11:44+0100\n"
+"Last-Translator: Jo-Philipp Wich <jo@mein.io>\n"
+"Language-Team: \n"
+"Language: de\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 2.0.5\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Aktionen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "Unbenutzte Abhängigkeiten automatisch entfernen"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Verfügbar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"Dies ist eine Auflistung der verschiedenen von <em>opkg</em> genutzten "
+"Konfigurationsdateien. Die <em>opkg.conf</em>-Datei sollte für globale "
+"Einstellungen und die <em>customfeeds.conf</em>-Datei für benutzerdefinierte "
+"Repository-Einträge verwendet werden. Der Inhalt der anderen "
+"Konfigurationsdateien kann zwar geändert werden, wird aber überlicherweise "
+"bei Systemupdates zurückgesetzt."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "Zurücksetzen"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "Konfiguriere opkg…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "Abhängigkeiten"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Beschreibung"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "Details für Paket <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Schließen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "Einträge %d-%d von %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Paket herunterladen und installieren"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "Fehler"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "Paketmanager ausführen"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filter"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Freier Platz"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Installieren"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "Installiert"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"Die Installation von Paketen aus unbekannten Quellen ist ein mögliches "
+"Sicherheitsrisiko! Soll wirklich versucht werden, <em>%h</em> zu "
+"installieren?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "Installieren…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "Lade Konfigurationsdaten…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "Lade Paketinformationen…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "Paket manuell installieren"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "Aktualisierung benötigt"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "Nächste Seite"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Keine Informationen verfügbar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "Keine Pakete"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "Keine auf \"<strong>%h</strong>\" zutreffenden Pakete."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "Nicht verfügbar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "Nicht installiert"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "OPKG-Konfiguration"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Paketname"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "Paketname oder URL…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "Vorige Seite"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "Soll wirklich versucht werden, <em>%h</em> zu installieren?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Entfernen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "Paket <em>%h</em> entfernen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+"Benötige etwa %.1024mB Speicherplatz für die Installation von %d Pakete(n)."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"Benötigtes abhängiges Paket <em>%h</em> ist in keinem Repository verfügbar."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "Benötigt Update auf Version %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Speichern"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "Speichere Konfigurationsdaten…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Größe"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Größe (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Paketverwaltung"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+"Das <em>opkg %h</em> Kommando wurde mit Fehlercode <code>%d</code> beendet."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"Die installierte Version von Paket <em>%h</em> ist nicht kompatibel, "
+"benötige Version %s während %s installiert ist."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+"Das Paket <em>%h</em> ist in keinem konfiguriertem Repository verfügbar."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"Die Repository-Version von Paket <em>%h</em> ist nicht kompatibel, benötige "
+"Version %s aber nur %s ist verfügbar."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "Tippen zum Filtern…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "Listen aktualisieren…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "Aktualisierungen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "Aktualisieren…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Version"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "Version inkompatibel"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Warte auf das <em>opkg %h</em> Kommando…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "unbekannt"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "ca. %.1024mB komprimiert"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "ca. %.1024mB installiert"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "Benötige Version %h %h,\n"
+#~ "aber %h installiert"
diff --git a/package/luci/applications/luci-app-opkg/po/el/opkg.po b/package/luci/applications/luci-app-opkg/po/el/opkg.po
new file mode 100644 (file)
index 0000000..29919b4
--- /dev/null
@@ -0,0 +1,311 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-03-31 15:35+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Ενέργειες"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Διαθέσιμο"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Ακύρωση"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Παραμετροποίηση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Περιγραφή"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Κατέβασμα και εγκατάσταση πακέτου"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Σφάλμα"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Φίλτρο"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Ελεύθερος χώρος"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Εγκατάσταση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Εγκατάσταση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Εγκατάσταση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Μετάβαση στη σχετική σελίδα ρυθμίσεων"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Κατέβασμα και εγκατάσταση πακέτου"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Δεν υπάρχουν πληροφορίες διαθέσιμες"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Εύρεση πακέτου"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Διαθέσιμο Συνολικά"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Εγκατάσταση"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "Εντάξει"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Παραμετροποίηση OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Όνομα πακέτου"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Όνομα πακέτου"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Αφαίρεση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Αρχικοποίηση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Αποθήκευση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Παραμετροποίηση Συσκευής"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Μέγεθος"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Λογισμικό"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Έκδοση"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/en/opkg.po b/package/luci/applications/luci-app-opkg/po/en/opkg.po
new file mode 100644 (file)
index 0000000..7b14c30
--- /dev/null
@@ -0,0 +1,311 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-04-03 08:44+0200\n"
+"Last-Translator: juhosg <juhosg@openwrt.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Actions"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Available"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Cancel"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configuration"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Description"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Download and install package"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Error"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filter"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Install"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Install"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Install"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Go to relevant configuration page"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Download and install package"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Find package"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "(%s available)"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Install"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "OPKG-Configuration"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Package name"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Package name"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Remove"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Save"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Device Configuration"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Size"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Version"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/es/opkg.po b/package/luci/applications/luci-app-opkg/po/es/opkg.po
new file mode 100644 (file)
index 0000000..e2cb925
--- /dev/null
@@ -0,0 +1,321 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2019-05-16 15:24-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language: es\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 2.2.1\n"
+"Language-Team: \n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Acciones"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "Eliminar automáticamente las dependencias no utilizadas"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"A continuación se muestra una lista de los diversos archivos de "
+"configuración utilizados por <em>opkg</em>. Use <em>opkg.conf</em> para la "
+"configuración global y <em>customfeeds.conf</em> para las entradas "
+"personalizadas del repositorio. La configuración en los otros archivos puede "
+"cambiarse, pero por lo general no se conserva mediante <em>sysupgrade</em>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "Limpiar"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "Configurar opkg..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "Dependencias"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descripción"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "Detalles para el paquete <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "Mostrando %d-%d de %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Descargar e instalar paquete"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "Errores"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "Ejecutando el gestor de paquetes"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtro"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Espacio libre"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "Instalado"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"¡Instalar paquetes de fuentes no confiables es un riesgo potencial de "
+"seguridad! ¿Realmente intentas instalar <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "Instalar..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "Cargando datos de configuración..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "Cargando información del paquete..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "Instalar manualmente el paquete"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "Necesita actualización"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "Siguiente página"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "No hay información disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "Sin paquetes"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "No hay paquetes que coincidan con \"<strong>%h</strong>\"."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "No disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "No instalado"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "Configuración de OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nombre del paquete"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "Nombre del paquete o URL..."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "Pagina anterior"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "¿Realmente intentas instalar <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Desinstalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "Eliminar paquete <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+"Requiere un tamaño aproximado de %.1024mB para que se instale/n %d paquete/s"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"El paquete de dependencia requerido <em>%h</em> no está disponible en ningún "
+"repositorio."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "Requiere actualización a %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Guardar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "Guardando datos de configuración..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Tamaño"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Tamaño (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr "El comando <em>opkg %h</em> falló con el código <code>%d</code>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"La versión instalada del paquete <em>%h</em> no es compatible, requiere %s "
+"mientras que %s está instalado."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+"El paquete <em>%h</em> no está disponible en ningún repositorio configurado."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"La versión de repositorio del paquete <em>%h</em> no es compatible, requiere "
+"%s pero solo %s está disponible."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "Tipo de filtro"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "Actualizar listas..."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "Actualizaciones"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "Actualizar..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versión"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "Versión incompatible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Esperando que el comando <em>opkg %h</em> se complete..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "desconocido"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~%.1024mB comprimido"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~%.1024mB instalado"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "Requiere versión %h %h,\n"
+#~ "instalado %h"
diff --git a/package/luci/applications/luci-app-opkg/po/fr/opkg.po b/package/luci/applications/luci-app-opkg/po/fr/opkg.po
new file mode 100644 (file)
index 0000000..015a6b6
--- /dev/null
@@ -0,0 +1,314 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2013-12-22 17:11+0200\n"
+"Last-Translator: goofy <pierre.gaufillet@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Actions"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Annuler"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configuration"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Description"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Télécharge et installe le paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Erreur"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtrer"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Espace libre"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Aller à la page de configuration correspondante"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Télécharge et installe le paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Information indisponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Trouver un paquet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Total disponible"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Non connecté"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configuration OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nom du paquet"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nom du paquet"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Désinstaller"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Remise à zéro"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Sauvegarder"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Configuration de l'équipement"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Taille"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Logiciels"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Mettre les listes à jour"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Mettre les listes à jour"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Version"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "En attente de la fin de la commande..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "inconnu"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/he/opkg.po b/package/luci/applications/luci-app-opkg/po/he/opkg.po
new file mode 100644 (file)
index 0000000..0834cab
--- /dev/null
@@ -0,0 +1,307 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-02-02 14:32+0200\n"
+"Last-Translator: oranav <oranav@gmail.com>\n"
+"Language-Team: none\n"
+"Language: he\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "פעולות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "זמין"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "בטל"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "הגדרות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "תיאור"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "הורד והתקן חבילות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "שגיאה"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "הגדרות נפוצות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "הורד והתקן חבילות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "חבילות זמינות"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "סה\"כ פנוי"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "לא מחובר"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "הגדרות"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "שם החבילה"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "שם החבילה"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "הגדרות מכשיר"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "תוכנה"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "גרסה"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/hu/opkg.po b/package/luci/applications/luci-app-opkg/po/hu/opkg.po
new file mode 100644 (file)
index 0000000..ca44a7c
--- /dev/null
@@ -0,0 +1,312 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-01-31 09:59+0200\n"
+"Last-Translator: Gabor <juhosg@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Műveletek"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Elérhető"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Beállítás"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Leírás"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Csomag letöltése és telepítése"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Hiba"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Szűrő"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Szabad hely"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Telepítés"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Telepítés"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Telepítés"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Ugrás a tárgyhoz tartozó beállításokhoz"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Csomag letöltése és telepítése"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Nincs elérhető információ"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Csomag keresése"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Összes elérhető"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Nincs kapcsolódva"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "OPKG-Beállítások"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Csomagnév"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Csomagnév"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Eltávolítás"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Visszaállítás"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Mentés"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Eszköz beállítások"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Méret"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Szoftver"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Listák frissítése"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Listák frissítése"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Verzió"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Várakozás a parancs befejezésére..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/it/opkg.po b/package/luci/applications/luci-app-opkg/po/it/opkg.po
new file mode 100644 (file)
index 0000000..ee187e3
--- /dev/null
@@ -0,0 +1,314 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-09-05 00:33+0100\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\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.6.10\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Azioni"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponibile"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Annulla"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configurazione"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descrizione"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Scarica e installa pacchetto"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Errore"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtro"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Spazio libero"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Installa"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Installa"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Installa"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Vai alla pagina di configurazione relativa"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Scarica e installa pacchetto"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Nessuna informazione disponibile"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Cerca pacchetto"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Totale"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Non connesso"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configurazione di OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nome pacchetto"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nome pacchetto"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Salva"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Configurazione del dispositivo"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Dimensione"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Aggiorna liste"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Aggiorna liste"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versione"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "In attesa del comando da completare..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/ja/opkg.po b/package/luci/applications/luci-app-opkg/po/ja/opkg.po
new file mode 100644 (file)
index 0000000..45b3286
--- /dev/null
@@ -0,0 +1,317 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2018-11-21 12:29+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"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.2\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "操作"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "使用されない依存パッケージを自動的に削除"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "利用可能"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"以下は <em>opkg</em> によって使用される、様々な設定ファイルの一覧です。 "
+"<em>opkg.conf</em> は全般的な設定に、 <em>customfeeds.conf</em> はカスタム リ"
+"ポジトリの登録に使用します。これら以外のファイル内の設定を変更しても、通常は "
+"<em>sysupgrade</em> 時に保持されません。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "クリア"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "opkg を設定…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "依存関係"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "詳細"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "<em>%h</em> パッケージの詳細"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "閉じる"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "%d - %d を表示中(全 %d)"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "パッケージのダウンロードとインストール"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "エラー"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "パッケージ マネージャーを実行中"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "フィルタ"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "ディスクの空き容量"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "インストール"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "インストール済"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"信頼されていない提供元からのパッケージのインストールは、セキュリティ リスクを"
+"伴います! <em>%h</em> のインストールを試行してもよろしいですか?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "インストール…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "設定データをロード中…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "パッケージ情報をロード中…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "パッケージの手動インストール"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "要アップグレード"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "次のページ"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "情報がありません"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "パッケージがありません"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "\"<strong>%h</strong>\" に一致するパッケージはありません。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "利用不可"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "未インストール"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "OPKG 設定"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "パッケージ名"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "パッケージ名または URL…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "前のページ"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "<em>%h</em> のインストールを試行してもよろしいですか?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "削除"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "<em>%h</em> パッケージを削除"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr "インストールには約 %.1024mB の領域が必要です(上記 %d パッケージ)。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"必須の依存パッケージ <em>%h</em> は、設定済みのリポジトリでは利用できません。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "%h %h への更新が必要です"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "リセット"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "設定データを保存中…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "サイズ"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "サイズ (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "ソフトウェア"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr "<em>opkg %h</em> コマンドが失敗しました。(コード <code>%d</code>)"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"<em>%h</em> のインストール済みバージョンは互換性がありません。 %s が、インス"
+"トールされている %s には必要です。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr "<em>%h</em> パッケージは、設定済みのリポジトリでは利用できません。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"<em>%h</em> パッケージのリポジトリ バージョンは互換性がありません。 %s が必要"
+"ですが、 %s のみ利用可能です。"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "入力して検索…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "リストを更新…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "更新"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "アップグレード…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "バージョン"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "互換性の無いバージョン"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "<em>opkg %h</em コマンドを実行中です…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "不明"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~ %.1024mB(圧縮後)"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~ %.1024mB(インストール後)"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "必要バージョン: %h %h,\n"
+#~ "インストール済: %h"
diff --git a/package/luci/applications/luci-app-opkg/po/ko/opkg.po b/package/luci/applications/luci-app-opkg/po/ko/opkg.po
new file mode 100644 (file)
index 0000000..0c03e5f
--- /dev/null
@@ -0,0 +1,311 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-04-03 08:44+0200\n"
+"Last-Translator: Weongyo Jeong <weongyo@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "관리 도구"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "설정"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "설명"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "패키지 다운로드 후 설치"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "필터"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "여유 공간"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "설치"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "설치"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "설치"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "공통 설정"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "패키지 다운로드 후 설치"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "이용 가능한 정보가 없습니다"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "패키지 찾기"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "총 이용 가능한 양"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "연결되지 않음"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "OPKG-설정"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "패키지 이름"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "패키지 이름"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "제거"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "초기화"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "저장"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "장치 설정"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Size"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "크기 (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "소프트웨어"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "버전"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "실행한 명령이 끝나기를 기다리는 중입니다..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/ms/opkg.po b/package/luci/applications/luci-app-opkg/po/ms/opkg.po
new file mode 100644 (file)
index 0000000..f1cde1f
--- /dev/null
@@ -0,0 +1,310 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-05-07 17:57+1000\n"
+"PO-Revision-Date: 2010-05-07 17:57+1000\n"
+"Last-Translator: Wai Chet Teow <waichet@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.1.1\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Aksi"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Boleh didapati"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Batal"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Konfigurasi"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Keterangan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Turun dan memasang pakej"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Kesalahan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Penapis"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Memasang"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Memasang"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Memasang"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Menuju ke halaman konfigurasi yang relevan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Turun dan memasang pakej"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Cari pakej"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "(%s sedia)"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Memasang"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "Baik"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "OPKG-Konfigurasi"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nama pakej"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nama pakej"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Menghapuskan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Simpan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Saiz"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Perisian"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versi"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/no/opkg.po b/package/luci/applications/luci-app-opkg/po/no/opkg.po
new file mode 100644 (file)
index 0000000..fe140cd
--- /dev/null
@@ -0,0 +1,309 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2013-03-25 23:36+0200\n"
+"Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language: no\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Handlinger"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Tilgjengelig"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Konfigurasjon"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Last ned og installer pakken"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Feil"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filter"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Ledig plass"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Installer"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Gå til relevant konfigurasjonen side"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Last ned og installer pakken"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Ingen informasjon tilgjengelig"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Finn pakke"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Totalt Tilgjengelig"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Ikke tilkoblet"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "<abbr title=\"Open PacKaGe Management\">OPKG</abbr>-Konfigurasjon"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Pakkenavn"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Pakkenavn"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Avinstaller"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Nullstill"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Lagre"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Enhet Konfigurasjon"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Størrelse"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Programvare"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Oppdater lister"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Oppdater lister"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versjon"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Venter på at kommando fullføres..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "ukjent"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/pl/opkg.po b/package/luci/applications/luci-app-opkg/po/pl/opkg.po
new file mode 100644 (file)
index 0000000..52fcb62
--- /dev/null
@@ -0,0 +1,338 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-04-20 09:40+0200\n"
+"PO-Revision-Date: 2019-01-05 19:35+0200\n"
+"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
+"Language-Team: Polish\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Akcje"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "Automatycznie usuwaj nieużywane zależności"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Dostępne"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"Poniżej znajduje się lista różnych plików konfiguracyjnych używanych przez "
+"<em>opkg</em>. Użyj <em>opkg.conf</em> dla ustawień globalnych i "
+"<em>customfeeds.conf</em> dla niestandardowych wpisów w repozytorium. "
+"Konfiguracja w innych plikach może zostać zmieniona, ale zwykle nie jest "
+"zachowywana przez <em>sysupgrade</em>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "Wyczyść"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Konfiguruj opkg…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "Zależności"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Opis"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "Szczegóły pakietu <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Odrzuć"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "Wyświetlanie %d-%d z %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Pobierz i zainstaluj pakiet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Błąd"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "Wykonywanie menedżera pakietów"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtr"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Wolna przestrzeń"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instaluj"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Zainstalowane"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"Instalowanie pakietów z niezaufanych źródeł jest potencjalnym zagrożeniem "
+"bezpieczeństwa! Czy na pewno chcesz zainstalować pakiet <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instaluj…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Ładowanie danych konfiguracyjnych…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "Ładowanie informacji o pakiecie…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Zainstaluj ręcznie pakiet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+#, fuzzy
+msgid "Needs upgrade"
+msgstr "Wymuś uaktualnienie"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "Następna strona"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Brak dostępnych informacji"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Brak pakietów"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "Brak pasujących pakietów \"<strong>%h</strong>\"."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Niedostępne"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Nie zainstalowany"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Konfiguracja OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nazwa pakietu"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nazwa pakietu lub URL…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "Poprzednia strona"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "Czy na pewno chcesz zainstalować pakiet <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Usuń"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "Usuń pakiet <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr "Wymaga ok. %.1024mB rozmiaru pakietu %d do zainstalowania."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"Wymagana zależność <em>%h</em> nie jest dostępna w żadnym repozytorium."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "Wymaga aktualizacji do %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Resetuj"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Zapisz"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Zatwierdzanie konfiguracji…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Rozmiar"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Rozmiar (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Oprogramowanie"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+"Polecenie <em>opkg %h</em> zakończyło się niepomyślnie z kodem <code>%d</"
+"code>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"Zainstalowana wersja pakietu <em>%h</em> nie jest zgodna, wymaga %s podczas "
+"gdy %s jest już zainstalowana."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+"Pakiet <em>%h</em> nie jest dostępny w żadnym skonfigurowanym repozytorium."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"Wersja pakietu w repozytorium <em>%h</em> nie jest zgodna, wymaga %s ale "
+"tylko %s jest dostępna."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "Wpisz, by przefiltrować…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Aktualizuj listy…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Aktualizacje"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "Zaktualizuj…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Wersja"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "Wersja niekompatybilna"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Oczekiwanie na wykonanie polecenia <em>opkg %h</em>…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "nieznane"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~%.1024mB skompresowany"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~%.1024mB zainstalowany"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "Wymaga wersji %h %h,\n"
+#~ "zainstalowanej %h"
diff --git a/package/luci/applications/luci-app-opkg/po/pt-br/opkg.po b/package/luci/applications/luci-app-opkg/po/pt-br/opkg.po
new file mode 100644 (file)
index 0000000..fc4d279
--- /dev/null
@@ -0,0 +1,315 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2018-09-20 21:19-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 2.1.1\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Ações"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configuração"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descrição"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Dispensar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Baixe e instale o pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Erro"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtro"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Espaço livre"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Iniciando a aplicação da configuração..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Baixe e instale o pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+#, fuzzy
+msgid "Needs upgrade"
+msgstr "Forçar a atualização"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Nenhuma informação disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Procurar pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Total Disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Não conectado"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configuração-OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nome do Pacote"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nome do Pacote"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Remover"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Limpar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Salvar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Iniciando a aplicação da configuração..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Tamanho"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Tamanho (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Atualizar listas"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Atualizar listas"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versão"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Esperando o término do comando..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "desconhecido"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/pt/opkg.po b/package/luci/applications/luci-app-opkg/po/pt/opkg.po
new file mode 100644 (file)
index 0000000..4da5190
--- /dev/null
@@ -0,0 +1,314 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:03+0200\n"
+"PO-Revision-Date: 2013-09-22 18:50+0200\n"
+"Last-Translator: Low <pedroloureiro1@sapo.pt>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Acções"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configuração"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descrição"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Descarregar e instalar pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Erro"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtro"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Espaço livre"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instalar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Ir para a página respectiva de configuração"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Descarregar e instalar pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Sem informação disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Procurar pacote"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Total Disponível"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Não ligado"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configuração-OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Nome do pacote"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Nome do pacote"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Remover"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Salvar"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Configuração do Dispositivo"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Tamanho"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Actualizar listas"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Actualizar listas"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versão"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "A aguardar que o comando termine..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "desconhecido"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/ro/opkg.po b/package/luci/applications/luci-app-opkg/po/ro/opkg.po
new file mode 100644 (file)
index 0000000..9947507
--- /dev/null
@@ -0,0 +1,310 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-04-01 23:12+0200\n"
+"Last-Translator: xcentric <webcctvservice@gmail.com>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Actiune"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Disponibil"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Anuleaza"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Configurare"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Descriere"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Descarca si instaleaza pachetul"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Eroare"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtreaza"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Spatiu liber"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Instalati"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Instalati"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Instalati"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Configurarea obisnuita"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Descarca si instaleaza pachetul"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Nici o informatie disponibila"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Gaseste pachet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Total disponibil"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Nu este conectat"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Configuratia-OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Numele pachetului"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Numele pachetului"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Elimina"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Salveaza"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Configurarea dispozitivului"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Marime"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Software"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versiune"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "necunoscut"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/ru/opkg.po b/package/luci/applications/luci-app-opkg/po/ru/opkg.po
new file mode 100644 (file)
index 0000000..8b51784
--- /dev/null
@@ -0,0 +1,323 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI: base\n"
+"POT-Creation-Date: 2010-05-09 01:01+0300\n"
+"PO-Revision-Date: 2019-01-15 13:35+0300\n"
+"Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
+"Language-Team: http://cyber-place.ru\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Действия"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "Автоматически удалять неиспользуемые зависимости"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Доступно"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"Ниже приведен список различных файлов конфигурации, используемых <em>opkg</"
+"em>. Используйте файл <em>opkg.conf</em> для глобальных настроек и "
+"<em>customfeeds.conf</em> для пользовательских настроек репозиториев. "
+"Конфигурация в других файлах может производтся, но такие настройки могут не "
+"сохраняться утилитой <em>sysupgrade</em>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Отменить"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "Очистить"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "Настройки менеджера пакетов..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "Зависимости"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Описание"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "Подробная информация о пакете <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Отклонить"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "Показано %d-%d из %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Загрузить и установить пакет"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "Ошибки"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "Запуск менеджера пакетов"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Фильтр"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Свободное место"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Установить"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "Установлено"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"Установка пакетов из недоверенных источников может привести к угрозе "
+"безопасности! Вы действительно хотите установить <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "Установить..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "Загрузка данных конфигурации..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "Загрузка информации о пакете..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "Ручная установка пакета"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "Требуется обновление"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "Следующая страница"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Нет доступной информации"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "Нет пакетов"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "Нет пакетов соответствующих запросу «<strong>%h</strong>»."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "Не доступно"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "Не установлено"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "Настройка OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Имя пакета"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "Имя пакета или URL..."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "Предыдущая страница"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "Вы действительно хотите установить <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Удалить"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "Удалить пакет <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+"Требуется примерно %.1024mБ свободного пространства для установки %d пакетов"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"Требуемый в качестве зависимости пакет <em>%h</em> не доступен ни в одном из "
+"сконфигурированных репозиториев."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "Требуется обновить до %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Сбросить"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Сохранить"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "Сохранение данных конфигурации..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Размер"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Размер (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Программное обеспечение"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr "Команда <em>opkg %h</em> завершилась с кодом ошибки <code>%d</code>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"Установленная версия пакета <em>%h</em> не совместима. Требуется установка "
+"%s для установки %s"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+"Пакет <em>%h</em> не доступен ни в одном из сконфигурированных репозиториев."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"Версия пакета <em>%h</em>, доступная в репозитории, несовместима. Требуется "
+"%s, но доступна только %s."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "Введите для фильтрации..."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "Обновить списки..."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "Обновления"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "Обновление..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Версия"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "Версия несовместима"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Ожидание завершения выполнения команды <em>opkg %h</em>..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "неизвестный"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~%.1024mБ сжато"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~%.1024mБ установлено"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "Требуется версия %h %h,\n"
+#~ "установлен %h"
diff --git a/package/luci/applications/luci-app-opkg/po/sk/opkg.po b/package/luci/applications/luci-app-opkg/po/sk/opkg.po
new file mode 100644 (file)
index 0000000..424315b
--- /dev/null
@@ -0,0 +1,295 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/sv/opkg.po b/package/luci/applications/luci-app-opkg/po/sv/opkg.po
new file mode 100644 (file)
index 0000000..c230067
--- /dev/null
@@ -0,0 +1,312 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-04-28 09:22+0200\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
+"Language-Team: none\n"
+"Language: sv\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"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Åtgärder"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Tillgänglig"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Konfiguration"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Beskrivning"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Ladda ner och installera paket"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Fel"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Filtrera"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Fritt utrymme"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Installera"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Installera"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Installera"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Gå till relevant konfigurationssida"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Ladda ner och installera paket"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Ingen information tillgänglig"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Hitta paket"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Totalt tillgängligt"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Inte ansluten"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Konfiguration"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Paketnamn"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Paketnamn"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Ta bort"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Återställ"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Spara"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Enhetskonfiguration"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Storlek"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Storlek (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Mjukvara"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "Uppdatera listor"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "Uppdatera listor"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Version"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Väntar på att kommandot ska avsluta..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "okänd"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/templates/opkg.pot b/package/luci/applications/luci-app-opkg/po/templates/opkg.pot
new file mode 100644 (file)
index 0000000..7af6c2c
--- /dev/null
@@ -0,0 +1,287 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/tr/opkg.po b/package/luci/applications/luci-app-opkg/po/tr/opkg.po
new file mode 100644 (file)
index 0000000..7a8414d
--- /dev/null
@@ -0,0 +1,303 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-09-13 22:59+0300\n"
+"Last-Translator: Yusuf Soyipek <yusuf@soyipek.com>\n"
+"Language-Team: none\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.1.1\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Eylemler"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Kullanılabilir"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Vazgeç"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Açıklama"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Reddet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Boş alan"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Yapılandırmaya dön"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Kullanılabilir Paketler"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "Toplam Mevcut"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Cihaz Yapılandırması"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Sıfırla"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Kaydet"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "Cihaz Yapılandırması"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Boyut"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Boyut (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Yazılım"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Versiyon"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/uk/opkg.po b/package/luci/applications/luci-app-opkg/po/uk/opkg.po
new file mode 100644 (file)
index 0000000..2995632
--- /dev/null
@@ -0,0 +1,316 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2018-12-29 23:30+0200\n"
+"Last-Translator: Yurii <yuripet@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Дії"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "Автоматичне видалення невикористовуваних залежностей"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Доступно"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"Нижче наведено список різних файлів конфігурації, котрі використовуються "
+"<em>opkg</em>. Використовуйте <em>opkg.conf</em> для глобальних налаштувань "
+"і <em>customfeeds.conf</em> для записів власного репозиторію. Конфігурацію в "
+"інших файлах може бути змінено, але вона зазвичай не зберігається при "
+"<em>оновленні системи</em>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "Очистити"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "Налаштування opkg…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "Залежності"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Опис"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "Подробиці про пакет <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "Відхилити"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "Відображається %d-%d із %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Завантажити та інсталювати пакети"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "Помилки"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "Виконання менеджера пакетів"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Фільтр"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "Вільне місце"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Інсталювати"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "Інстальовано"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+"Інсталяція пакетів з ненадійних джерел є потенційною загрозою безпеці! "
+"Дійсно спробувати інсталювати <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "Інсталювати…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "Завантаження даних конфігурації…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "Завантаження інформації про пакети…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "Інсталяція пакета вручну"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "Потребує оновлення"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "Наступна сторінка"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "Інформація відсутня"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "Немає пакетів"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "Немає пакетів, що відповідають \"<strong>%h</strong>\"."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "Недоступно"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "Не інстальовано"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "Конфігурація OPKG"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Назва пакета"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "Назва пакета чи URL-адреса…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "Попередня сторінка"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "Дійсно спробувати інсталювати <em>%h</em>?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Видалити"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "Видалити пакет <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr "Потрібно приблизно %.1024mB для інсталяції %d пакетів."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+"Необхідний за залежністю пакет <em>%h</em> не доступний ні в одному "
+"репозиторії."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "Потрібно оновити до %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Скинути"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Зберегти"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "Збереження даних конфігурації…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Розмір"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "Розмір (.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Програмне забезпечення"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr "Помилка виконання команди <em>opkg %h</em> з кодом <code>%d</code>."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+"Інстальована версія пакета <em>%h</em> несумісна, потрібно %s, а "
+"інстальовано %s."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+"Пакет <em>%h</em> не доступний ні в одному сконфігурованому репозиторії."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+"Версія пакету <em>%h</em> у репозиторії несумісна, потрібно %s, але доступна "
+"лише %s."
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "Введіть текст для фільтра…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "Оновити списки…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "Оновлення"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "Оновлення…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Версія"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "Несумісна версія"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "Очікуємо завершення виконання команди <em>opkg %h</em> …"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "невідомий"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~%.1024mB стиснуто"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~%.1024mB інстальовано"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "Потрібна версія %h %h,\n"
+#~ "інстальовано %h"
diff --git a/package/luci/applications/luci-app-opkg/po/vi/opkg.po b/package/luci/applications/luci-app-opkg/po/vi/opkg.po
new file mode 100644 (file)
index 0000000..59e5b60
--- /dev/null
@@ -0,0 +1,309 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-16 06:59+0200\n"
+"PO-Revision-Date: 2009-08-14 12:23+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "Hành động"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "Sẵn có"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "Bỏ qua"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "Cấu hình"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "Mô tả"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "Tải và cài đặt gói"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "Lỗi"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "Lọc"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "Cài đặt "
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "Cài đặt "
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "Cài đặt "
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "Đi tới trang cấu hình thích hợp"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "Tải và cài đặt gói"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "Tìm gói"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "(%s available)"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "Cài đặt "
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "OK "
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "Cấu hình OPKG-"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "Tên gói"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "Tên gói"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "Loại bỏ"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "Reset"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "Lưu"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "Dung lượng "
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "Phần mềm"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "Phiên bản"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-opkg/po/zh-cn/opkg.po b/package/luci/applications/luci-app-opkg/po/zh-cn/opkg.po
new file mode 100644 (file)
index 0000000..c8925d4
--- /dev/null
@@ -0,0 +1,309 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+# Zheng Qian <sotux82@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2018-12-11 09:07+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "动作"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr "自动移除未使用的依赖"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "可用"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+"以下列出了 <em>opkg</em> 所使用的各个配置文件。<em>opkg.conf</em> 用于全局配"
+"置,<em>customfeeds.conf</em> 用于描述自定义仓库。其他配置文件的变更在系统升"
+"级时默认不被保留。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "取消"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr "清除"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+msgid "Configure opkg…"
+msgstr "配置 opkg…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr "依赖"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "描述"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr "软件包 <em>%h</em> 详情"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr "解除"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr "正在显示 %d-%d,共 %d"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "下载并安装软件包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+msgid "Errors"
+msgstr "错误"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr "正在执行软件包管理器"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "过滤器"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "空闲空间"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "安装"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+msgid "Installed"
+msgstr "已安装"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr "从未信任的源安装软件包有潜在的安全隐患!您确定要安装 <em>%h</em> 吗?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+msgid "Install…"
+msgstr "安装…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+msgid "Loading configuration data…"
+msgstr "载入配置数据…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr "载入软件包信息…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+msgid "Manually install package"
+msgstr "手动安装软件包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr "需要升级"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr "下一页"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "无可用信息"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+msgid "No packages"
+msgstr "没有软件包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr "没有匹配“<strong>%h</strong>”的软件包。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+msgid "Not available"
+msgstr "不可用"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+msgid "Not installed"
+msgstr "未安装"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "确认"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+msgid "OPKG Configuration"
+msgstr "OPKG 配置"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "软件包名称"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+msgid "Package name or URL…"
+msgstr "软件包名称或 URL…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr "上一页"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr "真的要安装 <em>%h</em> 吗?"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "移除"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr "移除软件包 <em>%h</em>"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr "需要大约 %.1024mB 空间来安装 %d 个软件包。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr "依赖的软件包 <em>%h</em> 在所有仓库都未提供。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr "需要更新到 %h %h"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "复位"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+msgid "Saving configuration data…"
+msgstr "正在保存配置数据…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "大小"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr "大小(.ipk)"
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "软件包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr "<em>opkg %h</em> 命令失败,代码 <code>%d</code>。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr "已安装的软件包 <em>%h</em> 版本不兼容,要求 %s 而 %s 已安装。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr "软件包 <em>%h</em> 在所有已配置的仓库中都不存在。"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr "软件包 <em>%h</em> 在仓库中的版本不兼容,要求 %s 但仅可提供 %s。"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr "输入以过滤…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+msgid "Update lists…"
+msgstr "更新列表…"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+msgid "Updates"
+msgstr "更新"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr "升级…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "版本"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr "版本不兼容"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "等待命令 <em>opkg %h</em> 执行完成…"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "未知"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr "~%.1024mB 已压缩"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr "~%.1024mB 已安装"
+
+#~ msgid ""
+#~ "Require version %h %h,\n"
+#~ "installed %h"
+#~ msgstr ""
+#~ "要求 %h %h 版本,\n"
+#~ "已安装 %h"
diff --git a/package/luci/applications/luci-app-opkg/po/zh-tw/opkg.po b/package/luci/applications/luci-app-opkg/po/zh-tw/opkg.po
new file mode 100644 (file)
index 0000000..566edb6
--- /dev/null
@@ -0,0 +1,312 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-21 10:34+0200\n"
+"Last-Translator: omnistack <omnistack@gmail.com>\n"
+"Language-Team: none\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:107
+msgid "Actions"
+msgstr "動作"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:713
+msgid "Automatically remove unused dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:115
+msgid "Available"
+msgstr "可用"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:644
+msgid ""
+"Below is a listing of the various configuration files used by <em>opkg</em>. "
+"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
+"custom repository entries. The configuration in the other files may be "
+"changed but is usually not preserved by <em>sysupgrade</em>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:585
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:630
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:659
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:719
+msgid "Cancel"
+msgstr "取消"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:97
+msgid "Clear"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:110
+#, fuzzy
+msgid "Configure opkg…"
+msgstr "設定"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:562
+msgid "Dependencies"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:568
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:699
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:133
+msgid "Description"
+msgstr "描述"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:573
+msgid "Details for package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:765
+msgid "Dismiss"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:227
+msgid "Displaying %d-%d of %d"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:101
+msgid "Download and install package"
+msgstr "下載並安裝軟體包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:751
+#, fuzzy
+msgid "Errors"
+msgstr "錯誤"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:739
+msgid "Executing package manager"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:95
+msgid "Filter"
+msgstr "過濾器"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:88
+msgid "Free space"
+msgstr "剩餘空間"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:592
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:608
+msgid "Install"
+msgstr "安裝"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:178
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:389
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:116
+#, fuzzy
+msgid "Installed"
+msgstr "安裝"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:614
+msgid ""
+"Installing packages from untrusted sources is a potential security risk! "
+"Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:167
+#, fuzzy
+msgid "Install…"
+msgstr "安裝"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:639
+#, fuzzy
+msgid "Loading configuration data…"
+msgstr "到相應設定頁"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:772
+msgid "Loading package information…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:624
+#, fuzzy
+msgid "Manually install package"
+msgstr "下載並安裝軟體包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:377
+msgid "Needs upgrade"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:124
+msgid "Next page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:240
+msgid "No information available"
+msgstr "尚無可運用資訊"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:228
+#, fuzzy
+msgid "No packages"
+msgstr "搜尋軟體包"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:244
+msgid "No packages matching \"<strong>%h</strong>\"."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:409
+#, fuzzy
+msgid "Not available"
+msgstr "全部可用"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:394
+#, fuzzy
+msgid "Not installed"
+msgstr "尚未連線"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:103
+msgid "OK"
+msgstr "行"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:638
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:670
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:679
+#, fuzzy
+msgid "OPKG Configuration"
+msgstr "OPKG-設定值"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:130
+msgid "Package name"
+msgstr "軟體包名稱"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:102
+#, fuzzy
+msgid "Package name or URL…"
+msgstr "軟體包名稱"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:122
+msgid "Previous page"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:621
+msgid "Really attempt to install <em>%h</em>?"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:157
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:726
+msgid "Remove"
+msgstr "移除"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:704
+msgid "Remove package <em>%h</em>"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:558
+msgid "Require approx. %.1024mB size for %d package(s) to install."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:384
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:402
+msgid "Require version %h %h, installed %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:407
+msgid ""
+"Required dependency package <em>%h</em> is not available in any repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:375
+msgid "Requires update to %h %h"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:245
+msgid "Reset"
+msgstr "重置"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:676
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
+#, fuzzy
+msgid "Saving configuration data…"
+msgstr "設定設備"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:576
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:707
+msgid "Size"
+msgstr "大小"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:132
+msgid "Size (.ipk)"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/controller/opkg.lua:7
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:84
+msgid "Software"
+msgstr "軟體"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
+msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:380
+msgid ""
+"The installed version of package <em>%h</em> is not compatible, require %s "
+"while %s is installed."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:617
+msgid "The package <em>%h</em> is not available in any configured repository."
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:397
+msgid ""
+"The repository version of package <em>%h</em> is not compatible, require %s "
+"but only %s is available."
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:96
+msgid "Type to filter…"
+msgstr ""
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:108
+#, fuzzy
+msgid "Update lists…"
+msgstr "上傳清單"
+
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:117
+#, fuzzy
+msgid "Updates"
+msgstr "上傳清單"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:149
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:173
+msgid "Upgrade…"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:575
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:706
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:131
+msgid "Version"
+msgstr "版本"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:386
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:404
+msgid "Version incompatible"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:741
+#, fuzzy
+msgid "Waiting for the <em>opkg %h</em> command to complete…"
+msgstr "等待完整性指令..."
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:695
+#: applications/luci-app-opkg/luasrc/view/opkg.htm:89
+msgid "unknown"
+msgstr "未知"
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:534
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:693
+msgid "~%.1024mB compressed"
+msgstr ""
+
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:532
+#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:691
+msgid "~%.1024mB installed"
+msgstr ""
diff --git a/package/luci/applications/luci-app-p910nd/Makefile b/package/luci/applications/luci-app-p910nd/Makefile
new file mode 100644 (file)
index 0000000..adb35bd
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=p910nd - Printer server module
+LUCI_DEPENDS:=+p910nd
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua b/package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua
new file mode 100644 (file)
index 0000000..df47e9f
--- /dev/null
@@ -0,0 +1,15 @@
+-- Copyright 2008 Yanira <forum-2008@email.de>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.p910nd", package.seeall)
+
+function index()
+       if not nixio.fs.access("/etc/config/p910nd") then
+               return
+       end
+
+       local page
+
+       page = entry({"admin", "services", "p910nd"}, cbi("p910nd"), _("p910nd - Printer server"), 60)
+       page.dependent = true
+end
diff --git a/package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua b/package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua
new file mode 100644 (file)
index 0000000..0990138
--- /dev/null
@@ -0,0 +1,49 @@
+-- Copyright 2008 Yanira <forum-2008@email.de>
+-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local uci = luci.model.uci.cursor_state()
+local net = require "luci.model.network"
+local m, s, p, b
+
+m = Map("p910nd", translate("p910nd - Printer server"),
+        translatef("First you have to install the packages to get support for USB (kmod-usb-printer) or parallel port (kmod-lp)."))
+
+net = net.init(m.uci)
+
+s = m:section(TypedSection, "p910nd", translate("Settings"))
+s.addremove = true
+s.anonymous = true
+
+s:option(Flag, "enabled", translate("enable"))
+
+s:option(Value, "device", translate("Device")).rmempty = true
+
+b = s:option(Value, "bind", translate("Interface"), translate("Specifies the interface to listen on."))
+b.template = "cbi/network_netlist"
+b.nocreate = true
+b.unspecified = true
+
+function b.cfgvalue(...)
+       local v = Value.cfgvalue(...)
+       if v then
+               return (net:get_status_by_address(v))
+       end
+end
+
+function b.write(self, section, value)
+       local n = net:get_network(value)
+       if n and n:ipaddr() then
+               Value.write(self, section, n:ipaddr())
+       end
+end
+
+p = s:option(ListValue, "port", translate("Port"), translate("TCP listener port."))
+p.rmempty = true
+for i=0,9 do
+       p:value(i, 9100+i)
+end
+
+s:option(Flag, "bidirectional", translate("Bidirectional mode"))
+
+return m
diff --git a/package/luci/applications/luci-app-p910nd/po/ca/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ca/p910nd.po
new file mode 100644 (file)
index 0000000..a568f24
--- /dev/null
@@ -0,0 +1,66 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2014-07-01 03:56+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Mode bidireccional"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispositiu"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Primer heu d'instal·lar els paquets de suport USB (kmod-usb-printer) o de "
+"port paral·lel (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interfície"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Ajusts"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Especifica la interfície en que escoltar."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Port d'escolta TCP."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "habilita"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Servidor d'impressió"
+
+#~ msgid "port_help"
+#~ msgstr ""
+#~ "El p910nd escolta al port 910+N. Per exemple, 9100 per la primera "
+#~ "impressora (la 0)."
diff --git a/package/luci/applications/luci-app-p910nd/po/cs/p910nd.po b/package/luci/applications/luci-app-p910nd/po/cs/p910nd.po
new file mode 100644 (file)
index 0000000..985566e
--- /dev/null
@@ -0,0 +1,60 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-20 23:28+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Obousměrný režim"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Zařízení"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Nejprve je nutno nainstalovat balíčky přinášející podporu USB (kmod-usb-"
+"printer) či paralelního portu (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Rozhraní"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Nastavení"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Specifikuje rozhraní pro naslouchání."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Naslouchající TCP port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Povolit"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - tiskový server"
+
+#~ msgid "port_help"
+#~ msgstr "Nápověda pro výběr portu"
diff --git a/package/luci/applications/luci-app-p910nd/po/de/p910nd.po b/package/luci/applications/luci-app-p910nd/po/de/p910nd.po
new file mode 100644 (file)
index 0000000..7727283
--- /dev/null
@@ -0,0 +1,62 @@
+msgid ""
+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: 2012-09-12 14:00+0200\n"
+"Last-Translator: Jo-Philipp <jow@openwrt.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Bidirektionaler Modus"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Gerät"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Bevor p910nd verwendet werden kann muessen Pakete fuer USB (kmod-usb-"
+"printer) und Parallelport (kmod-lp) Support installiert werden."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "aktivieren"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Printserver"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd hoert auf Port 910+N. Z.B. 9100 fuer ersten Drucker"
diff --git a/package/luci/applications/luci-app-p910nd/po/el/p910nd.po b/package/luci/applications/luci-app-p910nd/po/el/p910nd.po
new file mode 100644 (file)
index 0000000..8baf7e5
--- /dev/null
@@ -0,0 +1,66 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-28 02:08+0200\n"
+"PO-Revision-Date: 2012-03-18 15:25+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Αμφίδρομη μέθοδος"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Συσκευή"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Πρώτα πρέπει να εγκατασταθούν τα πακέτα για να υπάρξει υποστήριξη για USB "
+"(kmod-usb-printer) ή παράλληλη θύρα (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Θύρα"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Θύρα ακρόασης TCP"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "ενεργοποίηση"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Εξυπηρετητής εκτυπώσεων"
+
+#~ msgid "port_help"
+#~ msgstr "port_help"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr ""
+#~ "p910nd ανταποκρίνεται στην πόρτα 910+N. π.χ. 9100 για τον πρώτο εκτυπωτή"
diff --git a/package/luci/applications/luci-app-p910nd/po/en/p910nd.po b/package/luci/applications/luci-app-p910nd/po/en/p910nd.po
new file mode 100644 (file)
index 0000000..2ff22a7
--- /dev/null
@@ -0,0 +1,62 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.1.1\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Bidirectional mode"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Printer server"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd listens on port 910+N. E.g. 9100 for the first printer."
diff --git a/package/luci/applications/luci-app-p910nd/po/es/p910nd.po b/package/luci/applications/luci-app-p910nd/po/es/p910nd.po
new file mode 100644 (file)
index 0000000..d53a91a
--- /dev/null
@@ -0,0 +1,62 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2019-04-02 00:05-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language: es\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 2.2.1\n"
+"Language-Team: \n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Modo bidireccional"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispositivo"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Debe instalar primero el soporte para puertos USB (kmod-usb-printer) o "
+"paralelo (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interfaz"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Puerto"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Configuración"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Especifica la interfaz en la que se escucha."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Puerto de escucha TCP."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "habilitar"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "Servidor de Impresión - p910nd"
+
+#~ msgid "port_help"
+#~ msgstr "puerto_ayuda"
diff --git a/package/luci/applications/luci-app-p910nd/po/fr/p910nd.po b/package/luci/applications/luci-app-p910nd/po/fr/p910nd.po
new file mode 100644 (file)
index 0000000..5e31826
--- /dev/null
@@ -0,0 +1,67 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2012-01-15 07:08+0200\n"
+"Last-Translator: desillu <ledesillusionniste@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Mode bi-directionnel"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Périphérique"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Vous devez d'abord installer les paquets pour gérer des imprimantes USB "
+"(kmod-usb-printer) ou sur port parallèle (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Paramètres"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Port d'écoute TCP."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "activer"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Serveur d'impression"
+
+#~ msgid "port_help"
+#~ msgstr "aide_port"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr ""
+#~ "p910nd écoute sur le port 910+N, par exemple 9100 pour la première "
+#~ "imprimante."
diff --git a/package/luci/applications/luci-app-p910nd/po/he/p910nd.po b/package/luci/applications/luci-app-p910nd/po/he/p910nd.po
new file mode 100644 (file)
index 0000000..f68e669
--- /dev/null
@@ -0,0 +1,64 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-09-10 03:43+0200\n"
+"Last-Translator: Snoof <sagim9@gmail.com>\n"
+"Language-Team: none\n"
+"Language: he\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "מצב דו-כיווני."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "התקן"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"ראשית עליך להתקין את החבילות כדי לקבל תמיכה ב- USB (kmod-usb-printer) או "
+"בחיבור מקבילי (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+# "יציאה" או "יציאת התקן" ?
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+#, fuzzy
+msgid "Port"
+msgstr "יציאת התקן"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "הגדרות"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "יציאת האזנה ל- TCP"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "לאפשר"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - שרת מדפסות"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd מאזין לפורט 910+N (למשל 9100) עבור המדפסת הראשונה."
diff --git a/package/luci/applications/luci-app-p910nd/po/hu/p910nd.po b/package/luci/applications/luci-app-p910nd/po/hu/p910nd.po
new file mode 100644 (file)
index 0000000..e7d8849
--- /dev/null
@@ -0,0 +1,60 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-03-28 16:41+0200\n"
+"Last-Translator: Gábor <vargalex@freemail.hu>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Kétirányú mód"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Eszköz"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"A p910nd használata előtt szükséges az USB (kmod-usb-printer), vagy "
+"párhuzamos (kmod-lp) portokat támogató csomagok telepítése."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Beállítások"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Engedélyezés"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Nyomtató szerver"
+
+#~ msgid "port_help"
+#~ msgstr "port_súgó"
diff --git a/package/luci/applications/luci-app-p910nd/po/it/p910nd.po b/package/luci/applications/luci-app-p910nd/po/it/p910nd.po
new file mode 100644 (file)
index 0000000..322acd4
--- /dev/null
@@ -0,0 +1,66 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2014-08-05 11:23+0200\n"
+"Last-Translator: morganfw <morganfw@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Modalità bidirezionale"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispositivo"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Devi prima aver installato i pacchetti per avere il supporto dell'USB (kmod-"
+"usb-printer) o della porta parallela (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Specifica l'interfaccia per l'ascolto."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Porta d'ascolto TCP."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Attiva"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Server di stampa"
+
+#~ msgid "port_help"
+#~ msgstr "Porta d'aiuto"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr ""
+#~ "p910nd è in ascolto sulla porta 910+N. Ad es. 9100 per la prima stampante."
diff --git a/package/luci/applications/luci-app-p910nd/po/ja/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ja/p910nd.po
new file mode 100644 (file)
index 0000000..9a8dcf0
--- /dev/null
@@ -0,0 +1,62 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:36+0200\n"
+"PO-Revision-Date: 2016-12-22 01:08+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"
+"Language-Team: \n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "双方向モード"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "デバイス"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"まず初めに、USB(kmod-usb-printer)または、パラレルポート(kmod-lp)をサポートす"
+"るためのパッケージをインストールしてください。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "インターフェース"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "ポート番号"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "設定"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "待ち受けるインターフェースを指定します。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP接続待ちポート"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "有効"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - プリンタサーバー"
+
+#~ msgid "port_help"
+#~ msgstr "port_help"
diff --git a/package/luci/applications/luci-app-p910nd/po/ms/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ms/p910nd.po
new file mode 100644 (file)
index 0000000..1fc1f38
--- /dev/null
@@ -0,0 +1,54 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr ""
diff --git a/package/luci/applications/luci-app-p910nd/po/no/p910nd.po b/package/luci/applications/luci-app-p910nd/po/no/p910nd.po
new file mode 100644 (file)
index 0000000..ef5d0fe
--- /dev/null
@@ -0,0 +1,58 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2013-03-21 23:05+0200\n"
+"Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language: no\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Toveis modus (bidirectional)"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Enhet"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Du må først installere pakkene som gir støtte for USB (kmod-usb-printer) "
+"eller parallellport (kmod-lp) skriver."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP lytte port."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Aktiver"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Skriverserver"
+
+#~ msgid "port_help"
+#~ msgstr ""
+#~ "p910nd lytter på port 910+N. (N=0 blir port 9100 for første skriver)"
diff --git a/package/luci/applications/luci-app-p910nd/po/pl/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pl/p910nd.po
new file mode 100644 (file)
index 0000000..e1b282c
--- /dev/null
@@ -0,0 +1,67 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-07-02 19:31+0200\n"
+"Last-Translator: obsy <cezary@eko.one.pl>\n"
+"Language-Team: none\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Tryb dwukierunkowy"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Urządzenie"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Po pierwsze, musisz zainstalować pakiety obsługujące interfejs USB (kmod-usb-"
+"printer) lub LPT (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interfejs"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Określa interfejs do nasłuchu."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Port nasłuchu TCP"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Włączony"
+
+# W sambie usługa też się nazywa "network shares", więc nie ma specjalnie potrzeby używania nazwy własnej demona "p910nd".
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "Serwer wydruku"
+
+#~ msgid "port_help"
+#~ msgstr "port_help"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd nasłuchuje na porcie 910X, np. 9100 dla pierwszej drukarki."
diff --git a/package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po
new file mode 100644 (file)
index 0000000..46017ed
--- /dev/null
@@ -0,0 +1,68 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2014-06-21 19:02+0200\n"
+"Last-Translator: Éder <eder.grigorio@openmailbox.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Modo bidirecional"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispositivo"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Primeiro você deve instalar os pacotes para obter suporte USB (kmod-usb-"
+"printer) ou porta paralela (kmod-lp)."
+
+# 20140621: edersg: tradução
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interface"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Configurações"
+
+# 20140621: edersg: tradução
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Especifica a interface para escuta."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Porta TCP de escuta."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "habilitado"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Servidor de impressão"
+
+#~ msgid "port_help"
+#~ msgstr ""
+#~ "p910nd escuta na porta 910x. Por exemplo, 9100 para a primeira impressora."
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd escuta na porta 910+N. Ex. 9100 para a primeira impressora."
diff --git a/package/luci/applications/luci-app-p910nd/po/pt/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pt/p910nd.po
new file mode 100644 (file)
index 0000000..932527a
--- /dev/null
@@ -0,0 +1,62 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:03+0200\n"
+"PO-Revision-Date: 2013-05-01 00:41+0200\n"
+"Last-Translator: pedromrgoncalves <pedromrgoncalves@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Modo bidirecional"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispositivo"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Primeiro você deve instalar os pacotes para obter suporte USB (kmod-usb-"
+"printer) ou porta paralela (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Porta"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Definições"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Porta TCP ouvinte"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "activar"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "P910nd - Servidor de impressão"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd escuta na porta 910+N. Ex. 9100 para a primeira impressora."
diff --git a/package/luci/applications/luci-app-p910nd/po/ro/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ro/p910nd.po
new file mode 100644 (file)
index 0000000..72a9ba4
--- /dev/null
@@ -0,0 +1,58 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-06-29 20:02+0200\n"
+"Last-Translator: xxvirusxx <condor20_05@yahoo.it>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Dispozitiv"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Interfaţă"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Setări"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "activează"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr ""
diff --git a/package/luci/applications/luci-app-p910nd/po/ru/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ru/p910nd.po
new file mode 100644 (file)
index 0000000..6550aa5
--- /dev/null
@@ -0,0 +1,61 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: p910nd\n"
+"POT-Creation-Date: 2012-08-15 11:42+0300\n"
+"PO-Revision-Date: 2018-01-22 13:16+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Двунаправленный режим"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Устройство"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Сначала вы должны установить пакеты модулей ядра, чтобы получить поддержку "
+"принтеров с интерфейсом USB (kmod-usb-printer) или LPT (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Порт"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Настройка"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Задать интерфейс для входящих соединений."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Порт для входящих соединений TCP."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Включить"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "Сервер печати p910nd"
diff --git a/package/luci/applications/luci-app-p910nd/po/sk/p910nd.po b/package/luci/applications/luci-app-p910nd/po/sk/p910nd.po
new file mode 100644 (file)
index 0000000..29a4495
--- /dev/null
@@ -0,0 +1,52 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr ""
diff --git a/package/luci/applications/luci-app-p910nd/po/sv/p910nd.po b/package/luci/applications/luci-app-p910nd/po/sv/p910nd.po
new file mode 100644 (file)
index 0000000..c029632
--- /dev/null
@@ -0,0 +1,55 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Enhet"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Först behöver du installera paketen för att få stöd för USB (kmod-usb-"
+"printer) eller paralell port (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "Gränssnitt"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Inställningar"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "Anger gränssnittet att lyssna på"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Port för TCP-lyssnare."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "aktivera"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd- Skrivar-server"
diff --git a/package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot b/package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot
new file mode 100644 (file)
index 0000000..b0881bf
--- /dev/null
@@ -0,0 +1,45 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr ""
diff --git a/package/luci/applications/luci-app-p910nd/po/tr/p910nd.po b/package/luci/applications/luci-app-p910nd/po/tr/p910nd.po
new file mode 100644 (file)
index 0000000..3f8b9b8
--- /dev/null
@@ -0,0 +1,57 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-10-11 23:24+0200\n"
+"Last-Translator: vincenzo <tayfun_ozturk@hotmail.com>\n"
+"Language-Team: none\n"
+"Language: tr\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"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Çift Yönlü Mod"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Aygıt"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"USB (kmod-usb-yazıcı) veya paralel port (kmod-lp) kullanabilmek için destek "
+"paketi yüklemeniz gerekebilir."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Port"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Dinlemedeki TCP portları"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Etkinleştir"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "P910nd_Yazıcı Sunucusu"
diff --git a/package/luci/applications/luci-app-p910nd/po/uk/p910nd.po b/package/luci/applications/luci-app-p910nd/po/uk/p910nd.po
new file mode 100644 (file)
index 0000000..d90a2cd
--- /dev/null
@@ -0,0 +1,58 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-05-26 18:35+0200\n"
+"Last-Translator: Yurii <yuripet@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Двонаправлений режим"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "Пристрій"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Спочатку вам слід інсталювати пакети для підтримки USB (kmod-usb-printer) "
+"або паралельного порту (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "Порт"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "Параметри"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "Порт TCP, що прослуховується"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "Увімкнути"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - сервер друку"
diff --git a/package/luci/applications/luci-app-p910nd/po/vi/p910nd.po b/package/luci/applications/luci-app-p910nd/po/vi/p910nd.po
new file mode 100644 (file)
index 0000000..7ed5764
--- /dev/null
@@ -0,0 +1,63 @@
+#  p910nd.pot
+#  generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-16 06:58+0200\n"
+"PO-Revision-Date: 2009-08-13 04:03+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "Chế độ 2 chiều"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr ""
+"Trước tiên, bạn cần phải cài đặt các gói để hỗ trợ cho cổng USB (kmod-usb-"
+"in), hoặc cổng song song (kmod-lp)."
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr ""
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - Máy in chủ"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd tiếp thu ở cổng 910+N. E.g. 9100 cho máy in đầu tiên."
diff --git a/package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po b/package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po
new file mode 100644 (file)
index 0000000..572e2fd
--- /dev/null
@@ -0,0 +1,63 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2018-08-07 20:00+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "双向模式"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "设备"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr "必须安装 USB 打印机驱动(kmod-usb-printer)或者并口驱动(kmod-lp)。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "接口"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "端口"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "设置"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "指定监听端口。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP 监听端口。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "启用"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - 打印服务器"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd 的监听端口是910+N,举例:9100用于监听第一台打印机"
diff --git a/package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po b/package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po
new file mode 100644 (file)
index 0000000..7e18967
--- /dev/null
@@ -0,0 +1,63 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2018-08-07 20:00+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:47
+msgid "Bidirectional mode"
+msgstr "雙向模式"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:20
+msgid "Device"
+msgstr "裝置"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:10
+msgid ""
+"First you have to install the packages to get support for USB (kmod-usb-"
+"printer) or parallel port (kmod-lp)."
+msgstr "必須安裝 USB 印表機驅動(kmod-usb-printer)或者並口驅動(kmod-lp)。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Interface"
+msgstr "介面"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "Port"
+msgstr "埠"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:14
+msgid "Settings"
+msgstr "設定"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:22
+msgid "Specifies the interface to listen on."
+msgstr "指定監聽埠。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:41
+msgid "TCP listener port."
+msgstr "TCP 監聽埠。"
+
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:18
+msgid "enable"
+msgstr "啟用"
+
+#: applications/luci-app-p910nd/luasrc/controller/p910nd.lua:13
+#: applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua:9
+msgid "p910nd - Printer server"
+msgstr "p910nd - 列印伺服器"
+
+#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
+#~ msgstr "p910nd 的監聽埠是910+N,舉例:9100用於監聽第一臺印表機"
diff --git a/package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd b/package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd
new file mode 100755 (executable)
index 0000000..80f6d62
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@p910nd[-1]
+       add ucitrack p910nd
+       set ucitrack.@p910nd[-1].init=p910nd
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-uhttpd/Makefile b/package/luci/applications/luci-app-uhttpd/Makefile
new file mode 100644 (file)
index 0000000..3014770
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# 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:=uHTTPd Webserver Configuration
+LUCI_DEPENDS:=+uhttpd
+LUCI_PKGARCH:=all
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
+
+LUA_TARGET:=source
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua b/package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua
new file mode 100644 (file)
index 0000000..2e80dd6
--- /dev/null
@@ -0,0 +1,17 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.uhttpd.uhttpd", package.seeall)
+
+function index()
+       if not nixio.fs.access("/etc/config/uhttpd") then
+               return
+       end
+
+       local page
+
+       page = entry({"admin", "services", "uhttpd"}, cbi("uhttpd/uhttpd"), _("uHTTPd"))
+       page.leaf = true
+
+end
+
diff --git a/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua b/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua
new file mode 100644 (file)
index 0000000..eadf9b5
--- /dev/null
@@ -0,0 +1,230 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require("nixio.fs")
+
+local m = Map("uhttpd", translate("uHTTPd"),
+             translate("A lightweight single-threaded HTTP(S) server"))
+
+local ucs = m:section(TypedSection, "uhttpd", "")
+ucs.addremove = true
+ucs.anonymous = false
+
+local lhttp = nil
+local lhttps = nil
+local cert_file = nil
+local key_file = nil
+
+ucs:tab("general", translate("General Settings"))
+ucs:tab("server", translate("Full Web Server Settings"), translate("For settings primarily geared to serving more than the web UI"))
+ucs:tab("advanced", translate("Advanced Settings"), translate("Settings which are either rarely needed or which affect serving the WebUI"))
+
+lhttp = ucs:taboption("general", DynamicList, "listen_http", translate("HTTP listeners (address:port)"), translate("Bind to specific interface:port (by specifying interface address"))
+lhttp.datatype = "list(ipaddrport(1))"
+
+function lhttp.validate(self, value, section)
+        local have_https_listener = false
+        local have_http_listener = false
+       if lhttp and lhttp:formvalue(section) and (#(lhttp:formvalue(section)) > 0) then
+               for k, v in pairs(lhttp:formvalue(section)) do
+                       if v and (v ~= "") then
+                               have_http_listener = true
+                               break
+                       end
+               end
+       end
+       if lhttps and lhttps:formvalue(section) and (#(lhttps:formvalue(section)) > 0) then
+               for k, v in pairs(lhttps:formvalue(section)) do
+                       if v and (v ~= "") then
+                               have_https_listener = true
+                               break
+                       end
+               end
+       end
+       if not (have_http_listener or have_https_listener) then
+               return nil, "must listen on at least one address:port"
+       end
+       return DynamicList.validate(self, value, section)
+end
+
+lhttps = ucs:taboption("general", DynamicList, "listen_https", translate("HTTPS listener (address:port)"), translate("Bind to specific interface:port (by specifying interface address"))
+lhttps.datatype = "list(ipaddrport(1))"
+lhttps:depends("cert")
+lhttps:depends("key")
+
+function lhttps.validate(self, value, section)
+        local have_https_listener = false
+        local have_http_listener = false
+       if lhttps and lhttps:formvalue(section) and (#(lhttps:formvalue(section)) > 0) then
+               for k, v in pairs(lhttps:formvalue(section)) do
+                       if v and (v ~= "") then
+                               have_https_listener = true
+                               break
+                       end
+               end
+               if have_https_listener and ((not cert_file) or (not cert_file:formvalue(section)) or (cert_file:formvalue(section) == ""))  then
+                       return nil, "must have certificate when using https"
+               end
+               if have_https_listener and ((not key_file) or (not key_file:formvalue(section)) or (key_file:formvalue(section) == "")) then
+                       return nil, "must have key when using https"
+               end
+       end
+       if lhttp and (lhttp:formvalue(section)) and (#lhttp:formvalue(section) > 0) then
+               for k, v in pairs(lhttp:formvalue(section)) do
+                       if v and (v ~= "") then
+                               have_http_listener = true
+                               break
+                       end
+               end
+       end
+       if not (have_http_listener or have_https_listener) then
+               return nil, "must listen on at least one address:port"
+       end
+       return DynamicList.validate(self, value, section)
+end
+
+o = ucs:taboption("general", Flag, "redirect_https", translate("Redirect all HTTP to HTTPS"))
+o.default = o.enabled
+o.rmempty = false
+
+o = ucs:taboption("general", Flag, "rfc1918_filter", translate("Ignore private IPs on public interface"), translate("Prevent access from private (RFC1918) IPs on an interface if it has an public IP address"))
+o.default = o.enabled
+o.rmempty = false
+
+cert_file = ucs:taboption("general", FileUpload, "cert", translate("HTTPS Certificate (DER Encoded)"))
+
+key_file = ucs:taboption("general", FileUpload, "key", translate("HTTPS Private Key (DER Encoded)"))
+
+o = ucs:taboption("general", Button, "remove_old", translate("Remove old certificate and key"),
+                 translate("uHTTPd will generate a new self-signed certificate using the configuration shown below."))
+o.inputstyle = "remove"
+
+function o.write(self, section)
+       if cert_file:cfgvalue(section) and fs.access(cert_file:cfgvalue(section)) then fs.unlink(cert_file:cfgvalue(section)) end
+       if key_file:cfgvalue(section) and fs.access(key_file:cfgvalue(section)) then fs.unlink(key_file:cfgvalue(section)) end
+       luci.sys.call("/etc/init.d/uhttpd restart")
+       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "uhttpd"))
+end
+
+o = ucs:taboption("general", Button, "remove_conf", translate("Remove configuration for certificate and key"),
+       translate("This permanently deletes the cert, key, and configuration to use same."))
+o.inputstyle = "remove"
+
+function o.write(self, section)
+       if cert_file:cfgvalue(section) and fs.access(cert_file:cfgvalue(section)) then fs.unlink(cert_file:cfgvalue(section)) end
+       if key_file:cfgvalue(section) and fs.access(key_file:cfgvalue(section)) then fs.unlink(key_file:cfgvalue(section)) end
+       self.map:del(section, "cert")
+       self.map:del(section, "key")
+       self.map:del(section, "listen_https")
+       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "uhttpd"))
+end
+
+o = ucs:taboption("server", DynamicList, "index_page", translate("Index page(s)"), translate("E.g specify with index.html and index.php when using PHP"))
+o.optional = true
+o.placeholder = "index.html"
+
+o = ucs:taboption("server", DynamicList, "interpreter", translate("CGI filetype handler"), translate("Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/usr/bin/php-cgi')"))
+o.optional = true
+
+o = ucs:taboption("server", Flag, "no_symlinks", translate("Do not follow symlinks outside document root"))
+o.optional = true
+
+o = ucs:taboption("server", Flag, "no_dirlists", translate("Do not generate directory listings."))
+o.default = o.disabled
+
+o = ucs:taboption("server", DynamicList, "alias", translate("Aliases"), translate("(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"))
+o.optional = true
+
+o = ucs:taboption("server", Value, "realm", translate("Realm for Basic Auth"))
+o.optional = true
+o.placeholder = luci.sys.hostname() or "OpenWrt"
+
+local httpconfig = ucs:taboption("server", Value, "config", translate("Config file (e.g. for credentials for Basic Auth)"), translate("Will not use HTTP authentication if not present"))
+httpconfig.optional = true
+
+o = ucs:taboption("server", Value, "error_page", translate("404 Error"), translate("Virtual URL or CGI script to display on status '404 Not Found'.  Must begin with '/'"))
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "home", translate("Document root"),
+                 translate("Base directory for files to be served"))
+o.default = "/www"
+o.datatype = "directory"
+
+o = ucs:taboption("advanced", Value, "cgi_prefix", translate("Path prefix for CGI scripts"), translate("CGI is disabled if not present."))
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "lua_prefix", translate("Virtual path prefix for Lua scripts"))
+o.placeholder = "/lua"
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "lua_handler", translate("Full real path to handler for Lua scripts"), translate("Embedded Lua interpreter is disabled if not present."))
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "ubus_prefix", translate("Virtual path prefix for ubus via JSON-RPC integration"), translate("ubus integration is disabled if not present"))
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "ubus_socket", translate("Override path for ubus socket"))
+o.optional = true
+
+o = ucs:taboption("advanced", Flag, "ubus_cors", translate("Enable JSON-RPC Cross-Origin Resource Support"))
+o.default = o.disabled
+o.optional = true
+
+o = ucs:taboption("advanced", Flag, "no_ubusauth", translate("Disable JSON-RPC authorization via ubus session API"))
+o.optional= true
+o.default = o.disabled
+
+o = ucs:taboption("advanced", Value, "script_timeout", translate("Maximum wait time for Lua, CGI, or ubus execution"))
+o.placeholder = 60
+o.datatype = "uinteger"
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "network_timeout", translate("Maximum wait time for network activity"))
+o.placeholder = 30
+o.datatype = "uinteger"
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "http_keepalive", translate("Connection reuse"))
+o.placeholder = 20
+o.datatype = "uinteger"
+o.optional = true
+
+o = ucs:taboption("advanced", Value, "tcp_keepalive", translate("TCP Keepalive"))
+o.optional = true
+o.datatype = "uinteger"
+o.default = 1
+
+o = ucs:taboption("advanced", Value, "max_connections", translate("Maximum number of connections"))
+o.optional = true
+o.datatype = "uinteger"
+
+o = ucs:taboption("advanced", Value, "max_requests", translate("Maximum number of script requests"))
+o.optional = true
+o.datatype = "uinteger"
+
+local s = m:section(TypedSection, "cert", translate("uHTTPd Self-signed Certificate Parameters"))
+
+s.template  = "cbi/tsection"
+s.anonymous = true
+
+o = s:option(Value, "days", translate("Valid for # of Days"))
+o.default = 730
+o.datatype = "uinteger"
+
+o = s:option(Value, "bits", translate("Length of key in bits"))
+o.default = 2048
+o.datatype = "min(1024)"
+
+o = s:option(Value, "commonname", translate("Server Hostname"), translate("a.k.a CommonName"))
+o.default = luci.sys.hostname()
+
+o = s:option(Value, "country", translate("Country"))
+o.default = "ZZ"
+
+o = s:option(Value, "state", translate("State"))
+o.default = "Unknown"
+
+o = s:option(Value, "location", translate("Location"))
+o.default = "Unknown"
+
+return m
diff --git a/package/luci/applications/luci-app-uhttpd/po/de/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/de/uhttpd.po
new file mode 100644 (file)
index 0000000..07be9a9
--- /dev/null
@@ -0,0 +1,255 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Leichtgewichtiger single-thread HTTP(s) Server"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "Erweiterte Einstellungen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "Basisverzeichnis für freizugebende Dateien"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr "An spezifisches Interface:Port binden"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "CGI Dateityp handler"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "CGI ist deaktiviert falls nicht vorhanden"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Konfigurationsdatei (z.B. für Zugangssaten bei Basic Auth)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "Verbindung wiederverwenden"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "Land"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Deaktiviere JSON-RPC Authorisitation via ubus session API"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "Folge keine Symlinks außerhalb Basisverzeichnis"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "Generiere keine Verzeichnis Auflistung"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "Basisverzeichnis"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "z.B. setze index.html und index.php falls PHP genutzt wird"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "Eingebetteter LUA-Interpreter ist deaktiviert falls nichvt verfügbar"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Aktiviere JSON-RPC Cross-Oritin Ressourcen Unterstüttung"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+"Für Einstellung die tiefgreifender sind als über die Web UI einstellbar"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "Alle web Server Einstellunge"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Vollständiger Pfad für handler von LUA Scripten"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "Allgemeine Einstellungen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "HTTP listener (Adresse:Port)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS Zertifikat (DER kodiert)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS Private Key (DER kodiert)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "HTTPS Listener (Adresse:Port)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "Ignoriere private IPs auf öffentlichem Interface"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "Index Seite(n)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "Länge des Keys in Bits"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "Ort"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "Maximale Anzahl an Verbindungen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "Maximale Anzahl an Skript-Anfragen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Maximale Wartezeit für LUA, CGI oder ubus Aufrufe"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "Maximale Wartezeit für Netwerk"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "Überschreibe Pfade für ubus Socket"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "Pfad Prexif für CGI-Skripte"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Verweigere Zugriff von privaten (RFC1918) IPs über ein Interface, das eine "
+"öffentliche IP Adresse hat"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Leite HTTP auf HTTPS um"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "Entferne Konfiguration für Zertifikat und Key"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "Entferne altes Zertifikat und Key"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "Server Hostname"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Einstellungen die entweder kaum gebraucht werden, oder auch die WebUI "
+"beeinflussen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "Status"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Dies löscht das Zertifikat, Key und Konfiguration endgültig."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "Gültig für # Tage"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"Virtuelle URL oder CGI-Script um den Status '404 Not Found' anzuzueigen. "
+"Muss mit '/' beginnen"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Virtuelles Pfad Prefix für LUA-Skripte"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Virtuelles Pfad Präfix für ubus per JSON-RPC"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "Nutzt keine HTTP Authentifizierung falls nicht vorhanden"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "uHTTPd selbst-signierte Zertifikat Parameter"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd wird ein selbstsigniertes Zertifikat mit dieser Konfiguration "
+"erstellen,siehe unten"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "ubus Integration ist deaktiviert falls nicht vorhanden"
diff --git a/package/luci/applications/luci-app-uhttpd/po/en/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/en/uhttpd.po
new file mode 100644 (file)
index 0000000..67c06d8
--- /dev/null
@@ -0,0 +1,265 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2019-01-09 07:00-0500\n"
+"Last-Translator: Daniel F. Dickinson <cshored@theshore.com>\n"
+"Language-Team: English\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "404 Error"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "A lightweight single-threaded HTTP(S) server"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "Advanced Settings"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "Aliases"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "Base directory for files to be served"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr "Bind to specific interface:port (by specifying interface address"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "CGI filetype handler"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "CGI is disabled if not present."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Config file (e.g. for credentials for Basic Auth)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "Connection reuse"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "Country"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Disable JSON-RPC authorization via ubus session API"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "Do not follow symlinks outside document root"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "Do not generate directory listings."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "Document root"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "E.g specify with index.html and index.php when using PHP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "Embedded Lua interpreter is disabled if not present."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Enable JSON-RPC Cross-Origin Resource Support"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "For settings primarily geared to serving more than the web UI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "Full Web Server Settings"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Full real path to handler for Lua scripts"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "General Settings"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "HTTP listeners (address:port)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS Certificate (DER Encoded)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS Private Key (DER Encoded)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "HTTPS listener (address:port)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "Ignore private IPs on public interface"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "Index page(s)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "Length of key in bits"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "Location"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "Maximum number of connections"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "Maximum number of script requests"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Maximum wait time for Lua, CGI, or ubus execution"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "Maximum wait time for network activity"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "Override path for ubus socket"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "Path prefix for CGI scripts"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "Realm for Basic Auth"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Redirect all HTTP to HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "Remove configuration for certificate and key"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "Remove old certificate and key"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "Server Hostname"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "State"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "TCP Keepalive"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "This permanently deletes the cert, key, and configuration to use same."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "Valid for # of Days"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Virtual path prefix for Lua scripts"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Virtual path prefix for ubus via JSON-RPC integration"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "Will not use HTTP authentication if not present"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "a.k.a CommonName"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "uHTTPd Self-signed Certificate Parameters"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "ubus integration is disabled if not present"
diff --git a/package/luci/applications/luci-app-uhttpd/po/es/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/es/uhttpd.po
new file mode 100644 (file)
index 0000000..c11a3a3
--- /dev/null
@@ -0,0 +1,277 @@
+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.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path) o (just /old/path which becomes /cgi-prefix/old/path)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "Error 404"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Un servidor HTTP(S) liviano de un solo hilo."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "Ajustes avanzados"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "Alias"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "Directorio base para archivos a ser servidos"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Enlace a una interfaz específica: puerto (especificando la dirección de la "
+"interfaz"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "Controlador de tipo de archivo CGI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "CGI está deshabilitado si no está presente."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr ""
+"Archivo de configuración (por ejemplo, para credenciales para autenticación "
+"básica)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "Reutilización de la conexión"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "País"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr ""
+"Deshabilitar la autorización JSON-RPC a través de la API de sesión ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "No siga los enlaces simbólicos fuera de la raíz del documento."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "No generar listados de directorios."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "Raíz del documento"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Ej. especifique con index.html e index.php cuando use PHP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "El intérprete incorporado de Lua se deshabilita si no está presente."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Habilitar el soporte de recursos de origen cruzado JSON-RPC"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+"Para configuraciones principalmente orientadas a servir más que la interfaz "
+"de usuario web"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "Configuración completa del servidor web"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Ruta real completa al controlador para scripts Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "Ajustes generales"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "Escuchas HTTP (direccion:puerto)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Certificado HTTPS (DER codificado)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Clave privada HTTPS (DER codificado)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "Oyente HTTPS (dirección:puerto)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "Ignorar las direcciones IP privadas en la interfaz pública"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "Página(s) de índice"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Intérprete para asociar con terminaciones de archivos ('sufijo=handler', por "
+"ejemplo, '.php=/usr/bin/php-cgi')"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "Longitud de la clave en bits"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "Ubicación"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "Número máximo de conexiones"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "Número máximo de solicitudes de script"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Tiempo máximo de espera para la ejecución de Lua, CGI o ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "Tiempo máximo de espera para la actividad de la red"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "Anular ruta para ubus socket"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "Prefijo de ruta para scripts CGI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Impedir el acceso desde direcciones IP privadas (RFC1918) en una interfaz si "
+"tiene una dirección IP pública"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "Reino para la Autenticación Básica"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Redirigir todos los HTTP a HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "Eliminar configuración para certificado y clave"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "Eliminar certificado y clave antiguos"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "Nombre de host del servidor"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Configuraciones que rara vez son necesarias o que afectan el servicio de la "
+"WebUI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "Estado"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "Mantener vivo TCP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr ""
+"Esto elimina permanentemente el certificado, la clave y la configuración "
+"para utilizarlo."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "Válido por # de días"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"URL virtual o script CGI para mostrar en el estado '404 No encontrado'. Debe "
+"comenzar con '/'"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Prefijo de ruta virtual para scripts Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Prefijo de ruta virtual para ubus a través de la integración JSON-RPC"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "No utilizará la autenticación HTTP si no está presente"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "a.k.a Nombre común"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Parámetros del certificado autofirmado de uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd generará un nuevo certificado autofirmado utilizando la configuración "
+"que se muestra a continuación."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "La integración de ubus está deshabilitada si no está presente"
diff --git a/package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po
new file mode 100644 (file)
index 0000000..0833005
--- /dev/null
@@ -0,0 +1,268 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-02-05 14:54+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 2.0.6\n"
+"X-Poedit-Basepath: .\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path) または (just /old/path which becomes /cgi-prefix/old/"
+"path)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "404 エラー"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "軽量なシングル スレッド HTTP(S) サーバーです。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "詳細設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "エイリアス"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "サーバーがホストするファイルのベースディレクトリです。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"インターフェースのアドレスを用いて、特定の インターフェース:ポート にバインド"
+"します。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "CGIファイル形式 ハンドラー"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "指定しない場合、CGIは無効になります。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "設定ファイル(例: 基本認証用の資格情報)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "接続の再使用"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "国"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "ubus セッションAPI経由のJSON-RPC認証を無効にする"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "ドキュメント ルート外へのシンボリックリンクを追随しない"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "ディレクトリの待ち受けを生成しない"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "ドキュメント ルート"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "index.html や、PHPを使用しているときは index.php を設定します。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "指定しない場合、組込 Lua インタープリタは無効になります。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "主に、Web UI以上のものを提供することを対象とした設定です。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "完全なWebサーバー設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Lua スクリプト用ハンドラへの絶対パス"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "一般設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "HTTP 待ち受け(アドレス:ポート)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS 証明書(DER エンコード)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS 秘密鍵(DER エンコード)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "HTTPS 待ち受け(アドレス:ポート)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "公開側インターフェースでのプライベートIPを無視する"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "インデックス ページ"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"ファイル拡張子に関連付けるインタープリタです。('suffix=handler'、例: '.php=/"
+"usr/bin/php-cgi')"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "鍵のビット数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "市区町村"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "最大接続数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "スクリプトの最大リクエスト数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "LuaやCGI、ubus実行の最大待機時間"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "ネットワークアクティビティの最大待機時間"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "ubus ソケットのパスを上書きする"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "CGI スクリプトのパスプレフィクス"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"グローバル IPアドレスを持つインターフェースでは、プライベート IP (RFC1918) か"
+"らのアクセスをブロックします。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "基本認証の領域名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "全ての HTTP を HTTPS にリダイレクトする"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "証明書と鍵の設定を削除する"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "古い証明書と鍵を削除する"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "サーバー ホスト名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr "まれに必要とされる設定、または Web UI の提供に影響する設定です。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "都道府県"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "TCP キープアライブ"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "有効日数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"'404 Not Found' ステータスを表示するための仮想 URL または CGI スクリプトで"
+"す。 '/' から始まる必要があります。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Lua スクリプトへの仮想パスプレフィクス"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "指定しない場合、HTTP 認証は使用されません。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "共通名"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "uHTTPd 自己署名証明書 パラメーター"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr "uHTTPd は、下に表示されている設定で新しい自己署名証明書を生成します。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "指定しない場合、ubus 統合は無効になります。"
diff --git a/package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po
new file mode 100644 (file)
index 0000000..0f1aca5
--- /dev/null
@@ -0,0 +1,268 @@
+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"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+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)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "Erro 404"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Um servidor HTTP(S) leve de únida thread."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "Opções Avançadas"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "Pseudônimos (Aliases)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "Diretório Base para publicar arquivos"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Escute em uma interface:porta específica (especificando o endereço da "
+"interface"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "Interpretador de tipo de arquivo CGI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "O CGI estará desabilitado se não presente."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Arquivo de configuração (ex: credenciais para autenticação básica)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "Reutilizar conexão"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "País"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Desabilita a autorização JSON-RPC através da API de sessão ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "Não siga ligações simbólicas (symlinks) para fora do documento raiz"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "Não gere listagens de diretórios"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "Documento Raiz"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Ex: use index.html e index.php quando usar PHP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "O interpretador Lua embutido será desabilitado se não presente."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Habilite o suporte para recursos JSON-RPC de origem cruzada"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "Para ajustes envolvidos com mais do que prover a interface web"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "Configurações Completas do Servidor Web"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Caminho completo para o interpretador de scripts Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "Escutas do HTTP (endereço:porta)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Certificado do HTTPS (codificado em formato PEM)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Chave Privada do HTTPS (codificado como DER)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "Escuta do HTTPS (endereço:porta)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "Ignore endereços IP privados na interface pública"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "Página(s) Índice(s)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+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')"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "Comprimento da chave em bits"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "Localização"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "Número máximo de requisições para script"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "Número máximo de requisições para script"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Tempo máximo de espera para execuções de Lua, CGI ou ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "Tempo máximo de espera para atividade na rede"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "Sobrescrever o caminho do socket ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "Prefixo do caminho para scripts CGI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+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"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "Reino para Autenticação Simples"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Redirecionar todo tráfego HTTP para HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "Remove a configuração para o certificado e chave"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "Remove os certificados e chaves antigas"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "Nome do Servidor"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+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"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "Estado"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "Manter conexões TCP abertas (Keepalive)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Isto apaga permanentemente o certificado, a chave e a configuração."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "Valido por # dias"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+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 '/'"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Prefixo do caminho virtual para scripts Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+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"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "Não usar autenticação HTTP se não presente"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "também conhecido como Nome Comum"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Parâmetros do Certificado Auto-assinado do uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+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."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "A integração com o ubus será desativada se não presente"
diff --git a/package/luci/applications/luci-app-uhttpd/po/ru/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/ru/uhttpd.po
new file mode 100644 (file)
index 0000000..3e2834f
--- /dev/null
@@ -0,0 +1,279 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: uhttpd\n"
+"POT-Creation-Date: 2017-12-06 22:30+0300\n"
+"PO-Revision-Date: 2018-01-24 15:00+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/старый/путь=/новый/путь) или (просто /старый/путь становится /cgi-prefix/"
+"старый/путь)."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "Ошибка 404"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Легкий однопоточный HTTP(S) сервер."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "Псевдонимы (Aliases)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "Основная папка для файлов, которые будут обслуживаться сервером."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Привязка к конкретному интерфейсу:порту (путем указания адреса интерфейса)."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "Обработчик<br />типа файла CGI"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "CGI отключается, если он отсутствует."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Config файл"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "Повторное использование соединения"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "Страна"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Отключение авторизации<br />JSON-RPC через API<br />в систему ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr ""
+"Не следовать по символическим ссылкам<br />вне корневого каталога документов"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "Не создавать списки папок"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "Основная папка"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Например, укажите index.html и index.php если использовуется PHP."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr ""
+"Встроенный обработчик скриптов Lua отключается, если скрипт отсутствует."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Включение поддержки JSON-RPC разных источников"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+"Страница в основном предназначена для настройки параметров обслуживания "
+"сервера, а не веб-интерфейса."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "Полные настройки web сервера"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Полный путь<br />к обработчику<br />скриптов Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "Основные настройки"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "Входящие HTTP<br />(адрес:порт)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Сертификат HTTPS (кодировка DER)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Приватный ключ HTTPS (кодировка DER)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "Входящие HTTPS<br />(адрес:порт)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "Игнорировать приватные<br />IP-адреса на<br />публичном интерфейсе"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "Страница(ы) индекса"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Обработчик для сопоставления расширений файлов ('суффикс=обработчик', "
+"например: '.php=/usr/bin/php-cgi')."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "Длина ключа в битах"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "Расположение"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "Максимальное количество соединений"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "Максимальное количество запросов скрипта"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Максимальное время ожидания для Lua, CGI,<br />или выполнение ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "Максимальное время ожидания сетевой активности"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "Переопределить<br />путь для сокета ubus"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "Префикс пути<br />для CGI скриптов"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Запретить доступ к приватному интерфейсу IPS (RFC1918), если он имеет "
+"публичный IP-адрес."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "Хост для аутентификации"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Перенаправление всех<br />HTTP на HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "Удалить настройки для сертификата и ключа"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "Удалить старый сертификат и ключ"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "Имя хоста"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Страница содержит параметры, которые редко используются или влияют на "
+"обслуживание веб-интерфейса."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "Указывать"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "TCP активность"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Полное удаление сертификата, ключа и настроек вкладки меню cнизу."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "Действителен в течение указанного кол-ва дней"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"Виртуальный URL-адрес или CGI скрипт для отображения статуса '404 не "
+"найдено'. Надо начинать с '/'."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Виртуальный путь<br />префикса<br />для скриптов Lua"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Виртуальный префикс<br />пути для ubus через<br />интеграцию JSON-RPC"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr ""
+"Например, учетные данные для основной авторизации.<br />Не будет "
+"использоваться проверка подлинности HTTP, если она отсутствует."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "Имя хоста сервера, так называемое - 'CommonName'."
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Параметры самозаверяющего сертификата uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd создаст самозаверяющий сертификат используя вкладку расположенную "
+"ниже."
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "Интеграция с ubus будет отключена, если она отсутствует."
diff --git a/package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot b/package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot
new file mode 100644 (file)
index 0000000..627d079
--- /dev/null
@@ -0,0 +1,246 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr ""
diff --git a/package/luci/applications/luci-app-uhttpd/po/zh-cn/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/zh-cn/uhttpd.po
new file mode 100644 (file)
index 0000000..cefc3aa
--- /dev/null
@@ -0,0 +1,257 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-17 17:20+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path)或(只写 /old/path,将变成 /cgi-prefix/old/path)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "404 错误"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "轻量级单线程 HTTP(S) 服务器"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "高级设置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "别名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "基本文件提供目录"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr "绑定到特定接口:端口(通过指定接口地址"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "CGI 文件类型处理程序"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "如果不存在,CGI 将被禁用。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "配置文件(例如,基本身份验证的凭据)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "连接重用"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "国家"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "通过 ubus 会话 API 禁用 JSON-RPC 授权"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "不要跟随符号链接到文档根目录之外"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "不要生成目录列表。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "文档根"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "例如,使用 PHP 时可指定为 index.html 和 index.php"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "如果不存在,嵌入式 Lua 解释器将被禁用。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "启用 JSON-RPC 跨域资源支持"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "适用于主要服务于 Web UI 的设置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "完整的 Web 服务器设置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Lua 脚本处理程序的完整真实路径"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "常规设置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "HTTP 监听(地址:端口)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS 证书(DER 编码)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS 私钥(DER 编码)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "HTTPS 监听(地址:端口)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "忽略公共接口上的私有 IP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "索引页面"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr "文件结尾关联的解释器(“后缀=处理程序”,例如“.php=/usr/bin/php-cgi”)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "密钥长度"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "位置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "最大连接数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "最大脚本请求数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Lua、CGI 或 ubus 执行的最长等待时间"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "网络活动的最长等待时间"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "覆盖 ubus 套接字路径"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "CGI 脚本的路径前缀"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr "如果接口上具有公有 IP 地址,则阻止从接口上的私有(RFC1918)IP 地址访问"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "基本身份验证领域"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "将所有 HTTP 重定向到 HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "删除证书和密钥的配置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "删除旧证书和密钥"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "服务器主机名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr "很少需要或影响 WebUI 服务的设置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "州"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "TCP Keepalive"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "这将永久删除证书、密钥及使用它的配置。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "有效天数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr "要在状态“404 Not Found”上显示的虚拟 URL 或 CGI 脚本。必须以“/”开头"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Lua 脚本的虚拟路径前缀"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "ubus 通过 JSON-RPC 集成的虚拟路径前缀"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "如果不存在,将不使用 HTTP 身份验证"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "又名 CommonName"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "uHTTPd 自签名证书参数"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr "uHTTPd 将使用下面显示的配置生成新的自签名证书。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "如果不存在,则禁用 ubus 集成"
diff --git a/package/luci/applications/luci-app-uhttpd/po/zh-tw/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/zh-tw/uhttpd.po
new file mode 100644 (file)
index 0000000..2e2e916
--- /dev/null
@@ -0,0 +1,257 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-17 17:21+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path)或(只寫 /old/path,將變成 /cgi-prefix/old/path)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid "404 Error"
+msgstr "404 錯誤"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:7
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "輕量級單執行緒 HTTP(S) 伺服器"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid "Advanced Settings"
+msgstr "高階設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:135
+msgid "Aliases"
+msgstr "別名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:149
+msgid "Base directory for files to be served"
+msgstr "基本檔案提供目錄"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr "繫結到特定介面:埠(通過指定介面位址"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid "CGI filetype handler"
+msgstr "CGI 檔案型別處理程式"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "CGI is disabled if not present."
+msgstr "如果不存在,CGI 將被禁用。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "配置檔案(例如,基本身份驗證的憑據)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:187
+msgid "Connection reuse"
+msgstr "連線重用"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:221
+msgid "Country"
+msgstr "國家"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:173
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "通過 ubus 會話 API 禁用 JSON-RPC 授權"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:129
+msgid "Do not follow symlinks outside document root"
+msgstr "不要跟隨符號連結到文件根目錄之外"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:132
+msgid "Do not generate directory listings."
+msgstr "不要生成目錄列表。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:148
+msgid "Document root"
+msgstr "文件根"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "例如,使用 PHP 時可指定為 index.html 和 index.php"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "如果不存在,嵌入式 Lua 直譯器將被禁用。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:169
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "啟用 JSON-RPC 跨域資源支援"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "適用於主要服務於 Web UI 的設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:19
+msgid "Full Web Server Settings"
+msgstr "完整的 Web 伺服器設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:160
+msgid "Full real path to handler for Lua scripts"
+msgstr "Lua 指令碼處理程式的完整真實路徑"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:18
+msgid "General Settings"
+msgstr "常規設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:22
+msgid "HTTP listeners (address:port)"
+msgstr "HTTP 監聽(位址:埠)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:94
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "HTTPS 證書(DER 編碼)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:96
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "HTTPS 私鑰(DER 編碼)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:50
+msgid "HTTPS listener (address:port)"
+msgstr "HTTPS 監聽(位址:埠)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid "Ignore private IPs on public interface"
+msgstr "忽略公共介面上的私有 IP"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:122
+msgid "Index page(s)"
+msgstr "索引頁面"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:126
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr "檔案結尾關聯的直譯器(“字尾=處理程式”,例如“.php=/usr/bin/php-cgi”)"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:214
+msgid "Length of key in bits"
+msgstr "金鑰長度"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:227
+msgid "Location"
+msgstr "位置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:197
+msgid "Maximum number of connections"
+msgstr "最大連線數"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:201
+msgid "Maximum number of script requests"
+msgstr "最大指令碼請求數"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:177
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Lua、CGI 或 ubus 執行的最長等待時間"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:182
+msgid "Maximum wait time for network activity"
+msgstr "網路活動的最長等待時間"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:166
+msgid "Override path for ubus socket"
+msgstr "覆蓋 ubus 套接字路徑"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:153
+msgid "Path prefix for CGI scripts"
+msgstr "CGI 指令碼的路徑字首"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:90
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr "如果介面上具有公有 IP 位址,則阻止從介面上的私有(RFC1918)IP 位址訪問"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:138
+msgid "Realm for Basic Auth"
+msgstr "基本身份驗證領域"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:86
+msgid "Redirect all HTTP to HTTPS"
+msgstr "將所有 HTTP 重定向到 HTTPS"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:109
+msgid "Remove configuration for certificate and key"
+msgstr "刪除證書和金鑰的配置"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:98
+msgid "Remove old certificate and key"
+msgstr "刪除舊證書和金鑰"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "Server Hostname"
+msgstr "伺服器主機名"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:20
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr "很少需要或影響 WebUI 服務的設定"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:224
+msgid "State"
+msgstr "州"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:192
+msgid "TCP Keepalive"
+msgstr "TCP Keepalive"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:110
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "這將永久刪除證書、金鑰及使用它的配置。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:210
+msgid "Valid for # of Days"
+msgstr "有效天數"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:145
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr "要在狀態“404 Not Found”上顯示的虛擬 URL 或 CGI 指令碼。必須以“/”開頭"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:156
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Lua 指令碼的虛擬路徑字首"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "ubus 通過 JSON-RPC 整合的虛擬路徑字首"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:142
+msgid "Will not use HTTP authentication if not present"
+msgstr "如果不存在,將不使用 HTTP 身份驗證"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:218
+msgid "a.k.a CommonName"
+msgstr "又名 CommonName"
+
+#: applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua:13
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:6
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:205
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "uHTTPd 自簽名證書引數"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:99
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr "uHTTPd 將使用下面顯示的配置生成新的自簽名證書。"
+
+#: applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua:163
+msgid "ubus integration is disabled if not present"
+msgstr "如果不存在,則禁用 ubus 整合"
diff --git a/package/luci/applications/luci-app-wireguard/Makefile b/package/luci/applications/luci-app-wireguard/Makefile
new file mode 100644 (file)
index 0000000..417c8ab
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# 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-proto-wireguard
+LUCI_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
new file mode 100644 (file)
index 0000000..5a91960
--- /dev/null
@@ -0,0 +1,8 @@
+-- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.wireguard", package.seeall)
+
+function index()
+       entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
+end
diff --git a/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm
new file mode 100644 (file)
index 0000000..53968da
--- /dev/null
@@ -0,0 +1,271 @@
+<%#
+       Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+       Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local uci = uci.cursor()
+       local data = { }
+       local last_device = ""
+       local enc = { }
+
+       local function wg_clean(value)
+               if value and value == "(none)" then
+                       value = ""
+               end
+               return value
+       end
+
+       local wg_dump = io.popen("wg show all dump")
+       if wg_dump then
+               local line
+               for line in wg_dump:lines() do
+                       local line = string.split(line, "\t")
+                       if not (last_device == line[1]) then
+                               last_device = line[1]
+                               data[line[1]] = {
+                                       name            = line[1],
+                                       public_key      = line[3],
+                                       listen_port     = line[4],
+                                       fwmark          = line[5],
+                                       peers           = { }
+                               }
+                               local s = uci:get_list("network", line[1], "addresses")
+                               local address = ""
+                               local key, value
+                               for key, value in pairs(s) do
+                                       if address ~= "" then
+                                               address = address.. ", " ..value
+                                       else
+                                               address = value
+                                       end
+                               end
+                               enc[line[1]] = "[Interface]\nPrivateKey = " ..wg_clean(line[2]).. "\nAddress = " ..address
+                       else
+                               local peer = {
+                                       public_key              = line[2],
+                                       endpoint                = line[4],
+                                       allowed_ips             = { },
+                                       latest_handshake        = line[6],
+                                       transfer_rx             = line[7],
+                                       transfer_tx             = line[8],
+                                       persistent_keepalive    = line[9]
+                               }
+                               if not (line[4] == '(none)') then
+                                       local ipkey, ipvalue
+                                       for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
+                                               if #ipvalue > 0 then
+                                                       table.insert(peer['allowed_ips'], ipvalue)
+                                               end
+                                       end
+                               end
+                               table.insert(data[line[1]].peers, peer)
+                               enc[line[1]] = enc[line[1]].. "\n\n[Peer]\nEndpoint = " ..wg_clean(line[4]).. "\nPublicKey = " ..wg_clean(line[2]).. "\nAllowedIPs = " ..wg_clean(line[5])
+                       end
+               end
+       end
+
+       if luci.http.formvalue("status") == "1" then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(data)
+               return
+       end
+-%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+
+       function bytes_to_str(bytes) {
+               bytes = parseFloat(bytes);
+               if (bytes < 1) { return "0 B"; }
+               var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];
+               var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
+               return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
+       };
+
+       function timestamp_to_str(timestamp) {
+               if (timestamp < 1) {
+                       return '<%:Never%>';
+               }
+               var now = new Date();
+               var seconds = (now.getTime() / 1000) - timestamp;
+               var ago = "";
+               if (seconds < 60) {
+                       ago = parseInt(seconds) + '<%:s ago%>';
+               } else if (seconds < 3600) {
+                       ago = parseInt(seconds / 60) + '<%:m ago%>';
+               } else if (seconds < 86401) {
+                       ago = parseInt(seconds / 3600) + '<%:h ago%>';
+               } else {
+                       ago = '<%:over a day ago%>';
+               }
+               var t = new Date(timestamp * 1000);
+               return t.toUTCString() + ' (' + ago + ')';
+       }
+
+       function toggle_qrcode(iface) {
+               var view = document.getElementById(iface.name);
+               if (view.style.display === "none") {
+                       view.style.display = "block";
+               } else {
+                       view.style.display = "none";
+               }
+       }
+
+       XHR.poll(-1, '<%=REQUEST_URI%>', { status: 1 },
+       function(x, data) {
+               for (var key in data) {
+                       if (!data.hasOwnProperty(key)) { continue; }
+                       var ifname = key;
+                       var iface = data[key];
+                       var s = "";
+                       if (iface.public_key == '(none)') {
+                               s += '<em><%:Interface does not have a public key!%></em>';
+                       } else {
+                               s += String.format(
+                                       '<strong><%:Public Key%>: </strong>%s',
+                                       iface.public_key
+                               );
+                       }
+                       if (iface.listen_port > 0) {
+                               s += String.format(
+                                       '<br /><strong><%:Listen Port%>: </strong>%s',
+                                       iface.listen_port
+                               );
+                       }
+                       if (iface.fwmark != 'off') {
+                               s += String.format(
+                                       '<br /><strong><%:Firewall Mark%>: </strong>%s',
+                                       iface.fwmark
+                               );
+                       }
+                       document.getElementById(ifname + "_info").innerHTML = s;
+                       for (var i = 0, ilen = iface.peers.length; i < ilen; i++) {
+                               var peer = iface.peers[i];
+                               var s = String.format(
+                                       '<strong><%:Public Key%>: </strong>%s',
+                                       peer.public_key
+                               );
+                               if (peer.endpoint != '(none)') {
+                                       s += String.format(
+                                               '<br /><strong><%:Endpoint%>: </strong>%s',
+                                               peer.endpoint
+                                       );
+                               }
+                               if (peer.allowed_ips.length > 0) {
+                                       s += '<br /><strong><%:Allowed IPs%>:</strong>';
+                                       for (var k = 0, klen = peer.allowed_ips.length; k < klen; k++) {
+                                               s += '<br />&#160;&#160;&#8226;&#160;' + peer.allowed_ips[k];
+                                       }
+                               }
+                               if (peer.persistent_keepalive != 'off') {
+                                       s += String.format(
+                                               '<br /><strong><%:Persistent Keepalive%>: </strong>%ss',
+                                               peer.persistent_keepalive
+                                       );
+                               }
+                               var icon = '<img src="<%=resource%>/icons/tunnel_disabled.png" />';
+                               var now = new Date();
+                               if (((now.getTime() / 1000) - peer.latest_handshake) < 140) {
+                                       icon = '<img src="<%=resource%>/icons/tunnel.png" />';
+                               }
+                               s += String.format(
+                                       '<br /><strong><%:Latest Handshake%>: </strong>%s',
+                                       timestamp_to_str(peer.latest_handshake)
+                               );
+                               s += String.format(
+                                       '<br /><strong><%:Data Received%>: </strong>%s' +
+                                       '<br /><strong><%:Data Transmitted%>: </strong>%s',
+                                       bytes_to_str(peer.transfer_rx),
+                                       bytes_to_str(peer.transfer_tx),
+                               );
+                               document.getElementById(ifname + "_" + peer.public_key + "_icon").innerHTML = icon;
+                               document.getElementById(ifname + "_" + peer.public_key + "_info").innerHTML = s;
+                       }
+               }
+       });
+//]]></script>
+
+<h2>WireGuard Status</h2>
+
+<div class="cbi-section">
+<%-
+local ikey, iface
+for ikey, iface in pairs(data) do
+-%>
+       <h3><%:Interface%> <%=ikey%></h3>
+       <div class="cbi-value" id="button" style="padding: 5px">
+               <input class="cbi-button cbi-button-apply" type="button" name="qrcode_<%=ikey%>" value="<%:Show/Hide QR-Code%>" onclick="toggle_qrcode(this)" />
+       </div>
+<%-
+       local qrcode
+       if fs.access("/usr/bin/qrencode") then
+               if enc[ikey]:sub(26, 26) ~= "\n" then
+                       qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- '" ..enc[ikey].. "'")
+               end
+       else
+               qrcode = "<em>For QR-Code support please install package 'qrencode'!</em>"
+       end
+-%>
+       <div class="cbi-value-title">
+               <span class="cbi-value" style="display: none" id="qrcode_<%=ikey%>"><%=qrcode%></span>
+       </div>
+       <div class="cbi-section-node">
+               <div class="table cbi-section-table">
+                       <div class="tr cbi-section-table-row" style="text-align: left;">
+                               <div class="td" style="text-align: left; vertical-align:top"><%:Configuration%></div>
+                               <div class="td" style="flex: 0 1 90%; text-align: left;">
+                                       <div class="table cbi-section-table" style="border: 0px;">
+                                               <div class="tr cbi-section-table-row" style="text-align: left; border: 0px;">
+                                                       <div class="td" id="<%=ikey%>_icon" style="width: 22px; text-align: left; border-top: 0px; padding: 3px;">&#160;</div>
+                                                       <div class="td" id="<%=ikey%>_info" style="flex: 0 1 90%; text-align: left; vertical-align:middle; padding: 3px; border-top: 0px;"><em><%:Collecting data...%></em></div>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+       <%-
+       local cur = uci.cursor()
+       local pkey, peer
+       for pkey, peer in pairs(iface.peers) do
+               local desc
+               cur:foreach("network", "wireguard_" .. ikey, function(s)
+                       local key, value, tmp_desc, pub_key
+                       for key, value in pairs(s) do
+                               if key == "description" then
+                                       tmp_desc = value
+                               end
+                               if value == peer.public_key then
+                                       pub_key = value
+                               end
+                               if pub_key and tmp_desc then
+                                       desc = ': ' ..tmp_desc
+                               end
+                       end
+               end)
+       -%>
+                       <div class="tr cbi-section-table-row" style="text-align: left;">
+                               <div class="td" style="text-align: left; vertical-align:top"><%:Peer%><%=desc%></div>
+                               <div class="td" style="flex: 0 1 90%; text-align: left;">
+                                       <div class="table cbi-section-table" style="border: 0px">
+                                               <div class="tr cbi-section-table-row" style="border: 0px;">
+                                                       <div class="td" id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align: left; padding: 3px;border-top: 0px;">
+                                                               <img src="<%=resource%>/icons/tunnel_disabled.png" />
+                                                               <small>?</small>
+                                                       </div>
+                                                       <div class="td" id="<%=ikey%>_<%=peer.public_key%>_info" style="flex: 0 1 90%; text-align: left; vertical-align:middle; padding: 3px;border-top: 0px;"><em><%:Collecting data...%></em></div>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               <%-
+       end
+       -%>
+               </div>
+       </div>
+       <%-
+end
+-%>
+</div>
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-wireguard/po/de/wireguard.po b/package/luci/applications/luci-app-wireguard/po/de/wireguard.po
new file mode 100644 (file)
index 0000000..64aa77e
--- /dev/null
@@ -0,0 +1,88 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "Erlaubte IPs"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "Sammle Daten..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "Daten erhalten"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "Daten gesendet"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "Endpunkt"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "Schnittstelle"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "Schnittstelle besitzt keinen public key!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "Letztes Handshake"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "Port (lauschen)"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "Niemals"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr "Zeige/Verstecke QR-Code"
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "h zuvor"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "m zuvor"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "seit über"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "s zuvor"
diff --git a/package/luci/applications/luci-app-wireguard/po/es/wireguard.po b/package/luci/applications/luci-app-wireguard/po/es/wireguard.po
new file mode 100644 (file)
index 0000000..3179d39
--- /dev/null
@@ -0,0 +1,99 @@
+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.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "IPs permitidas"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "Recolectando datos..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "Configuración"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "Datos recibidos"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "Datos transmitidos"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "Punto final"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "Marca de Firewall"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "Interfaz"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "¡La interfaz no tiene una clave pública!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "Último Handshake"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "Escuchar puerto"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "Nunca"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "Par"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Mantener conectado continuamente"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "Clave pública"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr "Mostrar/Ocultar código QR"
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "WireGuard"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "hace h"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "hace m"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "hace más de un día"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "hace s"
diff --git a/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po b/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po
new file mode 100644 (file)
index 0000000..965fac3
--- /dev/null
@@ -0,0 +1,100 @@
+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"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "許可されたIP"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "設定"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "受信済みデータ"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "送信済みデータ"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "エンドポイント"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "ファイアウォール マーク"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "インターフェース"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "インターフェースに公開鍵がありません!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "最新のハンドシェイク"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "待ち受けポート"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "無し"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "ピア"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "永続的なキープアライブ"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "公開鍵"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "WireGuard ステータス"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "時間前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "分前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "1日以上前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "秒前"
diff --git a/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po b/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po
new file mode 100644 (file)
index 0000000..9aea136
--- /dev/null
@@ -0,0 +1,99 @@
+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"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "Endereços IP autorizados"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "Configuração"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "Dados Recebidos"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "Dados Enviados"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "Equipamento do ponto final"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "Marca do Firewall"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "Interface"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "A interface não tem uma chave pública!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "Última Negociação"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "Porta de Escuta"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "Nunca"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "Parceiro"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Manter Conexões Abertas (Keepalive)"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "Chave Pública"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "Estado do WireGuard"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "horas atrás"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "meses atrás"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "mais de um dia atrás"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "segundos atrás"
diff --git a/package/luci/applications/luci-app-wireguard/po/ru/wireguard.po b/package/luci/applications/luci-app-wireguard/po/ru/wireguard.po
new file mode 100644 (file)
index 0000000..8f2ad30
--- /dev/null
@@ -0,0 +1,100 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: wireguard\n"
+"POT-Creation-Date: 2018-01-01 21:00+0300\n"
+"PO-Revision-Date: 2018-01-19 00:09+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "Разрешенные IP-адреса"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "Полученные данные"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "Переданные данные"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "Конечная точка"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "Метка межсетевого экрана"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "Интерфейс не имеет Публичного Ключа!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "Последний Хендшейк"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "Порт для входящих соединений"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "Никогда"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "Узел"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Постоянные Проверки Активности"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "Публичный Ключ"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "Состояние WireGuard"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "час назад"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "минуту назад"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "более суток назад"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "секунду назад"
diff --git a/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po b/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po
new file mode 100644 (file)
index 0000000..80e18e6
--- /dev/null
@@ -0,0 +1,88 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "Tillåtna IP-adresser"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "Mottagen data"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "Överförd data"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "Slutpunkt"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "Brandväggsmarkering"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "Gränssnitt"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "Gränssnittet har inte en publik nyckel!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "Senaste handskakning"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "Lyssningsport"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "Aldrig"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "Jämlike"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Hålla vid liv ständigt"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "Publik nyckel"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "Status för WireGuard"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "t sedan"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "m sedan"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "över en dag sedan"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "s sedan"
diff --git a/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot b/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot
new file mode 100644 (file)
index 0000000..28fa833
--- /dev/null
@@ -0,0 +1,88 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr ""
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr ""
diff --git a/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po
new file mode 100644 (file)
index 0000000..1c5d241
--- /dev/null
@@ -0,0 +1,102 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018-2019.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2019-01-03 20:51+0800\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 3.30.1\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "允许的 IP"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "正在收集数据…"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "配置"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "已接收"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "已发送"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "传输端点"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "防火墙标识"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "接口"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "接口没有配置公钥!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "上次握手"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "监听端口"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "从不"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "对端"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Keepalive 间隔(秒)"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "公钥"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr "显示/隐藏 QR 码"
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "WireGuard 状态"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "小时前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "分钟前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "超过一天前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "秒前"
diff --git a/package/luci/applications/luci-app-wireguard/po/zh-tw/wireguard.po b/package/luci/applications/luci-app-wireguard/po/zh-tw/wireguard.po
new file mode 100644 (file)
index 0000000..53f26d9
--- /dev/null
@@ -0,0 +1,102 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018-2019.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2019-01-03 20:51+0800\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 3.30.1\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:157
+msgid "Allowed IPs"
+msgstr "允許的 IP"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:222
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:256
+msgid "Collecting data..."
+msgstr "正在收集資料…"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:217
+msgid "Configuration"
+msgstr "配置"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:178
+msgid "Data Received"
+msgstr "已接收"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:179
+msgid "Data Transmitted"
+msgstr "已傳送"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:152
+msgid "Endpoint"
+msgstr "傳輸端點"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:139
+msgid "Firewall Mark"
+msgstr "防火牆標識"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:197
+msgid "Interface"
+msgstr "介面"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:124
+msgid "Interface does not have a public key!"
+msgstr "介面沒有配置公鑰!"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:174
+msgid "Latest Handshake"
+msgstr "上次握手"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:133
+msgid "Listen Port"
+msgstr "監聽埠"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:89
+msgid "Never"
+msgstr "從不"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:248
+msgid "Peer"
+msgstr "對端"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:164
+msgid "Persistent Keepalive"
+msgstr "Keepalive 間隔(秒)"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:127
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:147
+msgid "Public Key"
+msgstr "公鑰"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:199
+msgid "Show/Hide QR-Code"
+msgstr "顯示/隱藏 QR 碼"
+
+#: applications/luci-app-wireguard/luasrc/controller/wireguard.lua:7
+msgid "WireGuard Status"
+msgstr "WireGuard 狀態"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:99
+msgid "h ago"
+msgstr "小時前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:97
+msgid "m ago"
+msgstr "分鐘前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:101
+msgid "over a day ago"
+msgstr "超過一天前"
+
+#: applications/luci-app-wireguard/luasrc/view/wireguard.htm:95
+msgid "s ago"
+msgstr "秒前"
diff --git a/package/luci/build/check-controllers.sh b/package/luci/build/check-controllers.sh
new file mode 100755 (executable)
index 0000000..47f66ea
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+[ -d build ] || {
+       echo "Execute as ./build/check-controllers.sh" >&2
+       exit 1
+}
+
+find . -type f -name '*.lua' -path '*/controller/*' | while read controller; do
+       controller="${controller#./}"
+       base="${controller%%/controller/*}"
+
+       sed -rne 's#^.*\b(cbi|form)\([[:space:]]*("([^"]*)"|\047([^\047]*)\047)[[:space:]]*[,)].*$#\1 \3\4#gp' "$controller" | while read type map; do
+               model="$base/model/cbi/$map.lua"
+               package="${controller##*/controller/}"; package="${package%.lua}"; package="luci.controller.${package//\//.}"
+
+               if ! grep -sqE '\bmodule[[:space:]]*\(?[[:space:]]*("|\047|\[=*\[)'"$package" "$controller"; then
+                       echo "'$controller' does not contain the expected\n\t'module(\"$package\", ...)' line.\n"
+               fi
+
+               grep -sqE '\b(Form|SimpleForm)[[:space:]]*\(' "$model" && ! grep -sqE '\bMap[[:space:]]*\(' "$model" && is_form=1 || is_form=0
+
+               if [ ! -f "$model" ]; then
+                       echo -e "'$controller' references $type('$map')\n\tbut expected file '$model' does not exist.\n"
+               elif [ $type = "cbi" -a $is_form = 1 ]; then
+                       echo -e "'$controller' references $type('$map')\n\tbut '$model' looks like a Form or SimpleForm.\n"
+               elif [ $type = "form" -a $is_form = 0 ]; then
+                       echo -e "'$controller' references $type('$map')\n\tbut '$model' does not look like a Form or SimpleForm.\n"
+               fi
+       done
+done
diff --git a/package/luci/build/i18n-add-language.sh b/package/luci/build/i18n-add-language.sh
new file mode 100755 (executable)
index 0000000..24203c2
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+LANG=$1
+
+case "$LANG" in
+       [a-z][a-z]|[a-z][a-z]-[a-z][a-z]) : ;;
+       *)
+               echo "Usage: $0 <ISO_CODE>\n" >&2
+               exit 1
+       ;;
+esac
+
+ADDED=0
+
+for podir in ./*/*/po; do
+       [ -d "$podir/templates" ] || continue
+
+       mkdir "$podir/$LANG"
+       for catalog in $(cd "$podir/templates"; echo *.pot); do
+               if [ -f "$podir/templates/$catalog" -a ! -f "$podir/$LANG/${catalog%.pot}.po" ]; then
+                       msginit --no-translator -l "$LANG" -i "$podir/templates/$catalog" -o "$podir/$LANG/${catalog%.pot}.po"
+                       git add "$podir/$LANG/${catalog%.pot}.po"
+                       ADDED=$((ADDED + 1))
+               fi
+       done
+done
+
+if [ $ADDED -gt 0 ]; then
+       echo ""
+       echo "Added $ADDED new translation catalogs for language '$LANG'."
+       echo "Please also edit 'luci.mk' and add"
+       echo ""
+       echo "  LUCI_LANG.$LANG=Native Language Name"
+       echo ""
+       echo "to properly package the translation files."
+       echo ""
+fi
diff --git a/package/luci/build/i18n-init.sh b/package/luci/build/i18n-init.sh
new file mode 100755 (executable)
index 0000000..b20fbc3
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+PATTERN=$1
+SCM=
+
+[ -d .svn ] && SCM="svn"
+git=$( which git 2>/dev/null )
+[ "$git" ] && "$git" status >/dev/null && SCM="git"
+
+[ -z "$SCM" ] && {
+       echo "Unsupported SCM tool" >&2
+       exit 1
+}
+
+[ -z "$PATTERN" ] && PATTERN="*.pot"
+
+for lang in $(cd po; echo ?? ??_??); do
+       for file in $(cd po/templates; echo $PATTERN); do
+               if [ -f po/templates/$file -a ! -f "po/$lang/${file%.pot}.po" ]; then
+                       msginit --no-translator -l "$lang" -i "po/templates/$file" -o "po/$lang/${file%.pot}.po"
+                       $SCM add "po/$lang/${file%.pot}.po"
+               fi
+       done
+done
diff --git a/package/luci/build/i18n-po2lua.pl b/package/luci/build/i18n-po2lua.pl
new file mode 100755 (executable)
index 0000000..5129055
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+@ARGV == 2 || die "Usage: $0 <source-dir> <dest-dir>\n";
+
+my $source_dir  = shift @ARGV;
+my $target_dir  = shift @ARGV;
+
+if( ! -d $target_dir )
+{
+       system('mkdir', '-p', $target_dir);
+}
+
+if( open F, "find $source_dir -type f -name '*.po' |" )
+{
+       while( chomp( my $file = readline F ) )
+       {
+               my ( $lang, $basename ) = $file =~ m{.+/(\w+)/([^/]+)\.po$};
+               $lang = lc $lang;
+               $lang =~ s/_/-/g;
+
+               printf "Generating %-40s ", "$target_dir/$basename.$lang.lmo";
+               system("./build/po2lmo", $file, "$target_dir/$basename.$lang.lmo");
+               print ( -f "$target_dir/$basename.$lang.lmo" ? "done\n" : "empty\n" );
+       }
+
+       close F;
+}
diff --git a/package/luci/build/i18n-scan.pl b/package/luci/build/i18n-scan.pl
new file mode 100755 (executable)
index 0000000..c19a438
--- /dev/null
@@ -0,0 +1,173 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Text::Balanced qw(extract_tagged gen_delimited_pat);
+use POSIX;
+
+POSIX::setlocale(POSIX::LC_ALL, "C");
+
+@ARGV >= 1 || die "Usage: $0 <source directory>\n";
+
+
+my %stringtable;
+
+sub dec_lua_str
+{
+       my $s = shift;
+       $s =~ s/\\n/\n/g;
+       $s =~ s/\\t/\t/g;
+       $s =~ s/\\(.)/$1/sg;
+       $s =~ s/[\s\n]+/ /g;
+       $s =~ s/^ //;
+       $s =~ s/ $//;
+       return $s;
+}
+
+sub dec_tpl_str
+{
+       my $s = shift;
+       $s =~ s/-$//;
+       $s =~ s/[\s\n]+/ /g;
+       $s =~ s/^ //;
+       $s =~ s/ $//;
+       $s =~ s/\\/\\\\/g;
+       return $s;
+}
+
+if( open F, "find @ARGV -type f '(' -name '*.htm' -o -name '*.lua' -o -name '*.js' ')' | sort |" )
+{
+       while( defined( my $file = readline F ) )
+       {
+               chomp $file;
+
+               if( open S, "< $file" )
+               {
+                       local $/ = undef;
+                       my $raw = <S>;
+                       close S;
+
+                       my $text = $raw;
+                       my $line = 1;
+
+                       while ($text =~ s/ ^ (.*?) (?:translate|translatef|i18n|_) ([\n\s]*) \( //sgx)
+                       {
+                               my ($prefix, $suffix) = ($1, $2);
+                               my $code;
+                               my $res = "";
+                               my $sub = "";
+
+                               $line += () = $prefix =~ /\n/g;
+
+                               my $position = "$file:$line";
+
+                               $line += () = $suffix =~ /\n/g;
+
+                               while (defined $sub)
+                               {
+                                       undef $sub;
+
+                                       if ($text =~ /^ ([\n\s]*(?:\.\.[\n\s]*)?) (\[=*\[) /sx)
+                                       {
+                                               my $ws = $1;
+                                               my $stag = quotemeta $2;
+                                               (my $etag = $stag) =~ y/[/]/;
+
+                                               ($sub, $text) = extract_tagged($text, $stag, $etag, q{\s*(?:\.\.\s*)?});
+
+                                               $line += () = $ws =~ /\n/g;
+
+                                               if (defined($sub) && length($sub)) {
+                                                       $line += () = $sub =~ /\n/g;
+
+                                                       $sub =~ s/^$stag//;
+                                                       $sub =~ s/$etag$//;
+                                                       $res .= $sub;
+                                               }
+                                       }
+                                       elsif ($text =~ /^ ([\n\s]*(?:\.\.[\n\s]*)?) (['"]) /sx)
+                                       {
+                                               my $ws = $1;
+                                               my $quote = $2;
+                                               my $re = gen_delimited_pat($quote, '\\');
+
+                                               if ($text =~ m/\G\s*(?:\.\.\s*)?($re)/gcs)
+                                               {
+                                                       $sub = $1;
+                                                       $text = substr $text, pos $text;
+                                               }
+
+                                               $line += () = $ws =~ /\n/g;
+
+                                               if (defined($sub) && length($sub)) {
+                                                       $line += () = $sub =~ /\n/g;
+
+                                                       $sub =~ s/^$quote//;
+                                                       $sub =~ s/$quote$//;
+                                                       $res .= $sub;
+                                               }
+                                       }
+                               }
+
+                               if (defined($res))
+                               {
+                                       $res = dec_lua_str($res);
+
+                                       if ($res) {
+                                               $stringtable{$res} ||= [ ];
+                                               push @{$stringtable{$res}}, $position;
+                                       }
+                               }
+                       }
+
+
+                       $text = $raw;
+                       $line = 1;
+
+                       while( $text =~ s/ ^ (.*?) <% -? [:_] /<%/sgx )
+                       {
+                               $line += () = $1 =~ /\n/g;
+
+                               ( my $code, $text ) = extract_tagged($text, '<%', '%>');
+
+                               if( defined $code )
+                               {
+                                       my $position = "$file:$line";
+
+                                       $line += () = $code =~ /\n/g;
+
+                                       $code = dec_tpl_str(substr $code, 2, length($code) - 4);
+
+                                       $stringtable{$code} ||= [];
+                                       push @{$stringtable{$code}}, $position;
+                               }
+                       }
+               }
+       }
+
+       close F;
+}
+
+
+if( open C, "| msgcat -" )
+{
+       printf C "msgid \"\"\nmsgstr \"Content-Type: text/plain; charset=UTF-8\"\n\n";
+
+       foreach my $key ( sort keys %stringtable )
+       {
+               if( length $key )
+               {
+                       my @positions = @{$stringtable{$key}};
+
+                       $key =~ s/\\/\\\\/g;
+                       $key =~ s/\n/\\n/g;
+                       $key =~ s/\t/\\t/g;
+                       $key =~ s/"/\\"/g;
+
+                       printf C "#: %s\nmsgid \"%s\"\nmsgstr \"\"\n\n",
+                               join(' ', @positions), $key;
+               }
+       }
+
+       close C;
+}
diff --git a/package/luci/build/i18n-sync.sh b/package/luci/build/i18n-sync.sh
new file mode 100755 (executable)
index 0000000..ad8c46c
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+[ -d ./build ] || {
+       echo "Execute as ./build/i18n-sync.sh" >&2
+       exit 1
+}
+
+./build/mkbasepot.sh
+
+find . -name '*.pot' -and -not -name base.pot | \
+       while read path; do
+               dir="${path%/po/templates/*}"
+               echo -n "Updating ${path#./} ... "
+               ./build/i18n-scan.pl "$dir" > "$path"
+               echo "done"
+       done
+
+./build/i18n-update.pl
diff --git a/package/luci/build/i18n-update.pl b/package/luci/build/i18n-update.pl
new file mode 100755 (executable)
index 0000000..c82b4fe
--- /dev/null
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+
+@ARGV <= 2 || die "Usage: $0 [<po directory>] [<file pattern>]\n";
+
+my $source  = shift @ARGV;
+my $pattern = shift @ARGV || '*.po';
+
+sub read_header
+{
+       my $file = shift || return;
+       local $/;
+
+       open P, "< $file" || die "open(): $!";
+       my $data = readline P;
+       close P;
+
+       $data =~ /
+               ^ (
+               msgid \s "" \n
+               msgstr \s "" \n
+               (?: " [^\n]+ " \n )+
+               \n )
+       /mx;
+
+       return $1;
+}
+
+sub write_header
+{
+       my $file = shift || return;
+       my $head = shift || return;
+       local $/;
+
+       open P, "< $file" || die "open(): $!";
+       my $data = readline P;
+       close P;
+
+       $data =~ s/
+               ^ (
+               msgid \s "" \n
+               msgstr \s "" \n
+               (?: " [^\n]+ " \n )+
+               \n )
+       /$head/mx;
+
+       open P, "> $file" || die "open(): $!";
+       print P $data;
+       close P;
+}
+
+my @dirs;
+
+if( ! $source )
+{
+       @dirs = glob("./*/*/po/");
+}
+else
+{
+       @dirs = ( $source );
+}
+
+foreach my $dir (@dirs)
+{
+       if( open F, "find $dir -type f -name '$pattern' |" )
+       {
+               while( chomp( my $file = readline F ) )
+               {
+                       my ( $basename ) = $file =~ m{.+/([^/]+)\.po$};
+               
+                       if( -f "$dir/templates/$basename.pot" )
+                       {
+                               my $head = read_header($file);
+
+                               printf "Updating %-40s", $file;
+                               system("msgmerge", "-U", "-N", $file, "$dir/templates/$basename.pot");
+
+                               write_header($file, $head);
+                       }
+               }
+
+               close F;
+       }
+}
diff --git a/package/luci/build/luadoc/doc.lua b/package/luci/build/luadoc/doc.lua
new file mode 100755 (executable)
index 0000000..383dde2
--- /dev/null
@@ -0,0 +1,126 @@
+#!/usr/bin/env lua
+-------------------------------------------------------------------------------
+-- LuaDoc launcher.
+-- @release $Id: luadoc.lua.in,v 1.1 2008/02/17 06:42:51 jasonsantos Exp $
+-------------------------------------------------------------------------------
+
+--local source = debug.getinfo(1).source or ""
+--local mypath = source:match("@(.+)/[^/]+")
+
+--package.path = package.path .. ";" .. mypath .. "/?.lua;" .. mypath .. "/?/init.lua"
+
+require "luadoc.init"
+
+-------------------------------------------------------------------------------
+-- Print version number.
+
+local function print_version ()
+       print (string.format("%s\n%s\n%s", 
+               luadoc._VERSION, 
+               luadoc._DESCRIPTION, 
+               luadoc._COPYRIGHT))
+end
+
+-------------------------------------------------------------------------------
+-- Print usage message.
+
+local function print_help ()
+       print ("Usage: "..arg[0]..[[ [options|files]
+Generate documentation from files. Available options are:
+  -d path                      output directory path
+  -t path                      template directory path
+  -h, --help                   print this help and exit
+      --noindexpage            do not generate global index page
+      --nofiles                do not generate documentation for files
+      --nomodules              do not generate documentation for modules
+      --doclet doclet_module   doclet module to generate output
+      --taglet taglet_module   taglet module to parse input code
+  -q, --quiet                  suppress all normal output
+  -v, --version                print version information]])
+end
+
+local function off_messages (arg, i, options)
+       options.verbose = nil
+end
+
+-------------------------------------------------------------------------------
+-- Process options. TODO: use getopts.
+-- @class table
+-- @name OPTIONS
+
+local OPTIONS = {
+       d = function (arg, i, options)
+               local dir = arg[i+1]
+               if string.sub (dir, -2) ~= "/" then
+                       dir = dir..'/'
+               end
+               options.output_dir = dir
+               return 1
+       end,
+       t = function (arg, i, options)
+               local dir = arg[i+1]
+               if string.sub (dir, -2) ~= "/" then
+                       dir = dir..'/'
+               end
+               options.template_dir = dir
+               return 1
+       end,
+       h = print_help,
+       help = print_help,
+       q = off_messages,
+       quiet = off_messages,
+       v = print_version,
+       version = print_version,
+       doclet = function (arg, i, options)
+               options.doclet = arg[i+1]
+               return 1
+       end,
+       taglet = function (arg, i, options)
+               options.taglet = arg[i+1]
+               return 1
+       end,
+}
+
+-------------------------------------------------------------------------------
+
+local function process_options (arg)
+       local files = {}
+       local options = require "luadoc.config"
+       local i = 1
+       while i <= #arg do
+               local argi = arg[i]
+               if string.sub (argi, 1, 1) ~= '-' then
+                       table.insert (files, argi)
+               else
+                       local opt = string.sub (argi, 2)
+                       if string.sub (opt, 1, 1) == '-' then
+                               opt = string.gsub (opt, "%-", "")
+                       end
+                       if OPTIONS[opt] then
+                               if OPTIONS[opt] (arg, i, options) then
+                                       i = i + 1
+                               end
+                       else
+                               options[opt] = 1
+                       end
+               end
+               i = i+1
+       end
+       return files, options
+end 
+
+-------------------------------------------------------------------------------
+-- Main function. Process command-line parameters and call luadoc processor.
+
+function main (arg)
+       -- Process options
+       local argc = #arg
+       if argc < 1 then
+               print_help ()
+               return
+       end
+       local files, options = process_options (arg)
+       return luadoc.main(files, options)
+end
+
+main(arg)
diff --git a/package/luci/build/luadoc/luadoc/config.lua b/package/luci/build/luadoc/luadoc/config.lua
new file mode 100644 (file)
index 0000000..319e1cb
--- /dev/null
@@ -0,0 +1,34 @@
+-------------------------------------------------------------------------------
+-- LuaDoc configuration file. This file contains the default options for 
+-- luadoc operation. These options can be overridden by the command line tool
+-- @see luadoc.print_help
+-- @release $Id: config.lua,v 1.6 2007/04/18 14:28:39 tomas Exp $
+-------------------------------------------------------------------------------
+
+module "luadoc.config"
+
+-------------------------------------------------------------------------------
+-- Default options
+-- @class table
+-- @name default_options
+-- @field output_dir default output directory for generated documentation, used
+-- by several doclets
+-- @field taglet parser used to analyze source code input
+-- @field doclet documentation generator
+-- @field template_dir directory with documentation templates, used by the html
+-- doclet
+-- @field verbose command line tool configuration to output processing 
+-- information
+
+local default_options = {
+       output_dir = "",
+       taglet = "luadoc.taglet.standard",
+       doclet = "luadoc.doclet.html",
+       -- TODO: find a way to define doclet specific options
+       template_dir = "luadoc/doclet/html/",
+       nomodules = false,
+       nofiles = false,
+       verbose = true,
+}
+
+return default_options
diff --git a/package/luci/build/luadoc/luadoc/doclet/debug.lua b/package/luci/build/luadoc/luadoc/doclet/debug.lua
new file mode 100644 (file)
index 0000000..0b75f84
--- /dev/null
@@ -0,0 +1,46 @@
+-----------------------------------------------------------------
+-- LuaDoc debugging facilities.
+-- @release $Id: debug.lua,v 1.3 2007/04/18 14:28:39 tomas Exp $
+-----------------------------------------------------------------
+
+module "luadoc.doclet.debug"
+
+function printline()
+       print(string.rep('-', 79))
+end
+
+-----------------------------------------------------------------
+-- Print debug information about document
+-- @param doc Table with the structured documentation.
+
+function start (doc)
+       print("Files:")
+       for _, filepath in ipairs(doc.files) do
+               print('\t', filepath)
+       end
+       printline()
+
+       print("Modules:")
+       for _, modulename in ipairs(doc.modules) do
+               print('\t', modulename)
+       end
+       printline()
+       
+       for i, v in pairs(doc.files) do
+               print('\t', i, v)
+       end
+       printline()
+       for i, v in pairs(doc.files[doc.files[1]]) do
+               print(i, v)
+       end
+       
+       printline()
+       for i, v in pairs(doc.files[doc.files[1]].doc[1]) do
+               print(i, v)
+       end
+       printline()
+       print("Params")
+       for i, v in pairs(doc.files[doc.files[1]].doc[1].param) do
+               print(i, v)
+       end
+end
diff --git a/package/luci/build/luadoc/luadoc/doclet/formatter.lua b/package/luci/build/luadoc/luadoc/doclet/formatter.lua
new file mode 100644 (file)
index 0000000..2d72538
--- /dev/null
@@ -0,0 +1,84 @@
+-------------------------------------------------------------------------------
+-- Doclet to format source code according to LuaDoc standard tags. This doclet
+-- (re)write .lua files adding missing standard tags. Texts are formatted to
+-- 80 columns and function parameters are added based on code analysis.
+--
+-- @release $Id: formatter.lua,v 1.5 2007/04/18 14:28:39 tomas Exp $
+-------------------------------------------------------------------------------
+
+local util = require "luadoc.util"
+local assert, ipairs, pairs, type = assert, ipairs, pairs, type
+local string = require"string"
+local table = require"table"
+
+module "luadoc.doclet.formatter"
+
+options = {
+       output_dir = "./",
+}
+
+-------------------------------------------------------------------------------
+-- Assembly the output filename for an input file.
+-- TODO: change the name of this function
+function out_file (filename)
+       local h = filename
+       h = options.output_dir..h
+       return h
+end
+
+-------------------------------------------------------------------------------
+-- Generate a new lua file for each input lua file. If the user does not 
+-- specify a different output directory input files will be rewritten.
+-- @param doc documentation table
+
+function start (doc)
+       local todo = "<TODO>"
+       
+       -- Process files
+       for i, file_doc in ipairs(doc.files) do
+               -- assembly the filename
+               local filename = out_file(file_doc.name)
+               luadoc.logger:info(string.format("generating file `%s'", filename))
+
+               -- TODO: confirm file overwrite
+               local f = posix.open(filename, "w")
+               assert(f, string.format("could not open `%s' for writing", filename))
+
+               for _, block in ipairs(file_doc.doc) do
+
+                       -- write reorganized comments
+                       f:write(string.rep("-", 80).."\n")
+                       
+                       -- description
+                       f:write(util.comment(util.wrap(block.description, 77)))
+                       f:write("\n")
+                       
+                       if block.class == "function" then
+                               -- parameters
+                               table.foreachi(block.param, function (_, param_name)
+                                       f:write(util.comment(util.wrap(string.format("@param %s %s", param_name, block.param[param_name] or todo), 77)))
+                                       f:write("\n")
+                               end)
+                               
+                               -- return
+                               if type(block.ret) == "table" then
+                                       table.foreachi(block.ret, function (_, ret)
+                                               f:write(util.comment(util.wrap(string.format("@return %s", ret), 77)).."\n")
+                                       end)
+                               else
+                                       f:write(util.comment(util.wrap(string.format("@return %s", block.ret or todo), 77)).."\n")
+                               end
+                       end
+                       
+                       -- TODO: usage
+                       -- TODO: see
+
+                       -- write code
+                       for _, line in ipairs(block.code) do
+                               f:write(line.."\n")
+                       end
+               end
+               
+               f:close()
+       end
+end
diff --git a/package/luci/build/luadoc/luadoc/doclet/html.lua b/package/luci/build/luadoc/luadoc/doclet/html.lua
new file mode 100644 (file)
index 0000000..e77fb74
--- /dev/null
@@ -0,0 +1,275 @@
+-------------------------------------------------------------------------------
+-- Doclet that generates HTML output. This doclet generates a set of html files
+-- based on a group of templates. The main templates are:
+-- <ul>
+-- <li>index.lp: index of modules and files;</li>
+-- <li>file.lp: documentation for a lua file;</li>
+-- <li>module.lp: documentation for a lua module;</li>
+-- <li>function.lp: documentation for a lua function. This is a
+-- sub-template used by the others.</li>
+-- </ul>
+--
+-- @release $Id: html.lua,v 1.29 2007/12/21 17:50:48 tomas Exp $
+-------------------------------------------------------------------------------
+
+local assert, getfenv, ipairs, loadstring, pairs, setfenv, tostring, tonumber, type = assert, getfenv, ipairs, loadstring, pairs, setfenv, tostring, tonumber, type
+local io = require"io"
+local posix = require "nixio.fs"
+local lp = require "luadoc.lp"
+local luadoc = require"luadoc"
+local package = package
+local string = require"string"
+local table = require"table"
+
+module "luadoc.doclet.html"
+
+-------------------------------------------------------------------------------
+-- Looks for a file `name' in given path. Removed from compat-5.1
+-- @param path String with the path.
+-- @param name String with the name to look for.
+-- @return String with the complete path of the file found
+--     or nil in case the file is not found.
+
+local function search (path, name)
+  for c in string.gfind(path, "[^;]+") do
+    c = string.gsub(c, "%?", name)
+    local f = io.open(c)
+    if f then   -- file exist?
+      f:close()
+      return c
+    end
+  end
+  return nil    -- file not found
+end
+
+-------------------------------------------------------------------------------
+-- Include the result of a lp template into the current stream.
+
+function include (template, env)
+       -- template_dir is relative to package.path
+       local templatepath = options.template_dir .. template
+
+       -- search using package.path (modified to search .lp instead of .lua
+       local search_path = string.gsub(package.path, "%.lua", "")
+       local templatepath = search(search_path, templatepath)
+       assert(templatepath, string.format("template `%s' not found", template))
+
+       env = env or {}
+       env.table = table
+       env.io = io
+       env.lp = lp
+       env.ipairs = ipairs
+       env.tonumber = tonumber
+       env.tostring = tostring
+       env.type = type
+       env.luadoc = luadoc
+       env.options = options
+
+       return lp.include(templatepath, env)
+end
+
+-------------------------------------------------------------------------------
+-- Returns a link to a html file, appending "../" to the link to make it right.
+-- @param html Name of the html file to link to
+-- @return link to the html file
+
+function link (html, from)
+       local h = html
+       from = from or ""
+       string.gsub(from, "/", function () h = "../" .. h end)
+       return h
+end
+
+-------------------------------------------------------------------------------
+-- Returns the name of the html file to be generated from a module.
+-- Files with "lua" or "luadoc" extensions are replaced by "html" extension.
+-- @param modulename Name of the module to be processed, may be a .lua file or
+-- a .luadoc file.
+-- @return name of the generated html file for the module
+
+function module_link (modulename, doc, from)
+       -- TODO: replace "." by "/" to create directories?
+       -- TODO: how to deal with module names with "/"?
+       assert(modulename)
+       assert(doc)
+       from = from or ""
+
+       if doc.modules[modulename] == nil then
+--             logger:error(string.format("unresolved reference to module `%s'", modulename))
+               return
+       end
+
+       local href = "modules/" .. modulename .. ".html"
+       string.gsub(from, "/", function () href = "../" .. href end)
+       return href
+end
+
+-------------------------------------------------------------------------------
+-- Returns the name of the html file to be generated from a lua(doc) file.
+-- Files with "lua" or "luadoc" extensions are replaced by "html" extension.
+-- @param to Name of the file to be processed, may be a .lua file or
+-- a .luadoc file.
+-- @param from path of where am I, based on this we append ..'s to the
+-- beginning of path
+-- @return name of the generated html file
+
+function file_link (to, from)
+       assert(to)
+       from = from or ""
+
+       local href = to
+       href = string.gsub(href, "lua$", "html")
+       href = string.gsub(href, "luadoc$", "html")
+       href = "files/" .. href
+       string.gsub(from, "/", function () href = "../" .. href end)
+       return href
+end
+
+-------------------------------------------------------------------------------
+-- Returns a link to a function or to a table
+-- @param fname name of the function or table to link to.
+-- @param doc documentation table
+-- @param kind String specying the kinf of element to link ("functions" or "tables").
+
+function link_to (fname, doc, module_doc, file_doc, from, kind)
+       assert(fname)
+       assert(doc)
+       from = from or ""
+       kind = kind or "functions"
+
+       if file_doc then
+               for _, func_name in pairs(file_doc[kind]) do
+                       if func_name == fname then
+                               return file_link(file_doc.name, from) .. "#" .. fname
+                       end
+               end
+       end
+
+       if module_doc and module_doc[kind] then
+               for func_name, tbl in pairs(module_doc[kind]) do
+                       if func_name == fname then
+                               return "#" .. fname
+                       end
+               end
+       end
+
+       local _, _, modulename, fname = string.find(fname, "^(.-)[%.%:]?([^%.%:]*)$")
+       assert(fname)
+
+       -- if fname does not specify a module, use the module_doc
+       if string.len(modulename) == 0 and module_doc then
+               modulename = module_doc.name
+       end
+
+       local module_doc = doc.modules[modulename]
+       if not module_doc then
+--             logger:error(string.format("unresolved reference to function `%s': module `%s' not found", fname, modulename))
+               return
+       end
+
+       for _, func_name in pairs(module_doc[kind]) do
+               if func_name == fname then
+                       return module_link(modulename, doc, from) .. "#" .. fname
+               end
+       end
+
+--     logger:error(string.format("unresolved reference to function `%s' of module `%s'", fname, modulename))
+end
+
+-------------------------------------------------------------------------------
+-- Make a link to a file, module or function
+
+function symbol_link (symbol, doc, module_doc, file_doc, from)
+       assert(symbol)
+       assert(doc)
+
+       local href =
+--             file_link(symbol, from) or
+               module_link(symbol, doc, from) or
+               link_to(symbol, doc, module_doc, file_doc, from, "functions") or
+               link_to(symbol, doc, module_doc, file_doc, from, "tables")
+
+       if not href then
+               logger:error(string.format("unresolved reference to symbol `%s'", symbol))
+       end
+
+       return href or ""
+end
+
+-------------------------------------------------------------------------------
+-- Assembly the output filename for an input file.
+-- TODO: change the name of this function
+function out_file (filename)
+       local h = filename
+       h = string.gsub(h, "lua$", "html")
+       h = string.gsub(h, "luadoc$", "html")
+       h = "files/" .. h
+--     h = options.output_dir .. string.gsub (h, "^.-([%w_]+%.html)$", "%1")
+       h = options.output_dir .. h
+       return h
+end
+
+-------------------------------------------------------------------------------
+-- Assembly the output filename for a module.
+-- TODO: change the name of this function
+function out_module (modulename)
+       local h = modulename .. ".html"
+       h = "modules/" .. h
+       h = options.output_dir .. h
+       return h
+end
+
+-----------------------------------------------------------------
+-- Generate the output.
+-- @param doc Table with the structured documentation.
+
+function start (doc)
+       -- Generate index file
+       if (#doc.files > 0 or #doc.modules > 0) and (not options.noindexpage) then
+               local filename = options.output_dir.."index.html"
+               logger:info(string.format("generating file `%s'", filename))
+               local f = posix.open(filename, "w")
+               assert(f, string.format("could not open `%s' for writing", filename))
+               io.output(f)
+               include("index.lp", { doc = doc })
+               f:close()
+       end
+
+       -- Process modules
+       if not options.nomodules then
+               for _, modulename in ipairs(doc.modules) do
+                       local module_doc = doc.modules[modulename]
+                       -- assembly the filename
+                       local filename = out_module(modulename)
+                       logger:info(string.format("generating file `%s'", filename))
+
+                       local f = posix.open(filename, "w")
+                       assert(f, string.format("could not open `%s' for writing", filename))
+                       io.output(f)
+                       include("module.lp", { doc = doc, module_doc = module_doc })
+                       f:close()
+               end
+       end
+
+       -- Process files
+       if not options.nofiles then
+               for _, filepath in ipairs(doc.files) do
+                       local file_doc = doc.files[filepath]
+                       -- assembly the filename
+                       local filename = out_file(file_doc.name)
+                       logger:info(string.format("generating file `%s'", filename))
+
+                       local f = posix.open(filename, "w")
+                       assert(f, string.format("could not open `%s' for writing", filename))
+                       io.output(f)
+                       include("file.lp", { doc = doc, file_doc = file_doc} )
+                       f:close()
+               end
+       end
+
+       -- copy extra files
+       local f = posix.open(options.output_dir.."luadoc.css", "w")
+       io.output(f)
+       include("luadoc.css")
+       f:close()
+end
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/constant.lp b/package/luci/build/luadoc/luadoc/doclet/html/constant.lp
new file mode 100644 (file)
index 0000000..2e35392
--- /dev/null
@@ -0,0 +1,28 @@
+<%
+if module_doc then
+       from = "modules/"..module_doc.name
+elseif file_doc then
+       from = "files/.."..file_doc.name
+else
+       from = ""
+end
+%>
+
+<dt><%=const.private and "local " or ""%><a name="<%=const.name%>"></a><strong><%=const.name:gsub(".+%.","")%></strong></dt>
+<dd>
+<%=const.description or ""%>
+
+<%if type(const.see) == "string" then %>
+<h3>See also:</h3>
+       <a href="<%=const.see%>"><%=const.see%></a>
+<%elseif type(const.see) == "table" and #const.see > 0 then %>
+<h3>See also:</h3>
+<ul>
+       <%for i = 1, #const.see do%>
+       <li><a href="<%=luadoc.doclet.html.symbol_link(const.see[i], doc, module_doc, file_doc, from)%>">
+               <%=const.see[i]:gsub(".+%.","")%>
+       </a>
+       <%end%>
+</ul
+<%end%>
+</dd>
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/file.lp b/package/luci/build/luadoc/luadoc/doclet/html/file.lp
new file mode 100644 (file)
index 0000000..68f4864
--- /dev/null
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="<%=luadoc.doclet.html.link('luadoc.css', 'files/'..file_doc.name)%>" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+<%=luadoc.doclet.html.include("menu.lp", { doc=doc, file_doc=file_doc })%>
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code><%=file_doc.name%></code></h1>
+
+<%if file_doc.description then%>
+<p><%=file_doc.description%></p>
+<%end%>
+<%if file_doc.author then%>
+<p><b><%= #file_doc.author>1 and "Authors" or "Author" %>:</b>
+<table class="authors_list">
+<%for _, author in ipairs(file_doc.author) do%>
+       <tr><td class="name"><%= author %></td></tr>
+<%end%>
+</table>
+</p>
+<%end%>
+<%if file_doc.copyright then%>
+<p>Copyright &copy;<%=file_doc.copyright%></p>
+<%end%>
+<%if file_doc.release then%>
+<p><small><b>Release:</b> <%=file_doc.release%></small></p>
+<%end%>
+
+<%if #file_doc.functions > 0 then%>
+<h2>Functions</h2>
+<table class="function_list">
+<%for _, func_name in ipairs(file_doc.functions) do
+  local func_data = file_doc.functions[func_name]%>
+       <tr>
+       <td class="name" nowrap><%=func_data.private and "local " or ""%><a href="#<%=func_name%>"><%=func_name%></a>&nbsp;(<%=table.concat(func_data.param or {}, ", ")%>)</td>
+       <td class="summary"><%=func_data.summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+
+<%if #file_doc.tables > 0 then%>
+<h2>Tables</h2>
+<table class="table_list">
+<%for _, tab_name in ipairs(file_doc.tables) do%>
+       <tr>
+       <td class="name" nowrap><a href="#<%=tab_name%>"><%=tab_name%></a></td>
+       <td class="summary"><%=file_doc.tables[tab_name].summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+
+<br/>
+<br/>
+
+
+
+<%if #file_doc.functions > 0 then%>
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+<%for _, func_name in ipairs(file_doc.functions) do%>
+<%=luadoc.doclet.html.include("function.lp", { doc=doc, file_doc=file_doc, func=file_doc.functions[func_name] })%>
+<%end%>
+</dl>
+<%end%>
+
+
+<%if #file_doc.tables > 0 then%>
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+<%for _, tab_name in ipairs(file_doc.tables) do%>
+<%=luadoc.doclet.html.include("table.lp", { doc=doc, file_doc=file_doc, tab=file_doc.tables[tab_name] })%>
+<%end%>
+</dl>
+<%end%>
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/function.lp b/package/luci/build/luadoc/luadoc/doclet/html/function.lp
new file mode 100644 (file)
index 0000000..29d403e
--- /dev/null
@@ -0,0 +1,64 @@
+<%
+if module_doc then
+       from = "modules/"..module_doc.name
+elseif file_doc then
+       from = "files/.."..file_doc.name
+else
+       from = ""
+end
+%>
+
+<dt><%=func.private and "local " or ""%><a name="<%=func.name%>"></a><strong><%=func.printname%></strong>&nbsp;(<%=table.concat(func.param or {}, ", ")%>)</dt>
+<dd>
+<%=func.description or ""%>
+
+<%if type(func.param) == "table" and #func.param > 0 then%>
+<h3>Parameters</h3>
+<ul>
+       <%for p = 1, #func.param do%>
+       <li>
+         <%=func.param[p]%>: <%=func.param[func.param[p]] or ""%>
+       </li>
+       <%end%>
+</ul>
+<%end%>
+
+
+<%if type(func.usage) == "string" then%>
+<h3>Usage:</h3>
+<%=func.usage%>
+<%elseif type(func.usage) == "table" then%>
+<h3>Usage</h3>
+<ul>
+       <%for _, usage in ipairs(func.usage) do%>
+       <li><%= usage %>
+       <%end%>
+</ul>
+<%end%>
+
+<%if type(func.ret) == "string" then%>
+<h3>Return value:</h3>
+<%=func.ret%>
+<%elseif type(func.ret) == "table" then%>
+<h3>Return values:</h3>
+<ol>
+       <%for _, ret in ipairs(func.ret) do%>
+       <li><%= ret %>
+       <%end%>
+</ol>
+<%end%>
+
+<%if type(func.see) == "string" then %>
+<h3>See also:</h3>
+       <a href="<%=func.see%>"><%=func.see%></a>
+<%elseif type(func.see) == "table" and #func.see > 0 then %>
+<h3>See also:</h3>
+<ul>
+       <%for i = 1, #func.see do%>
+       <li><a href="<%=luadoc.doclet.html.symbol_link(func.see[i], doc, module_doc, file_doc, from)%>">
+               <%=(oop and func.see[i]:gsub("%.",":") or func.see[i]:gsub(".+%.",""))%>
+       </a>
+       <%end%>
+</ul>
+<%end%>
+</dd>
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/index.lp b/package/luci/build/luadoc/luadoc/doclet/html/index.lp
new file mode 100644 (file)
index 0000000..b4b9f5c
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="<%=luadoc.doclet.html.link("luadoc.css")%>" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+<%=luadoc.doclet.html.include("menu.lp", { doc=doc })%>
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+
+<%if not options.nomodules and #doc.modules > 0 then%>
+<h2>Modules</h2>
+<table class="module_list">
+<!--<tr><td colspan="2">Modules</td></tr>-->
+<%for _, modulename in ipairs(doc.modules) do%>
+       <tr>
+               <td class="name"><a href="<%=luadoc.doclet.html.module_link(modulename, doc)%>"><%=modulename%></a></td>
+               <td class="summary"><%=doc.modules[modulename].summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+
+
+<%if not options.nofiles and #doc.files > 0 then%>
+<h2>Files</h2>
+<table class="file_list">
+<!--<tr><td colspan="2">Files</td></tr>-->
+<%for _, filepath in ipairs(doc.files) do%>
+       <tr>
+               <td class="name"><a href="<%=luadoc.doclet.html.file_link(filepath)%>"><%=filepath%></a></td>
+               <td class="summary"></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/luadoc.css b/package/luci/build/luadoc/luadoc/doclet/html/luadoc.css
new file mode 100644 (file)
index 0000000..f9f9749
--- /dev/null
@@ -0,0 +1,285 @@
+body { 
+    margin-left: 1em; 
+    margin-right: 1em; 
+    font-family: arial, helvetica, geneva, sans-serif;
+       background-color:#ffffff; margin:0px;
+}
+
+code {
+    font-family: "Andale Mono", monospace; 
+}
+
+tt {
+    font-family: "Andale Mono", monospace; 
+}
+
+body, td, th { font-size: 11pt; }
+
+h1, h2, h3, h4 { margin-left: 0em; }
+
+textarea, pre, tt { font-size:10pt; }
+body, td, th { color:#000000; }
+small { font-size:0.85em; }
+h1 { font-size:1.5em; }
+h2 { font-size:1.25em; }
+h3 { font-size:1.15em; }
+h4 { font-size:1.06em; }
+
+a:link { font-weight:bold; color: #004080; text-decoration: none; }
+a:visited { font-weight:bold; color: #006699; text-decoration: none; }
+a:link:hover { text-decoration:underline; }
+hr { color:#cccccc }
+img { border-width: 0px; }
+
+
+h3 { padding: 1em 0 0.5em; }
+
+p { margin-left: 1em; }
+
+p.name { 
+    font-family: "Andale Mono", monospace; 
+    padding-top: 1em;
+    margin-left: 0em; 
+}
+
+blockquote { margin-left: 3em; }
+
+pre.example {
+    background-color: rgb(245, 245, 245);
+    border-top-width: 1px;
+    border-right-width: 1px;
+    border-bottom-width: 1px;
+    border-left-width: 1px;
+    border-top-style: solid;
+    border-right-style: solid;
+    border-bottom-style: solid;
+    border-left-style: solid;
+    border-top-color: silver;
+    border-right-color: silver;
+    border-bottom-color: silver;
+    border-left-color: silver;
+    padding: 1em;
+    margin-left: 1em;
+    margin-right: 1em;
+    font-family: "Andale Mono", monospace; 
+    font-size: smaller;
+}
+
+
+hr { 
+    margin-left: 0em;
+       background: #00007f; 
+       border: 0px;
+       height: 1px;
+}
+
+ul { list-style-type: disc; }
+
+table.index { border: 1px #00007f; }
+table.index td { text-align: left; vertical-align: top; }
+table.index ul { padding-top: 0em; margin-top: 0em; }
+
+table {
+    border: 1px solid black;
+    border-collapse: collapse;
+    margin: 1em auto;
+}
+th {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+td {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+div.header, div.footer { margin-left: 0em; }
+
+#container
+{
+       margin-left: 1em;
+       margin-right: 1em;
+       background-color: #f0f0f0;
+}
+
+#product
+{
+       text-align: center;
+       border-bottom: 1px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#product big {
+       font-size: 2em;
+}
+
+#product_logo
+{
+}
+
+#product_name
+{
+}
+
+#product_description
+{
+}
+
+#main
+{
+       background-color: #f0f0f0;
+       border-left: 2px solid #cccccc;
+}
+
+#navigation
+{
+       float: left;
+       width: 18em;
+       margin: 0;
+       vertical-align: top;
+       background-color: #f0f0f0;
+       overflow:visible;
+}
+
+#navigation h1 {
+       background-color:#e7e7e7;
+       font-size:1.1em;
+       color:#000000;
+       text-align:left;
+       margin:0px;
+       padding:0.2em;
+       border-top:1px solid #dddddd;
+       border-bottom:1px solid #dddddd;
+}
+
+#navigation ul
+{
+       font-size:1em;
+       list-style-type: none;
+       padding: 0;
+       margin: 1px;
+}
+
+#navigation li
+{
+       text-indent: -1em;
+       margin: 0em 0em 0em 0.5em;
+       display: block;
+       padding: 3px 0px 0px 12px;
+}
+
+#navigation li li a
+{
+       padding: 0px 3px 0px -1em;
+}
+
+#content
+{
+       margin-left: 18em;
+       padding: 1em;
+       border-left: 2px solid #cccccc;
+       border-right: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#about
+{
+       clear: both;
+       margin: 0;
+       padding: 5px;
+       border-top: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+@media print {
+       body { 
+               font: 12pt "Times New Roman", "TimeNR", Times, serif;
+       }
+       a { font-weight:bold; color: #004080; text-decoration: underline; }
+       
+       #main\r  {\r              background-color: #ffffff;\r             border-left: 0px;\r      }\r      
+       #container\r     {\r              margin-left: 2%;\r               margin-right: 2%;\r              background-color: #ffffff;\r     }
+       
+       #content\r       {\r              margin-left: 0px;\r              padding: 1em;\r          border-left: 0px;\r              border-right: 0px;\r             background-color: #ffffff;\r     }
+       
+       #navigation\r    {\r              display: none;
+       }
+       pre.example {
+               font-family: "Andale Mono", monospace; 
+               font-size: 10pt;
+               page-break-inside: avoid;
+       }
+}
+
+table.module_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.module_list td.name { background-color: #f0f0f0; }
+table.module_list td.summary { width: 100%; }
+
+table.file_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.file_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.file_list td.name { background-color: #f0f0f0; }
+table.file_list td.summary { width: 100%; }
+
+
+table.function_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.function_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.function_list td.name { background-color: #f0f0f0; }
+table.function_list td.summary { width: 100%; }
+
+
+table.table_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.table_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.table_list td.name { background-color: #f0f0f0; }
+table.table_list td.summary { width: 100%; }
+
+dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.function dd {padding: 0.5em 0;}
+dl.function h3 {margin: 0; font-size: medium;}
+
+dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.table dd {padding-bottom: 1em;}
+dl.table h3 {padding: 0; margin: 0; font-size: medium;}
+
+#TODO: make module_list, file_list, function_list, table_list inherit from a list
+
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/menu.lp b/package/luci/build/luadoc/luadoc/doclet/html/menu.lp
new file mode 100644 (file)
index 0000000..0fe3652
--- /dev/null
@@ -0,0 +1,55 @@
+<%
+if module_doc then
+       from = "modules/"..module_doc.name
+elseif file_doc then
+       from = "files/.."..file_doc.name
+else
+       from = ""
+end
+%>
+
+<h1>LuaDoc</h1>
+<ul>
+       <%if not module_doc and not file_doc then%>
+       <li><strong>Index</strong></li>
+       <%else%>
+       <li><a href="<%=luadoc.doclet.html.link("index.html", from)%>">Index</a></li>
+       <%end%>
+</ul>
+
+
+<!-- Module list -->
+<%if not options.nomodules and #doc.modules > 0 then%>
+<h1>Modules</h1>
+<ul>
+<%for _, modulename in ipairs(doc.modules) do
+       if module_doc and module_doc.name == modulename then%>
+       <li><strong><%=modulename%></strong></li>
+       <%else%>
+       <li>
+               <a href="<%=luadoc.doclet.html.module_link(modulename, doc, from)%>"><%=modulename%></a>
+       </li>
+<%     end
+end%>
+</ul>
+<%end%>
+
+
+<!-- File list -->
+<%if not options.nofiles and #doc.files > 0 then%>
+<h1>Files</h1>
+<ul>
+<%for _, filepath in ipairs(doc.files) do
+       if file_doc and file_doc.name == filepath then%>
+       <li><strong><%=filepath%></strong></li>
+       <%else%>
+       <li>
+               <a href="<%=luadoc.doclet.html.file_link(filepath, from)%>"><%=filepath%></a>
+       </li>
+<%     end
+end%>
+</ul>
+<%end%>
+
+
+
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/module.lp b/package/luci/build/luadoc/luadoc/doclet/html/module.lp
new file mode 100644 (file)
index 0000000..0798c1b
--- /dev/null
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="<%=luadoc.doclet.html.link('luadoc.css', 'modules/'..module_doc.name)%>" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+<%=luadoc.doclet.html.include("menu.lp", { doc=doc, module_doc=module_doc })%>
+<% oop = not not ( module_doc.doc[1] and module_doc.doc[1].cstyle == "instance" ) %>
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1><%=( oop and "Object Instance" or "Class" )%> <code><%=module_doc.name%></code></h1>
+
+<p><%=module_doc.description%></p>
+<%if module_doc.author then%>
+<p><b><%= #module_doc.author>1 and "Authors" or "Author" %>:</b>
+<table class="authors_list">
+<%for _, author in ipairs(module_doc.author) do%>
+       <tr><td class="name"><%= author %></td></tr>
+<%end%>
+</table>
+</p>
+<%end%>
+<%if module_doc.copyright then%>
+<p>Copyright&copy; <%=module_doc.copyright%></p>
+<%end%>
+<%if module_doc.release then%>
+<p><small><b>Release:</b> <%=module_doc.release%></small></p>
+<%end%>
+
+<%if #module_doc.constants > 0 then %>
+<h2>Constants</h2>
+<table class="function_list">
+<%for _, const_name in ipairs(module_doc.constants) do
+  local const_data = module_doc.constants[const_name]%>
+       <tr>
+       <td class="name" nowrap><code><%=const_data.private and "local " or ""%><%=(const_name:gsub(".+%.",""))%></code></td>
+       <td class="summary"><%=const_data.summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+<% local funcs = { }; if #module_doc.functions > 0 then %>
+<h2>Functions</h2>
+<table class="function_list">
+<%
+for _, func_name in ipairs(module_doc.functions) do
+  funcs[#funcs+1] = func_name
+end
+
+table.sort(funcs, function(a, b)
+  local func_data_a = module_doc.functions[a]
+  local func_data_b = module_doc.functions[b]
+  local x = func_data_a.sort or a
+  local y = func_data_b.sort or b
+  return x < y
+end)
+
+for _, func_name in ipairs(funcs) do
+  local func_data = module_doc.functions[func_name]
+
+  func_data.printname = func_name:gsub("^%d+#", "")
+  if oop then
+       func_data.printname = func_data.printname:gsub("%.", ":")
+  else
+    func_data.printname = func_data.printname:gsub("^.+%.", "")
+  end
+%>
+       <tr>
+       <td class="name" nowrap><%=func_data.private and "local " or ""%><a href="#<%=func_name%>"><%=func_data.printname%></a>&nbsp;(<%=table.concat(module_doc.functions[func_name].param or {}, ", ")%>)</td>
+       <td class="summary"><%=module_doc.functions[func_name].summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+
+<% local tabs = { }; if #module_doc.tables > 0 then%>
+<h2>Tables</h2>
+<table class="table_list">
+<%
+for _, tab_name in ipairs(module_doc.tables) do
+  tabs[#tabs+1] = tab_name
+end
+
+table.sort(tabs, function(a, b)
+  local tab_data_a = module_doc.tables[a]
+  local tab_data_b = module_doc.tables[b]
+  local x = tab_data_a.sort or a
+  local y = tab_data_b.sort or b
+  return x < y
+end)
+
+for _, tab_name in ipairs(tabs) do
+%>
+       <tr>
+       <td class="name" nowrap><a href="#<%=tab_name%>"><%=tab_name%></a></td>
+       <td class="summary"><%=module_doc.tables[tab_name].summary%></td>
+       </tr>
+<%end%>
+</table>
+<%end%>
+
+
+<br/>
+<br/>
+
+<%if #module_doc.functions > 0 then%>
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+<%for _, func_name in ipairs(funcs) do%>
+<%=luadoc.doclet.html.include("function.lp", { doc=doc, module_doc=module_doc, func=module_doc.functions[func_name], oop=oop })%>
+<%end%>
+</dl>
+<%end%>
+
+<%if #module_doc.tables > 0 then%>
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+<%for _, tab_name in ipairs(tabs) do%>
+<%=luadoc.doclet.html.include("table.lp", { doc=doc, module_doc=module_doc, tab=module_doc.tables[tab_name] })%>
+<%end%>
+</dl>
+<%end%>
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/build/luadoc/luadoc/doclet/html/table.lp b/package/luci/build/luadoc/luadoc/doclet/html/table.lp
new file mode 100644 (file)
index 0000000..5cd0239
--- /dev/null
@@ -0,0 +1,15 @@
+<dt><a name="<%=tab.name%>"></a><strong><%=tab.name%></strong></dt>
+<dd><%=tab.description%>
+
+<%if type(tab.field) == "table" and #tab.field > 0 then%>
+<em>Fields</em>
+<ul>
+       <%for p = 1, #tab.field do%>
+       <li>
+         <%=tab.field[p]%>: <%=tab.field[tab.field[p]] or ""%>
+       </li>
+       <%end%>
+</ul>
+<%end%>
+
+</dd>
diff --git a/package/luci/build/luadoc/luadoc/doclet/raw.lua b/package/luci/build/luadoc/luadoc/doclet/raw.lua
new file mode 100644 (file)
index 0000000..1e880b8
--- /dev/null
@@ -0,0 +1,12 @@
+-----------------------------------------------------------------
+-- @release $Id: raw.lua,v 1.5 2007/04/18 14:28:39 tomas Exp $
+-----------------------------------------------------------------
+
+module "luadoc.doclet.raw"
+
+-----------------------------------------------------------------
+-- Generate the output.
+-- @param doc Table with the structured documentation.
+
+function start (doc)
+end
diff --git a/package/luci/build/luadoc/luadoc/init.lua b/package/luci/build/luadoc/luadoc/init.lua
new file mode 100644 (file)
index 0000000..649515d
--- /dev/null
@@ -0,0 +1,50 @@
+-------------------------------------------------------------------------------
+-- LuaDoc main function.
+-- @release $Id: init.lua,v 1.4 2008/02/17 06:42:51 jasonsantos Exp $
+-------------------------------------------------------------------------------
+
+local require = require
+
+local util = require "luadoc.util"
+
+logger = {}
+
+module ("luadoc")
+
+-------------------------------------------------------------------------------
+-- LuaDoc version number.
+
+_COPYRIGHT = "Copyright (c) 2003-2007 The Kepler Project"
+_DESCRIPTION = "Documentation Generator Tool for the Lua language"
+_VERSION = "LuaDoc 3.0.1"
+
+-------------------------------------------------------------------------------
+-- Main function
+-- @see luadoc.doclet.html, luadoc.doclet.formatter, luadoc.doclet.raw
+-- @see luadoc.taglet.standard
+
+function main (files, options)
+       logger = util.loadlogengine(options)
+
+       -- load config file
+       if options.config ~= nil then
+               -- load specified config file
+               dofile(options.config)
+       else
+               -- load default config file
+               require("luadoc.config")
+       end
+       
+       local taglet = require(options.taglet)
+       local doclet = require(options.doclet)
+
+       -- analyze input
+       taglet.options = options
+       taglet.logger = logger
+       local doc = taglet.start(files)
+
+       -- generate output
+       doclet.options = options
+       doclet.logger = logger
+       doclet.start(doc)
+end
diff --git a/package/luci/build/luadoc/luadoc/lp.lua b/package/luci/build/luadoc/luadoc/lp.lua
new file mode 100644 (file)
index 0000000..adf84f9
--- /dev/null
@@ -0,0 +1,130 @@
+----------------------------------------------------------------------------
+-- Lua Pages Template Preprocessor.
+--
+-- @release $Id: lp.lua,v 1.7 2007/04/18 14:28:39 tomas Exp $
+----------------------------------------------------------------------------
+
+local assert, error, getfenv, loadstring, setfenv = assert, error, getfenv, loadstring, setfenv
+local find, format, gsub, strsub = string.find, string.format, string.gsub, string.sub
+local concat, tinsert = table.concat, table.insert
+local open = io.open
+
+module (...)
+
+----------------------------------------------------------------------------
+-- function to do output
+local outfunc = "io.write"
+-- accepts the old expression field: `$| <Lua expression> |$'
+local compatmode = true
+
+--
+-- Builds a piece of Lua code which outputs the (part of the) given string.
+-- @param s String.
+-- @param i Number with the initial position in the string.
+-- @param f Number with the final position in the string (default == -1).
+-- @return String with the correspondent Lua code which outputs the part of the string.
+--
+local function out (s, i, f)
+       s = strsub(s, i, f or -1)
+       if s == "" then return s end
+       -- we could use `%q' here, but this way we have better control
+       s = gsub(s, "([\\\n\'])", "\\%1")
+       -- substitute '\r' by '\'+'r' and let `loadstring' reconstruct it
+       s = gsub(s, "\r", "\\r")
+       return format(" %s('%s'); ", outfunc, s)
+end
+
+
+----------------------------------------------------------------------------
+-- Translate the template to Lua code.
+-- @param s String to translate.
+-- @return String with translated code.
+----------------------------------------------------------------------------
+function translate (s)
+       if compatmode then
+               s = gsub(s, "$|(.-)|%$", "<?lua = %1 ?>")
+               s = gsub(s, "<!%-%-$$(.-)$$%-%->", "<?lua %1 ?>")
+       end
+       s = gsub(s, "<%%(.-)%%>", "<?lua %1 ?>")
+       local res = {}
+       local start = 1   -- start of untranslated part in `s'
+       while true do
+               local ip, fp, target, exp, code = find(s, "<%?(%w*)[ \t]*(=?)(.-)%?>", start)
+               if not ip then break end
+               tinsert(res, out(s, start, ip-1))
+               if target ~= "" and target ~= "lua" then
+                       -- not for Lua; pass whole instruction to the output
+                       tinsert(res, out(s, ip, fp))
+               else
+                       if exp == "=" then   -- expression?
+                               tinsert(res, format(" %s(%s);", outfunc, code))
+                       else  -- command
+                               tinsert(res, format(" %s ", code))
+                       end
+               end
+               start = fp + 1
+       end
+       tinsert(res, out(s, start))
+       return concat(res)
+end
+
+
+----------------------------------------------------------------------------
+-- Defines the name of the output function.
+-- @param f String with the name of the function which produces output.
+
+function setoutfunc (f)
+       outfunc = f
+end
+
+----------------------------------------------------------------------------
+-- Turns on or off the compatibility with old CGILua 3.X behavior.
+-- @param c Boolean indicating if the compatibility mode should be used.
+
+function setcompatmode (c)
+       compatmode = c
+end
+
+----------------------------------------------------------------------------
+-- Internal compilation cache.
+
+local cache = {}
+
+----------------------------------------------------------------------------
+-- Translates a template into a Lua function.
+-- Does NOT execute the resulting function.
+-- Uses a cache of templates.
+-- @param string String with the template to be translated.
+-- @param chunkname String with the name of the chunk, for debugging purposes.
+-- @return Function with the resulting translation.
+
+function compile (string, chunkname)
+       local f, err = cache[string]
+       if f then return f end
+       f, err = loadstring (translate (string), chunkname)
+       if not f then error (err, 3) end
+       cache[string] = f
+       return f
+end
+
+----------------------------------------------------------------------------
+-- Translates and executes a template in a given file.
+-- The translation creates a Lua function which will be executed in an
+-- optionally given environment.
+-- @param filename String with the name of the file containing the template.
+-- @param env Table with the environment to run the resulting function.
+
+function include (filename, env)
+       -- read the whole contents of the file
+       local fh = assert (open (filename))
+       local src = fh:read("*a")
+       fh:close()
+       -- translates the file into a function
+       local prog = compile (src, '@'..filename)
+       local _env
+       if env then
+               _env = getfenv (prog)
+               setfenv (prog, env)
+       end
+       prog ()
+end
diff --git a/package/luci/build/luadoc/luadoc/taglet/standard.lua b/package/luci/build/luadoc/luadoc/taglet/standard.lua
new file mode 100644 (file)
index 0000000..ef925f8
--- /dev/null
@@ -0,0 +1,567 @@
+-------------------------------------------------------------------------------
+-- @release $Id: standard.lua,v 1.39 2007/12/21 17:50:48 tomas Exp $
+-------------------------------------------------------------------------------
+
+local assert, pairs, tostring, type = assert, pairs, tostring, type
+local io = require "io"
+local posix = require "nixio.fs"
+local luadoc = require "luadoc"
+local util = require "luadoc.util"
+local tags = require "luadoc.taglet.standard.tags"
+local string = require "string"
+local table = require "table"
+
+module 'luadoc.taglet.standard'
+
+-------------------------------------------------------------------------------
+-- Creates an iterator for an array base on a class type.
+-- @param t array to iterate over
+-- @param class name of the class to iterate over
+
+function class_iterator (t, class)
+       return function ()
+               local i = 1
+               return function ()
+                       while t[i] and t[i].class ~= class do
+                               i = i + 1
+                       end
+                       local v = t[i]
+                       i = i + 1
+                       return v
+               end
+       end
+end
+
+-- Patterns for function recognition
+local identifiers_list_pattern = "%s*(.-)%s*"
+local identifier_pattern = "[^%(%s]+"
+local function_patterns = {
+       "^()%s*function%s*("..identifier_pattern..")%s*%("..identifiers_list_pattern.."%)",
+       "^%s*(local%s)%s*function%s*("..identifier_pattern..")%s*%("..identifiers_list_pattern.."%)",
+       "^()%s*("..identifier_pattern..")%s*%=%s*function%s*%("..identifiers_list_pattern.."%)",
+}
+
+-------------------------------------------------------------------------------
+-- Checks if the line contains a function definition
+-- @param line string with line text
+-- @return function information or nil if no function definition found
+
+local function check_function (line)
+       line = util.trim(line)
+
+       local info = table.foreachi(function_patterns, function (_, pattern)
+               local r, _, l, id, param = string.find(line, pattern)
+               if r ~= nil then
+                       return {
+                               name = id,
+                               private = (l == "local"),
+                               param = { } --util.split("%s*,%s*", param),
+                       }
+               end
+       end)
+
+       -- TODO: remove these assert's?
+       if info ~= nil then
+               assert(info.name, "function name undefined")
+               assert(info.param, string.format("undefined parameter list for function `%s'", info.name))
+       end
+
+       return info
+end
+
+-------------------------------------------------------------------------------
+-- Checks if the line contains a module definition.
+-- @param line string with line text
+-- @param currentmodule module already found, if any
+-- @return the name of the defined module, or nil if there is no module
+-- definition
+
+local function check_module (line, currentmodule)
+       line = util.trim(line)
+
+       -- module"x.y"
+       -- module'x.y'
+       -- module[[x.y]]
+       -- module("x.y")
+       -- module('x.y')
+       -- module([[x.y]])
+       -- module(...)
+
+       local r, _, modulename = string.find(line, "^module%s*[%s\"'(%[]+([^,\"')%]]+)")
+       if r then
+               -- found module definition
+               logger:debug(string.format("found module `%s'", modulename))
+               return modulename
+       end
+       return currentmodule
+end
+
+-- Patterns for constant recognition
+local constant_patterns = {
+       "^()%s*([A-Z][A-Z0-9_]*)%s*=",
+       "^%s*(local%s)%s*([A-Z][A-Z0-9_]*)%s*=",
+}
+
+-------------------------------------------------------------------------------
+-- Checks if the line contains a constant definition
+-- @param line string with line text
+-- @return constant information or nil if no constant definition found
+
+local function check_constant (line)
+       line = util.trim(line)
+
+       local info = table.foreachi(constant_patterns, function (_, pattern)
+               local r, _, l, id = string.find(line, pattern)
+               if r ~= nil then
+                       return {
+                               name = id,
+                               private = (l == "local"),
+                       }
+               end
+       end)
+
+       -- TODO: remove these assert's?
+       if info ~= nil then
+               assert(info.name, "constant name undefined")
+       end
+
+       return info
+end
+
+-------------------------------------------------------------------------------
+-- Extracts summary information from a description. The first sentence of each
+-- doc comment should be a summary sentence, containing a concise but complete
+-- description of the item. It is important to write crisp and informative
+-- initial sentences that can stand on their own
+-- @param description text with item description
+-- @return summary string or nil if description is nil
+
+local function parse_summary (description)
+       -- summary is never nil...
+       description = description or ""
+
+       -- append an " " at the end to make the pattern work in all cases
+       description = description.." "
+
+       -- read until the first period followed by a space or tab
+       local summary = string.match(description, "(.-%.)[%s\t]")
+
+       -- if pattern did not find the first sentence, summary is the whole description
+       summary = summary or description
+
+       return summary
+end
+
+-------------------------------------------------------------------------------
+-- @param f file handle
+-- @param line current line being parsed
+-- @param modulename module already found, if any
+-- @return current line
+-- @return code block
+-- @return modulename if found
+
+local function parse_code (f, line, modulename)
+       local code = {}
+       while line ~= nil do
+               if string.find(line, "^[\t ]*%-%-%-") then
+                       -- reached another luadoc block, end this parsing
+                       return line, code, modulename
+               else
+                       -- look for a module definition
+                       modulename = check_module(line, modulename)
+
+                       table.insert(code, line)
+                       line = f:read()
+               end
+       end
+       -- reached end of file
+       return line, code, modulename
+end
+
+-------------------------------------------------------------------------------
+-- Parses the information inside a block comment
+-- @param block block with comment field
+-- @return block parameter
+
+local function parse_comment (block, first_line, modulename)
+
+       -- get the first non-empty line of code
+       local code = table.foreachi(block.code, function(_, line)
+               if not util.line_empty(line) then
+                       -- `local' declarations are ignored in two cases:
+                       -- when the `nolocals' option is turned on; and
+                       -- when the first block of a file is parsed (this is
+                       --      necessary to avoid confusion between the top
+                       --      local declarations and the `module' definition.
+                       if (options.nolocals or first_line) and line:find"^%s*local" then
+                               return
+                       end
+                       return line
+               end
+       end)
+
+       -- parse first line of code
+       if code ~= nil then
+               local func_info = check_function(code)
+               local module_name = check_module(code)
+               local const_info = check_constant(code)
+               if func_info then
+                       block.class = "function"
+                       block.name = func_info.name
+                       block.param = func_info.param
+                       block.private = func_info.private
+               elseif const_info then
+                       block.class = "constant"
+                       block.name = const_info.name
+                       block.private = const_info.private
+               elseif module_name then
+                       block.class = "module"
+                       block.name = module_name
+                       block.param = {}
+               else
+                       block.param = {}
+               end
+       else
+               -- TODO: comment without any code. Does this means we are dealing
+               -- with a file comment?
+       end
+
+       -- parse @ tags
+       local currenttag = "description"
+       local currenttext
+
+       table.foreachi(block.comment, function (_, line)
+               line = util.trim_comment(line)
+
+               local r, _, tag, text = string.find(line, "@([_%w%.]+)%s+(.*)")
+               if r ~= nil then
+                       -- found new tag, add previous one, and start a new one
+                       -- TODO: what to do with invalid tags? issue an error? or log a warning?
+                       tags.handle(currenttag, block, currenttext)
+
+                       currenttag = tag
+                       currenttext = text
+               else
+                       currenttext = util.concat(currenttext, "\n" .. line)
+                       assert(string.sub(currenttext, 1, 1) ~= " ", string.format("`%s', `%s'", currenttext, line))
+               end
+       end)
+       tags.handle(currenttag, block, currenttext)
+
+       -- extracts summary information from the description
+       block.summary = parse_summary(block.description)
+       assert(string.sub(block.description, 1, 1) ~= " ", string.format("`%s'", block.description))
+
+       if block.name and block.class == "module" then
+               modulename = block.name
+       end
+
+       return block, modulename
+end
+
+-------------------------------------------------------------------------------
+-- Parses a block of comment, started with ---. Read until the next block of
+-- comment.
+-- @param f file handle
+-- @param line being parsed
+-- @param modulename module already found, if any
+-- @return line
+-- @return block parsed
+-- @return modulename if found
+
+local function parse_block (f, line, modulename, first)
+       local multiline = not not (line and line:match("%[%["))
+       local block = {
+               comment = {},
+               code = {},
+       }
+
+       while line ~= nil do
+               if (multiline == true and string.find(line, "%]%]") ~= nil) or
+                  (multiline == false and string.find(line, "^[\t ]*%-%-") == nil) then
+                       -- reached end of comment, read the code below it
+                       -- TODO: allow empty lines
+                       line, block.code, modulename = parse_code(f, line, modulename)
+
+                       -- parse information in block comment
+                       block, modulename = parse_comment(block, first, modulename)
+
+                       return line, block, modulename
+               else
+                       table.insert(block.comment, line)
+                       line = f:read()
+               end
+       end
+       -- reached end of file
+
+       -- parse information in block comment
+       block, modulename = parse_comment(block, first, modulename)
+
+       return line, block, modulename
+end
+
+-------------------------------------------------------------------------------
+-- Parses a file documented following luadoc format.
+-- @param filepath full path of file to parse
+-- @param doc table with documentation
+-- @return table with documentation
+
+function parse_file (filepath, doc, handle, prev_line, prev_block, prev_modname)
+       local blocks = { prev_block }
+       local modulename = prev_modname
+
+       -- read each line
+       local f = handle or io.open(filepath, "r")
+       local i = 1
+       local line = prev_line or f:read()
+       local first = true
+       while line ~= nil do
+
+               if string.find(line, "^[\t ]*%-%-%-") then
+                       -- reached a luadoc block
+                       local block, newmodname
+                       line, block, newmodname = parse_block(f, line, modulename, first)
+
+                       if modulename and newmodname and newmodname ~= modulename then
+                               doc = parse_file( nil, doc, f, line, block, newmodname )
+                       else
+                               table.insert(blocks, block)
+                               modulename = newmodname
+                       end
+               else
+                       -- look for a module definition
+                       local newmodname = check_module(line, modulename)
+
+                       if modulename and newmodname and newmodname ~= modulename then
+                               parse_file( nil, doc, f )
+                       else
+                               modulename = newmodname
+                       end
+
+                       -- TODO: keep beginning of file somewhere
+
+                       line = f:read()
+               end
+               first = false
+               i = i + 1
+       end
+
+       if not handle then
+               f:close()
+       end
+
+       if filepath then
+               -- store blocks in file hierarchy
+               assert(doc.files[filepath] == nil, string.format("doc for file `%s' already defined", filepath))
+               table.insert(doc.files, filepath)
+               doc.files[filepath] = {
+                       type = "file",
+                       name = filepath,
+                       doc = blocks,
+       --              functions = class_iterator(blocks, "function"),
+       --              tables = class_iterator(blocks, "table"),
+               }
+       --
+               local first = doc.files[filepath].doc[1]
+               if first and modulename then
+                       doc.files[filepath].author = first.author
+                       doc.files[filepath].copyright = first.copyright
+                       doc.files[filepath].description = first.description
+                       doc.files[filepath].release = first.release
+                       doc.files[filepath].summary = first.summary
+               end
+       end
+
+       -- if module definition is found, store in module hierarchy
+       if modulename ~= nil then
+               if modulename == "..." then
+                       assert( filepath, "Can't determine name for virtual module from filepatch" )
+                       modulename = string.gsub (filepath, "%.lua$", "")
+                       modulename = string.gsub (modulename, "/", ".")
+               end
+               if doc.modules[modulename] ~= nil then
+                       -- module is already defined, just add the blocks
+                       table.foreachi(blocks, function (_, v)
+                               table.insert(doc.modules[modulename].doc, v)
+                       end)
+               else
+                       -- TODO: put this in a different module
+                       table.insert(doc.modules, modulename)
+                       doc.modules[modulename] = {
+                               type = "module",
+                               name = modulename,
+                               doc = blocks,
+--                             functions = class_iterator(blocks, "function"),
+--                             tables = class_iterator(blocks, "table"),
+                               author = first and first.author,
+                               copyright = first and first.copyright,
+                               description = "",
+                               release = first and first.release,
+                               summary = "",
+                       }
+
+                       -- find module description
+                       for m in class_iterator(blocks, "module")() do
+                               doc.modules[modulename].description = util.concat(
+                                       doc.modules[modulename].description,
+                                       m.description)
+                               doc.modules[modulename].summary = util.concat(
+                                       doc.modules[modulename].summary,
+                                       m.summary)
+                               if m.author then
+                                       doc.modules[modulename].author = m.author
+                               end
+                               if m.copyright then
+                                       doc.modules[modulename].copyright = m.copyright
+                               end
+                               if m.release then
+                                       doc.modules[modulename].release = m.release
+                               end
+                               if m.name then
+                                       doc.modules[modulename].name = m.name
+                               end
+                       end
+                       doc.modules[modulename].description = doc.modules[modulename].description or (first and first.description) or ""
+                       doc.modules[modulename].summary = doc.modules[modulename].summary or (first and first.summary) or ""
+               end
+
+               -- make functions table
+               doc.modules[modulename].functions = {}
+               for f in class_iterator(blocks, "function")() do
+                       if f and f.name then
+                               table.insert(doc.modules[modulename].functions, f.name)
+                               doc.modules[modulename].functions[f.name] = f
+                       end
+               end
+
+               -- make tables table
+               doc.modules[modulename].tables = {}
+               for t in class_iterator(blocks, "table")() do
+                       if t and t.name then
+                               table.insert(doc.modules[modulename].tables, t.name)
+                               doc.modules[modulename].tables[t.name] = t
+                       end
+               end
+
+               -- make constants table
+               doc.modules[modulename].constants = {}
+               for c in class_iterator(blocks, "constant")() do
+                       if c and c.name then
+                               table.insert(doc.modules[modulename].constants, c.name)
+                               doc.modules[modulename].constants[c.name] = c
+                       end
+               end
+       end
+
+       if filepath then
+               -- make functions table
+               doc.files[filepath].functions = {}
+               for f in class_iterator(blocks, "function")() do
+                       if f and f.name then
+                               table.insert(doc.files[filepath].functions, f.name)
+                               doc.files[filepath].functions[f.name] = f
+                       end
+               end
+
+               -- make tables table
+               doc.files[filepath].tables = {}
+               for t in class_iterator(blocks, "table")() do
+                       if t and t.name then
+                               table.insert(doc.files[filepath].tables, t.name)
+                               doc.files[filepath].tables[t.name] = t
+                       end
+               end
+       end
+
+       return doc
+end
+
+-------------------------------------------------------------------------------
+-- Checks if the file is terminated by ".lua" or ".luadoc" and calls the
+-- function that does the actual parsing
+-- @param filepath full path of the file to parse
+-- @param doc table with documentation
+-- @return table with documentation
+-- @see parse_file
+
+function file (filepath, doc)
+       local patterns = { "%.lua$", "%.luadoc$" }
+       local valid = table.foreachi(patterns, function (_, pattern)
+               if string.find(filepath, pattern) ~= nil then
+                       return true
+               end
+       end)
+
+       if valid then
+               logger:info(string.format("processing file `%s'", filepath))
+               doc = parse_file(filepath, doc)
+       end
+
+       return doc
+end
+
+-------------------------------------------------------------------------------
+-- Recursively iterates through a directory, parsing each file
+-- @param path directory to search
+-- @param doc table with documentation
+-- @return table with documentation
+
+function directory (path, doc)
+       for f in posix.dir(path) do
+               local fullpath = path .. "/" .. f
+               local attr = posix.stat(fullpath)
+               assert(attr, string.format("error stating file `%s'", fullpath))
+
+               if attr.type == "reg" then
+                       doc = file(fullpath, doc)
+               elseif attr.type == "dir" and f ~= "." and f ~= ".." then
+                       doc = directory(fullpath, doc)
+               end
+       end
+       return doc
+end
+
+-- Recursively sorts the documentation table
+local function recsort (tab)
+       table.sort (tab)
+       -- sort list of functions by name alphabetically
+       for f, doc in pairs(tab) do
+               if doc.functions then
+                       table.sort(doc.functions)
+               end
+               if doc.tables then
+                       table.sort(doc.tables)
+               end
+       end
+end
+
+-------------------------------------------------------------------------------
+
+function start (files, doc)
+       assert(files, "file list not specified")
+
+       -- Create an empty document, or use the given one
+       doc = doc or {
+               files = {},
+               modules = {},
+       }
+       assert(doc.files, "undefined `files' field")
+       assert(doc.modules, "undefined `modules' field")
+
+       table.foreachi(files, function (_, path)
+               local attr = posix.stat(path)
+               assert(attr, string.format("error stating path `%s'", path))
+
+               if attr.type == "reg" then
+                       doc = file(path, doc)
+               elseif attr.type == "dir" then
+                       doc = directory(path, doc)
+               end
+       end)
+
+       -- order arrays alphabetically
+       recsort(doc.files)
+       recsort(doc.modules)
+
+       return doc
+end
diff --git a/package/luci/build/luadoc/luadoc/taglet/standard/tags.lua b/package/luci/build/luadoc/luadoc/taglet/standard/tags.lua
new file mode 100644 (file)
index 0000000..b46d685
--- /dev/null
@@ -0,0 +1,191 @@
+-------------------------------------------------------------------------------
+-- Handlers for several tags
+-- @release $Id: tags.lua,v 1.8 2007/09/05 12:39:09 tomas Exp $
+-------------------------------------------------------------------------------
+
+local luadoc = require "luadoc"
+local util = require "luadoc.util"
+local string = require "string"
+local table = require "table"
+local assert, type, tostring, tonumber = assert, type, tostring, tonumber
+
+module "luadoc.taglet.standard.tags"
+
+-------------------------------------------------------------------------------
+
+local function author (tag, block, text)
+       block[tag] = block[tag] or {}
+       if not text then
+               luadoc.logger:warn("author `name' not defined [["..text.."]]: skipping")
+               return
+       end
+       table.insert (block[tag], text)
+end
+
+-------------------------------------------------------------------------------
+-- Set the class of a comment block. Classes can be "module", "function",
+-- "table". The first two classes are automatic, extracted from the source code
+
+local function class (tag, block, text)
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+
+local function cstyle (tag, block, text)
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+
+local function sort (tag, block, text)
+       block[tag] = tonumber(text) or 0
+end
+
+-------------------------------------------------------------------------------
+
+local function copyright (tag, block, text)
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+
+local function description (tag, block, text)
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+
+local function field (tag, block, text)
+       if block["class"] ~= "table" then
+               luadoc.logger:warn("documenting `field' for block that is not a `table'")
+       end
+       block[tag] = block[tag] or {}
+
+       local _, _, name, desc = string.find(text, "^([_%w%.]+)%s+(.*)")
+       assert(name, "field name not defined")
+
+       table.insert(block[tag], name)
+       block[tag][name] = desc
+end
+
+-------------------------------------------------------------------------------
+-- Set the name of the comment block. If the block already has a name, issue
+-- an error and do not change the previous value
+
+local function name (tag, block, text)
+       if block[tag] and block[tag] ~= text then
+               luadoc.logger:error(string.format("block name conflict: `%s' -> `%s'", block[tag], text))
+       end
+
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+-- Processes a parameter documentation.
+-- @param tag String with the name of the tag (it must be "param" always).
+-- @param block Table with previous information about the block.
+-- @param text String with the current line being processed.
+
+local function param (tag, block, text)
+       block[tag] = block[tag] or {}
+       -- TODO: make this pattern more flexible, accepting empty descriptions
+       local _, _, name, desc = string.find(text, "^([_%w%.]+)%s+(.*)")
+       if not name then
+               luadoc.logger:warn("parameter `name' not defined [["..text.."]]: skipping")
+               return
+       end
+       local i = table.foreachi(block[tag], function (i, v)
+               if v == name then
+                       return i
+               end
+       end)
+       if i == nil then
+               luadoc.logger:warn(string.format("documenting undefined parameter `%s'", name))
+               table.insert(block[tag], name)
+       end
+       block[tag][name] = desc
+end
+
+-------------------------------------------------------------------------------
+
+local function release (tag, block, text)
+       block[tag] = text
+end
+
+-------------------------------------------------------------------------------
+
+local function ret (tag, block, text)
+       tag = "ret"
+       if type(block[tag]) == "string" then
+               block[tag] = { block[tag], text }
+       elseif type(block[tag]) == "table" then
+               table.insert(block[tag], text)
+       else
+               block[tag] = text
+       end
+end
+
+-------------------------------------------------------------------------------
+-- @see ret
+
+local function see (tag, block, text)
+       -- see is always an array
+       block[tag] = block[tag] or {}
+
+       -- remove trailing "."
+       text = string.gsub(text, "(.*)%.$", "%1")
+
+       local s = util.split("%s*,%s*", text)
+
+       table.foreachi(s, function (_, v)
+               table.insert(block[tag], v)
+       end)
+end
+
+-------------------------------------------------------------------------------
+-- @see ret
+
+local function usage (tag, block, text)
+       if type(block[tag]) == "string" then
+               block[tag] = { block[tag], text }
+       elseif type(block[tag]) == "table" then
+               table.insert(block[tag], text)
+       else
+               block[tag] = text
+       end
+end
+
+-------------------------------------------------------------------------------
+
+local handlers = {}
+handlers["author"] = author
+handlers["class"] = class
+handlers["cstyle"] = cstyle
+handlers["copyright"] = copyright
+handlers["description"] = description
+handlers["field"] = field
+handlers["name"] = name
+handlers["param"] = param
+handlers["release"] = release
+handlers["return"] = ret
+handlers["see"] = see
+handlers["sort"] = sort
+handlers["usage"] = usage
+
+-------------------------------------------------------------------------------
+
+function handle (tag, block, text)
+       if not handlers[tag] then
+               luadoc.logger:error(string.format("undefined handler for tag `%s'", tag))
+               return
+       end
+
+       if text then
+               text = text:gsub("`([^\n]-)`", "<code>%1</code>")
+               text = text:gsub("`(.-)`", "<pre>%1</pre>")
+       end
+
+--     assert(handlers[tag], string.format("undefined handler for tag `%s'", tag))
+       return handlers[tag](tag, block, text)
+end
diff --git a/package/luci/build/luadoc/luadoc/util.lua b/package/luci/build/luadoc/luadoc/util.lua
new file mode 100644 (file)
index 0000000..7e9cac6
--- /dev/null
@@ -0,0 +1,201 @@
+-------------------------------------------------------------------------------
+-- General utilities.
+-- @release $Id: util.lua,v 1.16 2008/02/17 06:42:51 jasonsantos Exp $
+-------------------------------------------------------------------------------
+
+local posix = require "nixio.fs"
+local type, table, string, io, assert, tostring, setmetatable, pcall = type, table, string, io, assert, tostring, setmetatable, pcall
+
+-------------------------------------------------------------------------------
+-- Module with several utilities that could not fit in a specific module
+
+module "luadoc.util"
+
+-------------------------------------------------------------------------------
+-- Removes spaces from the beginning and end of a given string
+-- @param s string to be trimmed
+-- @return trimmed string
+
+function trim (s)
+       return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
+end
+
+-------------------------------------------------------------------------------
+-- Removes spaces from the beginning and end of a given string, considering the
+-- string is inside a lua comment.
+-- @param s string to be trimmed
+-- @return trimmed string
+-- @see trim
+-- @see string.gsub
+
+function trim_comment (s)
+       s = string.gsub(s, "^%s*%-%-+%[%[(.*)$", "%1")
+       s = string.gsub(s, "^%s*%-%-+(.*)$", "%1")
+       return s
+end
+
+-------------------------------------------------------------------------------
+-- Checks if a given line is empty
+-- @param line string with a line
+-- @return true if line is empty, false otherwise
+
+function line_empty (line)
+       return (string.len(trim(line)) == 0)
+end
+
+-------------------------------------------------------------------------------
+-- Appends two string, but if the first one is nil, use to second one
+-- @param str1 first string, can be nil
+-- @param str2 second string
+-- @return str1 .. " " .. str2, or str2 if str1 is nil
+
+function concat (str1, str2)
+       if str1 == nil or string.len(str1) == 0 then
+               return str2
+       else
+               return str1 .. " " .. str2
+       end
+end
+
+-------------------------------------------------------------------------------
+-- Split text into a list consisting of the strings in text,
+-- separated by strings matching delim (which may be a pattern).
+-- @param delim if delim is "" then action is the same as %s+ except that
+-- field 1 may be preceded by leading whitespace
+-- @usage split(",%s*", "Anna, Bob, Charlie,Dolores")
+-- @usage split(""," x y") gives {"x","y"}
+-- @usage split("%s+"," x y") gives {"", "x","y"}
+-- @return array with strings
+-- @see table.concat
+
+function split(delim, text)
+       local list = {}
+       if string.len(text) > 0 then
+               delim = delim or ""
+               local pos = 1
+               -- if delim matches empty string then it would give an endless loop
+               if string.find("", delim, 1) and delim ~= "" then
+                       error("delim matches empty string!")
+               end
+               local first, last
+               while 1 do
+                       if delim ~= "" then
+                               first, last = string.find(text, delim, pos)
+                       else
+                               first, last = string.find(text, "%s+", pos)
+                               if first == 1 then
+                                       pos = last+1
+                                       first, last = string.find(text, "%s+", pos)
+                               end
+                       end
+                       if first then -- found?
+                               table.insert(list, string.sub(text, pos, first-1))
+                               pos = last+1
+                       else
+                               table.insert(list, string.sub(text, pos))
+                               break
+                       end
+               end
+       end
+       return list
+end
+
+-------------------------------------------------------------------------------
+-- Comments a paragraph.
+-- @param text text to comment with "--", may contain several lines
+-- @return commented text
+
+function comment (text)
+       text = string.gsub(text, "\n", "\n-- ")
+       return "-- " .. text
+end
+
+-------------------------------------------------------------------------------
+-- Wrap a string into a paragraph.
+-- @param s string to wrap
+-- @param w width to wrap to [80]
+-- @param i1 indent of first line [0]
+-- @param i2 indent of subsequent lines [0]
+-- @return wrapped paragraph
+
+function wrap(s, w, i1, i2)
+       w = w or 80
+       i1 = i1 or 0
+       i2 = i2 or 0
+       assert(i1 < w and i2 < w, "the indents must be less than the line width")
+       s = string.rep(" ", i1) .. s
+       local lstart, len = 1, string.len(s)
+       while len - lstart > w do
+               local i = lstart + w
+               while i > lstart and string.sub(s, i, i) ~= " " do i = i - 1 end
+               local j = i
+               while j > lstart and string.sub(s, j, j) == " " do j = j - 1 end
+               s = string.sub(s, 1, j) .. "\n" .. string.rep(" ", i2) ..
+                       string.sub(s, i + 1, -1)
+               local change = i2 + 1 - (i - j)
+               lstart = j + change
+               len = len + change
+       end
+       return s
+end
+
+-------------------------------------------------------------------------------
+-- Opens a file, creating the directories if necessary
+-- @param filename full path of the file to open (or create)
+-- @param mode mode of opening
+-- @return file handle
+
+function posix.open (filename, mode)
+       local f = io.open(filename, mode)
+       if f == nil then
+               filename = string.gsub(filename, "\\", "/")
+               local dir = ""
+               for d in string.gfind(filename, ".-/") do
+                       dir = dir .. d
+                       posix.mkdir(dir)
+               end
+               f = io.open(filename, mode)
+       end
+       return f
+end
+
+
+----------------------------------------------------------------------------------
+-- Creates a Logger with LuaLogging, if present. Otherwise, creates a mock logger.
+-- @param options a table with options for the logging mechanism
+-- @return logger object that will implement log methods
+
+function loadlogengine(options)
+       local logenabled = pcall(function()
+               require "logging"
+               require "logging.console"
+       end)
+
+       local logging = logenabled and logging
+
+       if logenabled then
+               if options.filelog then
+                       logger = logging.file("luadoc.log") -- use this to get a file log
+               else
+                       logger = logging.console("[%level] %message\n")
+               end
+
+               if options.verbose then
+                       logger:setLevel(logging.INFO)
+               else
+                       logger:setLevel(logging.WARN)
+               end
+
+       else
+               noop = {__index=function(...)
+                       return function(...)
+                               -- noop
+                       end
+               end}
+
+               logger = {}
+               setmetatable(logger, noop)
+       end
+
+       return logger
+end
diff --git a/package/luci/build/makedocs.sh b/package/luci/build/makedocs.sh
new file mode 100755 (executable)
index 0000000..955c58c
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+topdir=$(pwd)
+
+[ -f "$topdir/build/makedocs.sh" -a -n "$1" ] || {
+       echo "Please execute as ./build/makedocs.sh [output directory]" >&2
+       exit 1
+}
+
+outdir=$(readlink -f "$1")
+
+mkdir -p "$outdir" || {
+       echo "Unable to mkdir '$outdir'" >&2
+       exit 1
+}
+
+(
+       cd "$topdir/build/luadoc/"
+       find "$topdir/libs/" "$topdir/modules/" -type f -name '*.lua' -or -name '*.luadoc' | \
+               xargs grep -l '@return' | xargs ./doc.lua --no-files -d "$outdir"
+)
diff --git a/package/luci/build/mkbasepot.sh b/package/luci/build/mkbasepot.sh
new file mode 100755 (executable)
index 0000000..ce41e30
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+[ -d ./build ] || {
+       echo "Please execute as ./build/mkbasepot.sh" >&2
+       exit 1
+}
+
+echo -n "Updating modules/luci-base/po/templates/base.pot ... "
+
+./build/i18n-scan.pl \
+       modules/luci-base/ modules/luci-mod-admin-full/ \
+       modules/luci-mod-network modules/luci-mod-status modules/luci-mod-system/ \
+       protocols/ themes/ \
+> modules/luci-base/po/templates/base.pot
+
+echo "done"
diff --git a/package/luci/build/mkrevision.sh b/package/luci/build/mkrevision.sh
new file mode 100755 (executable)
index 0000000..02b7fa3
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+TOPDIR="${0%mkrevision.sh}"
+
+[ -d "$TOPDIR/../build" ] || {
+       echo "Please execute as ./build/mkrevision.sh" >&2
+       exit 1
+}
+
+(
+       cd "$TOPDIR"
+       if svn info >/dev/null 2>/dev/null; then
+               revision="svn-r$(LC_ALL=C svn info | sed -ne 's/^Revision: //p')"
+       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")
+                       secs="$(($1 % 86400))"
+                       yday="$(date --utc --date="@$1" "+%y.%j")"
+                       revision="$(printf 'git-%s.%05d-%s' "$yday" "$secs" "$2")"
+               fi
+       else
+               revision="unknown"
+       fi
+
+       echo "$revision"
+)
diff --git a/package/luci/build/zoneinfo2lua.pl b/package/luci/build/zoneinfo2lua.pl
new file mode 100755 (executable)
index 0000000..1a0bee1
--- /dev/null
@@ -0,0 +1,177 @@
+#!/usr/bin/perl
+# zoneinfo2lua.pl - Make Lua module from /usr/share/zoneinfo
+# Execute from within root of Luci feed, usually feeds/luci
+# $Id$
+
+use strict;
+
+my %TZ;
+
+my $tzdin  = $ARGV[0] || "/usr/share/zoneinfo";
+my $tzdout = $ARGV[1] || "./modules/luci-base/luasrc/sys/zoneinfo";
+
+local $/ = "\012";
+open( ZTAB, "< $tzdin/zone.tab" ) || die "open($tzdin/zone.tab): $!";
+
+while( ! eof ZTAB ) {
+       chomp( my $line = readline ZTAB );
+       next if $line =~ /^#/ || $line =~ /^\s+$/;
+
+       my ( undef, undef, $zone, @comment ) = split /\s+/, $line;
+
+       printf STDERR "%-40s", $zone;
+
+       if( open ZONE, "< $tzdin/$zone" ) {
+               seek ZONE, -2, 2;
+
+               while( tell(ZONE) > 0 ) {
+                       read ZONE, my $char, 1;
+                       ( $char eq "\012" ) ? last : seek ZONE, -2, 1;
+               }
+
+               chomp( my $tz = readline ZONE );
+               print STDERR ( $tz || "(no tzinfo found)" ), "\n";
+               close ZONE;
+
+               if( $tz ) {
+                       $zone =~ s/_/ /g;
+                       $TZ{$zone} = $tz;
+               }
+       }
+       else
+       {
+               print STDERR "open($tzdin/$zone): $!\n";
+       }
+}
+
+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";
+
+print STDERR "Writing time zones to $tzdout/tzdata.lua ... ";
+print O <<HEAD;
+-- Licensed to the public under the Apache License 2.0.
+
+module "luci.sys.zoneinfo.tzdata"
+
+TZ = {
+HEAD
+
+foreach my $zone ( sort keys %TZ ) {
+       printf O "\t{ '%s', '%s' },\n", $zone, $TZ{$zone}
+}
+
+print O "}\n";
+close O;
+
+print STDERR "done\n";
+
+
+open (O, "> $tzdout/tzoffset.lua") || die "open($tzdout/tzoffset.lua): $!\n";
+
+print STDERR "Writing time offsets to $tzdout/tzoffset.lua ... ";
+print O <<HEAD;
+-- Licensed to the public under the Apache License 2.0.
+
+module "luci.sys.zoneinfo.tzoffset"
+
+OFFSET = {
+HEAD
+
+my %seen;
+foreach my $tz ( sort keys %TZ ) {
+       my $zone = $TZ{$tz};
+
+       if( $zone =~ /^
+               ([A-Z]+)
+               (?:
+                       ( -? \d+ (?: : \d+ )? )
+                       (?:
+                               ([A-Z]+)
+                               ( -? \d+ (?: : \d+ )? )? 
+                       )?
+               )?
+       \b /xo ) {
+               my ( $offset, $s, $h, $m ) = ( 0, 1, 0, 0 );
+               my ( $std, $soffset, $dst, $doffset ) = ( $1, $2, $3, $4 );
+
+               next if $seen{$std}; # and ( !$dst or $seen{$dst} );
+
+               if ( $soffset ) {
+                       ( $s, $h, $m ) = $soffset =~ /^(-)?(\d+)(?::(\d+))?$/;
+
+                       $s = $s ? 1 : -1;
+                       $h ||= 0;
+                       $m ||= 0;
+
+                       $offset  = $s * $h * 60 * 60;
+                       $offset += $s * $m * 60;
+
+                       printf O "\t%-5s = %6d,\t-- %s\n",
+                               lc($std), $offset, $std;
+
+                       $seen{$std} = 1;
+
+                       if( $dst ) {
+                               if( $doffset ) {
+                                       ( $s, $h, $m ) = $doffset =~ /^(-)?(\d+)(?::(\d+))?$/;
+
+                                       $s = $s ? 1 : -1;
+                                       $h ||= 0;
+                                       $m ||= 0;
+
+                                       $offset  = $s * $h * 60 * 60;
+                                       $offset += $s * $m * 60;
+                               } else  {
+                                       $offset += 60 * 60;
+                               }
+
+                               printf O "\t%-5s = %6d,\t-- %s\n",
+                                       lc($dst), $offset, $dst;
+       
+                               $seen{$dst} = 1;
+                       }
+               }
+               else {
+                       printf O "\t%-5s = %6d,\t-- %s\n",
+                               lc($std), $offset, $std;
+
+                       $seen{$std} = 1;
+               }
+
+       }
+}
+
+print O "}\n";
+close O;
+
+print STDERR "done\n";
diff --git a/package/luci/collections/luci-light/Makefile b/package/luci/collections/luci-light/Makefile
new file mode 100644 (file)
index 0000000..9eee97b
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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_TYPE:=col
+LUCI_BASENAME:=light
+
+LUCI_TITLE:=Minimum package set using only admin mini and the standard theme
+LUCI_DEPENDS:=+uhttpd +luci-mod-admin-mini +luci-theme-openwrt @BROKEN
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/collections/luci-ssl-openssl/Makefile b/package/luci/collections/luci-ssl-openssl/Makefile
new file mode 100644 (file)
index 0000000..d1e752e
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# Copyright (C) 2016 The LuCI Team
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TYPE:=col
+LUCI_BASENAME:=ssl-openssl
+
+LUCI_TITLE:=LuCI with HTTPS support (OpenSSL as SSL backend)
+LUCI_DESCRIPTION:=LuCI with OpenSSL as the SSL backend (libustream-openssl). \
+ OpenSSL cmd tools (openssl-util) are used by uhttpd for SSL key generation \
+ instead of the default px5g. (If px5g is installed, uhttpd will prefer that.)
+
+LUCI_DEPENDS:=+luci +libustream-openssl +openssl-util
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/collections/luci-ssl/Makefile b/package/luci/collections/luci-ssl/Makefile
new file mode 100644 (file)
index 0000000..399c982
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2008-2016 The LuCI Team
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TYPE:=col
+LUCI_BASENAME:=ssl
+
+LUCI_TITLE:=LuCI with HTTPS support (mbedTLS as SSL backend)
+LUCI_DEPENDS:=+luci +libustream-mbedtls +px5g
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/collections/luci/Makefile b/package/luci/collections/luci/Makefile
new file mode 100644 (file)
index 0000000..739eb51
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# 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_TYPE:=col
+LUCI_BASENAME:=luci
+
+LUCI_TITLE:=LuCI interface with Uhttpd as Webserver (default)
+LUCI_DESCRIPTION:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
+LUCI_DEPENDS:= \
+       +uhttpd +luci-mod-admin-full +luci-theme-bootstrap \
+       +luci-app-firewall +luci-app-opkg +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \
+       +rpcd-mod-rrdns
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/contrib/package/Makefile b/package/luci/contrib/package/Makefile
new file mode 100644 (file)
index 0000000..f7fac77
--- /dev/null
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/package/luci/contrib/package/csstidy/Makefile b/package/luci/contrib/package/csstidy/Makefile
new file mode 100644 (file)
index 0000000..83f8f08
--- /dev/null
@@ -0,0 +1,39 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=csstidy
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL=https://github.com/jow-/csstidy-cpp.git
+PKG_SOURCE_DATE:=2018-12-20
+PKG_SOURCE_VERSION:=1d5620149ae35c0d49fb2014d4e63a23ecfb6f69
+PKG_MIRROR_HASH:=3210d475f6ae966d4dfcd3e1f7fcbf0ad9507a37878d50de015ffe795c1d160e
+
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILES:=COPYING
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/csstidy
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=CSSTidy parser and optimiser
+  DEPENDS:=+libstdcpp
+endef
+
+define Package/csstidy/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/csstidy/csstidy $(1)/usr/bin/
+endef
+
+
+define Host/Install
+       $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin/
+       $(INSTALL_BIN) $(HOST_BUILD_DIR)/csstidy/csstidy $(1)/bin/
+endef
+
+$(eval $(call HostBuild))
+$(eval $(call BuildPackage,csstidy))
diff --git a/package/luci/contrib/package/lucihttp/Makefile b/package/luci/contrib/package/lucihttp/Makefile
new file mode 100644 (file)
index 0000000..a1b740d
--- /dev/null
@@ -0,0 +1,61 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lucihttp
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL=https://github.com/jow-/lucihttp.git
+PKG_SOURCE_DATE:=2019-07-05
+PKG_SOURCE_VERSION:=a34a17d501c0e23f0a91dd9d3e87697347c861ba
+PKG_MIRROR_HASH:=f08b526515b4a654e5529457da9d0676696170846288c55863dba087417a0483
+CMAKE_INSTALL:=1
+
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_liblucihttp-lua
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/liblucihttp
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=LuCI HTTP utility library
+  ABI_VERSION:=0
+endef
+
+define Package/liblucihttp-lua
+  SECTION:=libs
+  CATEGORY:=Libraries
+  DEPENDS:=+liblucihttp +liblua
+  TITLE:=Lua binding for the LuCI HTTP utility library
+endef
+
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
+
+CMAKE_OPTIONS = \
+       -DLUAPATH=/usr/lib/lua \
+       -DBUILD_LUA=$(if $(CONFIG_PACKAGE_liblucihttp-lua),ON,OFF) \
+       -DBUILD_TESTS=OFF
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblucihttp.so* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+endef
+
+define Package/liblucihttp/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblucihttp.so.* $(1)/usr/lib/
+endef
+
+define Package/liblucihttp-lua/install
+       $(INSTALL_DIR) $(1)/usr/lib/lua
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lua/lucihttp.so $(1)/usr/lib/lua/
+endef
+
+$(eval $(call BuildPackage,liblucihttp))
+$(eval $(call BuildPackage,liblucihttp-lua))
diff --git a/package/luci/documentation/CBI.md b/package/luci/documentation/CBI.md
new file mode 100644 (file)
index 0000000..933380d
--- /dev/null
@@ -0,0 +1,246 @@
+
+# CBI models
+are Lua files describing the structure of an UCI config file and the resulting HTML form to be evaluated by the CBI parser.<br />
+All CBI model files must return an object of type **luci.cbi.Map**.<br />
+For a commented example of a CBI model, see the [Writing Modules tutorial](ModulesHowTo.md#cbimodels).
+
+The scope of a CBI model file is automatically extended by the contents of the module **luci.cbi** and the _translate_ function from **luci.i18n**
+
+This Reference covers **the basics** of the CBI system.
+
+
+## class Map (_config, title, description_)
+This is the root object of the model.
+
+* **config:** configuration filename to be mapped, see [UCI documentation](https://openwrt.org/docs/guide-user/base-system/uci) and the files in /etc/config
+* **title:** title shown in the UI
+* **description:** description shown in the UI
+
+#### function :section (_sectionclass_, ...)
+Creates a new section
+* **sectionclass**: a class object of the section
+* _additional parameters passed to the constructor of the section class_
+
+----
+
+## class NamedSection (_name, type, title, description_)
+An object describing an UCI section selected by the name.<br />
+To instantiate use: `Map:section(NamedSection, "name", "type", "title", "description")`
+
+* **name:** UCI section name
+* **type:** UCI section type
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :option(_optionclass_, ...)
+Creates a new option
+* **optionclass:** a class object of the section
+* _additional parameters passed to the constructor of the option class_
+
+#### property .addremove = false
+Allows the user to remove and recreate the configuration section.
+
+#### property .dynamic = false
+Marks this section as dynamic. Dynamic sections can contain an undefinded number of completely userdefined options.
+
+#### property .optional = true
+Parse optional options
+
+----
+
+## class TypedSection (_type, title, description_)
+An object describing a group of UCI sections selected by their type.<br />
+To instantiate use: `Map:section(TypedSection, "type", "title", "description")`
+* **type:** UCI section type
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :option(_optionclass_, ...)
+Creates a new option
+ **optionclass:** a class object of the section
+ _additional parameters passed to the constructor of the option class_
+
+#### function :depends(_key, value_)
+Only select those sections where _key == value_ <br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+#### function .filter(_self, section_) -abstract-
+You can override this function to filter certain sections that will not be parsed.
+The filter function will be called for every section that should be parsed and returns **nil** for sections that should be filtered. For all other sections it should return the section name as given in the second parameter.
+
+#### property .addremove = false
+Allows the user to remove and recreate the configuration section
+
+#### property .dynamic = false
+Marks this section as dynamic. Dynamic sections can contain an undefinded number of completely userdefined options.
+
+#### property .optional = true
+Parse optional options
+
+#### property .anonymous = false
+Do not show UCI section names
+
+----
+
+## class Value (_option, title, description_)
+An object describing an option in a section of a UCI File. Creates a standard text field in the formular.<br />
+To instantiate use: `NamedSection:option(Value, "option", "title", "description")`<br />
+ or `TypedSection:option(Value, "option", "title", "description")`
+* **option:** UCI option name
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :depends(key, value)
+Only show this option field if another option _key_ is set to _value_ in the same section.<br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+#### function :value(key, value)
+Convert this text field into a combobox if possible and add a selection option.
+
+#### property .default = nil
+The default value
+
+#### property .maxlength = nil
+The maximum inputlength (of chars) of the value
+
+#### property .optional = false
+Marks this option as optional, implies .rmempty = true
+
+#### property .rmempty = true
+Removes this option from the configuration file when the user enters an empty value
+
+#### property .size = nil
+The maximum number of chars displayed by form field
+
+----
+
+## class ListValue (_option, title, description_)
+An object describing an option in a section of a UCI File.<br />
+Creates a list box or list of radio (for selecting one of many choices) in the formular.<br />
+To instantiate use: `NamedSection:option(ListValue, "option", "title", "description")`<br />
+or `TypedSection:option(ListValue, "option", "title", "description")`
+* **option:** UCI option name
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :depends(key, value)
+Only show this option field if another option _key_ is set to _value_ in the same section.<br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+#### function :value(_key, value_)
+Adds an entry to the selection list
+
+#### property .widget = "select"
+**"select"** shows a selection list, **"radio"** shows a list of radio buttons inside form
+
+#### property .default = nil
+The default value
+
+#### property .optional = false
+Marks this option as optional, implies .rmempty = true
+
+#### property .rmempty = true
+Removes this option from the configuration file when the user enters an empty value
+
+#### property .size = nil
+The size of the form field
+
+----
+
+## class Flag (_option, title, description_)
+An object describing an option with two possible values in a section of a UCI File.<br />
+Creates a checkbox field in the formular.<br />
+To instantiate use: `NamedSection:option(Flag, "option", ""title", "description")`<br />
+ or `TypedSection:option(Flag, "option", "title", "description")`
+* **option:** UCI option name
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :depends (_key, value_)
+Only show this option field if another option _key_ is set to _value_ in the same section.<br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+#### property .default = nil
+The default value
+
+#### property .disabled = 0
+the value that should be set if the checkbox is unchecked
+
+#### property .enabled = 1
+the value that should be set if the checkbox is checked
+
+#### property .optional = false
+Marks this option as optional, implies .rmempty = true
+
+#### property .rmempty = true
+Removes this option from the configuration file when the user enters an empty value
+
+----
+
+## class MultiValue (_option'', ''title'', ''description_)
+An object describing an option in a section of a UCI File.<br />
+Creates a list of checkboxed or a multiselectable list as form fields.<br />
+To instantiate use: `NamedSection:option(MultiValue, "option", ""title", "description")`<br />
+ or `TypedSection:option(MultiValue, "option", "title", "description")`
+* **option:** UCI option name
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### function :depends (_key, value_)
+Only show this option field if another option _key_ is set to _value_ in the same section.<br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+#### function :value(_key, value_)
+Adds an entry to the list
+
+#### property .widget = "checkbox"
+**"select"** shows a selection list, **"checkbox"** shows a list of checkboxes inside form
+
+#### property .delimiter = " "
+The string which will be used to delimit the values inside stored option
+
+#### property .default = nil
+The default value
+
+#### property .optional = false
+Marks this option as optional, implies .rmempty = true
+
+#### property .rmempty = true
+Removes this option from the configuration file when the user enters an empty value
+
+#### property .size = nil
+The size of the form field (only used if property _.widget = "select"_)
+
+----
+
+## class StaticList (_option, title, description_)
+Similar to the MultiValue, but stores selected Values into a UCI list instead of a character-separated option.
+
+----
+
+## class DynamicList (_option, title, description_)
+A extensible list of user-defined values. Stores Values into a UCI list
+
+----
+
+## class DummyValue (_option, title, description_)
+Creates a readonly text in the form. !It writes no data to UCI!<br />
+To instantiate use: `NamedSection:option(DummyValue, "option", ""title", "description")`<br />
+ or `TypedSection:option(DummyValue, "option", "title", "description")`
+* **option:** UCI option name
+* **title:** The title shown in the UI
+* **description:** description shown in the UI
+
+#### property :depends (_key, value_)
+Only show this option field if another option _key_ is set to _value_ in the same section.<br />
+If you call this function several times the dependencies will be linked with **"or"**
+
+----
+
+## class TextValue (_option, title, description_)
+An object describing a multi-line textbox in a section in a non-UCI form.
+
+----
+
+## class Button (_option, title, description_)
+An object describing a Button in a section in a non-UCI form.
diff --git a/package/luci/documentation/JsonRpcHowTo.md b/package/luci/documentation/JsonRpcHowTo.md
new file mode 100644 (file)
index 0000000..76d61f8
--- /dev/null
@@ -0,0 +1,66 @@
+LuCI provides some of its libraries to external applications through a JSON-RPC API.
+This Howto shows how to use it and provides information about available functions.
+
+
+# Basics
+LuCI comes with an efficient JSON De-/Encoder together with a JSON-RPC-Server which implements the *JSON-RPC 1.0_' and 2.0 (partly) specifications. The LuCI JSON-RPC server offers several independent APIs. Therefore you have to use '_different URLs for every exported library*.
+Assuming your LuCI-Installation can be reached through */cgi-bin/luci_' any exported library can be reached via '''/cgi-bin/luci/rpc/''LIBRARY_*.
+
+
+# Authentication
+Most exported libraries will require a valid authentication to be called with. If you get an *HTTP 403 Forbidden_' status code you are probably missing a valid authentication token. To get such a token you have to call the function '''login''' of the RPC-Library '''auth'''. Following our example from above this login function would be provided at '_/cgi-bin/luci/rpc/auth*. The function accepts 2 parameters: username and password (of a valid user account on the host system) and returns an authentication token.
+
+If you want to call any exported library which requires an authentication token you have to *append it as an URL parameter _auth''''' to the RPC-Server URL. So instead of calling '''/cgi-bin/luci/rpc/''LIBRARY''''' you have to call '''/cgi-bin/luci/rpc/''LIBRARY''?auth=''TOKEN_*.
+
+If your JSON-RPC client is Cookie-aware (like most browsers are) you will receive the authentication token also with a session cookie and probably don't have to append it to the RPC-Server URL.
+
+
+# Exported Libraries
+## uci
+The UCI-Library */rpc/uci* offers functionality to interact with the Universal Configuration Interface.
+*Exported Functions:*
+* [(string) add(config, type)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.add)
+* [(integer) apply(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.apply)
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.changes (object) changes([config])]
+* [(boolean) commit(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.commit)
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.delete (boolean) delete(config, section[, option])]
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.delete_all (boolean) delete_all(config[, type])]
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.foreach (array) foreach(config[, type])]
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get (mixed) get(config, section[, option])]
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get_all (object) get_all(config[, section])]
+* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get (mixed) get_state(config, section[, option])]
+* [(boolean) revert(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.revert)
+* [(name) section(config, type, name, values)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.section)
+* [(boolean) set(config, section, option, value)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.set)
+* [(boolean) tset(config, section, values)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.tset)
+
+## uvl
+The UVL-Library */rpc/uvl* offers functionality to validate UCI files and get schemes describing UCI files.
+*Exported Functions:*
+* [(array) get_scheme(scheme)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.get_scheme)
+* [(array) validate(config, section, option)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate)
+* [(array) validate_config(config)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_config)
+* [(array) validate_section(config, section)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_section)
+* [(array) validate(config, section, option)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_option)
+
+## fs
+The Filesystem library */rpc/fs* offers functionality to interact with the filesystem on the host machine.
+*Exported Functions:*
+
+* [Complete luci.fs library](http://luci.subsignal.org/api/luci/modules/luci.fs.html)
+*Note:* All functions are exported as they are except for _readfile'' which encodes its return value in base64 and ''writefile'' which only accepts base64 encoded data as second argument. Note that both functions will only be available when the ''luasocket_ packet is installed on the hostsystem.
+
+## sys
+The System library */rpc/sys* offers functionality to interact with the operating system on the host machine.
+*Exported Functions:*
+* [Complete luci.sys library](http://luci.subsignal.org/api/luci/modules/luci.sys.html)
+* [Complete luci.sys.group library](http://luci.subsignal.org/api/luci/modules/luci.sys.group.html) with prefix *group.*
+* [Complete luci.sys.net library](http://luci.subsignal.org/api/luci/modules/luci.sys.net.html) with prefix *net.*
+* [Complete luci.sys.process library](http://luci.subsignal.org/api/luci/modules/luci.sys.process.html) with prefix *process.*
+* [Complete luci.sys.user library](http://luci.subsignal.org/api/luci/modules/luci.sys.user.html) with prefix *user.*
+* [Complete luci.sys.wifi library](http://luci.subsignal.org/api/luci/modules/luci.sys.wifi.html) with prefix *wifi.*
+
+## ipkg
+The IPKG library */rpc/ipkg* offers functionality to interact with the package manager (IPKG or OPKG) on the host machine.
+*Exported Functions:*
+* [Complete luci.model.ipkg library](http://luci.subsignal.org/api/luci/modules/luci.model.ipkg.html)
diff --git a/package/luci/documentation/LAR.md b/package/luci/documentation/LAR.md
new file mode 100644 (file)
index 0000000..457b076
--- /dev/null
@@ -0,0 +1,87 @@
+LAR is a simple archive format to pack multiple lua source files and arbitrary other resources into a single file.
+
+
+# Format Specification
+
+A LAR archive file is divided into two parts: the payload and the index lookup table.
+All segments of the archive are 4 Byte aligned to ease reading and processing of the format.
+All integers are stored in network byte order, so an implementation has to use htonl() and htons() to properly read them.
+
+Schema:
+       
+       <payload:
+         <member:
+           <N*4 bytes: path of file #1>
+           <N*4 bytes: data of file #1>
+         >
+         
+         <member:
+           <N*4 bytes: path of file #2>
+           <N*4 bytes: data of file #2>
+         >
+       
+         ...
+       
+         <member:
+           <N*4 bytes: path of file #N>
+           <N*4 bytes: data of file #N>
+         >
+       >
+       
+       <index table:
+         <entry:
+           <uint32: offset for path of file #1> <uint32: length for path of file #1>
+           <uint32: offset for data of file #1> <uint32: length for data of file #1>
+           <uint16: type of file #1> <uint16: flags of file #1>
+         >
+       
+         <entry:
+           <uint32: offset for path of file #2> <uint32: length for path of file #2>
+           <uint32: offset for data of file #2> <uint32: length for data of file #2>
+           <uint16: type of file #2> <uint16: flags of file #2>
+         >
+       
+         ...
+       
+         <entry:
+           <uint32: offset for path of file #N> <uint32: length for path of file #N>
+           <uint32: offset for data of file #N> <uint32: length for data of file #N>
+           <uint16: type of file #N> <uint16: flags of file #N>
+         >
+       >
+       
+       <uint32: offset for begin of index table>
+       
+
+
+# Processing
+
+In order to process an LAR archive, an implementation would have to do the following steps:
+
+## Read Index
+
+1. Locate and open the archive file
+1. Seek to end of file - 4 bytes
+1. Read 32bit index offset and swap from network to native byte order
+1. Seek to index offset, calculate index length: filesize - index offset - 4
+1. Initialize a linked list for index table entries
+1. Read each index entry until the index length is reached, read and byteswap 4 * 32bit int and 2 * 16bit int
+1. Seek to begin of file
+
+## Read Member
+
+1. Read the archive index
+1. Iterate through the linked index list, perform the following steps for each entry
+1. Seek to the specified file path offset
+1. Read as much bytes as specified in the file path length into a buffer
+1. Compare the contents of the buffer against the path of the searched member
+1. If buffer and searched path are equal, seek to the specified file data offset
+1. Read data until the file data length is reached, return
+1. Select the next index table entry and repeat from step 3, if there is no next entry then return
+
+# Reference implementation
+
+A reference implementation can be found here:
+http://luci.subsignal.org/trac/browser/luci/trunk/contrib/lar
+
+The lar.pl script is a simple packer for LAR archives and cli.c provides a utility to list and dump packed LAR archives.
diff --git a/package/luci/documentation/LMO.md b/package/luci/documentation/LMO.md
new file mode 100644 (file)
index 0000000..961a45b
--- /dev/null
@@ -0,0 +1,144 @@
+LMO is a simple binary format to pack language strings into a more efficient form. Although it's suitable to store any kind of key-value table, it's only used for the LuCI *.po based translation system at the moment. The abbreviation "LMO" stands for "Lua Machine Objects" in the style of the GNU gettext *.mo format.
+
+
+# Format Specification
+
+A LMO file is divided into two parts: the payload and the index lookup table.
+All segments of the file are 4 Byte aligned to ease reading and processing of the format.
+Only unsigned 32bit integers are used and stored in network byte order, so an implementation has to use htonl() to properly read them.
+
+Schema:
+       
+       <file:
+         <payload:
+           <entry #1: 4 byte aligned data>
+       
+           <entry #2: 4 byte aligned data>
+       
+           ...
+       
+           <entry #N: 4 byte aligned data>
+         >
+       
+         <index table:
+           <entry #1:
+             <uint32_t: hash of the first key>
+             <uint32_t: hash of the first value>
+             <uint32_t: file offset of the first value>
+             <uint32_t: length of the first value>
+           >
+       
+           <entry #2:
+             <uint32_t: hash of the second key>
+             <uint32_t: hash of the second value>
+             <uint32_t: file offset of the second value>
+             <uint32_t: length of the second value>
+           >
+       
+           ...
+       
+           <entry #N:
+             <uint32_t: hash of the Nth key>
+             <uint32_t: hash of the Nth value>
+             <uint32_t: file offset of the Nth value>
+             <uint32_t: length of the Nth value>
+           >
+         >
+       
+         <uint32_t: offset of the begin of index table>
+       >
+       
+
+
+# Processing
+
+In order to process a LMO file, an implementation would have to do the following steps:
+
+## Read Index
+
+1. Locate and open the archive file
+1. Seek to end of file - 4 bytes (sizeof(uint32_t))
+1. Read 32bit index offset and swap from network to native byte order
+1. Seek to index offset, calculate index length: filesize - index offset - 4
+1. Initialize a linked list for index table entries
+1. Read each index entry until the index length is reached, read and byteswap 4 * uint32_t for each step
+1. Seek to begin of file
+
+## Read Entry
+
+1. Calculate the unsigned 32bit hash of the entries key value (see "Hash Function" section below)
+1. Obtain the archive index
+1. Iterate through the linked index list, perform the following steps for each entry:
+  1. Compare the entry hash value with the calculated hash from step 1
+  2. If the hash values are equal proceed with step 4
+  3. Select the next entry and repeat from step 3.1
+1. Seek to the file offset specified in the selected entry
+1. Read as much bytes as specified in the entry length into a buffer
+1. Return the buffer value
+
+# Hash Function
+
+The current LuCI-LMO implementation uses the "Super Fast Hash" function which was kindly put in the public domain by it's original author. See http://www.azillionmonkeys.com/qed/hash.html for details. Below is the C-Implementation of this function:
+
+       
+       #if (defined(__GNUC__) && defined(__i386__))
+       #define sfh_get16(d) (*((const uint16_t *) (d)))
+       #else
+       #define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+                                                  +(uint32_t)(((const uint8_t *)(d))[0]) )
+       #endif
+       
+       uint32_t sfh_hash(const char * data, int len)
+       {
+               uint32_t hash = len, tmp;
+               int rem;
+       
+               if (len <= NULL) return 0;
+       
+               rem = len & 3;
+               len >>= 2;
+       
+               /* Main loop */
+               for (;len > 0; len--) {
+                       hash  += sfh_get16(data);
+                       tmp    = (sfh_get16(data+2) << 11) ^ hash;
+                       hash   = (hash << 16) ^ tmp;
+                       data  += 2*sizeof(uint16_t);
+                       hash  += hash >> 11;
+               }
+       
+               /* Handle end cases */
+               switch (rem) {
+                       case 3: hash += sfh_get16(data);
+                               hash ^= hash << 16;
+                               hash ^= data[sizeof(uint16_t)] << 18;
+                               hash += hash >> 11;
+                               break;
+                       case 2: hash += sfh_get16(data);
+                               hash ^= hash << 11;
+                               hash += hash >> 17;
+                               break;
+                       case 1: hash += *data;
+                               hash ^= hash << 10;
+                               hash += hash >> 1;
+               }
+       
+               /* Force "avalanching" of final 127 bits */
+               hash ^= hash << 3;
+               hash += hash >> 5;
+               hash ^= hash << 4;
+               hash += hash >> 17;
+               hash ^= hash << 25;
+               hash += hash >> 6;
+       
+               return hash;
+       }
+       
+
+# Reference Implementation
+
+A reference implementation can be found here:
+http://luci.subsignal.org/trac/browser/luci/trunk/libs/lmo/src
+
+The lmo_po2lmo.c executable implements a *.po to *.lmo conversation utility and lmo_lookup.c is a simple *.lmo test utility.
+Lua bindings for lmo are defined in lmo_lualib.c and associated headers.
diff --git a/package/luci/documentation/LuCI-0.10.md b/package/luci/documentation/LuCI-0.10.md
new file mode 100644 (file)
index 0000000..5db9895
--- /dev/null
@@ -0,0 +1,202 @@
+[[PageOutline(2-5, Table of Contents, floated)]]
+
+
+This document describes new features and incompatibilities to LuCI 0.9.x.
+It is targeted at module authors developing external addons to LuCI.
+
+# I18N Changes
+
+## API
+
+The call conventions for the i18n api changed, there is no dedicated translation
+key anymore and the english text is used for lookup instead. This was done to
+ease the maintenance of language files.
+
+Code that uses _translate()'' or ''i18n()_ must be changed as follows:
+
+       
+       -- old style:
+       translate("some_text", "Some Text")
+       translatef("some_format_text", "Some formatted Text: %d", 123)
+       
+       -- new style:
+       translate("Some Text")
+       translatef("Some formatted Text: %d", 123)
+       
+
+Likewise for templates:
+
+       
+       <!-- old style: -->
+       <%:some_text Some Text%>
+       
+       <!-- new style: -->
+       <%:Some Text%>
+       
+
+If code must support both LuCI 0.9.x and 0.10.x versions, it is suggested to write the calls as follows:
+       
+       translate("Some Text", "Some Text")
+       
+
+An alternative is wrapping translate() calls into a helper function:
+       
+       function tr(key, alt)
+           return translate(key) or translate(alt) or alt
+       end
+       
+
+... which is used as follows:
+       
+       tr("some_key", "Some Text")
+       
+
+## Translation File Format
+
+Translation catalogs are now maintained in *.po format files. During build those get translated
+into [*.lmo archives](http://luci.subsignal.org/trac/wiki/Documentation/LMO).
+
+LuCI ships a [utility script](http://luci.subsignal.org/trac/browser/luci/branches/luci-0.10/build/i18n-lua2po.pl)
+in the build/ directory to convert old Lua translation files to the *.po format. The generated *.po files should
+be placed in the appropriate subdirectories within the top po/ file in the LuCI source tree.
+
+### Components built within the LuCI tree
+
+If components using translations are built along with the LuCI tree, the newly added *.po file are automatically
+compiled into *.lmo archives during the build process. In order to bundle the appropriate *.lmo files into the
+corresponding *.ipk packages, component Makefiles must include a "PO" variable specifying the files to include.
+
+Given a module _applications/example/'' which uses ''po/en/example.po'' and ''po/en/example-extra.po_,
+the _applications/example/Makefile_ must be changed as follows:
+
+       
+       PO = example example-extra
+       
+       include ../../build/config.mk
+       include ../../build/module.mk
+       
+
+### Standalone components
+
+Authors who externally package LuCI components must prepare required *.lmo archives themselves.
+To convert existing Lua based message catalogs to the *.po format, the build/i18n-lua2po.pl helper script can be used.
+In order to convert *.po files into *.lmo files, the standalone "po2lmo" utility must be compiled as follows:
+
+       
+       $ svn co http://svn.luci.subsignal.org/luci/branches/luci-0.10/libs/lmo
+       $ cd lmo/
+       $ make
+       $ ./src/po2lmo translations.po translations.lmo
+       
+
+Note that at the time of writing, the utility program needs Lua headers installed on the system in order to compile properly.
+
+# CBI
+
+## Datatypes
+
+The server side UVL validation has been dropped to reduce space requirements on the target.
+Instead it is possible to define datatypes for CBI widgets now:
+
+       
+       opt = section:option(Value, "optname", "Title Text")
+       opt.datatype = "ip4addr"
+       
+
+User provided data is validated once on the frontend via JavaScript and on the server side prior to saving it.
+A list of possible datatypes can be found in the [luci.cbi.datatypes](http://luci.subsignal.org/trac/browser/luci/branches/luci-0.10/libs/web/luasrc/cbi/datatypes.lua#L26) class.
+
+## Validation
+
+Server-sided validator function can now return custom error messages to provide better feedback on invalid input.
+
+       
+       opt = section:option(Value, "optname", "Title Text")
+       
+       function opt.validate(self, value, section)
+           if input_is_valid(value) then
+               return value
+           else
+               return nil, "The value is invalid because ..."
+           end
+       end
+       
+
+## Tabs
+
+It is now possible to break up CBI sections into multiple tabs to better organize longer forms.
+The TypedSection and NamedSection classes gained two new functions to define tabs, _tab()'' and ''taboption()_.
+
+       
+       sct = map:section(TypedSection, "name", "type", "Title Text")
+       
+       sct:tab("general", "General Tab Title", "General Tab Description")
+       sct:tab("advanced", "Advanced Tab Title", "Advanced Tab Description")
+       
+       opt = sct:taboption("general", Value, "optname", "Title Text")
+       ...
+       
+
+The _tab()_ function is declares a new tab and takes up to three arguments:
+  * Internal name of the tab, must be unique within the section
+  * Title text of the tab
+  * Optional description text for the tab
+
+The _taboption()'' function wraps ''option()_ and assigns the option object to the given tab.
+It takes up to five arguments:
+
+  * Name of the tab to assign the option to
+  * Option type, e.g. Value or DynamicList
+  * Option name
+  * Title text of the option
+  * Optional description text of the option
+
+If tabs are used within a particular section, the _option()_ function must not be used,
+doing so results in undefined behaviour.
+
+## Hooks
+
+The CBI gained support for _hooks_ which can be used to trigger additional actions during the
+life-cycle of a map:
+
+       
+       map = Map("config", "Title Text")
+       
+       function map.on_commit(self)
+           -- do something if the UCI configuration got committed
+       end
+       
+
+The following hooks are defined:
+
+|| on_cancel || The user pressed cancel within a multi-step Delegator or a SimpleForm instance || 
+|| on_init || The CBI is about to render the Map object ||
+|| on_parse || The CBI is about to read received HTTP form values ||
+|| on_save, on_before_save || The CBI is about to save modified UCI configuration files ||
+|| on_after_save || Modified UCI configuration files just got saved
+|| on_before_commit || The CBI is about to commit the changes ||
+|| on_commit, on_after_commit, on_before_apply || Modified configurations got committed and the CBI is about to restart associated services ||
+|| on_apply, on_after_apply || All changes where completely applied (only works on Map instances with the apply_on_parse attribute set) ||
+
+## Sortable Tables
+
+TypedSection instances which use the "cbi/tblsection" template may now use a new attribute _sortable_ to allow the user to reorder table rows.
+
+       
+       sct = map:section(TypedSection, "name", "type", "Title Text")
+       sct.template = "cbi/tblsection"
+       sct.sortable = true
+       
+       ...
+       
+
+# JavaScript
+
+The LuCI 0.10 branch introduced a new JavaScript file _xhr.js_ which provides support routines for XMLHttpRequest operations.
+Each theme must include this file in the <head> area of the document for forms to work correctly.
+
+It should be included like this:
+
+       
+       <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
+       
\ No newline at end of file
diff --git a/package/luci/documentation/Modules.md b/package/luci/documentation/Modules.md
new file mode 100644 (file)
index 0000000..2897df9
--- /dev/null
@@ -0,0 +1,94 @@
+# Categories
+
+The LuCI modules are divided into several category directories, namely:
+* applications (Single applications or plugins for other modules or applications)
+* i18n (Translation files)
+* libs (Independent libraries)
+* modules (Collections of applications)
+* themes (Frontend themes)
+
+Each module goes into a subdirectory of any of this category-directories.
+
+# Module directory
+The contents of a module directory are as follows:
+
+## Makefile
+This is the module's makefile. If the module just contains Lua sourcecode or resources then the following Makefile should suffice.
+       
+       include ../../build/config.mk
+       include ../../build/module.mk
+       
+
+If you have C(++) code in your module your Makefile should at least contain the following things.
+       
+       include ../../build/config.mk
+       include ../../build/gccconfig.mk
+       include ../../build/module.mk
+       
+       compile:
+           # Commands to compile and link your C-code
+           # and to install them under the dist/ hierarchy
+       
+       clean: luaclean
+           # Commands to clean your compiled objects
+       
+
+## src
+The *src* directory is reserved for C sourcecode.
+
+## luasrc
+*luasrc* contains all Lua sourcecode files. These will automatically be stripped or compiled depending on the Make target and are installed in the LuCI installation directory.
+
+## lua
+*lua* is equivalent to _luasrc_ but containing Lua files will be installed in the Lua document root.
+
+## htdocs
+All files under *htdocs* will be copied to the document root of the target webserver.
+
+## root
+All directories and files under *root* will be copied to the installation target as they are.
+
+## dist
+*dist* is reserved for the builder to create a working installation tree that will represent the filesystem on the target machine.
+*DO NOT* put any files there as they will get deleted.
+
+## ipkg
+*ipkg* contains IPKG package control files, like _preinst'', ''posinst'', ''prerm'', ''postrm''. ''conffiles_.
+See IPKG documentation for details.
+
+
+# OpenWRT feed integration
+If you want to add your module to the LuCI OpenWRT feed you have to add several sections to the contrib/package/luci/Makefile.
+
+For a Web UI applications this is:
+
+A package description:
+       
+       define Package/luci-app-YOURMODULE
+         $(call Package/luci/webtemplate)
+         DEPENDS+=+some-package +some-other-package
+         TITLE:=SHORT DESCRIPTION OF YOURMODULE
+       endef
+       
+       
+
+A package installation target:
+       
+       define Package/luci-app-YOURMODULE/install
+               $(call Package/luci/install/template,$(1),applications/YOURMODULE)
+       endef
+       
+
+A module build instruction:
+       
+       ifneq ($(CONFIG_PACKAGE_luci-app-YOURMODULE),)
+               PKG_SELECTED_MODULES+=applications/YOURMODULE
+       endif
+       
+
+
+A build package call:
+       
+       $(eval $(call BuildPackage,luci-app-YOURMODULE))
+       
diff --git a/package/luci/documentation/ModulesHowTo.md b/package/luci/documentation/ModulesHowTo.md
new file mode 100644 (file)
index 0000000..7efed83
--- /dev/null
@@ -0,0 +1,153 @@
+*Note:* If you plan to integrate your module into LuCI, you should read the [wiki:Documentation/Modules Module Reference] before.
+
+This tutorial describes how to write your own modules for the LuCI WebUI.
+For this tutorial we refer to your LuCI installation directory as *lucidir_' (/usr/lib/lua/luci if you are working with an installed version) and assume your LuCI installation is reachable through your webserver via '_/cgi-bin/luci*.
+
+If you are working with the development environment replace *lucidir_' with '''''/path/to/your/luci/checkout''/applications/myapplication/luasrc''' (this is a default empty module you can use for your experiments) and your LuCI installation can probably be reached via http://localhost:8080/luci/ after you ran '_make runhttpd*.
+
+
+
+# Show me the way (The dispatching process)
+To write a module you need to understand the basics of the dispatching process in LuCI.
+LuCI uses a dispatching tree that will be built by executing the index-Function of every available controller.
+The CGI-environment variable *PATH_INFO* will be used as the path in this dispatching tree, e.g.: /cgi-bin/luci/foo/bar/baz
+will be resolved to foo.bar.baz
+
+To register a function in the dispatching tree, you can use the *entry*-function of _luci.dispatcher_. entry takes 4 arguments (2 are optional):
+       
+       entry(path, target, title=nil, order=nil)
+       
+
+* *path* is a table that describes the position in the dispatching tree: For example a path of {"foo", "bar", "baz"} would insert your node in foo.bar.baz.
+* *target* describes the action that will be taken when a user requests the node. There are several predefined ones of which the 3 most important (call, template, cbi) are described later on on this page
+* *title* defines the title that will be visible to the user in the menu (optional)
+* *order* is a number with which nodes on the same level will be sorted in the menu (optional)
+
+You can assign more attributes by manipulating the node table returned by the entry-function. A few example attributes:
+
+* *i18n* defines which translation file should be automatically loaded when the page gets requested
+* *dependent* protects plugins to be called out of their context if a parent node is missing
+* *leaf* stops parsing the request at this node and goes no further in the dispatching tree
+* *sysauth* requires the user to authenticate with a given system user account
+
+
+# It's all about names (Naming and the module file)
+Now that you know the basics about dispatching, we can start writing modules. But before you have to choose the category and name of your new digital child.
+
+We assume you want to create a new application "myapp" with a module "mymodule".
+
+So you have to create a new subdirectory *_lucidir''/controller/myapp''' with a file '_mymodule.lua* with the following content:
+       
+       module("luci.controller.myapp.mymodule", package.seeall)
+       
+       function index()
+       
+       end
+       
+
+The first line is required for Lua to correctly identify the module and create its scope.
+The index-Function will be used to register actions in the dispatching tree.
+
+
+
+# Teaching your new child (Actions)
+So it is there and has a name but it has no actions.
+
+We assume you want to reuse your module myapp.mymodule that you begun in the last step.
+
+
+## Actions
+Reopen *_lucidir_/controller/myapp/mymodule.lua* and just add a function to it so that its content looks like this example:
+
+       
+       module("luci.controller.myapp.mymodule", package.seeall)
+       
+       function index()
+           entry({"click", "here", "now"}, call("action_tryme"), "Click here", 10).dependent=false
+       end
+        
+       function action_tryme()
+           luci.http.prepare_content("text/plain")
+           luci.http.write("Haha, rebooting now...")
+           luci.sys.reboot()
+       end
+       
+
+And now type */cgi-bin/luci/click/here/now_' ('_[http://localhost:8080/luci/click/here/now]* if you are using the development environment) in your browser.
+
+You see these action functions simple have to be added to a dispatching entry.
+
+As you might or might not know: CGI specification requires you to send a Content-Type header before you can send your content. You will find several shortcuts (like the one used above) as well as redirecting functions in the module *luci.http*
+
+## Views
+If you only want to show the user a text or some interesting familiy photos it may be enough to use a HTML-template. These templates can also include some Lua code but be aware that writing whole office suites by only using these templates might be called "dirty" by other developers.
+
+Now let's create a little template *_lucidir_/view/myapp-mymodule/helloworld.htm* with the content:
+
+       
+       <%+header%>
+       <h1><%:Hello World%></h1> 
+       <%+footer%>
+       
+
+
+and add the following line to the index-Function of your module file.
+       
+       entry({"my", "new", "template"}, template("myapp-mymodule/helloworld"), "Hello world", 20).dependent=false
+       
+
+Now type */cgi-bin/luci/my/new/template_' ('_[http://localhost:8080/luci/my/new/template]* if you are using the development environment) in your browser.
+
+You may notice those fancy <% %>-Tags, these are [wiki:Documentation/Templates|template markups] used by the LuCI template processor.
+It is always good to include header and footer at the beginning and end of a template as those create the default design and menu.
+
+## <a name=cbimodels></a> CBI models
+The CBI is one of the uber coolest features of LuCI. It creates a formular based user interface and saves its contents to a specific UCI config file. You only have to describe the structure of the configuration file in a CBI model file and Luci does the rest of the work. This includes generating, parsing and validating a XHTML form and reading and writing the UCI file.
+
+So let's be serious at least for this paragraph and create a real pratical example *_lucidir_/model/cbi/myapp-mymodule/netifaces.lua* with the following contents:
+
+       
+       m = Map("network", "Network") -- We want to edit the uci config file /etc/config/network
+       
+       s = m:section(TypedSection, "interface", "Interfaces") -- Especially the "interface"-sections
+       s.addremove = true -- Allow the user to create and remove the interfaces
+       function s:filter(value)
+          return value ~= "loopback" and value -- Don't touch loopback
+       end 
+       s:depends("proto", "static") -- Only show those with "static"
+       s:depends("proto", "dhcp") -- or "dhcp" as protocol and leave PPPoE and PPTP alone
+       
+       p = s:option(ListValue, "proto", "Protocol") -- Creates an element list (select box)
+       p:value("static", "static") -- Key and value pairs
+       p:value("dhcp", "DHCP")
+       p.default = "static"
+       
+       s:option(Value, "ifname", "interface", "the physical interface to be used") -- This will give a simple textbox
+       
+       s:option(Value, "ipaddr", translate("ip", "IP Address")) -- Ja, das ist eine i18n-Funktion ;-)
+       
+       s:option(Value, "netmask", "Netmask"):depends("proto", "static") -- You may remember this "depends" function from above
+       
+       mtu = s:option(Value, "mtu", "MTU")
+       mtu.optional = true -- This one is very optional
+       
+       dns = s:option(Value, "dns", "DNS-Server")
+       dns:depends("proto", "static")
+       dns.optional = true
+       function dns:validate(value) -- Now, that's nifty, eh?
+           return value:match("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") -- Returns nil if it doesn't match otherwise returns match
+       end
+       
+       gw = s:option(Value, "gateway", "Gateway")
+       gw:depends("proto", "static")
+       gw.rmempty = true -- Remove entry if it is empty
+       
+       return m -- Returns the map
+       
+
+and of course don't forget to add something like this to your module's index-Function.
+       
+       entry({"admin", "network", "interfaces"}, cbi("myapp-mymodule/netifaces"), "Network interfaces", 30).dependent=false
+       
+
+There are many more features, see [wiki:Documentation/CBI the CBI reference] and the modules shipped with LuCI.
diff --git a/package/luci/documentation/Templates.md b/package/luci/documentation/Templates.md
new file mode 100644 (file)
index 0000000..adf019c
--- /dev/null
@@ -0,0 +1,65 @@
+LuCI has a simple regex based template processor which parses HTML-files to Lua functions and allows to store precompiled template files.
+The simplest form of a template is just an ordinary HTML-file. It will be printed out to the user as is.
+
+In LuCI every template is an object with an own scope. It can therefore be instantiated and each instance can has a different scope. As every template processor. LuCI supports several special markups. Those are enclosed in `<% %>`-Tags.
+
+By adding `-` (dash) right after the opening `<%` every whitespace before the markup will be stripped. Adding a `-` right before the closing `%>` will equivalently strip every whitespace behind the markup.
+
+
+# Builtin functions and markups
+## Including Lua code
+*Markup:*
+       
+       <% code %>
+       
+
+
+## Writing variables and function values
+*Syntax:*
+       
+       <% write (value) %>
+       
+
+*Short-Markup:*
+       
+       <%=value%>
+       
+
+## Including templates
+*Syntax:*
+       
+       <% include (templatename) %>
+       
+
+*Short-Markup:*
+       
+       <%+templatename%>
+       
+
+
+## Translating
+*Syntax:*
+       
+       <%= translate("Text to translate") %>
+       
+
+
+*Short-Markup:*
+       
+       <%:Text to translate%>
+       
+
+
+## Commenting
+*Markup:*
+       
+       <%# comment %>
+       
+
+# Builtin constants
+| Name | Value |
+---------|---------
+|`REQUEST_URI`|The current URL (without server part)|
+|`controller`|Path to the Luci main dispatcher|
+|`resource`|Path to the resource directory|
+|`media`|Path to the active theme directory|
diff --git a/package/luci/documentation/ThemesHowTo.md b/package/luci/documentation/ThemesHowTo.md
new file mode 100644 (file)
index 0000000..ae6f8e0
--- /dev/null
@@ -0,0 +1,76 @@
+# HowTo: Create Themes
+*Note:* You should read the [Module Reference](Modules.md) and the [Template Reference](Templates.md) before.
+
+We assume you want to call your new theme _mytheme_. Make sure you replace this by your module name every time this is mentionend in this Howto.
+
+
+
+# Creating the structure
+At first create a new theme directory *themes/_mytheme_*.
+
+Create a _Makefile_ inside your theme directory with the following content:
+       
+       include ../../build/config.mk
+       include ../../build/module.mk
+       
+
+Create the following directory structure inside your theme directory.
+* ipkg
+* htdocs
+  * luci-static
+   * _mytheme_
+* luasrc
+  * view
+   * themes
+    * _mytheme_
+* root
+  * etc
+   * uci-defaults
+
+
+
+# Designing
+Create two LuCI HTML-Templates named _header.htm'' and ''footer.htm'' under *luasrc/view/themes/''mytheme_*.
+The _header.htm'' will be included at the beginning of each rendered page and the ''footer.htm_ at the end.
+So your _header.htm'' will probably contain a DOCTYPE description, headers, the menu and layout of the page and the ''footer.htm_ will close all remaining open tags and may add a footer bar but hey that's your choice you are the designer ;-).
+
+Just make sure your _header.htm_ *begins* with the following lines:
+       
+       <%
+       require("luci.http").prepare_content("text/html")
+       -%>
+       
+
+This makes sure your content will be sent to the client with the right content type. Of course you can adapt _text/html_ to your needs.
+
+
+Put any stylesheets, Javascripts, images, ... into *htdocs/luci-static/_mytheme_*.
+You should refer to this directory in your header and footer templates as: _<%=media%>''. That means for a stylesheet *htdocs/luci-static/''mytheme_/cascade.css* you would write:
+       
+       <link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
+       
+
+
+
+# Making the theme selectable
+If you are done with your work there are two last steps to do.
+To make your theme OpenWRT-capable and selectable on the settings page you should now create a file *root/etc/uci-defaults/luci-theme-_mytheme_* with the following contents:
+       
+       #!/bin/sh
+       uci batch <<-EOF
+               set luci.themes.MyTheme=/luci-static/mytheme
+               commit luci
+       EOF
+       
+
+and another file *ipkg/postinst* with the following content:
+       
+       #!/bin/sh
+       [ -n "${IPKG_INSTROOT}" ] || {
+               ( . /etc/uci-defaults/luci-theme-mytheme ) &&        rm -f /etc/uci-defaults/luci-theme-mytheme
+       }
+       
+
+This is some OpenWRT magic to correctly register the template with LuCI when it gets installed.
+
+That's all. Now send your theme to the LuCI developers to get it into the development repository - if you like.
diff --git a/package/luci/documentation/api/index.html b/package/luci/documentation/api/index.html
new file mode 100644 (file)
index 0000000..5e3f3c2
--- /dev/null
@@ -0,0 +1,426 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><strong>Index</strong></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+
+
+<h2>Modules</h2>
+<table class="module_list">
+<!--<tr><td colspan="2">Modules</td></tr>-->
+
+       <tr>
+               <td class="name"><a href="modules/luci.dispatcher.html">luci.dispatcher</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.http.html">luci.http</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.http.conditionals.html">luci.http.conditionals</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.http.date.html">luci.http.date</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.http.mime.html">luci.http.mime</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.i18n.html">luci.i18n</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.ip.html">luci.ip</a></td>
+               <td class="summary">
+ LuCI IP calculation and netlink access library.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.ip.cidr.html">luci.ip.cidr</a></td>
+               <td class="summary">
+ IP CIDR Object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.json.html">luci.json</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.jsonc.html">luci.jsonc</a></td>
+               <td class="summary">
+ LuCI JSON parsing and serialization library.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.jsonc.parser.html">luci.jsonc.parser</a></td>
+               <td class="summary">
+ LuCI JSON parser instance.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.model.ipkg.html">luci.model.ipkg</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.model.uci.html">luci.model.uci</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.rpcc.html">luci.rpcc</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.html">luci.sys</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.init.html">luci.sys.init</a></td>
+               <td class="summary">
+LuCI system utilities / init related functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.iptparser.html">luci.sys.iptparser</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.net.html">luci.sys.net</a></td>
+               <td class="summary">
+LuCI system utilities / network related functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.process.html">luci.sys.process</a></td>
+               <td class="summary">
+LuCI system utilities / process related functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.user.html">luci.sys.user</a></td>
+               <td class="summary">
+LuCI system utilities / user related functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.sys.wifi.html">luci.sys.wifi</a></td>
+               <td class="summary">
+LuCI system utilities / wifi related functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/luci.util.html">luci.util</a></td>
+               <td class="summary"></td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.html">nixio</a></td>
+               <td class="summary">
+ General POSIX IO library.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a></td>
+               <td class="summary">
+ Changes and improvements.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.CryptoHash.html">nixio.CryptoHash</a></td>
+               <td class="summary">
+ Cryptographical Hash and HMAC object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.File.html">nixio.File</a></td>
+               <td class="summary">
+ Large File Object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.README.html">nixio.README</a></td>
+               <td class="summary">
+ General Information.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.Socket.html">nixio.Socket</a></td>
+               <td class="summary">
+ Socket Object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.TLSContext.html">nixio.TLSContext</a></td>
+               <td class="summary">
+ Transport Layer Security Context Object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.TLSSocket.html">nixio.TLSSocket</a></td>
+               <td class="summary">
+ TLS Socket Object.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a></td>
+               <td class="summary">
+ Unified high-level I/O utility API for Files, Sockets and TLS-Sockets.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.bin.html">nixio.bin</a></td>
+               <td class="summary">
+ Binary operations and conversion.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.bit.html">nixio.bit</a></td>
+               <td class="summary">
+ Bitfield operators and mainpulation functions.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.crypto.html">nixio.crypto</a></td>
+               <td class="summary">
+ Cryptographical library.</td>
+       </tr>
+
+       <tr>
+               <td class="name"><a href="modules/nixio.fs.html">nixio.fs</a></td>
+               <td class="summary">
+ Low-level and high-level filesystem manipulation library.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" --> 
+</body>
+</html>
diff --git a/package/luci/documentation/api/luadoc.css b/package/luci/documentation/api/luadoc.css
new file mode 100644 (file)
index 0000000..f9f9749
--- /dev/null
@@ -0,0 +1,285 @@
+body { 
+    margin-left: 1em; 
+    margin-right: 1em; 
+    font-family: arial, helvetica, geneva, sans-serif;
+       background-color:#ffffff; margin:0px;
+}
+
+code {
+    font-family: "Andale Mono", monospace; 
+}
+
+tt {
+    font-family: "Andale Mono", monospace; 
+}
+
+body, td, th { font-size: 11pt; }
+
+h1, h2, h3, h4 { margin-left: 0em; }
+
+textarea, pre, tt { font-size:10pt; }
+body, td, th { color:#000000; }
+small { font-size:0.85em; }
+h1 { font-size:1.5em; }
+h2 { font-size:1.25em; }
+h3 { font-size:1.15em; }
+h4 { font-size:1.06em; }
+
+a:link { font-weight:bold; color: #004080; text-decoration: none; }
+a:visited { font-weight:bold; color: #006699; text-decoration: none; }
+a:link:hover { text-decoration:underline; }
+hr { color:#cccccc }
+img { border-width: 0px; }
+
+
+h3 { padding: 1em 0 0.5em; }
+
+p { margin-left: 1em; }
+
+p.name { 
+    font-family: "Andale Mono", monospace; 
+    padding-top: 1em;
+    margin-left: 0em; 
+}
+
+blockquote { margin-left: 3em; }
+
+pre.example {
+    background-color: rgb(245, 245, 245);
+    border-top-width: 1px;
+    border-right-width: 1px;
+    border-bottom-width: 1px;
+    border-left-width: 1px;
+    border-top-style: solid;
+    border-right-style: solid;
+    border-bottom-style: solid;
+    border-left-style: solid;
+    border-top-color: silver;
+    border-right-color: silver;
+    border-bottom-color: silver;
+    border-left-color: silver;
+    padding: 1em;
+    margin-left: 1em;
+    margin-right: 1em;
+    font-family: "Andale Mono", monospace; 
+    font-size: smaller;
+}
+
+
+hr { 
+    margin-left: 0em;
+       background: #00007f; 
+       border: 0px;
+       height: 1px;
+}
+
+ul { list-style-type: disc; }
+
+table.index { border: 1px #00007f; }
+table.index td { text-align: left; vertical-align: top; }
+table.index ul { padding-top: 0em; margin-top: 0em; }
+
+table {
+    border: 1px solid black;
+    border-collapse: collapse;
+    margin: 1em auto;
+}
+th {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+td {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+div.header, div.footer { margin-left: 0em; }
+
+#container
+{
+       margin-left: 1em;
+       margin-right: 1em;
+       background-color: #f0f0f0;
+}
+
+#product
+{
+       text-align: center;
+       border-bottom: 1px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#product big {
+       font-size: 2em;
+}
+
+#product_logo
+{
+}
+
+#product_name
+{
+}
+
+#product_description
+{
+}
+
+#main
+{
+       background-color: #f0f0f0;
+       border-left: 2px solid #cccccc;
+}
+
+#navigation
+{
+       float: left;
+       width: 18em;
+       margin: 0;
+       vertical-align: top;
+       background-color: #f0f0f0;
+       overflow:visible;
+}
+
+#navigation h1 {
+       background-color:#e7e7e7;
+       font-size:1.1em;
+       color:#000000;
+       text-align:left;
+       margin:0px;
+       padding:0.2em;
+       border-top:1px solid #dddddd;
+       border-bottom:1px solid #dddddd;
+}
+
+#navigation ul
+{
+       font-size:1em;
+       list-style-type: none;
+       padding: 0;
+       margin: 1px;
+}
+
+#navigation li
+{
+       text-indent: -1em;
+       margin: 0em 0em 0em 0.5em;
+       display: block;
+       padding: 3px 0px 0px 12px;
+}
+
+#navigation li li a
+{
+       padding: 0px 3px 0px -1em;
+}
+
+#content
+{
+       margin-left: 18em;
+       padding: 1em;
+       border-left: 2px solid #cccccc;
+       border-right: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+#about
+{
+       clear: both;
+       margin: 0;
+       padding: 5px;
+       border-top: 2px solid #cccccc;
+       background-color: #ffffff;
+}
+
+@media print {
+       body { 
+               font: 12pt "Times New Roman", "TimeNR", Times, serif;
+       }
+       a { font-weight:bold; color: #004080; text-decoration: underline; }
+       
+       #main\r  {\r              background-color: #ffffff;\r             border-left: 0px;\r      }\r      
+       #container\r     {\r              margin-left: 2%;\r               margin-right: 2%;\r              background-color: #ffffff;\r     }
+       
+       #content\r       {\r              margin-left: 0px;\r              padding: 1em;\r          border-left: 0px;\r              border-right: 0px;\r             background-color: #ffffff;\r     }
+       
+       #navigation\r    {\r              display: none;
+       }
+       pre.example {
+               font-family: "Andale Mono", monospace; 
+               font-size: 10pt;
+               page-break-inside: avoid;
+       }
+}
+
+table.module_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.module_list td.name { background-color: #f0f0f0; }
+table.module_list td.summary { width: 100%; }
+
+table.file_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.file_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.file_list td.name { background-color: #f0f0f0; }
+table.file_list td.summary { width: 100%; }
+
+
+table.function_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.function_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.function_list td.name { background-color: #f0f0f0; }
+table.function_list td.summary { width: 100%; }
+
+
+table.table_list
+{
+       border-width: 1px;
+       border-style: solid;
+       border-color: #cccccc;
+       border-collapse: collapse;
+}
+table.table_list td
+{
+       border-width: 1px;
+       padding: 3px;
+       border-style: solid;
+       border-color: #cccccc;
+}
+table.table_list td.name { background-color: #f0f0f0; }
+table.table_list td.summary { width: 100%; }
+
+dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.function dd {padding: 0.5em 0;}
+dl.function h3 {margin: 0; font-size: medium;}
+
+dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.table dd {padding-bottom: 1em;}
+dl.table h3 {padding: 0; margin: 0; font-size: medium;}
+
+#TODO: make module_list, file_list, function_list, table_list inherit from a list
+
diff --git a/package/luci/documentation/api/modules/luci.dispatcher.html b/package/luci/documentation/api/modules/luci.dispatcher.html
new file mode 100644 (file)
index 0000000..e4b12e6
--- /dev/null
@@ -0,0 +1,1185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li><strong>luci.dispatcher</strong></li>
+       
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.dispatcher</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#_">_</a>&nbsp;()</td>
+       <td class="summary">
+No-op function used to mark translation entries for menu labels.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#alias">alias</a>&nbsp;(...)</td>
+       <td class="summary">
+Create a redirect to another dispatching node.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#arcombine">arcombine</a>&nbsp;(trg1, trg2)</td>
+       <td class="summary">
+Create a combined dispatching target for non argv and argv requests.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#assign">assign</a>&nbsp;(path, clone, title, order)</td>
+       <td class="summary">
+Clone a node of the dispatching tree to another position.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#build_url">build_url</a>&nbsp;(...)</td>
+       <td class="summary">
+Build the URL relative to the server webroot from given virtual path.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#call">call</a>&nbsp;(name, ...)</td>
+       <td class="summary">
+Create a function-call dispatching target.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cbi">cbi</a>&nbsp;(model)</td>
+       <td class="summary">
+Create a CBI model dispatching target.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#createindex">createindex</a>&nbsp;()</td>
+       <td class="summary">
+Generate the dispatching index using the native file-cache based strategy.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#createtree">createtree</a>&nbsp;()</td>
+       <td class="summary">
+Create the dispatching tree from the index.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#dispatch">dispatch</a>&nbsp;(request)</td>
+       <td class="summary">
+Dispatches a LuCI virtual path.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#entry">entry</a>&nbsp;(path, target, title, order)</td>
+       <td class="summary">
+Create a new dispatching node and define common parameters.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#error404">error404</a>&nbsp;(message)</td>
+       <td class="summary">
+Send a 404 error code and render the "error404" template if available.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#error500">error500</a>&nbsp;(message)</td>
+       <td class="summary">
+Send a 500 error code and render the "error500" template if available.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#firstchild">firstchild</a>&nbsp;()</td>
+       <td class="summary">
+Alias the first (lowest order) page automatically 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#form">form</a>&nbsp;(model)</td>
+       <td class="summary">
+Create a CBI form model dispatching target.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#get">get</a>&nbsp;(...)</td>
+       <td class="summary">
+Fetch or create a dispatching node without setting the target module or 
+enabling the node.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#httpdispatch">httpdispatch</a>&nbsp;(request)</td>
+       <td class="summary">
+Dispatch an HTTP request.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#lookup">lookup</a>&nbsp;(...)</td>
+       <td class="summary">
+Lookup node in dispatching tree.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#modifier">modifier</a>&nbsp;(func, order)</td>
+       <td class="summary">
+Register a tree modifier.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#node">node</a>&nbsp;(...)</td>
+       <td class="summary">
+Fetch or create a new dispatching node.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#node_childs">node_childs</a>&nbsp;(node)</td>
+       <td class="summary">
+Return a sorted table of visible childs within a given node 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#node_visible">node_visible</a>&nbsp;(node)</td>
+       <td class="summary">
+Check whether a dispatch node shall be visible 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#rewrite">rewrite</a>&nbsp;(n, ...)</td>
+       <td class="summary">
+Rewrite the first x path values of the request.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#template">template</a>&nbsp;(name)</td>
+       <td class="summary">
+Create a template render dispatching target.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#translate">translate</a>&nbsp;(text)</td>
+       <td class="summary">
+Access the luci.i18n translate() api.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="_"></a><strong>_</strong>&nbsp;()</dt>
+<dd>
+
+No-op function used to mark translation entries for menu labels. 
+This function does not actually translate the given argument but 
+is used by build/i18n-scan.pl to find translatable entries. 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="alias"></a><strong>alias</strong>&nbsp;(...)</dt>
+<dd>
+
+Create a redirect to another dispatching node. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Virtual path destination
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="arcombine"></a><strong>arcombine</strong>&nbsp;(trg1, trg2)</dt>
+<dd>
+
+Create a combined dispatching target for non argv and argv requests. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         trg1: Overview Target
+       </li>
+       
+       <li>
+         trg2: Detail Target
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="assign"></a><strong>assign</strong>&nbsp;(path, clone, title, order)</dt>
+<dd>
+
+Clone a node of the dispatching tree to another position. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Virtual path destination
+       </li>
+       
+       <li>
+         clone: Virtual path source
+       </li>
+       
+       <li>
+         title: Destination node title (optional)
+       </li>
+       
+       <li>
+         order: Destination node order value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Dispatching tree node
+
+
+
+</dd>
+
+
+
+
+<dt><a name="build_url"></a><strong>build_url</strong>&nbsp;(...)</dt>
+<dd>
+
+Build the URL relative to the server webroot from given virtual path. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Virtual path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Relative URL
+
+
+
+</dd>
+
+
+
+
+<dt><a name="call"></a><strong>call</strong>&nbsp;(name, ...)</dt>
+<dd>
+
+Create a function-call dispatching target. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Target function of local controller
+       </li>
+       
+       <li>
+         ...: Additional parameters passed to the function
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cbi"></a><strong>cbi</strong>&nbsp;(model)</dt>
+<dd>
+
+Create a CBI model dispatching target. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         model: CBI model to be rendered
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="createindex"></a><strong>createindex</strong>&nbsp;()</dt>
+<dd>
+
+Generate the dispatching index using the native file-cache based strategy. 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="createtree"></a><strong>createtree</strong>&nbsp;()</dt>
+<dd>
+
+Create the dispatching tree from the index. 
+Build the index before if it does not exist yet. 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="dispatch"></a><strong>dispatch</strong>&nbsp;(request)</dt>
+<dd>
+
+Dispatches a LuCI virtual path. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         request: Virtual path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="entry"></a><strong>entry</strong>&nbsp;(path, target, title, order)</dt>
+<dd>
+
+Create a new dispatching node and define common parameters. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Virtual path
+       </li>
+       
+       <li>
+         target: Target function to call when dispatched.
+       </li>
+       
+       <li>
+         title: Destination node title
+       </li>
+       
+       <li>
+         order: Destination node order value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Dispatching tree node
+
+
+
+</dd>
+
+
+
+
+<dt><a name="error404"></a><strong>error404</strong>&nbsp;(message)</dt>
+<dd>
+
+Send a 404 error code and render the "error404" template if available. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         message: Custom error message (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+false
+
+
+
+</dd>
+
+
+
+
+<dt><a name="error500"></a><strong>error500</strong>&nbsp;(message)</dt>
+<dd>
+
+Send a 500 error code and render the "error500" template if available. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         message: Custom error message (optional)#
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+false
+
+
+
+</dd>
+
+
+
+
+<dt><a name="firstchild"></a><strong>firstchild</strong>&nbsp;()</dt>
+<dd>
+
+Alias the first (lowest order) page automatically 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="form"></a><strong>form</strong>&nbsp;(model)</dt>
+<dd>
+
+Create a CBI form model dispatching target. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         model: CBI form model tpo be rendered
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="get"></a><strong>get</strong>&nbsp;(...)</dt>
+<dd>
+
+Fetch or create a dispatching node without setting the target module or 
+enabling the node. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Virtual path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Dispatching tree node
+
+
+
+</dd>
+
+
+
+
+<dt><a name="httpdispatch"></a><strong>httpdispatch</strong>&nbsp;(request)</dt>
+<dd>
+
+Dispatch an HTTP request. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         request: LuCI HTTP Request object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="lookup"></a><strong>lookup</strong>&nbsp;(...)</dt>
+<dd>
+
+Lookup node in dispatching tree. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Virtual path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Node object, canonical url or nil if the path was not found.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="modifier"></a><strong>modifier</strong>&nbsp;(func, order)</dt>
+<dd>
+
+Register a tree modifier. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         func: Modifier function
+       </li>
+       
+       <li>
+         order: Modifier order value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="node"></a><strong>node</strong>&nbsp;(...)</dt>
+<dd>
+
+Fetch or create a new dispatching node. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Virtual path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Dispatching tree node
+
+
+
+</dd>
+
+
+
+
+<dt><a name="node_childs"></a><strong>node_childs</strong>&nbsp;(node)</dt>
+<dd>
+
+Return a sorted table of visible childs within a given node 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         node: Dispatch node
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Ordered table of child node names
+
+
+
+</dd>
+
+
+
+
+<dt><a name="node_visible"></a><strong>node_visible</strong>&nbsp;(node)</dt>
+<dd>
+
+Check whether a dispatch node shall be visible 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         node: Dispatch node
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating whether the node should be visible
+
+
+
+</dd>
+
+
+
+
+<dt><a name="rewrite"></a><strong>rewrite</strong>&nbsp;(n, ...)</dt>
+<dd>
+
+Rewrite the first x path values of the request. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         n: Number of path values to replace
+       </li>
+       
+       <li>
+         ...: Virtual path to replace removed path values with
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="template"></a><strong>template</strong>&nbsp;(name)</dt>
+<dd>
+
+Create a template render dispatching target. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Template to be rendered
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="translate"></a><strong>translate</strong>&nbsp;(text)</dt>
+<dd>
+
+Access the luci.i18n translate() api. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         text: Text to translate
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.http.html b/package/luci/documentation/api/modules/luci.http.html
new file mode 100644 (file)
index 0000000..d75863f
--- /dev/null
@@ -0,0 +1,1267 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li><strong>luci.http</strong></li>
+       
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.http</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#build_querystring">build_querystring</a>&nbsp;(table)</td>
+       <td class="summary">
+Create a querystring out of a table of key - value pairs.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#close">close</a>&nbsp;()</td>
+       <td class="summary">
+Close the HTTP-Connection.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#content">content</a>&nbsp;()</td>
+       <td class="summary">
+Return the request content if the request was of unknown type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#formvalue">formvalue</a>&nbsp;(name, noparse)</td>
+       <td class="summary">
+Get a certain HTTP input value or a table of all input values.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#formvaluetable">formvaluetable</a>&nbsp;(prefix)</td>
+       <td class="summary">
+Get a table of all HTTP input values with a certain prefix.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#getcookie">getcookie</a>&nbsp;(name)</td>
+       <td class="summary">
+Get the value of a certain HTTP-Cookie.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#getenv">getenv</a>&nbsp;(name)</td>
+       <td class="summary">
+Get the value of a certain HTTP environment variable 
+or the environment table itself.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#header">header</a>&nbsp;(key, value)</td>
+       <td class="summary">
+Send a HTTP-Header.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#mimedecode_message_body">mimedecode_message_body</a>&nbsp;(src, msg, filecb)</td>
+       <td class="summary">
+Decode a mime encoded http message body with multipart/form-data Content-Type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parse_message_body">parse_message_body</a>&nbsp;(src, msg, filecb)</td>
+       <td class="summary">
+Try to extract and decode a http message body from the given ltn12 source.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#prepare_content">prepare_content</a>&nbsp;(mime)</td>
+       <td class="summary">
+Set the mime type of following content data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#redirect">redirect</a>&nbsp;(url)</td>
+       <td class="summary">
+Redirects the client to a new URL and closes the connection.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#setfilehandler">setfilehandler</a>&nbsp;(callback)</td>
+       <td class="summary">
+Set a handler function for incoming user file uploads.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#source">source</a>&nbsp;()</td>
+       <td class="summary">
+Get the RAW HTTP input source 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#splice">splice</a>&nbsp;(fp, size)</td>
+       <td class="summary">
+Splice data from a filedescriptor to the client.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#status">status</a>&nbsp;(code, message)</td>
+       <td class="summary">
+Set the HTTP status code and status message.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode">urldecode</a>&nbsp;(str, no_plus)</td>
+       <td class="summary">
+Return the URL-decoded equivalent of a string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode_message_body">urldecode_message_body</a>&nbsp;(src, msg)</td>
+       <td class="summary">
+Decode an urlencoded http message body with application/x-www-urlencoded 
+Content-Type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode_params">urldecode_params</a>&nbsp;(url, tbl)</td>
+       <td class="summary">
+Extract and split urlencoded data pairs, separated bei either "&" or ";" 
+from given url or string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urlencode">urlencode</a>&nbsp;(str)</td>
+       <td class="summary">
+Return the URL-encoded equivalent of a string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urlencode_params">urlencode_params</a>&nbsp;(tbl)</td>
+       <td class="summary">
+Encode each key-value-pair in given table to x-www-urlencoded format, 
+separated by "&".</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#write">write</a>&nbsp;(content, src_err)</td>
+       <td class="summary">
+Send a chunk of content data to the client.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#write_json">write_json</a>&nbsp;(data)</td>
+       <td class="summary">
+Send the given data as JSON encoded string.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="build_querystring"></a><strong>build_querystring</strong>&nbsp;(table)</dt>
+<dd>
+
+Create a querystring out of a table of key - value pairs. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         table: Query string source table
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Encoded HTTP query string
+
+
+
+</dd>
+
+
+
+
+<dt><a name="close"></a><strong>close</strong>&nbsp;()</dt>
+<dd>
+
+Close the HTTP-Connection. 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="content"></a><strong>content</strong>&nbsp;()</dt>
+<dd>
+
+Return the request content if the request was of unknown type. 
+
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>HTTP request body
+       
+       <li>HTTP request body length
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="formvalue"></a><strong>formvalue</strong>&nbsp;(name, noparse)</dt>
+<dd>
+
+Get a certain HTTP input value or a table of all input values. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the GET or POST variable to fetch
+       </li>
+       
+       <li>
+         noparse: Don't parse POST data before getting the value
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+HTTP input value or table of all input value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="formvaluetable"></a><strong>formvaluetable</strong>&nbsp;(prefix)</dt>
+<dd>
+
+Get a table of all HTTP input values with a certain prefix. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         prefix: Prefix
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of all HTTP input values with given prefix
+
+
+
+</dd>
+
+
+
+
+<dt><a name="getcookie"></a><strong>getcookie</strong>&nbsp;(name)</dt>
+<dd>
+
+Get the value of a certain HTTP-Cookie. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Cookie Name
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing cookie data
+
+
+
+</dd>
+
+
+
+
+<dt><a name="getenv"></a><strong>getenv</strong>&nbsp;(name)</dt>
+<dd>
+
+Get the value of a certain HTTP environment variable 
+or the environment table itself. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Environment variable
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+HTTP environment value or environment table
+
+
+
+</dd>
+
+
+
+
+<dt><a name="header"></a><strong>header</strong>&nbsp;(key, value)</dt>
+<dd>
+
+Send a HTTP-Header. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Header key
+       </li>
+       
+       <li>
+         value: Header value
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="mimedecode_message_body"></a><strong>mimedecode_message_body</strong>&nbsp;(src, msg, filecb)</dt>
+<dd>
+
+Decode a mime encoded http message body with multipart/form-data Content-Type. 
+Stores all extracted data associated with its parameter name 
+in the params table within the given message object. Multiple parameter 
+values are stored as tables, ordinary ones as strings. 
+If an optional file callback function is given then it is feeded with the 
+file contents chunk by chunk and only the extracted file name is stored 
+within the params table. The callback function will be called subsequently 
+with three arguments: 
+ o Table containing decoded (name, file) and raw (headers) mime header data 
+ o String value containing a chunk of the file data 
+ o Boolean which indicates wheather the current chunk is the last one (eof) 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+       <li>
+         filecb: File callback function (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parse_message_body"></a><strong>parse_message_body</strong>&nbsp;(src, msg, filecb)</dt>
+<dd>
+
+Try to extract and decode a http message body from the given ltn12 source. 
+This function will examine the Content-Type within the given message object 
+to select the appropriate content decoder. 
+Currently the application/x-www-urlencoded and application/form-data 
+mime types are supported. If the encountered content encoding can't be 
+handled then the whole message body will be stored unaltered as "content" 
+property within the given message object. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+       <li>
+         filecb: File data callback (optional, see mimedecode_message_body())
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="prepare_content"></a><strong>prepare_content</strong>&nbsp;(mime)</dt>
+<dd>
+
+Set the mime type of following content data. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mime: Mimetype of following content
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="redirect"></a><strong>redirect</strong>&nbsp;(url)</dt>
+<dd>
+
+Redirects the client to a new URL and closes the connection. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         url: Target URL
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="setfilehandler"></a><strong>setfilehandler</strong>&nbsp;(callback)</dt>
+<dd>
+
+Set a handler function for incoming user file uploads. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         callback: Handler function
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="source"></a><strong>source</strong>&nbsp;()</dt>
+<dd>
+
+Get the RAW HTTP input source 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+HTTP LTN12 source
+
+
+
+</dd>
+
+
+
+
+<dt><a name="splice"></a><strong>splice</strong>&nbsp;(fp, size)</dt>
+<dd>
+
+Splice data from a filedescriptor to the client. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         fp: File descriptor
+       </li>
+       
+       <li>
+         size: Bytes to splice (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="status"></a><strong>status</strong>&nbsp;(code, message)</dt>
+<dd>
+
+Set the HTTP status code and status message. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         code: Status code
+       </li>
+       
+       <li>
+         message: Status message
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="urldecode"></a><strong>urldecode</strong>&nbsp;(str, no_plus)</dt>
+<dd>
+
+Return the URL-decoded equivalent of a string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: URL-encoded string
+       </li>
+       
+       <li>
+         no_plus: Don't decode + to " "
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+URL-decoded string
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urlencode">
+               urlencode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urldecode_message_body"></a><strong>urldecode_message_body</strong>&nbsp;(src, msg)</dt>
+<dd>
+
+Decode an urlencoded http message body with application/x-www-urlencoded 
+Content-Type. 
+Stores all extracted data associated with its parameter name in the params 
+table within the given message object. Multiple parameter values are stored 
+as tables, ordinary ones as strings. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urldecode_params"></a><strong>urldecode_params</strong>&nbsp;(url, tbl)</dt>
+<dd>
+
+Extract and split urlencoded data pairs, separated bei either "&" or ";" 
+from given url or string. Returns a table with urldecoded values. 
+Simple parameters are stored as string values associated with the parameter 
+name within the table. Parameters with multiple values are stored as array 
+containing the corresponding values. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         url: The url or string which contains x-www-urlencoded form data
+       </li>
+       
+       <li>
+         tbl: Use the given table for storing values (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the urldecoded parameters
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urlencode_params">
+               urlencode_params
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urlencode"></a><strong>urlencode</strong>&nbsp;(str)</dt>
+<dd>
+
+Return the URL-encoded equivalent of a string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: Source string
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+URL-encoded string
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urldecode">
+               urldecode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urlencode_params"></a><strong>urlencode_params</strong>&nbsp;(tbl)</dt>
+<dd>
+
+Encode each key-value-pair in given table to x-www-urlencoded format, 
+separated by "&". 
+Tables are encoded as parameters with multiple values by repeating the 
+parameter name with each value. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         tbl: Table with the values
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing encoded values
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urldecode_params">
+               urldecode_params
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="write"></a><strong>write</strong>&nbsp;(content, src_err)</dt>
+<dd>
+
+Send a chunk of content data to the client. 
+This function is as a valid LTN12 sink. 
+If the content chunk is nil this function will automatically invoke close. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         content: Content chunk
+       </li>
+       
+       <li>
+         src_err: Error object from source (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#close">
+               close
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="write_json"></a><strong>write_json</strong>&nbsp;(data)</dt>
+<dd>
+
+Send the given data as JSON encoded string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: Data to send
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.http.protocol.conditionals.html b/package/luci/documentation/api/modules/luci.http.protocol.conditionals.html
new file mode 100644 (file)
index 0000000..9728815
--- /dev/null
@@ -0,0 +1,556 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+       </li>
+
+       <li><strong>luci.http.protocol.conditionals</strong></li>
+       
+       <li>
+               <a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.http.protocol.conditionals</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#if_match">if_match</a>&nbsp;(req, stat)</td>
+       <td class="summary">
+14.24 / If-Match 
+Test whether the given message object contains an "If-Match" header and 
+compare it against the given stat object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#if_modified_since">if_modified_since</a>&nbsp;(req, stat)</td>
+       <td class="summary">
+14.25 / If-Modified-Since 
+Test whether the given message object contains an "If-Modified-Since" header 
+and compare it against the given stat object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#if_none_match">if_none_match</a>&nbsp;(req, stat)</td>
+       <td class="summary">
+14.26 / If-None-Match 
+Test whether the given message object contains an "If-None-Match" header and 
+compare it against the given stat object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#if_range">if_range</a>&nbsp;(req, stat)</td>
+       <td class="summary">
+14.27 / If-Range 
+The If-Range header is currently not implemented due to the lack of general 
+byte range stuff in luci.http.protocol .</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#if_unmodified_since">if_unmodified_since</a>&nbsp;(req, stat)</td>
+       <td class="summary">
+14.28 / If-Unmodified-Since 
+Test whether the given message object contains an "If-Unmodified-Since" 
+header and compare it against the given stat object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#mk_etag">mk_etag</a>&nbsp;(stat)</td>
+       <td class="summary">
+Implement 14.19 / ETag.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="if_match"></a><strong>if_match</strong>&nbsp;(req, stat)</dt>
+<dd>
+
+14.24 / If-Match 
+Test whether the given message object contains an "If-Match" header and 
+compare it against the given stat object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         req: HTTP request message object
+       </li>
+       
+       <li>
+         stat: A file.stat object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating whether the precondition is ok
+       
+       <li>Alternative status code if the precondition failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="if_modified_since"></a><strong>if_modified_since</strong>&nbsp;(req, stat)</dt>
+<dd>
+
+14.25 / If-Modified-Since 
+Test whether the given message object contains an "If-Modified-Since" header 
+and compare it against the given stat object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         req: HTTP request message object
+       </li>
+       
+       <li>
+         stat: A file.stat object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating whether the precondition is ok
+       
+       <li>Alternative status code if the precondition failed
+       
+       <li>Table containing extra HTTP headers if the precondition failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="if_none_match"></a><strong>if_none_match</strong>&nbsp;(req, stat)</dt>
+<dd>
+
+14.26 / If-None-Match 
+Test whether the given message object contains an "If-None-Match" header and 
+compare it against the given stat object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         req: HTTP request message object
+       </li>
+       
+       <li>
+         stat: A file.stat object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating whether the precondition is ok
+       
+       <li>Alternative status code if the precondition failed
+       
+       <li>Table containing extra HTTP headers if the precondition failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="if_range"></a><strong>if_range</strong>&nbsp;(req, stat)</dt>
+<dd>
+
+14.27 / If-Range 
+The If-Range header is currently not implemented due to the lack of general 
+byte range stuff in luci.http.protocol . This function will always return 
+false, 412 to indicate a failed precondition.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         req: HTTP request message object
+       </li>
+       
+       <li>
+         stat: A file.stat object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating whether the precondition is ok
+       
+       <li>Alternative status code if the precondition failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="if_unmodified_since"></a><strong>if_unmodified_since</strong>&nbsp;(req, stat)</dt>
+<dd>
+
+14.28 / If-Unmodified-Since 
+Test whether the given message object contains an "If-Unmodified-Since" 
+header and compare it against the given stat object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         req: HTTP request message object
+       </li>
+       
+       <li>
+         stat: A file.stat object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating whether the precondition is ok
+       
+       <li>Alternative status code if the precondition failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="mk_etag"></a><strong>mk_etag</strong>&nbsp;(stat)</dt>
+<dd>
+
+Implement 14.19 / ETag. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         stat: A file.stat structure
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the generated tag suitable for ETag headers
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.http.protocol.date.html b/package/luci/documentation/api/modules/luci.http.protocol.date.html
new file mode 100644 (file)
index 0000000..d89a723
--- /dev/null
@@ -0,0 +1,410 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+       </li>
+
+       <li><strong>luci.http.protocol.date</strong></li>
+       
+       <li>
+               <a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.http.protocol.date</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#compare">compare</a>&nbsp;(d1, d2)</td>
+       <td class="summary">
+Compare two dates which can either be unix epoch times or HTTP date strings.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#to_http">to_http</a>&nbsp;(time)</td>
+       <td class="summary">
+Convert the given unix epoch time to valid HTTP date string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#to_unix">to_unix</a>&nbsp;(data)</td>
+       <td class="summary">
+Parse given HTTP date string and convert it to unix epoch time.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#tz_offset">tz_offset</a>&nbsp;(tz)</td>
+       <td class="summary">
+Return the time offset in seconds between the UTC and given time zone.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="compare"></a><strong>compare</strong>&nbsp;(d1, d2)</dt>
+<dd>
+
+Compare two dates which can either be unix epoch times or HTTP date strings. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         d1: The first date or epoch time to compare
+       </li>
+       
+       <li>
+         d2: The first date or epoch time to compare
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>-1  -  if d1 is lower then d2
+       
+       <li>0   -  if both dates are equal
+       
+       <li>1   -  if d1 is higher then d2
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="to_http"></a><strong>to_http</strong>&nbsp;(time)</dt>
+<dd>
+
+Convert the given unix epoch time to valid HTTP date string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         time: Unix epoch time
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the formatted date
+
+
+
+</dd>
+
+
+
+
+<dt><a name="to_unix"></a><strong>to_unix</strong>&nbsp;(data)</dt>
+<dd>
+
+Parse given HTTP date string and convert it to unix epoch time. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: String containing the date
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Unix epoch time
+
+
+
+</dd>
+
+
+
+
+<dt><a name="tz_offset"></a><strong>tz_offset</strong>&nbsp;(tz)</dt>
+<dd>
+
+Return the time offset in seconds between the UTC and given time zone. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         tz: Symbolic or numeric timezone specifier
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Time offset to UTC in seconds
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.http.protocol.html b/package/luci/documentation/api/modules/luci.http.protocol.html
new file mode 100644 (file)
index 0000000..e6e93ad
--- /dev/null
@@ -0,0 +1,753 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li><strong>luci.http.protocol</strong></li>
+       
+       <li>
+               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.http.protocol</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#header_source">header_source</a>&nbsp;(sock)</td>
+       <td class="summary">
+Creates a ltn12 source from the given socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#mimedecode_message_body">mimedecode_message_body</a>&nbsp;(src, msg, filecb)</td>
+       <td class="summary">
+Decode a mime encoded http message body with multipart/form-data 
+Content-Type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parse_message_body">parse_message_body</a>&nbsp;(src, msg, filecb)</td>
+       <td class="summary">
+Try to extract and decode a http message body from the given ltn12 source.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parse_message_header">parse_message_header</a>&nbsp;(src)</td>
+       <td class="summary">
+Try to extract an http message header including information like protocol 
+version, message headers and resulting CGI environment variables from the 
+given ltn12 source.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode">urldecode</a>&nbsp;(str, no_plus)</td>
+       <td class="summary">
+Decode an urlencoded string - optionally without decoding 
+the "+" sign to " " - and return the decoded string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode_message_body">urldecode_message_body</a>&nbsp;(src, msg)</td>
+       <td class="summary">
+Decode an urlencoded http message body with application/x-www-urlencoded 
+Content-Type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode_params">urldecode_params</a>&nbsp;(url, tbl)</td>
+       <td class="summary">
+Extract and split urlencoded data pairs, separated bei either "&" or ";" 
+from given url or string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urlencode">urlencode</a>&nbsp;(str)</td>
+       <td class="summary">
+Encode given string to x-www-urlencoded format.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urlencode_params">urlencode_params</a>&nbsp;(tbl)</td>
+       <td class="summary">
+Encode each key-value-pair in given table to x-www-urlencoded format, 
+separated by "&".</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="header_source"></a><strong>header_source</strong>&nbsp;(sock)</dt>
+<dd>
+
+Creates a ltn12 source from the given socket. The source will return it's 
+data line by line with the trailing \r\n stripped of.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         sock: Readable network socket
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Ltn12 source function
+
+
+
+</dd>
+
+
+
+
+<dt><a name="mimedecode_message_body"></a><strong>mimedecode_message_body</strong>&nbsp;(src, msg, filecb)</dt>
+<dd>
+
+Decode a mime encoded http message body with multipart/form-data 
+Content-Type. Stores all extracted data associated with its parameter name 
+in the params table within the given message object. Multiple parameter 
+values are stored as tables, ordinary ones as strings. 
+If an optional file callback function is given then it is feeded with the 
+file contents chunk by chunk and only the extracted file name is stored 
+within the params table. The callback function will be called subsequently 
+with three arguments: 
+ o Table containing decoded (name, file) and raw (headers) mime header data 
+ o String value containing a chunk of the file data 
+ o Boolean which indicates wheather the current chunk is the last one (eof)
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+       <li>
+         filecb: File callback function (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parse_message_header">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parse_message_body"></a><strong>parse_message_body</strong>&nbsp;(src, msg, filecb)</dt>
+<dd>
+
+Try to extract and decode a http message body from the given ltn12 source. 
+This function will examine the Content-Type within the given message object 
+to select the appropriate content decoder. 
+Currently the application/x-www-urlencoded and application/form-data 
+mime types are supported. If the encountered content encoding can't be 
+handled then the whole message body will be stored unaltered as "content" 
+property within the given message object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+       <li>
+         filecb: File data callback (optional, see mimedecode_message_body())
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parse_message_header">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parse_message_header"></a><strong>parse_message_header</strong>&nbsp;(src)</dt>
+<dd>
+
+Try to extract an http message header including information like protocol 
+version, message headers and resulting CGI environment variables from the 
+given ltn12 source.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+HTTP message object
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parse_message_body">
+               parse_message_body
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urldecode"></a><strong>urldecode</strong>&nbsp;(str, no_plus)</dt>
+<dd>
+
+Decode an urlencoded string - optionally without decoding 
+the "+" sign to " " - and return the decoded string.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: Input string in x-www-urlencoded format
+       </li>
+       
+       <li>
+         no_plus: Don't decode "+" signs to spaces
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+The decoded string
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urlencode">
+               urlencode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urldecode_message_body"></a><strong>urldecode_message_body</strong>&nbsp;(src, msg)</dt>
+<dd>
+
+Decode an urlencoded http message body with application/x-www-urlencoded 
+Content-Type. Stores all extracted data associated with its parameter name 
+in the params table within the given message object. Multiple parameter 
+values are stored as tables, ordinary ones as strings.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Ltn12 source function
+       </li>
+       
+       <li>
+         msg: HTTP message object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Value indicating successful operation (not nil means "ok")
+       
+       <li>String containing the error if unsuccessful
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parse_message_header">
+               parse_message_header
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urldecode_params"></a><strong>urldecode_params</strong>&nbsp;(url, tbl)</dt>
+<dd>
+
+Extract and split urlencoded data pairs, separated bei either "&" or ";" 
+from given url or string. Returns a table with urldecoded values. 
+Simple parameters are stored as string values associated with the parameter 
+name within the table. Parameters with multiple values are stored as array 
+containing the corresponding values.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         url: The url or string which contains x-www-urlencoded form data
+       </li>
+       
+       <li>
+         tbl: Use the given table for storing values (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the urldecoded parameters
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urlencode_params">
+               urlencode_params
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urlencode"></a><strong>urlencode</strong>&nbsp;(str)</dt>
+<dd>
+
+Encode given string to x-www-urlencoded format. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String to encode
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the encoded data
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urldecode">
+               urldecode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urlencode_params"></a><strong>urlencode_params</strong>&nbsp;(tbl)</dt>
+<dd>
+
+Encode each key-value-pair in given table to x-www-urlencoded format, 
+separated by "&". Tables are encoded as parameters with multiple values by 
+repeating the parameter name with each value.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         tbl: Table with the values
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing encoded values
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urldecode_params">
+               urldecode_params
+       </a>
+       
+</ul>
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.http.protocol.mime.html b/package/luci/documentation/api/modules/luci.http.protocol.mime.html
new file mode 100644 (file)
index 0000000..0b5ce0c
--- /dev/null
@@ -0,0 +1,326 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
+       </li>
+
+       <li><strong>luci.http.protocol.mime</strong></li>
+       
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.http.protocol.mime</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#to_ext">to_ext</a>&nbsp;(mimetype)</td>
+       <td class="summary">
+Return corresponding extension for a given mime type or nil if the 
+given mime-type is unknown.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#to_mime">to_mime</a>&nbsp;(filename)</td>
+       <td class="summary">
+Extract extension from a filename and return corresponding mime-type or 
+"application/octet-stream" if the extension is unknown.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="to_ext"></a><strong>to_ext</strong>&nbsp;(mimetype)</dt>
+<dd>
+
+Return corresponding extension for a given mime type or nil if the 
+given mime-type is unknown.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mimetype: The mimetype to retrieve the extension from
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String with the extension or nil for unknown type
+
+
+
+</dd>
+
+
+
+
+<dt><a name="to_mime"></a><strong>to_mime</strong>&nbsp;(filename)</dt>
+<dd>
+
+Extract extension from a filename and return corresponding mime-type or 
+"application/octet-stream" if the extension is unknown.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         filename: The filename for which the mime type is guessed
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containign the determined mime type
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.i18n.html b/package/luci/documentation/api/modules/luci.i18n.html
new file mode 100644 (file)
index 0000000..3f0738b
--- /dev/null
@@ -0,0 +1,560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li><strong>luci.i18n</strong></li>
+       
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.i18n</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#clear">clear</a>&nbsp;()</td>
+       <td class="summary">
+Clear the translation table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#load">load</a>&nbsp;(file, lang, force)</td>
+       <td class="summary">
+Load a translation and copy its data into the translation table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#loadc">loadc</a>&nbsp;(file, force)</td>
+       <td class="summary">
+Load a translation file using the default translation language.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#setlanguage">setlanguage</a>&nbsp;(lang)</td>
+       <td class="summary">
+Set the context default translation language.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#string">string</a>&nbsp;(key)</td>
+       <td class="summary">
+Return the translated value for a specific translation key 
+and ensure that the returned value is a Lua string value.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#stringf">stringf</a>&nbsp;(key, ...)</td>
+       <td class="summary">
+Return the translated value for a specific translation key and use it as sprintf pattern.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#translate">translate</a>&nbsp;(key)</td>
+       <td class="summary">
+Return the translated value for a specific translation key.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#translatef">translatef</a>&nbsp;(key, ...)</td>
+       <td class="summary">
+Return the translated value for a specific translation key and use it as sprintf pattern.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="clear"></a><strong>clear</strong>&nbsp;()</dt>
+<dd>
+
+Clear the translation table. 
+
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="load"></a><strong>load</strong>&nbsp;(file, lang, force)</dt>
+<dd>
+
+Load a translation and copy its data into the translation table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         file: Language file
+       </li>
+       
+       <li>
+         lang: Two-letter language code
+       </li>
+       
+       <li>
+         force: Force reload even if already loaded (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Success status
+
+
+
+</dd>
+
+
+
+
+<dt><a name="loadc"></a><strong>loadc</strong>&nbsp;(file, force)</dt>
+<dd>
+
+Load a translation file using the default translation language. 
+Alternatively load the translation of the fallback language.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         file: Language file
+       </li>
+       
+       <li>
+         force: Force reload even if already loaded (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="setlanguage"></a><strong>setlanguage</strong>&nbsp;(lang)</dt>
+<dd>
+
+Set the context default translation language. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         lang: Two-letter language code
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="string"></a><strong>string</strong>&nbsp;(key)</dt>
+<dd>
+
+Return the translated value for a specific translation key 
+and ensure that the returned value is a Lua string value. 
+This is the same as calling <code>tostring(translate(...))</code>
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Default translation text
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Translated string
+
+
+
+</dd>
+
+
+
+
+<dt><a name="stringf"></a><strong>stringf</strong>&nbsp;(key, ...)</dt>
+<dd>
+
+Return the translated value for a specific translation key and use it as sprintf pattern. 
+Ensure that the returned value is a Lua string value. 
+This is the same as calling <code>tostring(translatef(...))</code>
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Default translation text
+       </li>
+       
+       <li>
+         ...: Format parameters
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Translated and formatted string
+
+
+
+</dd>
+
+
+
+
+<dt><a name="translate"></a><strong>translate</strong>&nbsp;(key)</dt>
+<dd>
+
+Return the translated value for a specific translation key. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Default translation text
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Translated string
+
+
+
+</dd>
+
+
+
+
+<dt><a name="translatef"></a><strong>translatef</strong>&nbsp;(key, ...)</dt>
+<dd>
+
+Return the translated value for a specific translation key and use it as sprintf pattern. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Default translation text
+       </li>
+       
+       <li>
+         ...: Format parameters
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Translated and formatted string
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.ip.cidr.html b/package/luci/documentation/api/modules/luci.ip.cidr.html
new file mode 100644 (file)
index 0000000..50633a7
--- /dev/null
@@ -0,0 +1,1511 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li><strong>luci.ip.cidr</strong></li>
+       
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.ip.cidr</code></h1>
+
+<p>
+ IP CIDR Object. 
+ Represents an IPv4 or IPv6 address range.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is4">cidr:is4</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an IPv4 address range 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is4rfc1918">cidr:is4rfc1918</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is within the private RFC1918 address space 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is4linklocal">cidr:is4linklocal</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is6">cidr:is6</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an IPv6 address range 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is6linklocal">cidr:is6linklocal</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an IPv6 link local address 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.is6mapped4">cidr:is6mapped4</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an IPv6 mapped IPv4 address 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.ismac">cidr:ismac</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is an ethernet MAC address range 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.ismaclocal">cidr:ismaclocal</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is a locally administered (LAA) MAC address 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.ismacmcast">cidr:ismacmcast</a>&nbsp;()</td>
+       <td class="summary">
+Checks whether the CIDR instance is a multicast MAC address 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.lower">cidr:lower</a>&nbsp;(addr)</td>
+       <td class="summary">
+Checks whether this CIDR instance is lower than the given argument.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.higher">cidr:higher</a>&nbsp;(addr)</td>
+       <td class="summary">
+Checks whether this CIDR instance is higher than the given argument.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.equal">cidr:equal</a>&nbsp;(addr)</td>
+       <td class="summary">
+Checks whether this CIDR instance is equal to the given argument.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.prefix">cidr:prefix</a>&nbsp;(mask)</td>
+       <td class="summary">
+Get or set prefix size of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.network">cidr:network</a>&nbsp;(mask)</td>
+       <td class="summary">
+Derive network address of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.host">cidr:host</a>&nbsp;()</td>
+       <td class="summary">
+Derive host address of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.mask">cidr:mask</a>&nbsp;(mask)</td>
+       <td class="summary">
+Derive netmask of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.broadcast">cidr:broadcast</a>&nbsp;(mask)</td>
+       <td class="summary">
+Derive broadcast address of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.mapped4">cidr:mapped4</a>&nbsp;()</td>
+       <td class="summary">
+Derive mapped IPv4 address of CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.tomac">cidr:tomac</a>&nbsp;()</td>
+       <td class="summary">
+Derive MAC address of IPv6 link local CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.tolinklocal">cidr:tolinklocal</a>&nbsp;()</td>
+       <td class="summary">
+Derive IPv6 link local address from MAC address CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.contains">cidr:contains</a>&nbsp;(addr)</td>
+       <td class="summary">
+Test whether CIDR contains given range.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.add">cidr:add</a>&nbsp;(amount, inplace)</td>
+       <td class="summary">
+Add given amount to CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.sub">cidr:sub</a>&nbsp;(amount, inplace)</td>
+       <td class="summary">
+Subtract given amount from CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.minhost">cidr:minhost</a>&nbsp;()</td>
+       <td class="summary">
+Calculate the lowest possible host address within this CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.maxhost">cidr:maxhost</a>&nbsp;()</td>
+       <td class="summary">
+Calculate the highest possible host address within this CIDR instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cidr.string">cidr:string</a>&nbsp;()</td>
+       <td class="summary">
+Convert CIDR instance into string representation.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="cidr.is4"></a><strong>cidr:is4</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an IPv4 address range 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the CIDR is an IPv4 range, else <code>false</code>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.is6">
+               cidr:is6
+       </a>
+       
+       <li><a href="#cidr.ismac">
+               cidr:ismac
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.is4rfc1918"></a><strong>cidr:is4rfc1918</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is within the private RFC1918 address space 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.45.2/24") 
+if addr:is4rfc1918() then 
+       print("Is a private address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the entire range of this CIDR lies within one of 
+       the ranges <code>10.0.0.0-10.255.255.255</code>, 
+       <code>172.16.0.0-172.31.0.0</code> or 
+       <code>192.168.0.0-192.168.255.255</code>, else <code>false</code>.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.is4linklocal"></a><strong>cidr:is4linklocal</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("169.254.34.125") 
+if addr:is4linklocal() then 
+       print("Is a zeroconf address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the entire range of this CIDR lies within the range 
+       the range <code>169.254.0.0-169.254.255.255</code>, else <code>false</code>.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.is6"></a><strong>cidr:is6</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an IPv6 address range 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the CIDR is an IPv6 range, else <code>false</code>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.is4">
+               cidr:is4
+       </a>
+       
+       <li><a href="#cidr.ismac">
+               cidr:ismac
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.is6linklocal"></a><strong>cidr:is6linklocal</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an IPv6 link local address 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("fe92:53a:3216:af01:221:63ff:fe75:aa17/64") 
+if addr:is6linklocal() then 
+       print("Is a linklocal address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the entire range of this CIDR lies within the range 
+       the <code>fe80::/10</code> range, else <code>false</code>.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.is6mapped4"></a><strong>cidr:is6mapped4</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an IPv6 mapped IPv4 address 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("::ffff:192.168.1.1") 
+if addr:is6mapped4() then 
+       print("Is a mapped IPv4 address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the address is an IPv6 mapped IPv4 address in the 
+       form <code>::ffff:1.2.3.4</code>.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.ismac"></a><strong>cidr:ismac</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is an ethernet MAC address range 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the CIDR is a MAC address range, else <code>false</code>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.is4">
+               cidr:is4
+       </a>
+       
+       <li><a href="#cidr.is6">
+               cidr:is6
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.ismaclocal"></a><strong>cidr:ismaclocal</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is a locally administered (LAA) MAC address 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local mac = luci.ip.new("02:C0:FF:EE:00:01") 
+if mac:ismaclocal() then 
+  print("Is an LAA MAC address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the MAC address sets the locally administered bit.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.ismacmcast"></a><strong>cidr:ismacmcast</strong>&nbsp;()</dt>
+<dd>
+
+Checks whether the CIDR instance is a multicast MAC address 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local mac = luci.ip.new("01:00:5E:7F:00:10") 
+if addr:ismacmcast() then 
+  print("Is a multicast MAC address") 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if the MAC address sets the multicast bit.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.lower"></a><strong>cidr:lower</strong>&nbsp;(addr)</dt>
+<dd>
+
+Checks whether this CIDR instance is lower than the given argument. 
+The comparisation follows these rules: 
+<ul><li>An IPv4 address is always lower than an IPv6 address and IPv6 addresses 
+are considered lower than MAC addresses</li> 
+<li>Prefix sizes are ignored</li></ul> 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         addr: A <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code> to compare against.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.1.1") 
+print(addr:lower(addr)) -- false 
+print(addr:lower("10.10.10.10/24")) -- false 
+print(addr:lower(luci.ip.new("::1"))) -- true 
+print(addr:lower(luci.ip.new("192.168.200.1"))) -- true 
+print(addr:lower(luci.ip.new("00:14:22:01:23:45"))) -- true</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if this CIDR is lower than the given address, 
+       else <code>false</code>.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.higher">
+               cidr:higher
+       </a>
+       
+       <li><a href="#cidr.equal">
+               cidr:equal
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.higher"></a><strong>cidr:higher</strong>&nbsp;(addr)</dt>
+<dd>
+
+Checks whether this CIDR instance is higher than the given argument. 
+The comparisation follows these rules: 
+<ul><li>An IPv4 address is always lower than an IPv6 address and IPv6 addresses 
+are considered lower than MAC addresses</li> 
+<li>Prefix sizes are ignored</li></ul> 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         addr: A <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code> to compare against.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.1.1") 
+print(addr:higher(addr)) -- false 
+print(addr:higher("10.10.10.10/24")) -- true 
+print(addr:higher(luci.ip.new("::1"))) -- false 
+print(addr:higher(luci.ip.new("192.168.200.1"))) -- false 
+print(addr:higher(luci.ip.new("00:14:22:01:23:45"))) -- false</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if this CIDR is higher than the given address, 
+       else <code>false</code>.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.lower">
+               cidr:lower
+       </a>
+       
+       <li><a href="#cidr.equal">
+               cidr:equal
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.equal"></a><strong>cidr:equal</strong>&nbsp;(addr)</dt>
+<dd>
+
+Checks whether this CIDR instance is equal to the given argument. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         addr: A <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code> to compare against.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.1.1") 
+print(addr:equal(addr)) -- true 
+print(addr:equal("192.168.1.1")) -- true 
+print(addr:equal(luci.ip.new("::1"))) -- false 
+local addr6 = luci.ip.new("::1") 
+print(addr6:equal("0:0:0:0:0:0:0:1/64")) -- true 
+print(addr6:equal(luci.ip.new("fe80::221:63ff:fe75:aa17"))) -- false 
+local mac = luci.ip.new("00:14:22:01:23:45") 
+print(mac:equal("0:14:22:1:23:45")) -- true 
+print(mac:equal(luci.ip.new("01:23:45:67:89:AB")) -- false</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if this CIDR is equal to the given address, 
+       else <code>false</code>.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#cidr.lower">
+               cidr:lower
+       </a>
+       
+       <li><a href="#cidr.higher">
+               cidr:higher
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cidr.prefix"></a><strong>cidr:prefix</strong>&nbsp;(mask)</dt>
+<dd>
+
+Get or set prefix size of CIDR instance. 
+If the optional mask parameter is given, the prefix size of this CIDR is altered 
+else the current prefix size is returned. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mask: Either a number containing the number of bits (<code>0..32</code> 
+       for IPv4, <code>0..128</code> for IPv6 or <code>0..48</code> for MAC addresses) or a string 
+  containing a valid netmask (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("192.168.1.1/255.255.255.0") 
+print(range:prefix()) -- 24 
+range:prefix(16) 
+print(range:prefix()) -- 16 
+range:prefix("255.255.255.255") 
+print(range:prefix()) -- 32</pre>
+
+
+
+<h3>Return value:</h3>
+Bit count of the current prefix size
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.network"></a><strong>cidr:network</strong>&nbsp;(mask)</dt>
+<dd>
+
+Derive network address of CIDR instance. 
+Returns a new CIDR instance representing the network address of this instance 
+with all host parts masked out. The used prefix size can be overridden by the 
+optional mask parameter. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mask: Either a number containing the number of bits (<code>0..32</code> 
+       for IPv4, <code>0..128</code> for IPv6 or <code>0..48</code> for MAC addresses) or a string 
+  containing a valid netmask (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("192.168.62.243/255.255.0.0") 
+print(range:network())                -- "192.168.0.0" 
+print(range:network(24))              -- "192.168.62.0" 
+print(range:network("255.255.255.0")) -- "192.168.62.0" 
+local range6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
+print(range6:network())               -- "fd9b:62b3:9cc5::"</pre>
+
+
+
+<h3>Return value:</h3>
+CIDR instance representing the network address
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.host"></a><strong>cidr:host</strong>&nbsp;()</dt>
+<dd>
+
+Derive host address of CIDR instance. 
+This function essentially constructs a copy of this CIDR with the prefix size 
+set to <code>32</code> for IPv4, <code>128</code> for IPv6 or <code>48</code> for MAC addresses. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("172.19.37.45/16") 
+print(range)        -- "172.19.37.45/16" 
+print(range:host()) -- "172.19.37.45"</pre>
+
+
+
+<h3>Return value:</h3>
+CIDR instance representing the host address
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.mask"></a><strong>cidr:mask</strong>&nbsp;(mask)</dt>
+<dd>
+
+Derive netmask of CIDR instance. 
+Constructs a CIDR instance representing the netmask of this instance. The used 
+prefix size can be overridden by the optional mask parameter. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mask: Either a number containing the number of bits (<code>0..32</code> 
+       for IPv4, <code>0..128</code> for IPv6 or <code>0..48</code> for MAC addresses) or a string 
+  containing a valid netmask (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("172.19.37.45/16") 
+print(range:mask())            -- "255.255.0.0" 
+print(range:mask(24))          -- "255.255.255.0" 
+print(range:mask("255.0.0.0")) -- "255.0.0.0"</pre>
+
+
+
+<h3>Return value:</h3>
+CIDR instance representing the netmask
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.broadcast"></a><strong>cidr:broadcast</strong>&nbsp;(mask)</dt>
+<dd>
+
+Derive broadcast address of CIDR instance. 
+Constructs a CIDR instance representing the broadcast address of this instance. 
+The used prefix size can be overridden by the optional mask parameter. 
+This function has no effect on IPv6 or MAC address instances, it will return 
+nothing in this case. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mask: Either a number containing the number of bits (<code>0..32</code> for IPv4) or 
+  a string containing a valid netmask (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("172.19.37.45/16") 
+print(range:broadcast())            -- "172.19.255.255" 
+print(range:broadcast(24))          -- "172.19.37.255" 
+print(range:broadcast("255.0.0.0")) -- "172.255.255.255"</pre>
+
+
+
+<h3>Return value:</h3>
+Return a new CIDR instance representing the broadcast address if this 
+       instance is an IPv4 range, else return nothing.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.mapped4"></a><strong>cidr:mapped4</strong>&nbsp;()</dt>
+<dd>
+
+Derive mapped IPv4 address of CIDR instance. 
+Constructs a CIDR instance representing the IPv4 address of the IPv6 mapped 
+IPv4 address in this instance. 
+This function has no effect on IPv4 instances, MAC address instances or IPv6 
+instances which are not a mapped address, it will return nothing in this case. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("::ffff:172.16.19.1") 
+print(addr:mapped4()) -- "172.16.19.1"</pre>
+
+
+
+<h3>Return value:</h3>
+Return a new CIDR instance representing the IPv4 address if this 
+       instance is an IPv6 mapped IPv4 address, else return nothing.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.tomac"></a><strong>cidr:tomac</strong>&nbsp;()</dt>
+<dd>
+
+Derive MAC address of IPv6 link local CIDR instance. 
+Constructs a CIDR instance representing the MAC address contained in the IPv6 
+link local address of this instance. 
+This function has no effect on IPv4 instances, MAC address instances or IPv6 
+instances which are not a link local address, it will return nothing in this 
+case. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("fe80::6666:b3ff:fe47:e1b9") 
+print(addr:tomac()) -- "64:66:B3:47:E1:B9"</pre>
+
+
+
+<h3>Return value:</h3>
+Return a new CIDR instance representing the MAC address if this 
+  instance is an IPv6 link local address, else return nothing.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.tolinklocal"></a><strong>cidr:tolinklocal</strong>&nbsp;()</dt>
+<dd>
+
+Derive IPv6 link local address from MAC address CIDR instance. 
+Constructs a CIDR instance representing the IPv6 link local address of the 
+MAC address represented by this instance. 
+This function has no effect on IPv4 instances or IPv6 instances, it will return 
+nothing in this case. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local mac = luci.ip.new("64:66:B3:47:E1:B9") 
+print(mac:tolinklocal()) -- "fe80::6666:b3ff:fe47:e1b9"</pre>
+
+
+
+<h3>Return value:</h3>
+Return a new CIDR instance representing the IPv6 link local address.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.contains"></a><strong>cidr:contains</strong>&nbsp;(addr)</dt>
+<dd>
+
+Test whether CIDR contains given range. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         addr: A <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code> to test.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local range = luci.ip.new("10.24.0.0/255.255.0.0") 
+print(range:contains("10.24.5.1"))  -- true 
+print(range:contains("::1"))        -- false 
+print(range:contains("10.0.0.0/8")) -- false 
+local range6 = luci.ip.new("fe80::/10") 
+print(range6:contains("fe80::221:63f:fe75:aa17/64"))         -- true 
+print(range6:contains("fd9b:6b3:c5:0:221:63f:fe75:aa17/64")) -- false 
+local intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24") 
+print(intel_macs:contains("C0:B6:F9:A3:C:11"))  -- true 
+print(intel_macs:contains("64:66:B3:47:E1:B9")) -- false</pre>
+
+
+
+<h3>Return value:</h3>
+<code>true</code> if this instance fully contains the given address else 
+       <code>false</code>.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.add"></a><strong>cidr:add</strong>&nbsp;(amount, inplace)</dt>
+<dd>
+
+Add given amount to CIDR instance. If the result would overflow the maximum 
+address space, the result is set to the highest possible address. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         amount: A numeric value between 0 and 0xFFFFFFFF, a 
+       <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code>.
+       </li>
+       
+       <li>
+         inplace: If <code>true</code>, modify this instance instead of returning 
+       a new derived CIDR instance.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.1.1/24") 
+print(addr:add(250))           -- "192.168.1.251/24" 
+print(addr:add("0.0.99.0"))    -- "192.168.100.1/24" 
+addr:add(256, true)            -- true 
+print(addr)                    -- "192.168.2.1/24 
+addr:add("255.0.0.0", true)    -- false (overflow) 
+print(addr)                    -- "255.255.255.255/24 
+local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") 
+print(addr6:add(256))          -- "fe80::221:63f:fe75:ab17/64" 
+print(addr6:add("::ffff:0"))   -- "fe80::221:640:fe74:aa17/64" 
+addr6:add(256, true)           -- true 
+print(addr6)                   -- "fe80::221:63f:fe75:ab17/64 
+addr6:add("ffff::", true)      -- false (overflow) 
+print(addr6)                   -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64" 
+local mac = luci.ip.new("00:14:22:01:23:45") 
+print(mac:add(256))            -- "00:14:22:01:24:45" 
+print(mac:add("0:0:0:0:FF:0")  -- "00:14:22:02:22:45" 
+mac:add(256, true)             -- true 
+print(mac)                     -- "00:14:22:01:24:45" 
+mac:add("FF:FF:0:0:0:0", true) -- false (overflow) 
+print(mac)                     -- "FF:FF:FF:FF:FF:FF"</pre>
+
+
+
+<h3>Return value:</h3>
+<ul> 
+       <li>When adding inplace: Return <code>true</code> if the addition succeded 
+           or <code>false</code> when the addition overflowed.</li> 
+       <li>When deriving new CIDR: Return new instance representing the value of 
+        this instance plus the added amount or the highest possible address if 
+           the addition overflowed the available address space.</li></ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.sub"></a><strong>cidr:sub</strong>&nbsp;(amount, inplace)</dt>
+<dd>
+
+Subtract given amount from CIDR instance. If the result would under, the lowest 
+possible address is returned. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         amount: A numeric value between 0 and 0xFFFFFFFF, a 
+       <code>luci.ip.cidr</code> instance or a string convertable by 
+       <code>luci.ip.new()</code>.
+       </li>
+       
+       <li>
+         inplace: If <code>true</code>, modify this instance instead of returning 
+       a new derived CIDR instance.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.1.1/24") 
+print(addr:sub(256))         -- "192.168.0.1/24" 
+print(addr:sub("0.168.0.0")) -- "192.0.1.1/24" 
+addr:sub(256, true)          -- true 
+print(addr)                  -- "192.168.0.1/24 
+addr:sub("255.0.0.0", true)  -- false (underflow) 
+print(addr)                  -- "0.0.0.0/24 
+local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") 
+print(addr6:sub(256))        -- "fe80::221:63f:fe75:a917/64" 
+print(addr6:sub("::ffff:0")) -- "fe80::221:63e:fe76:aa17/64" 
+addr:sub(256, true)          -- true 
+print(addr)                  -- "fe80::221:63f:fe75:a917/64" 
+addr:sub("ffff::", true)     -- false (underflow) 
+print(addr)                  -- "::/64" 
+local mac = luci.ip.new("00:14:22:01:23:45") 
+print(mac:sub(256))            -- "00:14:22:01:22:45" 
+print(mac:sub("0:0:0:0:FF:0")  -- "00:14:22:00:24:45" 
+mac:sub(256, true)             -- true 
+print(mac)                     -- "00:14:22:01:22:45" 
+mac:sub("FF:FF:0:0:0:0", true) -- false (overflow) 
+print(mac)                     -- "00:00:00:00:00:00"</pre>
+
+
+
+<h3>Return value:</h3>
+<ul> 
+       <li>When subtracting inplace: Return <code>true</code> if the subtraction 
+           succeeded or <code>false</code> when the subtraction underflowed.</li> 
+       <li>When deriving new CIDR: Return new instance representing the value of 
+        this instance minus the subtracted amount or the lowest address if 
+           the subtraction underflowed.</li></ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.minhost"></a><strong>cidr:minhost</strong>&nbsp;()</dt>
+<dd>
+
+Calculate the lowest possible host address within this CIDR instance. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.123.56/24") 
+print(addr:minhost())  -- "192.168.123.1" 
+local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
+print(addr6:minhost()) -- "fd9b:62b3:9cc5::1" 
+local mac = luci.ip.new("00:14:22:01:22:45/32") 
+print(mac:minhost())   -- "00:14:22:01:00:01"</pre>
+
+
+
+<h3>Return value:</h3>
+Returns a new CIDR instance representing the lowest host address 
+       within this range.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.maxhost"></a><strong>cidr:maxhost</strong>&nbsp;()</dt>
+<dd>
+
+Calculate the highest possible host address within this CIDR instance. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>local addr = luci.ip.new("192.168.123.56/24") 
+print(addr:maxhost())  -- "192.168.123.254" (.255 is broadcast) 
+local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
+print(addr6:maxhost()) -- "fd9b:62b3:9cc5:0:ffff:ffff:ffff:ffff" 
+local mac = luci.ip.new("00:14:22:01:22:45/32") 
+print(mac:maxhost())   -- "00:14:22:01:FF:FF"</pre>
+
+
+
+<h3>Return value:</h3>
+Returns a new CIDR instance representing the highest host address 
+       within this range.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cidr.string"></a><strong>cidr:string</strong>&nbsp;()</dt>
+<dd>
+
+Convert CIDR instance into string representation. 
+If the prefix size of instance is less than 32 for IPv4, 128 for IPv6 or 48 for 
+MACs, the address is returned in the form "address/prefix" otherwise just 
+"address". 
+It is usually not required to call this function directly as CIDR objects 
+define it as __tostring function in the associated metatable. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Returns a string representing the range or address of this CIDR instance
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.ip.html b/package/luci/documentation/api/modules/luci.ip.html
new file mode 100644 (file)
index 0000000..fc13e31
--- /dev/null
@@ -0,0 +1,1212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li><strong>luci.ip</strong></li>
+       
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.ip</code></h1>
+
+<p>
+ LuCI IP calculation and netlink access library.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#new">new</a>&nbsp;(address, netmask)</td>
+       <td class="summary">
+Construct a new luci.ip.cidr instance and autodetect the address family.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IPv4">IPv4</a>&nbsp;(address, netmask)</td>
+       <td class="summary">
+Construct a new IPv4 luci.ip.cidr instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IPv6">IPv6</a>&nbsp;(address, netmask)</td>
+       <td class="summary">
+Construct a new IPv6 luci.ip.cidr instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#MAC">MAC</a>&nbsp;(address, netmask)</td>
+       <td class="summary">
+Construct a new MAC luci.ip.cidr instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#checkip4">checkip4</a>&nbsp;(address)</td>
+       <td class="summary">
+Verify an IPv4 address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#checkip6">checkip6</a>&nbsp;(address)</td>
+       <td class="summary">
+Verify an IPv6 address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#checkmac">checkmac</a>&nbsp;(address)</td>
+       <td class="summary">
+Verify an ethernet MAC address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#route">route</a>&nbsp;(address)</td>
+       <td class="summary">
+Determine the route leading to the given destination.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#routes">routes</a>&nbsp;(filter, callback)</td>
+       <td class="summary">
+Fetch all routes, optionally matching the given criteria.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#neighbors">neighbors</a>&nbsp;(filter, callback)</td>
+       <td class="summary">
+Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#link">link</a>&nbsp;(device)</td>
+       <td class="summary">
+Fetch basic device information </td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="new"></a><strong>new</strong>&nbsp;(address, netmask)</dt>
+<dd>
+
+Construct a new luci.ip.cidr instance and autodetect the address family. 
+Throws an error if the given strings do not represent a valid address or 
+if the given optional netmask is of a different family.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid IPv4 or IPv6 address, optionally 
+with prefix size (CIDR notation) or netmask separated by slash.
+       </li>
+       
+       <li>
+         netmask: String containing a valid IPv4 or IPv6 netmask or number 
+containing a prefix size in bits (<code>0..32</code> for IPv4, 
+<code>0..128</code> for IPv6). Overrides mask embedded in the first argument 
+if specified. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>addr = luci.ip.new("10.24.0.1/24") 
+addr = luci.ip.new("10.24.0.1/255.255.255.0") 
+addr = luci.ip.new("10.24.0.1", "255.255.255.0")        -- separate netmask 
+addr = luci.ip.new("10.24.0.1/24", 16)                  -- override netmask 
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64") 
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") 
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") 
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask</pre>
+
+
+
+<h3>Return value:</h3>
+A <code>luci.ip.cidr</code> object representing the given 
+address/mask range.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#IPv4">
+               IPv4
+       </a>
+       
+       <li><a href="#IPv6">
+               IPv6
+       </a>
+       
+       <li><a href="#MAC">
+               MAC
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="IPv4"></a><strong>IPv4</strong>&nbsp;(address, netmask)</dt>
+<dd>
+
+Construct a new IPv4 luci.ip.cidr instance. 
+Throws an error if the given string does not represent a valid IPv4 address or 
+if the given optional netmask is of a different family.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid IPv4, optionally with prefix size 
+(CIDR notation) or netmask separated by slash.
+       </li>
+       
+       <li>
+         netmask: String containing a valid IPv4 netmask or number 
+containing a prefix size between <code>0</code> and <code>32</code> bit. 
+Overrides mask embedded in the first argument if specified. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>addr = luci.ip.IPv4("10.24.0.1/24") 
+addr = luci.ip.IPv4("10.24.0.1/255.255.255.0") 
+addr = luci.ip.IPv4("10.24.0.1", "255.255.255.0")        -- separate netmask 
+addr = luci.ip.IPv4("10.24.0.1/24", 16)                  -- override netmask</pre>
+
+
+
+<h3>Return value:</h3>
+A <code>luci.ip.cidr</code> object representing the given IPv4 range.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#IPv6">
+               IPv6
+       </a>
+       
+       <li><a href="#MAC">
+               MAC
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="IPv6"></a><strong>IPv6</strong>&nbsp;(address, netmask)</dt>
+<dd>
+
+Construct a new IPv6 luci.ip.cidr instance. 
+Throws an error if the given string does not represent a valid IPv6 address or 
+if the given optional netmask is of a different family.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid IPv6, optionally with prefix size 
+(CIDR notation) or netmask separated by slash.
+       </li>
+       
+       <li>
+         netmask: String containing a valid IPv4 netmask or number 
+containing a prefix size between <code>0</code> and <code>128</code> bit. 
+Overrides mask embedded in the first argument if specified. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64") 
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") 
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") 
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask</pre>
+
+
+
+<h3>Return value:</h3>
+A <code>luci.ip.cidr</code> object representing the given IPv6 range.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#IPv4">
+               IPv4
+       </a>
+       
+       <li><a href="#MAC">
+               MAC
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="MAC"></a><strong>MAC</strong>&nbsp;(address, netmask)</dt>
+<dd>
+
+Construct a new MAC luci.ip.cidr instance. 
+Throws an error if the given string does not represent a valid ethernet MAC 
+address or if the given optional mask is of a different family.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid ethernet MAC address, optionally with 
+prefix size (CIDR notation) or mask separated by slash.
+       </li>
+       
+       <li>
+         netmask: String containing a valid MAC address mask or number 
+containing a prefix size between <code>0</code> and <code>48</code> bit. 
+Overrides mask embedded in the first argument if specified. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24") 
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/FF:FF:FF:0:0:0") 
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00", "FF:FF:FF:0:0:0") 
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24", 48) -- override mask</pre>
+
+
+
+<h3>Return value:</h3>
+A <code>luci.ip.cidr</code> object representing the given MAC address range.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#IPv4">
+               IPv4
+       </a>
+       
+       <li><a href="#IPv6">
+               IPv6
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="checkip4"></a><strong>checkip4</strong>&nbsp;(address)</dt>
+<dd>
+
+Verify an IPv4 address. 
+Checks whether given argument is a preexisting luci.ip.cidr IPv4 address 
+instance or a string literal convertible to an IPv4 address and returns a 
+plain Lua string containing the canonical representation of the address. 
+If the argument is not a valid address, returns nothing. This function is 
+intended to aid in safely verifying address literals without having to deal 
+with exceptions.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid IPv4 address or existing 
+luci.ip.cidr IPv4 instance.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>ipv4 = luci.ip.checkip4(luci.ip.new("127.0.0.1"))  -- "127.0.0.1" 
+ipv4 = luci.ip.checkip4("127.0.0.1")               -- "127.0.0.1" 
+ipv4 = luci.ip.checkip4("nonesense")               -- nothing 
+ipv4 = luci.ip.checkip4(123)                       -- nothing 
+ipv4 = luci.ip.checkip4(nil)                       -- nothing 
+ipv4 = luci.ip.checkip4()                          -- nothing</pre>
+
+
+
+<h3>Return value:</h3>
+A string representing the given IPv4 address.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#checkip6">
+               checkip6
+       </a>
+       
+       <li><a href="#checkmac">
+               checkmac
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="checkip6"></a><strong>checkip6</strong>&nbsp;(address)</dt>
+<dd>
+
+Verify an IPv6 address. 
+Checks whether given argument is a preexisting luci.ip.cidr IPv6 address 
+instance or a string literal convertible to an IPv6 address and returns a 
+plain Lua string containing the canonical representation of the address. 
+If the argument is not a valid address, returns nothing. This function is 
+intended to aid in safely verifying address literals without having to deal 
+with exceptions.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid IPv6 address or existing 
+luci.ip.cidr IPv6 instance.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>ipv6 = luci.ip.checkip6(luci.ip.new("0:0:0:0:0:0:0:1"))  -- "::1" 
+ipv6 = luci.ip.checkip6("0:0:0:0:0:0:0:1")               -- "::1" 
+ipv6 = luci.ip.checkip6("nonesense")                     -- nothing 
+ipv6 = luci.ip.checkip6(123)                             -- nothing 
+ipv6 = luci.ip.checkip6(nil)                             -- nothing 
+ipv6 = luci.ip.checkip6()                                -- nothing</pre>
+
+
+
+<h3>Return value:</h3>
+A string representing the given IPv6 address.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#checkip4">
+               checkip4
+       </a>
+       
+       <li><a href="#checkmac">
+               checkmac
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="checkmac"></a><strong>checkmac</strong>&nbsp;(address)</dt>
+<dd>
+
+Verify an ethernet MAC address. 
+Checks whether given argument is a preexisting luci.ip.cidr MAC address 
+instance or a string literal convertible to an ethernet MAC and returns a 
+plain Lua string containing the canonical representation of the address. 
+If the argument is not a valid address, returns nothing. This function is 
+intended to aid in safely verifying address literals without having to deal 
+with exceptions.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: String containing a valid MAC address or existing luci.ip.cidr 
+MAC address instance.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>mac = luci.ip.checkmac(luci.ip.new("00-11-22-cc-dd-ee"))  -- "00:11:22:CC:DD:EE" 
+mac = luci.ip.checkmac("00:11:22:cc:dd:ee")               -- "00:11:22:CC:DD:EE" 
+mac = luci.ip.checkmac("nonesense")                       -- nothing 
+mac = luci.ip.checkmac(123)                               -- nothing 
+mac = luci.ip.checkmac(nil)                               -- nothing 
+mac = luci.ip.checkmac()                                  -- nothing</pre>
+
+
+
+<h3>Return value:</h3>
+A string representing the given MAC address.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#checkip4">
+               checkip4
+       </a>
+       
+       <li><a href="#checkip6">
+               checkip6
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="route"></a><strong>route</strong>&nbsp;(address)</dt>
+<dd>
+
+Determine the route leading to the given destination.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         address: A <code>luci.ip.cidr</code> instance or a string containing 
+a valid IPv4 or IPv6 range as specified by <code>luci.ip.new()</code>.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<ul> 
+<li>Find default gateway by getting route to Google's public NS server 
+<pre>rt = luci.ip.route("8.8.8.8") 
+if rt ~= nil then 
+       print("gateway is", rt.gw) 
+end</pre></li> 
+<li>Determine IPv6 upstream interface <pre>rt = luci.ip.route("2001::/7") 
+if rt ~= nil then 
+       print("ipv6 upstream device is", rt.dev) 
+end</pre></li> 
+</ul>
+
+
+
+<h3>Return value:</h3>
+<p>Table containing the fields described below.</p> 
+<table id="routetable"> 
+<tr><th>Field</th><th>Description</th></tr> 
+<tr><td><code>type</code><td> 
+  <p>Route type with one of the following numeric values:</p> 
+  <table> 
+  <tr> 
+       <td><code>1</code></td> 
+       <td><code>RTN_UNICAST</code> - Gateway or direct route</td> 
+  </tr> 
+  <tr> 
+       <td><code>2</code></td> 
+       <td><code>RTN_LOCAL</code> - Accept locally</td> 
+  </tr> 
+  <tr> 
+       <td><code>3</code></td> 
+       <td><code>RTN_BROADCAST</code> - 
+           Accept locally as broadcast send as broadcast</td> 
+  </tr> 
+  <tr> 
+       <td><code>4</code></td> 
+       <td><code>RTN_ANYCAST</code> - 
+        Accept locally as broadcast but send as unicast</td> 
+  </tr> 
+  <tr> 
+       <td><code>5</code></td> 
+       <td><code>RTN_MULTICAST</code> - Multicast route</td> 
+  </tr> 
+  </table> 
+</td></tr> 
+<tr> 
+  <td><code>family</code></td> 
+  <td>Number containing the route family, <code>4</code> for IPv4 or 
+      <code>6</code> for IPv6</td> 
+</tr> 
+<tr> 
+  <td><code>dest</code></td> 
+  <td>Destination <code>luci.ip.cidr</code> instance</td> 
+</tr> 
+<tr> 
+  <td><code>gw</code></td> 
+  <td>Gateway <code>luci.ip.cidr</code> instance (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>from</code></td> 
+  <td>Source address <code>luci.ip.cidr</code> instance (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>src</code></td> 
+  <td>Preferred source <code>luci.ip.cidr</code> instance (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>dev</code></td> 
+  <td>String containing the name of the outgoing interface</td> 
+</tr> 
+<tr> 
+  <td><code>iif</code></td> 
+  <td>String containing the name of the incoming interface (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>table</code></td> 
+  <td>Number of the associated routing table (<code>0..65535</code>)</td> 
+</tr> 
+<tr> 
+  <td><code>proto</code></td> 
+  <td>Number of the associated routing protocol</td> 
+</tr> 
+<tr> 
+  <td><code>scope</code></td> 
+  <td>Number describing the scope of the route, most commonly 
+      <code>0</code> for global or <code>253</code> for on-link</td> 
+</tr> 
+<tr> 
+  <td><code>metric</code></td> 
+  <td>Number describing the route metric (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>expires</code></td> 
+  <td>Number of seconds the prefix is valid (IPv6 only, optional)</td> 
+</tr> 
+<tr> 
+  <td><code>error</code></td> 
+  <td>Route destination error code (optional)</td> 
+</tr> 
+</table>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#routes">
+               routes
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="routes"></a><strong>routes</strong>&nbsp;(filter, callback)</dt>
+<dd>
+
+Fetch all routes, optionally matching the given criteria.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         filter: <p>Table containing one or more of the possible filter 
+critera described below (optional)</p><table> 
+<tr><th>Field</th><th>Description</th></tr> 
+<tr><td><code>family</code></td><td> 
+ Number describing the address family to return - <code>4</code> selects 
+ IPv4 routes, <code>6</code> IPv6 ones. Any other value selects both. 
+</td></tr> 
+<tr><td><code>iif</code></td><td> 
+ String containing the incoming route interface to match. 
+</td></tr> 
+<tr><td><code>oif</code></td><td> 
+ String containing the outgoing route interface to match. 
+</td></tr> 
+<tr><td><code>type</code></td><td> 
+ Numeric type to match, e.g. <code>1</code> for unicast. 
+</td></tr> 
+<tr><td><code>scope</code></td><td> 
+ Numeric scope to match, e.g. <code>253</code> for onlink. 
+</td></tr> 
+<tr><td><code>proto</code></td><td> 
+ Numeric protocol to match, e.g. <code>2</code> for boot. 
+</td></tr> 
+<tr><td><code>table</code></td><td> 
+ Numeric routing table to match (<code>0..65535</code>). 
+</td></tr> 
+<tr><td><code>gw</code></td><td> 
+ String containing the gateway address to match. Can be in any notation 
+ specified by <code>luci.ip.new()</code>. Prefix matching is performed when 
+ comparing the routes, e.g. "192.168.1.0/24" would select routes with gateway 
+ addresses <code>192.168.1.1 .. 192.168.1.255</code>. 
+</td></tr> 
+<tr><td><code>dest</code></td><td> 
+ String containing the destination to match. Prefix matching is performed. 
+</td></tr> 
+<tr><td><code>from</code></td><td> 
+ String containing the source address to match. Prefix matching is performed. 
+</td></tr> 
+<tr><td><code>src</code></td><td> 
+ String containing the preferred source address to match. 
+ Prefix matching is performed. 
+</td></tr> 
+<tr><td><code>dest_exact</code></td><td> 
+ String containing the destination to match. Exact matching is performed, 
+ e.g. <code>dest = "0.0.0.0/0"</code> would match <em>any</em> IPv4 route 
+ while <code>dest_exact = "0.0.0.0/0"</code> will <em>only</em> match the 
+ default route. 
+</td></tr> 
+<tr><td><code>from_exact</code></td><td> 
+ String containing the source address to match. Exact matching is performed. 
+</td></tr> 
+</table>
+       </li>
+       
+       <li>
+         callback: <p>Callback function to invoke for each found route 
+instead of returning one table of route objects (optional)</p>
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<ul> 
+<li>Find all IPv4 default routes: 
+<pre>luci.ip.routes({ dest_exact = "0.0.0.0/0" }, function(rt) 
+       print(rt.type, rt.gw, rt.dev) 
+end)</pre></li> 
+<li>Find all global IPv6 prefixes on the current system: 
+<pre>luci.ip.routes({ from = "2001::/7" }, function(rt) 
+       print(rt.from) 
+end)</pre></li> 
+<li>Fetch all IPv4 routes: 
+<pre>routes = luci.ip.routes({ family = 4 }) 
+for _, rt in ipairs(routes) do 
+       print(rt.dest, rt.gw, rt.dev) 
+end</pre></li> 
+</ul>
+
+
+
+<h3>Return value:</h3>
+If no callback function is provided, a table of routes 
+<a href="#routetable">as specified by <code>luci.ip.route()</code></a> 
+is returned. If a callback function is given, it is invoked for each route 
+and nothing is returned.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#route">
+               route
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="neighbors"></a><strong>neighbors</strong>&nbsp;(filter, callback)</dt>
+<dd>
+
+Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         filter: <p>Table containing one or more of the possible filter 
+critera described below (optional)</p><table> 
+<tr><th>Field</th><th>Description</th></tr> 
+<tr><td><code>family</code></td><td> 
+ Number describing the address family to return - <code>4</code> selects 
+ IPv4 ARP, <code>6</code> select IPv6 neighbour entries. Any other value 
+ selects both. 
+</td></tr> 
+<tr><td><code>dev</code></td><td> 
+ String containing the associated interface to match. 
+</td></tr> 
+<tr><td><code>dest</code></td><td> 
+ String containing the associated address to match. Can be in any notation 
+ specified by <code>luci.ip.new()</code>. Prefix matching is performed when 
+ comparing the addresses, e.g. "192.168.1.0/24" would select ARP entries 
+ for <code>192.168.1.1 .. 192.168.1.255</code>. 
+</td></tr> 
+<tr><td><code>mac</code></td><td> 
+ String containing MAC address to match. 
+</td></tr> 
+</table>
+       </li>
+       
+       <li>
+         callback: <p>Callback function to invoke for each found neighbour 
+entry instead of returning one table of neighbour entries (optional)</p>
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<ul> 
+<li>Find all ARP neighbours in the LAN: 
+<pre>luci.ip.neighbors({ dest = "192.168.0.0/16" }, function(n) 
+       print(n.dest, n.mac) 
+end)</pre></li> 
+<li>Find all active IPv6 addresses of host with given MAC: 
+<pre>luci.ip.neighbors({ family = 6, mac = "00:21:63:75:aa:17" }, 
+       function(n) 
+               print(n.dest) 
+       end)</pre></li> 
+</ul>
+
+
+
+<h3>Return value:</h3>
+If no callback function is provided, a table of neighbour entries 
+is returned. If a callback function is given, it is invoked for each entry 
+and nothing is returned. 
+A neighbour entry is a table containing the following fields: 
+<table> 
+<tr><th>Field</th><th>Description</th></tr> 
+<tr> 
+  <td><code>family</code></td> 
+  <td>Number containing the neighbour entry family, <code>4</code> for IPv4 
+      ARP or <code>6</code> for IPv6 NDP</td> 
+</tr> 
+<tr> 
+  <td><code>dev</code></td> 
+  <td>String containing the associated device of the neighbour entry</td> 
+</tr> 
+<tr> 
+  <td><code>dest</code></td> 
+  <td>IP address <code>luci.ip.cidr</code> instance</td> 
+</tr> 
+<tr> 
+  <td><code>mac</code></td> 
+  <td>MAC address <code>luci.ip.cidr</code> instance</td> 
+</tr> 
+<tr> 
+  <td><code>router</code></td> 
+  <td>Boolean "true" if the neighbour entry is a router (IPv6, optional)</td> 
+</tr> 
+<tr> 
+  <td><code>proxy</code></td> 
+  <td>Boolean "true" if this is a proxy entry (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>incomplete</code></td> 
+  <td>Boolean "true" if the entry is in incomplete state (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>reachable</code></td> 
+  <td>Boolean "true" if the entry is in reachable state (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>stale</code></td> 
+  <td>Boolean "true" if the entry is stale (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>delay</code></td> 
+  <td>Boolean "true" if the entry is delayed (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>probe</code></td> 
+  <td>Boolean "true" if the entry is in probe state (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>failed</code></td> 
+  <td>Boolean "true" if the entry is in failed state (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>noarp</code></td> 
+  <td>Boolean "true" if the entry is not caused by NDP or 
+      ARP (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>permanent</code></td> 
+  <td>Boolean "true" if the entry was statically configured from 
+      userspace (optional)</td> 
+</tr> 
+</table>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="link"></a><strong>link</strong>&nbsp;(device)</dt>
+<dd>
+
+Fetch basic device information
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         device: String containing the network device to query
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<ul> 
+<li>Test whether device br-lan exists: 
+<pre>print(luci.ip.link("br-lan").name ~= nil) 
+</pre></li> 
+<li>Query MAC address of eth0: 
+<pre>print(luci.ip.link("eth0").mac) 
+</pre></li> 
+</ul>
+
+
+
+<h3>Return value:</h3>
+If the given interface is found, a table containing the fields 
+described below is returned, else an empty table. 
+<table> 
+<tr><th>Field</th><th>Description</th></tr> 
+<tr> 
+  <td><code>up</code></td> 
+  <td>Boolean indicating whether the device is in IFF_RUNNING state</td> 
+</tr> 
+<tr> 
+  <td><code>type</code></td> 
+  <td>Numeric value indicating the type of the device, e.g. <code>1</code> 
+      for ethernet.</td> 
+</tr> 
+<tr> 
+  <td><code>name</code></td> 
+  <td>String containing the name of the device</td> 
+</tr> 
+<tr> 
+  <td><code>master</code></td> 
+  <td>If queried device is a bridge port, string containing the name of 
+      parent bridge device (optional)</td> 
+</tr> 
+<tr> 
+  <td><code>mtu</code></td> 
+  <td>Number containing the current MTU of the device</td> 
+</tr> 
+<tr> 
+  <td><code>qlen</code></td> 
+  <td>Number containing the TX queue length of the device</td> 
+</tr> 
+<tr> 
+  <td><code>mac</code></td> 
+  <td>MAC address <code>luci.ip.cidr</code> instance representing the device ethernet 
+      address</td> 
+</tr> 
+</table>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.json.html b/package/luci/documentation/api/modules/luci.json.html
new file mode 100644 (file)
index 0000000..db2d1da
--- /dev/null
@@ -0,0 +1,594 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li><strong>luci.json</strong></li>
+       
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.json</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#ActiveDecoder">ActiveDecoder</a>&nbsp;(customnull)</td>
+       <td class="summary">
+Create a new Active JSON-Decoder.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#ActiveDecoder.get">ActiveDecoder:get</a>&nbsp;()</td>
+       <td class="summary">
+Fetches one JSON-object from given source 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Decoder">Decoder</a>&nbsp;(customnull)</td>
+       <td class="summary">
+Create a new JSON-Decoder.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Decoder.get">Decoder:get</a>&nbsp;()</td>
+       <td class="summary">
+Get the decoded data packets after the rawdata has been sent to the sink.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Decoder.sink">Decoder:sink</a>&nbsp;()</td>
+       <td class="summary">
+Create an LTN12 sink from the decoder object which accepts the JSON-Data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Encoder">Encoder</a>&nbsp;(data, buffersize, fastescape)</td>
+       <td class="summary">
+Create a new JSON-Encoder.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Encoder.source">Encoder:source</a>&nbsp;()</td>
+       <td class="summary">
+Create an LTN12 source providing the encoded JSON-Data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#decode">decode</a>&nbsp;(json)</td>
+       <td class="summary">
+Directly decode a JSON string 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#encode">encode</a>&nbsp;(obj)</td>
+       <td class="summary">
+Direcly encode a Lua object into a JSON string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#null">null</a>&nbsp;()</td>
+       <td class="summary">
+Null replacement function 
+ </td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="ActiveDecoder"></a><strong>ActiveDecoder</strong>&nbsp;(customnull)</dt>
+<dd>
+
+Create a new Active JSON-Decoder. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         customnull: Use luci.json.null instead of nil for decoding null
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Active JSON-Decoder
+
+
+
+</dd>
+
+
+
+
+<dt><a name="ActiveDecoder.get"></a><strong>ActiveDecoder:get</strong>&nbsp;()</dt>
+<dd>
+
+Fetches one JSON-object from given source 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Decoded object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Decoder"></a><strong>Decoder</strong>&nbsp;(customnull)</dt>
+<dd>
+
+Create a new JSON-Decoder. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         customnull: Use luci.json.null instead of nil for decoding null
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+JSON-Decoder
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Decoder.get"></a><strong>Decoder:get</strong>&nbsp;()</dt>
+<dd>
+
+Get the decoded data packets after the rawdata has been sent to the sink. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Decoded data
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Decoder.sink"></a><strong>Decoder:sink</strong>&nbsp;()</dt>
+<dd>
+
+Create an LTN12 sink from the decoder object which accepts the JSON-Data. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+LTN12 sink
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Encoder"></a><strong>Encoder</strong>&nbsp;(data, buffersize, fastescape)</dt>
+<dd>
+
+Create a new JSON-Encoder. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: Lua-Object to be encoded.
+       </li>
+       
+       <li>
+         buffersize: Blocksize of returned data source.
+       </li>
+       
+       <li>
+         fastescape: Use non-standard escaping (don't escape control chars)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+JSON-Encoder
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Encoder.source"></a><strong>Encoder:source</strong>&nbsp;()</dt>
+<dd>
+
+Create an LTN12 source providing the encoded JSON-Data. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+LTN12 source
+
+
+
+</dd>
+
+
+
+
+<dt><a name="decode"></a><strong>decode</strong>&nbsp;(json)</dt>
+<dd>
+
+Directly decode a JSON string 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         json: JSON-String
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Lua object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="encode"></a><strong>encode</strong>&nbsp;(obj)</dt>
+<dd>
+
+Direcly encode a Lua object into a JSON string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         obj: Lua Object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+JSON string
+
+
+
+</dd>
+
+
+
+
+<dt><a name="null"></a><strong>null</strong>&nbsp;()</dt>
+<dd>
+
+Null replacement function 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+null
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.jsonc.html b/package/luci/documentation/api/modules/luci.jsonc.html
new file mode 100644 (file)
index 0000000..79deb93
--- /dev/null
@@ -0,0 +1,393 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li><strong>luci.jsonc</strong></li>
+       
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.jsonc</code></h1>
+
+<p>
+ LuCI JSON parsing and serialization library. 
+ The luci.jsonc class is a high level Lua binding to the JSON-C library to 
+ allow reading and writing JSON data with minimal overhead.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#new">new</a>&nbsp;()</td>
+       <td class="summary">
+Construct a new luci.jsonc.parser instance.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parse">parse</a>&nbsp;(json)</td>
+       <td class="summary">
+Parse a complete JSON string and convert it into a Lua data structure.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#stringify">stringify</a>&nbsp;(data, pretty)</td>
+       <td class="summary">
+Convert given Lua data into a JSON string.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="new"></a><strong>new</strong>&nbsp;()</dt>
+<dd>
+
+Construct a new luci.jsonc.parser instance.
+
+
+
+
+
+<h3>Usage:</h3>
+<code>parser = luci.jsonc.new()</code>
+
+
+
+<h3>Return value:</h3>
+A <code>luci.jsonc.parser</code> object representing a JSON-C tokener.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="parse"></a><strong>parse</strong>&nbsp;(json)</dt>
+<dd>
+
+Parse a complete JSON string and convert it into a Lua data structure.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         json: A string containing the JSON data to parse, must be either a 
+       JSON array or a JSON object.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>data = luci.jsonc.parse('{ "name": "John", "age": 34 }') 
+print(data.name)  -- "John"</pre>
+
+
+
+<h3>Return value:</h3>
+On success, a table containing the parsed JSON data is returned, on 
+       failure the function returns <code>nil</code> and a string containing the reason of 
+       the parse error.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#stringify">
+               stringify
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="stringify"></a><strong>stringify</strong>&nbsp;(data, pretty)</dt>
+<dd>
+
+Convert given Lua data into a JSON string. 
+This function recursively converts the given Lua data into a JSON string, 
+ignoring any unsupported data. Lua tables are converted into JSON arrays if they 
+only contain integer keys, mixed tables are turned into JSON objects with any 
+existing numeric keys converted into strings. 
+Lua functions, coroutines and userdata objects are ignored and Lua numbers are 
+converted to integers if they do not contain fractional values. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: The Lua data to convert, can be a table, string, boolean or number.
+       </li>
+       
+       <li>
+         pretty: A boolean value indicating whether the resulting JSON should be 
+       pretty printed.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } }) 
+print(json)  -- '{"item":true,"values":[1,2,3]}'</pre>
+
+
+
+<h3>Return value:</h3>
+Returns a string containing the JSON representation of the given Lua 
+       data.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parse">
+               parse
+       </a>
+       
+</ul>
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.jsonc.parser.html b/package/luci/documentation/api/modules/luci.jsonc.parser.html
new file mode 100644 (file)
index 0000000..709cb9a
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li><strong>luci.jsonc.parser</strong></li>
+       
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.jsonc.parser</code></h1>
+
+<p>
+ LuCI JSON parser instance. 
+ A JSON parser instance is useful to parse JSON data chunk by chunk, without 
+ the need to assemble all data in advance.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#parser.parse">parser:parse</a>&nbsp;(json)</td>
+       <td class="summary">
+Parses one chunk of JSON data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parser.get">parser:get</a>&nbsp;()</td>
+       <td class="summary">
+Convert parsed JSON data into Lua table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parser.set">parser:set</a>&nbsp;(data)</td>
+       <td class="summary">
+Put Lua data into the parser.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parser.sink">parser:sink</a>&nbsp;()</td>
+       <td class="summary">
+Generate an ltn12-compatible sink.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parser.stringify">parser:stringify</a>&nbsp;(pretty)</td>
+       <td class="summary">
+Serialize current parser state as JSON.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="parser.parse"></a><strong>parser:parse</strong>&nbsp;(json)</dt>
+<dd>
+
+Parses one chunk of JSON data. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         json: String containing the JSON fragment to parse
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>parser = luci.jsonc.new() 
+while true do 
+       chunk = ...  -- fetch a cunk of data, e.g. from a socket 
+       finish, errmsg = <b>parser.parse(chunk)</b> 
+       if finish == nil then 
+               error("Cannot parse JSON: " .. errmsg) 
+       end 
+       if finish == true then 
+               break 
+       end 
+end</pre>
+
+
+
+<h3>Return value:</h3>
+<ul> 
+       <li><code>true</code> if a complete JSON object has been parsed and no further input is 
+           expected.</li> 
+       <li><code>false</code> if further input is required</li> 
+       <li><code>nil</code> if an error was encountered while parsing the current chunk. 
+           In this case a string describing the parse error is returned as second 
+           value.</li></ul>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parser.get">
+               parser:get
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parser.get"></a><strong>parser:get</strong>&nbsp;()</dt>
+<dd>
+
+Convert parsed JSON data into Lua table. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>parser = luci.jsonc.new() 
+parser:parse('{ "example": "test" }') 
+data = parser:get() 
+print(data.example)  -- "test"</pre>
+
+
+
+<h3>Return value:</h3>
+Parsed JSON object converted into a Lua table or <code>nil</code> if the parser 
+       didn't finish or encountered an error.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parser.parse">
+               parser:parse
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parser.set"></a><strong>parser:set</strong>&nbsp;(data)</dt>
+<dd>
+
+Put Lua data into the parser. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: Lua data to put into the parser object. The data is converted to an 
+       internal JSON representation that can be dumped with <code>stringify()</code>. 
+       The conversion follows the rules described in <code>luci.jsonc.stringify</code>.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>parser = luci.jsonc.new() 
+parser:set({ "some", "data" })</pre>
+
+
+
+<h3>Return value:</h3>
+Nothing is returned.
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#parser.stringify">
+               parser:stringify
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="parser.sink"></a><strong>parser:sink</strong>&nbsp;()</dt>
+<dd>
+
+Generate an ltn12-compatible sink. 
+
+
+
+
+
+
+<h3>Usage:</h3>
+<pre>parser = luci.jsonc.new() 
+ltn12.pump.all(ltn12.source.file(io.input()), parser:sink()) 
+print(parser:get())</pre>
+
+
+
+<h3>Return value:</h3>
+Returns a function that can be used as an ltn12 sink.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="parser.stringify"></a><strong>parser:stringify</strong>&nbsp;(pretty)</dt>
+<dd>
+
+Serialize current parser state as JSON. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pretty: A boolean value indicating whether the resulting JSON should be pretty printed.
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+<pre>parser = luci.jsonc.new() 
+parser:parse('{ "example": "test" }') 
+print(parser:serialize())  -- '{"example":"test"}'</pre>
+
+
+
+<h3>Return value:</h3>
+Returns the serialized JSON data of this parser instance.
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.model.ipkg.html b/package/luci/documentation/api/modules/luci.model.ipkg.html
new file mode 100644 (file)
index 0000000..a0af318
--- /dev/null
@@ -0,0 +1,730 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li><strong>luci.model.ipkg</strong></li>
+       
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.model.ipkg</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#compare_versions">compare_versions</a>&nbsp;(ver1, ver2, comp)</td>
+       <td class="summary">
+lua version of opkg compare-versions 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#find">find</a>&nbsp;(pat, cb)</td>
+       <td class="summary">
+Find packages that match the given pattern.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#info">info</a>&nbsp;(pkg)</td>
+       <td class="summary">
+Return information about installed and available packages.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#install">install</a>&nbsp;(...)</td>
+       <td class="summary">
+Install one or more packages.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#installed">installed</a>&nbsp;(pkg)</td>
+       <td class="summary">
+Determine whether a given package is installed.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#list_all">list_all</a>&nbsp;(pat, cb)</td>
+       <td class="summary">
+List all packages known to opkg.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#list_installed">list_installed</a>&nbsp;(pat, cb)</td>
+       <td class="summary">
+List installed packages.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#overlay_root">overlay_root</a>&nbsp;()</td>
+       <td class="summary">
+Determines the overlay root used by opkg.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#remove">remove</a>&nbsp;(...)</td>
+       <td class="summary">
+Remove one or more packages.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#status">status</a>&nbsp;(pkg)</td>
+       <td class="summary">
+Return the package status of one or more packages.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#update">update</a>&nbsp;()</td>
+       <td class="summary">
+Update package lists.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#upgrade">upgrade</a>&nbsp;()</td>
+       <td class="summary">
+Upgrades all installed packages.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="compare_versions"></a><strong>compare_versions</strong>&nbsp;(ver1, ver2, comp)</dt>
+<dd>
+
+lua version of opkg compare-versions 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ver1: string version 1
+       </li>
+       
+       <li>
+         ver2: string version 2
+       </li>
+       
+       <li>
+         comp: string compare versions using 
+               "<=" or "<" lower-equal 
+               ">" or ">=" greater-equal 
+               "=" equal 
+               "<<" lower 
+               ">>" greater 
+               "~=" not equal
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating the status of the compare
+
+
+
+</dd>
+
+
+
+
+<dt><a name="find"></a><strong>find</strong>&nbsp;(pat, cb)</dt>
+<dd>
+
+Find packages that match the given pattern. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pat: Find packages whose names or descriptions match this pattern, nil results in zero results
+       </li>
+       
+       <li>
+         cb: Callback function invoked for each patckage, receives name, version and description as arguments
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+nothing
+
+
+
+</dd>
+
+
+
+
+<dt><a name="info"></a><strong>info</strong>&nbsp;(pkg)</dt>
+<dd>
+
+Return information about installed and available packages. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pkg: Limit output to a (set of) packages
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing package information
+
+
+
+</dd>
+
+
+
+
+<dt><a name="install"></a><strong>install</strong>&nbsp;(...)</dt>
+<dd>
+
+Install one or more packages. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: List of packages to install
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating the status of the action
+       
+       <li>OPKG return code, STDOUT and STDERR
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="installed"></a><strong>installed</strong>&nbsp;(pkg)</dt>
+<dd>
+
+Determine whether a given package is installed. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pkg: Package
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean
+
+
+
+</dd>
+
+
+
+
+<dt><a name="list_all"></a><strong>list_all</strong>&nbsp;(pat, cb)</dt>
+<dd>
+
+List all packages known to opkg. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pat: Only find packages matching this pattern, nil lists all packages
+       </li>
+       
+       <li>
+         cb: Callback function invoked for each package, receives name, version and description as arguments
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+nothing
+
+
+
+</dd>
+
+
+
+
+<dt><a name="list_installed"></a><strong>list_installed</strong>&nbsp;(pat, cb)</dt>
+<dd>
+
+List installed packages. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pat: Only find packages matching this pattern, nil lists all packages
+       </li>
+       
+       <li>
+         cb: Callback function invoked for each package, receives name, version and description as arguments
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+nothing
+
+
+
+</dd>
+
+
+
+
+<dt><a name="overlay_root"></a><strong>overlay_root</strong>&nbsp;()</dt>
+<dd>
+
+Determines the overlay root used by opkg. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the directory path of the overlay root.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="remove"></a><strong>remove</strong>&nbsp;(...)</dt>
+<dd>
+
+Remove one or more packages. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: List of packages to install
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating the status of the action
+       
+       <li>OPKG return code, STDOUT and STDERR
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="status"></a><strong>status</strong>&nbsp;(pkg)</dt>
+<dd>
+
+Return the package status of one or more packages. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pkg: Limit output to a (set of) packages
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing package status information
+
+
+
+</dd>
+
+
+
+
+<dt><a name="update"></a><strong>update</strong>&nbsp;()</dt>
+<dd>
+
+Update package lists. 
+
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating the status of the action
+       
+       <li>OPKG return code, STDOUT and STDERR
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="upgrade"></a><strong>upgrade</strong>&nbsp;()</dt>
+<dd>
+
+Upgrades all installed packages. 
+
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating the status of the action
+       
+       <li>OPKG return code, STDOUT and STDERR
+       
+</ol>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.model.uci.html b/package/luci/documentation/api/modules/luci.model.uci.html
new file mode 100644 (file)
index 0000000..77a81fd
--- /dev/null
@@ -0,0 +1,1511 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li><strong>luci.model.uci</strong></li>
+       
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.model.uci</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.add">Cursor:add</a>&nbsp;(config, type)</td>
+       <td class="summary">
+Add an anonymous section.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.apply">Cursor:apply</a>&nbsp;(configlist, command)</td>
+       <td class="summary">
+Applies UCI configuration changes 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.changes">Cursor:changes</a>&nbsp;(config)</td>
+       <td class="summary">
+Get a table of saved but uncommitted changes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.commit">Cursor:commit</a>&nbsp;(config)</td>
+       <td class="summary">
+Commit saved changes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.delete">Cursor:delete</a>&nbsp;(config, section, option)</td>
+       <td class="summary">
+Deletes a section or an option.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.delete_all">Cursor:delete_all</a>&nbsp;(config, type, comparator)</td>
+       <td class="summary">
+Delete all sections of a given type that match certain criteria.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.foreach">Cursor:foreach</a>&nbsp;(config, type, callback)</td>
+       <td class="summary">
+Call a function for every section of a certain type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get">Cursor:get</a>&nbsp;(config, section, option)</td>
+       <td class="summary">
+Get a section type or an option 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_all">Cursor:get_all</a>&nbsp;(config, section)</td>
+       <td class="summary">
+Get all sections of a config or all values of a section.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_bool">Cursor:get_bool</a>&nbsp;(config, section, option)</td>
+       <td class="summary">
+Get a boolean option and return it's value as true or false.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_confdir">Cursor:get_confdir</a>&nbsp;()</td>
+       <td class="summary">
+Get the configuration directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_first">Cursor:get_first</a>&nbsp;(config, type, option, default)</td>
+       <td class="summary">
+Get the given option from the first section with the given type.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_list">Cursor:get_list</a>&nbsp;(config, section, option)</td>
+       <td class="summary">
+Get an option or list and return values as table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_savedir">Cursor:get_savedir</a>&nbsp;()</td>
+       <td class="summary">
+Get the directory for uncomitted changes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.get_session_id">Cursor:get_session_id</a>&nbsp;()</td>
+       <td class="summary">
+Get the effective session ID.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.load">Cursor:load</a>&nbsp;(config)</td>
+       <td class="summary">
+Manually load a config.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.revert">Cursor:revert</a>&nbsp;(config)</td>
+       <td class="summary">
+Revert saved but uncommitted changes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.save">Cursor:save</a>&nbsp;(config)</td>
+       <td class="summary">
+Saves changes made to a config to make them committable.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.section">Cursor:section</a>&nbsp;(config, type, name, values)</td>
+       <td class="summary">
+Create a new section and initialize it with data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.set">Cursor:set</a>&nbsp;(config, section, option, value)</td>
+       <td class="summary">
+Set a value or create a named section.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.set_confdir">Cursor:set_confdir</a>&nbsp;(directory)</td>
+       <td class="summary">
+Set the configuration directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.set_list">Cursor:set_list</a>&nbsp;(config, section, option, value)</td>
+       <td class="summary">
+Set given values as list.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.set_savedir">Cursor:set_savedir</a>&nbsp;(directory)</td>
+       <td class="summary">
+Set the directory for uncommited changes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.set_session_id">Cursor:set_session_id</a>&nbsp;(id)</td>
+       <td class="summary">
+Set the effective session ID.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.substate">Cursor:substate</a>&nbsp;()</td>
+       <td class="summary">
+Create a sub-state of this cursor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.tset">Cursor:tset</a>&nbsp;(config, section, values)</td>
+       <td class="summary">
+Updated the data of a section using data from a table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Cursor.unload">Cursor:unload</a>&nbsp;(config)</td>
+       <td class="summary">
+Discard changes made to a config.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cursor">cursor</a>&nbsp;()</td>
+       <td class="summary">
+Create a new UCI-Cursor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cursor_state">cursor_state</a>&nbsp;()</td>
+       <td class="summary">
+Create a new Cursor initialized to the state directory.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Cursor.add"></a><strong>Cursor:add</strong>&nbsp;(config, type)</dt>
+<dd>
+
+Add an anonymous section. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         type: UCI section type
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Name of created section
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.apply"></a><strong>Cursor:apply</strong>&nbsp;(configlist, command)</dt>
+<dd>
+
+Applies UCI configuration changes 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         configlist: List of UCI configurations
+       </li>
+       
+       <li>
+         command: Don't apply only return the command
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.changes"></a><strong>Cursor:changes</strong>&nbsp;(config)</dt>
+<dd>
+
+Get a table of saved but uncommitted changes. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of changes
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.save">
+               Cursor:save
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.commit"></a><strong>Cursor:commit</strong>&nbsp;(config)</dt>
+<dd>
+
+Commit saved changes. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.revert">
+               Cursor:revert
+       </a>
+       
+       <li><a href="#Cursor.save">
+               Cursor:save
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.delete"></a><strong>Cursor:delete</strong>&nbsp;(config, section, option)</dt>
+<dd>
+
+Deletes a section or an option. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.delete_all"></a><strong>Cursor:delete_all</strong>&nbsp;(config, type, comparator)</dt>
+<dd>
+
+Delete all sections of a given type that match certain criteria. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         type: UCI section type
+       </li>
+       
+       <li>
+         comparator: Function that will be called for each section and returns 
+                                       a boolean whether to delete the current section (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.foreach"></a><strong>Cursor:foreach</strong>&nbsp;(config, type, callback)</dt>
+<dd>
+
+Call a function for every section of a certain type. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         type: UCI section type
+       </li>
+       
+       <li>
+         callback: Function to be called
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get"></a><strong>Cursor:get</strong>&nbsp;(config, section, option)</dt>
+<dd>
+
+Get a section type or an option 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+UCI value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_all"></a><strong>Cursor:get_all</strong>&nbsp;(config, section)</dt>
+<dd>
+
+Get all sections of a config or all values of a section. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of UCI sections or table of UCI values
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_bool"></a><strong>Cursor:get_bool</strong>&nbsp;(config, section, option)</dt>
+<dd>
+
+Get a boolean option and return it's value as true or false. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_confdir"></a><strong>Cursor:get_confdir</strong>&nbsp;()</dt>
+<dd>
+
+Get the configuration directory. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Configuration directory
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_first"></a><strong>Cursor:get_first</strong>&nbsp;(config, type, option, default)</dt>
+<dd>
+
+Get the given option from the first section with the given type. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         type: UCI section type
+       </li>
+       
+       <li>
+         option: UCI option (optional)
+       </li>
+       
+       <li>
+         default: Default value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+UCI value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_list"></a><strong>Cursor:get_list</strong>&nbsp;(config, section, option)</dt>
+<dd>
+
+Get an option or list and return values as table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+table.         If the option was not found, you will simply get an empty 
+                                       table.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_savedir"></a><strong>Cursor:get_savedir</strong>&nbsp;()</dt>
+<dd>
+
+Get the directory for uncomitted changes. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Save directory
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.get_session_id"></a><strong>Cursor:get_session_id</strong>&nbsp;()</dt>
+<dd>
+
+Get the effective session ID. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the session ID
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.load"></a><strong>Cursor:load</strong>&nbsp;(config)</dt>
+<dd>
+
+Manually load a config. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.save">
+               Cursor:save
+       </a>
+       
+       <li><a href="#Cursor.unload">
+               Cursor:unload
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.revert"></a><strong>Cursor:revert</strong>&nbsp;(config)</dt>
+<dd>
+
+Revert saved but uncommitted changes. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.commit">
+               Cursor:commit
+       </a>
+       
+       <li><a href="#Cursor.save">
+               Cursor:save
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.save"></a><strong>Cursor:save</strong>&nbsp;(config)</dt>
+<dd>
+
+Saves changes made to a config to make them committable. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.load">
+               Cursor:load
+       </a>
+       
+       <li><a href="#Cursor.unload">
+               Cursor:unload
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.section"></a><strong>Cursor:section</strong>&nbsp;(config, type, name, values)</dt>
+<dd>
+
+Create a new section and initialize it with data. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         type: UCI section type
+       </li>
+       
+       <li>
+         name: UCI section name (optional)
+       </li>
+       
+       <li>
+         values: Table of key - value pairs to initialize the section with
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Name of created section
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.set"></a><strong>Cursor:set</strong>&nbsp;(config, section, option, value)</dt>
+<dd>
+
+Set a value or create a named section. 
+When invoked with three arguments <code>config</code>, <code>sectionname</code>, <code>sectiontype</code>, 
+then a named section of the given type is created. 
+When invoked with four arguments <code>config</code>, <code>sectionname</code>, <code>optionname</code> and 
+<code>optionvalue</code> then the value of the specified option is set to the given value. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option or UCI section type
+       </li>
+       
+       <li>
+         value: UCI value or nothing if you want to create a section
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.set_confdir"></a><strong>Cursor:set_confdir</strong>&nbsp;(directory)</dt>
+<dd>
+
+Set the configuration directory. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         directory: UCI configuration directory
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.set_list"></a><strong>Cursor:set_list</strong>&nbsp;(config, section, option, value)</dt>
+<dd>
+
+Set given values as list. Setting a list option to an empty list 
+has the same effect as deleting the option. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name
+       </li>
+       
+       <li>
+         option: UCI option
+       </li>
+       
+       <li>
+         value: Value or table. Non-table values will be set as single 
+                                       item UCI list.
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.set_savedir"></a><strong>Cursor:set_savedir</strong>&nbsp;(directory)</dt>
+<dd>
+
+Set the directory for uncommited changes. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         directory: UCI changes directory
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.set_session_id"></a><strong>Cursor:set_session_id</strong>&nbsp;(id)</dt>
+<dd>
+
+Set the effective session ID. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         id: String containing the session ID to set
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.substate"></a><strong>Cursor:substate</strong>&nbsp;()</dt>
+<dd>
+
+Create a sub-state of this cursor. 
+The sub-state is tied to the parent curser, means it the parent unloads or 
+loads configs, the sub state will do so as well. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+UCI state cursor tied to the parent cursor
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.tset"></a><strong>Cursor:tset</strong>&nbsp;(config, section, values)</dt>
+<dd>
+
+Updated the data of a section using data from a table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+       <li>
+         section: UCI section name (optional)
+       </li>
+       
+       <li>
+         values: Table of key - value pairs to update the section with
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Cursor.unload"></a><strong>Cursor:unload</strong>&nbsp;(config)</dt>
+<dd>
+
+Discard changes made to a config. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         config: UCI config
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean whether operation succeeded
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Cursor.load">
+               Cursor:load
+       </a>
+       
+       <li><a href="#Cursor.save">
+               Cursor:save
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="cursor"></a><strong>cursor</strong>&nbsp;()</dt>
+<dd>
+
+Create a new UCI-Cursor. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+UCI-Cursor
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cursor_state"></a><strong>cursor_state</strong>&nbsp;()</dt>
+<dd>
+
+Create a new Cursor initialized to the state directory. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+UCI cursor
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.rpcc.html b/package/luci/documentation/api/modules/luci.rpcc.html
new file mode 100644 (file)
index 0000000..1806578
--- /dev/null
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li><strong>luci.rpcc</strong></li>
+       
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.rpcc</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#Client.proxy">Client:proxy</a>&nbsp;(prefix)</td>
+       <td class="summary">
+Create a transparent RPC proxy.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Client.request">Client:request</a>&nbsp;(method, params, notification)</td>
+       <td class="summary">
+Request an RP call and get the response.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Client.proxy"></a><strong>Client:proxy</strong>&nbsp;(prefix)</dt>
+<dd>
+
+Create a transparent RPC proxy. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         prefix: Method prefix
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+RPC Proxy object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Client.request"></a><strong>Client:request</strong>&nbsp;(method, params, notification)</dt>
+<dd>
+
+Request an RP call and get the response. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         method: Remote method
+       </li>
+       
+       <li>
+         params: Parameters
+       </li>
+       
+       <li>
+         notification: Notification only?
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+response 
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.rpcc.ruci.html b/package/luci/documentation/api/modules/luci.rpcc.ruci.html
new file mode 100644 (file)
index 0000000..7348f19
--- /dev/null
@@ -0,0 +1,277 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li><strong>luci.rpcc.ruci</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.rpcc.ruci</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#factory">factory</a>&nbsp;(rpccl)</td>
+       <td class="summary">
+Create a new UCI over RPC proxy.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="factory"></a><strong>factory</strong>&nbsp;(rpccl)</dt>
+<dd>
+
+Create a new UCI over RPC proxy. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         rpccl: RPC client
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Network transparent UCI module 
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.html b/package/luci/documentation/api/modules/luci.sys.html
new file mode 100644 (file)
index 0000000..6342a51
--- /dev/null
@@ -0,0 +1,641 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li><strong>luci.sys</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#call">call</a>&nbsp;(...)</td>
+       <td class="summary">
+Execute a given shell command and return the error code 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#dmesg">dmesg</a>&nbsp;()</td>
+       <td class="summary">
+Retrieves the output of the "dmesg" command.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#exec">exec</a>&nbsp;(command)</td>
+       <td class="summary">
+Execute a given shell command and capture its standard output 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#getenv">getenv</a>&nbsp;(var)</td>
+       <td class="summary">
+Retrieve environment variables.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#hostname">hostname</a>&nbsp;(String)</td>
+       <td class="summary">
+Get or set the current hostname.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#httpget">httpget</a>&nbsp;(url, stream, target)</td>
+       <td class="summary">
+Returns the contents of a documented referred by an URL.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#mounts">mounts</a>&nbsp;()</td>
+       <td class="summary">
+Retrieve information about currently mounted file systems.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#reboot">reboot</a>&nbsp;()</td>
+       <td class="summary">
+Initiate a system reboot.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#syslog">syslog</a>&nbsp;()</td>
+       <td class="summary">
+Retrieves the output of the "logread" command.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#uniqueid">uniqueid</a>&nbsp;(bytes)</td>
+       <td class="summary">
+Generates a random id with specified length.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#uptime">uptime</a>&nbsp;()</td>
+       <td class="summary">
+Returns the current system uptime stats.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="call"></a><strong>call</strong>&nbsp;(...)</dt>
+<dd>
+
+Execute a given shell command and return the error code 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ...: Command to call
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Error code of the command
+
+
+
+</dd>
+
+
+
+
+<dt><a name="dmesg"></a><strong>dmesg</strong>&nbsp;()</dt>
+<dd>
+
+Retrieves the output of the "dmesg" command. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the current log buffer
+
+
+
+</dd>
+
+
+
+
+<dt><a name="exec"></a><strong>exec</strong>&nbsp;(command)</dt>
+<dd>
+
+Execute a given shell command and capture its standard output 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         command: Command to call
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containg the return the output of the command
+
+
+
+</dd>
+
+
+
+
+<dt><a name="getenv"></a><strong>getenv</strong>&nbsp;(var)</dt>
+<dd>
+
+Retrieve environment variables. If no variable is given then a table 
+containing the whole environment is returned otherwise this function returns 
+the corresponding string value for the given name or nil if no such variable 
+exists.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         var: Name of the environment variable to retrieve (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>String containg the value of the specified variable
+       
+       <li>Table containing all variables if no variable name is given
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="hostname"></a><strong>hostname</strong>&nbsp;(String)</dt>
+<dd>
+
+Get or set the current hostname. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         String: containing a new hostname to set (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the system hostname
+
+
+
+</dd>
+
+
+
+
+<dt><a name="httpget"></a><strong>httpget</strong>&nbsp;(url, stream, target)</dt>
+<dd>
+
+Returns the contents of a documented referred by an URL. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         url: The URL to retrieve
+       </li>
+       
+       <li>
+         stream: Return a stream instead of a buffer
+       </li>
+       
+       <li>
+         target: Directly write to target file name
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the contents of given the URL
+
+
+
+</dd>
+
+
+
+
+<dt><a name="mounts"></a><strong>mounts</strong>&nbsp;()</dt>
+<dd>
+
+Retrieve information about currently mounted file systems. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing mount information
+
+
+
+</dd>
+
+
+
+
+<dt><a name="reboot"></a><strong>reboot</strong>&nbsp;()</dt>
+<dd>
+
+Initiate a system reboot. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Return value of os.execute()
+
+
+
+</dd>
+
+
+
+
+<dt><a name="syslog"></a><strong>syslog</strong>&nbsp;()</dt>
+<dd>
+
+Retrieves the output of the "logread" command. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the current log buffer
+
+
+
+</dd>
+
+
+
+
+<dt><a name="uniqueid"></a><strong>uniqueid</strong>&nbsp;(bytes)</dt>
+<dd>
+
+Generates a random id with specified length. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         bytes: Number of bytes for the unique id
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing hex encoded id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="uptime"></a><strong>uptime</strong>&nbsp;()</dt>
+<dd>
+
+Returns the current system uptime stats. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing total uptime in seconds
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.init.html b/package/luci/documentation/api/modules/luci.sys.init.html
new file mode 100644 (file)
index 0000000..e2c51f9
--- /dev/null
@@ -0,0 +1,512 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li><strong>luci.sys.init</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys.init</code></h1>
+
+<p>
+LuCI system utilities / init related functions. 
+</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#init.disable">disable</a>&nbsp;(name)</td>
+       <td class="summary">
+Disable the given init script 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.enable">enable</a>&nbsp;(name)</td>
+       <td class="summary">
+Enable the given init script 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.enabled">enabled</a>&nbsp;(name)</td>
+       <td class="summary">
+Test whether the given init script is enabled 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.index">index</a>&nbsp;(name)</td>
+       <td class="summary">
+Get the index of he given init script 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.names">names</a>&nbsp;()</td>
+       <td class="summary">
+Get the names of all installed init scripts 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.start">start</a>&nbsp;(name)</td>
+       <td class="summary">
+Start the given init script 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#init.stop">stop</a>&nbsp;(name)</td>
+       <td class="summary">
+Stop the given init script 
+ </td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="init.disable"></a><strong>disable</strong>&nbsp;(name)</dt>
+<dd>
+
+Disable the given init script 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating success
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.enable"></a><strong>enable</strong>&nbsp;(name)</dt>
+<dd>
+
+Enable the given init script 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating success
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.enabled"></a><strong>enabled</strong>&nbsp;(name)</dt>
+<dd>
+
+Test whether the given init script is enabled 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating whether init is enabled
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.index"></a><strong>index</strong>&nbsp;(name)</dt>
+<dd>
+
+Get the index of he given init script 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Numeric index value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.names"></a><strong>names</strong>&nbsp;()</dt>
+<dd>
+
+Get the names of all installed init scripts 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the names of all inistalled init scripts
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.start"></a><strong>start</strong>&nbsp;(name)</dt>
+<dd>
+
+Start the given init script 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating success
+
+
+
+</dd>
+
+
+
+
+<dt><a name="init.stop"></a><strong>stop</strong>&nbsp;(name)</dt>
+<dd>
+
+Stop the given init script 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: Name of the init script
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating success
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.iptparser.html b/package/luci/documentation/api/modules/luci.sys.iptparser.html
new file mode 100644 (file)
index 0000000..5928281
--- /dev/null
@@ -0,0 +1,462 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li><strong>luci.sys.iptparser</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>luci.sys.iptparser</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser">IptParser</a>&nbsp;(family)</td>
+       <td class="summary">
+Create a new iptables parser object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser.chain">IptParser:chain</a>&nbsp;(table, chain)</td>
+       <td class="summary">
+Return the given firewall chain within the given table name.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser.chains">IptParser:chains</a>&nbsp;(table)</td>
+       <td class="summary">
+Find the names of all chains within the given table name.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser.is_custom_target">IptParser:is_custom_target</a>&nbsp;(target)</td>
+       <td class="summary">
+Test whether the given target points to a custom chain.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser.resync">IptParser:resync</a>&nbsp;()</td>
+       <td class="summary">
+Rebuild the internal lookup table, for example when rules have changed 
+through external commands.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#IptParser.tables">IptParser:tables</a>&nbsp;()</td>
+       <td class="summary">
+Find the names of all tables.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="IptParser"></a><strong>IptParser</strong>&nbsp;(family)</dt>
+<dd>
+
+Create a new iptables parser object. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         family: Number specifying the address family. 4 for IPv4, 6 for IPv6
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+IptParser instance
+
+
+
+</dd>
+
+
+
+
+<dt><a name="IptParser.chain"></a><strong>IptParser:chain</strong>&nbsp;(table, chain)</dt>
+<dd>
+
+Return the given firewall chain within the given table name. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         table: String containing the table name
+       </li>
+       
+       <li>
+         chain: String containing the chain name
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the fields "policy", "packets", "bytes" 
+                               and "rules". The "rules" field is a table of rule tables.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="IptParser.chains"></a><strong>IptParser:chains</strong>&nbsp;(table)</dt>
+<dd>
+
+Find the names of all chains within the given table name. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         table: String containing the table name
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of chain names in the order they occur.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="IptParser.is_custom_target"></a><strong>IptParser:is_custom_target</strong>&nbsp;(target)</dt>
+<dd>
+
+Test whether the given target points to a custom chain. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         target: String containing the target action
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating whether target is a custom chain.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="IptParser.resync"></a><strong>IptParser:resync</strong>&nbsp;()</dt>
+<dd>
+
+Rebuild the internal lookup table, for example when rules have changed 
+through external commands.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+nothing
+
+
+
+</dd>
+
+
+
+
+<dt><a name="IptParser.tables"></a><strong>IptParser:tables</strong>&nbsp;()</dt>
+<dd>
+
+Find the names of all tables. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table names.
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.net.html b/package/luci/documentation/api/modules/luci.sys.net.html
new file mode 100644 (file)
index 0000000..e7802bb
--- /dev/null
@@ -0,0 +1,597 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li><strong>luci.sys.net</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys.net</code></h1>
+
+<p>
+LuCI system utilities / network related functions. 
+</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#net.arptable">arptable</a>&nbsp;()</td>
+       <td class="summary">
+Returns the current arp-table entries as two-dimensional table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.conntrack">conntrack</a>&nbsp;()</td>
+       <td class="summary">
+Returns conntrack information 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.deviceinfo">deviceinfo</a>&nbsp;()</td>
+       <td class="summary">
+Return information about available network interfaces.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.devices">devices</a>&nbsp;()</td>
+       <td class="summary">
+Determine the names of available network interfaces.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.host_hints">host_hints</a>&nbsp;()</td>
+       <td class="summary">
+Returns a two-dimensional table of host hints.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.ipv4_hints">ipv4_hints</a>&nbsp;()</td>
+       <td class="summary">
+Returns a two-dimensional table of IPv4 address hints.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.ipv6_hints">ipv6_hints</a>&nbsp;()</td>
+       <td class="summary">
+Returns a two-dimensional table of IPv6 address hints.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.mac_hints">mac_hints</a>&nbsp;()</td>
+       <td class="summary">
+Returns a two-dimensional table of mac address hints.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.pingtest">pingtest</a>&nbsp;(host)</td>
+       <td class="summary">
+Tests whether the given host responds to ping probes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.routes">routes</a>&nbsp;()</td>
+       <td class="summary">
+Returns the current kernel routing table entries.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#net.routes6">routes6</a>&nbsp;()</td>
+       <td class="summary">
+Returns the current ipv6 kernel routing table entries.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="net.arptable"></a><strong>arptable</strong>&nbsp;()</dt>
+<dd>
+
+Returns the current arp-table entries as two-dimensional table. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table containing the current arp entries. 
+                       The following fields are defined for arp entry objects: 
+                       { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" }
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.conntrack"></a><strong>conntrack</strong>&nbsp;()</dt>
+<dd>
+
+Returns conntrack information 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table with the currently tracked IP connections
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.deviceinfo"></a><strong>deviceinfo</strong>&nbsp;()</dt>
+<dd>
+
+Return information about available network interfaces. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing all current interface names and their information
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.devices"></a><strong>devices</strong>&nbsp;()</dt>
+<dd>
+
+Determine the names of available network interfaces. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing all current interface names
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.host_hints"></a><strong>host_hints</strong>&nbsp;()</dt>
+<dd>
+
+Returns a two-dimensional table of host hints. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table containing known hosts from various sources, 
+         indexed by mac address. Each subtable contains at least one 
+         of the fields "name", "ipv4" or "ipv6".
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.ipv4_hints"></a><strong>ipv4_hints</strong>&nbsp;()</dt>
+<dd>
+
+Returns a two-dimensional table of IPv4 address hints. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table containing known hosts from various sources. 
+         Each entry contains the values in the following order: 
+         [ "ip", "name" ]
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.ipv6_hints"></a><strong>ipv6_hints</strong>&nbsp;()</dt>
+<dd>
+
+Returns a two-dimensional table of IPv6 address hints. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table containing known hosts from various sources. 
+         Each entry contains the values in the following order: 
+         [ "ip", "name" ]
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.mac_hints"></a><strong>mac_hints</strong>&nbsp;()</dt>
+<dd>
+
+Returns a two-dimensional table of mac address hints. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of table containing known hosts from various sources. 
+         Each entry contains the values in the following order: 
+         [ "mac", "name" ]
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.pingtest"></a><strong>pingtest</strong>&nbsp;(host)</dt>
+<dd>
+
+Tests whether the given host responds to ping probes. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: String containing a hostname or IPv4 address
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number containing 0 on success and >= 1 on error
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.routes"></a><strong>routes</strong>&nbsp;()</dt>
+<dd>
+
+Returns the current kernel routing table entries. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of tables with properties of the corresponding routes. 
+                       The following fields are defined for route entry tables: 
+                       { "dest", "gateway", "metric", "refcount", "usecount", "irtt", 
+                         "flags", "device" }
+
+
+
+</dd>
+
+
+
+
+<dt><a name="net.routes6"></a><strong>routes6</strong>&nbsp;()</dt>
+<dd>
+
+Returns the current ipv6 kernel routing table entries. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table of tables with properties of the corresponding routes. 
+                       The following fields are defined for route entry tables: 
+                       { "source", "dest", "nexthop", "metric", "refcount", "usecount", 
+                         "flags", "device" }
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.process.html b/package/luci/documentation/api/modules/luci.sys.process.html
new file mode 100644 (file)
index 0000000..ffe09bd
--- /dev/null
@@ -0,0 +1,444 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li><strong>luci.sys.process</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys.process</code></h1>
+
+<p>
+LuCI system utilities / process related functions. 
+</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#process.info">info</a>&nbsp;()</td>
+       <td class="summary">
+Get the current process id.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#process.list">list</a>&nbsp;()</td>
+       <td class="summary">
+Retrieve information about currently running processes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#process.setgroup">setgroup</a>&nbsp;(gid)</td>
+       <td class="summary">
+Set the gid of a process identified by given pid.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#process.setuser">setuser</a>&nbsp;(uid)</td>
+       <td class="summary">
+Set the uid of a process identified by given pid.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#process.signal">signal</a>&nbsp;(pid, sig)</td>
+       <td class="summary">
+Send a signal to a process identified by given pid.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="process.info"></a><strong>info</strong>&nbsp;()</dt>
+<dd>
+
+Get the current process id. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number containing the current pid
+
+
+
+</dd>
+
+
+
+
+<dt><a name="process.list"></a><strong>list</strong>&nbsp;()</dt>
+<dd>
+
+Retrieve information about currently running processes. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing process information
+
+
+
+</dd>
+
+
+
+
+<dt><a name="process.setgroup"></a><strong>setgroup</strong>&nbsp;(gid)</dt>
+<dd>
+
+Set the gid of a process identified by given pid. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         gid: Number containing the Unix group id
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating successful operation
+       
+       <li>String containing the error message if failed
+       
+       <li>Number containing the error code if failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="process.setuser"></a><strong>setuser</strong>&nbsp;(uid)</dt>
+<dd>
+
+Set the uid of a process identified by given pid. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         uid: Number containing the Unix user id
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating successful operation
+       
+       <li>String containing the error message if failed
+       
+       <li>Number containing the error code if failed
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="process.signal"></a><strong>signal</strong>&nbsp;(pid, sig)</dt>
+<dd>
+
+Send a signal to a process identified by given pid. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pid: Number containing the process id
+       </li>
+       
+       <li>
+         sig: Signal to send (default: 15 [SIGTERM])
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Boolean indicating successful operation
+       
+       <li>Number containing the error code if failed
+       
+</ol>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.user.html b/package/luci/documentation/api/modules/luci.sys.user.html
new file mode 100644 (file)
index 0000000..04f8bf0
--- /dev/null
@@ -0,0 +1,412 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li><strong>luci.sys.user</strong></li>
+       
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys.user</code></h1>
+
+<p>
+LuCI system utilities / user related functions. 
+</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#getuser">getuser</a>&nbsp;(uid)</td>
+       <td class="summary">
+Retrieve user informations for given uid.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#user.checkpasswd">checkpasswd</a>&nbsp;(username, pass)</td>
+       <td class="summary">
+Test whether given string matches the password of a given system user.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#user.getpasswd">getpasswd</a>&nbsp;(username)</td>
+       <td class="summary">
+Retrieve the current user password hash.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#user.setpasswd">setpasswd</a>&nbsp;(username, password)</td>
+       <td class="summary">
+Change the password of given user.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="getuser"></a><strong>getuser</strong>&nbsp;(uid)</dt>
+<dd>
+
+Retrieve user informations for given uid. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         uid: Number containing the Unix user id
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the following fields: 
+                               { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" }
+
+
+
+</dd>
+
+
+
+
+<dt><a name="user.checkpasswd"></a><strong>checkpasswd</strong>&nbsp;(username, pass)</dt>
+<dd>
+
+Test whether given string matches the password of a given system user. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         username: String containing the Unix user name
+       </li>
+       
+       <li>
+         pass: String containing the password to compare
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating wheather the passwords are equal
+
+
+
+</dd>
+
+
+
+
+<dt><a name="user.getpasswd"></a><strong>getpasswd</strong>&nbsp;(username)</dt>
+<dd>
+
+Retrieve the current user password hash. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         username: String containing the username to retrieve the password for
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>String containing the hash or nil if no password is set.
+       
+       <li>Password database entry
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="user.setpasswd"></a><strong>setpasswd</strong>&nbsp;(username, password)</dt>
+<dd>
+
+Change the password of given user. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         username: String containing the Unix user name
+       </li>
+       
+       <li>
+         password: String containing the password to compare
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number containing 0 on success and >= 1 on error
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.sys.wifi.html b/package/luci/documentation/api/modules/luci.sys.wifi.html
new file mode 100644 (file)
index 0000000..6c89324
--- /dev/null
@@ -0,0 +1,280 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li><strong>luci.sys.wifi</strong></li>
+       
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.sys.wifi</code></h1>
+
+<p>
+LuCI system utilities / wifi related functions. 
+</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#wifi.getiwinfo">getiwinfo</a>&nbsp;(ifname)</td>
+       <td class="summary">
+Get wireless information for given interface.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="wifi.getiwinfo"></a><strong>getiwinfo</strong>&nbsp;(ifname)</dt>
+<dd>
+
+Get wireless information for given interface. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ifname: String containing the interface name
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A wrapped iwinfo object instance
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/luci.util.html b/package/luci/documentation/api/modules/luci.util.html
new file mode 100644 (file)
index 0000000..d3d45a1
--- /dev/null
@@ -0,0 +1,1830 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li><strong>luci.util</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>luci.util</code></h1>
+
+<p></p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#append">append</a>&nbsp;(src, ...)</td>
+       <td class="summary">
+Appends numerically indexed tables or single objects to a given table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#bigendian">bigendian</a>&nbsp;()</td>
+       <td class="summary">
+Test whether the current system is operating in big endian mode.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#class">class</a>&nbsp;(base)</td>
+       <td class="summary">
+Create a Class object (Python-style object model).</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#clone">clone</a>&nbsp;(object, deep)</td>
+       <td class="summary">
+Clones the given object and return it's copy.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cmatch">cmatch</a>&nbsp;(str, pattern)</td>
+       <td class="summary">
+Count the occurrences of given substring in given string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#combine">combine</a>&nbsp;(tbl1, tbl2, ...)</td>
+       <td class="summary">
+Combines two or more numerically indexed tables and single objects into one table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#contains">contains</a>&nbsp;(table, value)</td>
+       <td class="summary">
+Checks whether the given table contains the given value.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#copcall">copcall</a>&nbsp;(f, ...)</td>
+       <td class="summary">
+This is a coroutine-safe drop-in replacement for Lua's "pcall"-function 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#coxpcall">coxpcall</a>&nbsp;(f, err, ...)</td>
+       <td class="summary">
+This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#dumptable">dumptable</a>&nbsp;(t, maxdepth)</td>
+       <td class="summary">
+Recursively dumps a table to stdout, useful for testing and debugging.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#exec">exec</a>&nbsp;(command)</td>
+       <td class="summary">
+Execute given commandline and gather stdout.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#execi">execi</a>&nbsp;(command)</td>
+       <td class="summary">
+Return a line-buffered iterator over the output of given command.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#get_bytecode">get_bytecode</a>&nbsp;(val)</td>
+       <td class="summary">
+Return the current runtime bytecode of the given data.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#imatch">imatch</a>&nbsp;(val)</td>
+       <td class="summary">
+Return a matching iterator for the given value.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#instanceof">instanceof</a>&nbsp;(object, class)</td>
+       <td class="summary">
+Test whether the given object is an instance of the given class.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#keys">keys</a>&nbsp;(t)</td>
+       <td class="summary">
+Retrieve all keys of given associative table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#kspairs">kspairs</a>&nbsp;(t)</td>
+       <td class="summary">
+Return a key, value iterator for the given table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#libpath">libpath</a>&nbsp;()</td>
+       <td class="summary">
+Returns the absolute path to LuCI base directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#parse_units">parse_units</a>&nbsp;(ustr)</td>
+       <td class="summary">
+Parse certain units from the given string and return the canonical integer 
+value or 0 if the unit is unknown.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#pcdata">pcdata</a>&nbsp;(value)</td>
+       <td class="summary">
+Create valid XML PCDATA from given string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#perror">perror</a>&nbsp;(obj)</td>
+       <td class="summary">
+Write given object to stderr.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#restore_data">restore_data</a>&nbsp;(str)</td>
+       <td class="summary">
+Restore data previously serialized with serialize_data().</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#serialize_data">serialize_data</a>&nbsp;(val)</td>
+       <td class="summary">
+Recursively serialize given data to lua code, suitable for restoring 
+with loadstring().</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#serialize_json">serialize_json</a>&nbsp;(data, writer)</td>
+       <td class="summary">
+Convert data structure to JSON 
+ </td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#shellquote">shellquote</a>&nbsp;(value)</td>
+       <td class="summary">
+Safely quote value for use in shell commands.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#spairs">spairs</a>&nbsp;(t, f)</td>
+       <td class="summary">
+Return a key, value iterator which returns the values sorted according to 
+the provided callback function.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#split">split</a>&nbsp;(str, pat, max, regex)</td>
+       <td class="summary">
+Splits given string on a defined separator sequence and return a table 
+containing the resulting substrings.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#strip_bytecode">strip_bytecode</a>&nbsp;(code)</td>
+       <td class="summary">
+Strips unnescessary lua bytecode from given string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#striptags">striptags</a>&nbsp;(value)</td>
+       <td class="summary">
+Strip HTML tags from given string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#threadlocal">threadlocal</a>&nbsp;()</td>
+       <td class="summary">
+Create a new or get an already existing thread local store associated with 
+the current active coroutine.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#trim">trim</a>&nbsp;(str)</td>
+       <td class="summary">
+Remove leading and trailing whitespace from given string value.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#ubus">ubus</a>&nbsp;(object, method, values)</td>
+       <td class="summary">
+Issue an ubus call.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#update">update</a>&nbsp;(t, updates)</td>
+       <td class="summary">
+Update values in given table with the values from the second given table.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urldecode">urldecode</a>&nbsp;(str, decode_plus)</td>
+       <td class="summary">
+Decode an URL-encoded string - optionally decoding the "+" sign to space.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#urlencode">urlencode</a>&nbsp;(str)</td>
+       <td class="summary">
+URL-encode given string.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#vspairs">vspairs</a>&nbsp;(t)</td>
+       <td class="summary">
+Return a key, value iterator for the given table.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="append"></a><strong>append</strong>&nbsp;(src, ...)</dt>
+<dd>
+
+Appends numerically indexed tables or single objects to a given table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Target table
+       </li>
+       
+       <li>
+         ...: Objects to insert
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Target table
+
+
+
+</dd>
+
+
+
+
+<dt><a name="bigendian"></a><strong>bigendian</strong>&nbsp;()</dt>
+<dd>
+
+Test whether the current system is operating in big endian mode. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean value indicating whether system is big endian
+
+
+
+</dd>
+
+
+
+
+<dt><a name="class"></a><strong>class</strong>&nbsp;(base)</dt>
+<dd>
+
+Create a Class object (Python-style object model). 
+The class object can be instantiated by calling itself. 
+Any class functions or shared parameters can be attached to this object. 
+Attaching a table to the class object makes this table shared between 
+all instances of this class. For object parameters use the __init__ function. 
+Classes can inherit member functions and values from a base class. 
+Class can be instantiated by calling them. All parameters will be passed 
+to the __init__ function of this class - if such a function exists. 
+The __init__ function must be used to set any object parameters that are not shared 
+with other objects of this class. Any return values will be ignored. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         base: The base class to inherit from (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A class object
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#instanceof">
+               instanceof
+       </a>
+       
+       <li><a href="#clone">
+               clone
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="clone"></a><strong>clone</strong>&nbsp;(object, deep)</dt>
+<dd>
+
+Clones the given object and return it's copy. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         object: Table value to clone
+       </li>
+       
+       <li>
+         deep: Boolean indicating whether to do recursive cloning
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Cloned table value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cmatch"></a><strong>cmatch</strong>&nbsp;(str, pattern)</dt>
+<dd>
+
+Count the occurrences of given substring in given string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String to search in
+       </li>
+       
+       <li>
+         pattern: String containing pattern to find
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number of found occurrences
+
+
+
+</dd>
+
+
+
+
+<dt><a name="combine"></a><strong>combine</strong>&nbsp;(tbl1, tbl2, ...)</dt>
+<dd>
+
+Combines two or more numerically indexed tables and single objects into one table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         tbl1: Table value to combine
+       </li>
+       
+       <li>
+         tbl2: Table value to combine
+       </li>
+       
+       <li>
+         ...: More tables to combine
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table value containing all values of given tables
+
+
+
+</dd>
+
+
+
+
+<dt><a name="contains"></a><strong>contains</strong>&nbsp;(table, value)</dt>
+<dd>
+
+Checks whether the given table contains the given value. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         table: Table value
+       </li>
+       
+       <li>
+         value: Value to search within the given table
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number indicating the first index at which the given value occurs 
+                                       within table or false.
+
+
+
+</dd>
+
+
+
+
+<dt><a name="copcall"></a><strong>copcall</strong>&nbsp;(f, ...)</dt>
+<dd>
+
+This is a coroutine-safe drop-in replacement for Lua's "pcall"-function 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         f: Lua function to be called protected
+       </li>
+       
+       <li>
+         ...: Parameters passed to the function
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A boolean whether the function call succeeded and the returns 
+                                       values of the function or the error object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="coxpcall"></a><strong>coxpcall</strong>&nbsp;(f, err, ...)</dt>
+<dd>
+
+This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         f: Lua function to be called protected
+       </li>
+       
+       <li>
+         err: Custom error handler
+       </li>
+       
+       <li>
+         ...: Parameters passed to the function
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+A boolean whether the function call succeeded and the return 
+                                       values of either the function or the error handler
+
+
+
+</dd>
+
+
+
+
+<dt><a name="dumptable"></a><strong>dumptable</strong>&nbsp;(t, maxdepth)</dt>
+<dd>
+
+Recursively dumps a table to stdout, useful for testing and debugging. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: Table value to dump
+       </li>
+       
+       <li>
+         maxdepth: Maximum depth
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Always nil
+
+
+
+</dd>
+
+
+
+
+<dt><a name="exec"></a><strong>exec</strong>&nbsp;(command)</dt>
+<dd>
+
+Execute given commandline and gather stdout. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         command: String containing command to execute
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the command's stdout
+
+
+
+</dd>
+
+
+
+
+<dt><a name="execi"></a><strong>execi</strong>&nbsp;(command)</dt>
+<dd>
+
+Return a line-buffered iterator over the output of given command. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         command: String containing the command to execute
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Iterator
+
+
+
+</dd>
+
+
+
+
+<dt><a name="get_bytecode"></a><strong>get_bytecode</strong>&nbsp;(val)</dt>
+<dd>
+
+Return the current runtime bytecode of the given data. The byte code 
+will be stripped before it is returned. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         val: Value to return as bytecode
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String value containing the bytecode of the given data
+
+
+
+</dd>
+
+
+
+
+<dt><a name="imatch"></a><strong>imatch</strong>&nbsp;(val)</dt>
+<dd>
+
+Return a matching iterator for the given value. 
+The iterator will return one token per invocation, the tokens are separated by 
+whitespace. If the input value is a table, it is transformed into a string first. 
+A nil value will result in a valid interator which aborts with the first invocation. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         val: The value to scan (table, string or nil)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Iterator which returns one token per call
+
+
+
+</dd>
+
+
+
+
+<dt><a name="instanceof"></a><strong>instanceof</strong>&nbsp;(object, class)</dt>
+<dd>
+
+Test whether the given object is an instance of the given class. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         object: Object instance
+       </li>
+       
+       <li>
+         class: Class object to test against
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating whether the object is an instance
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#class">
+               class
+       </a>
+       
+       <li><a href="#clone">
+               clone
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="keys"></a><strong>keys</strong>&nbsp;(t)</dt>
+<dd>
+
+Retrieve all keys of given associative table. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: Table to extract keys from
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Sorted table containing the keys
+
+
+
+</dd>
+
+
+
+
+<dt><a name="kspairs"></a><strong>kspairs</strong>&nbsp;(t)</dt>
+<dd>
+
+Return a key, value iterator for the given table. 
+The table pairs are sorted by key. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: The table to iterate
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Function value containing the corresponding iterator
+
+
+
+</dd>
+
+
+
+
+<dt><a name="libpath"></a><strong>libpath</strong>&nbsp;()</dt>
+<dd>
+
+Returns the absolute path to LuCI base directory. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the directory path
+
+
+
+</dd>
+
+
+
+
+<dt><a name="parse_units"></a><strong>parse_units</strong>&nbsp;(ustr)</dt>
+<dd>
+
+Parse certain units from the given string and return the canonical integer 
+value or 0 if the unit is unknown. 
+Upper- or lower case is irrelevant. 
+Recognized units are: 
+       o "y"   - one year   (60*60*24*366) 
+ o "m" - one month  (60*60*24*31) 
+ o "w" - one week   (60*60*24*7) 
+ o "d" - one day    (60*60*24) 
+ o "h" - one hour       (60*60) 
+ o "min"       - one minute (60) 
+ o "kb"  - one kilobyte (1024) 
+ o "mb"        - one megabyte (1024*1024) 
+ o "gb"        - one gigabyte (1024*1024*1024) 
+ o "kib" - one si kilobyte (1000) 
+ o "mib"       - one si megabyte (1000*1000) 
+ o "gib"       - one si gigabyte (1000*1000*1000) 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ustr: String containing a numerical value with trailing unit
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Number containing the canonical value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="pcdata"></a><strong>pcdata</strong>&nbsp;(value)</dt>
+<dd>
+
+Create valid XML PCDATA from given string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         value: String value containing the data to escape
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String value containing the escaped data
+
+
+
+</dd>
+
+
+
+
+<dt><a name="perror"></a><strong>perror</strong>&nbsp;(obj)</dt>
+<dd>
+
+Write given object to stderr. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         obj: Value to write to stderr
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Boolean indicating whether the write operation was successful
+
+
+
+</dd>
+
+
+
+
+<dt><a name="restore_data"></a><strong>restore_data</strong>&nbsp;(str)</dt>
+<dd>
+
+Restore data previously serialized with serialize_data(). 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String containing the data to restore
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Value containing the restored data structure
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#serialize_data">
+               serialize_data
+       </a>
+       
+       <li><a href="#get_bytecode">
+               get_bytecode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="serialize_data"></a><strong>serialize_data</strong>&nbsp;(val)</dt>
+<dd>
+
+Recursively serialize given data to lua code, suitable for restoring 
+with loadstring(). 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         val: Value containing the data to serialize
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String value containing the serialized code
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#restore_data">
+               restore_data
+       </a>
+       
+       <li><a href="#get_bytecode">
+               get_bytecode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="serialize_json"></a><strong>serialize_json</strong>&nbsp;(data, writer)</dt>
+<dd>
+
+Convert data structure to JSON 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data: The data to serialize
+       </li>
+       
+       <li>
+         writer: A function to write a chunk of JSON data (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the JSON if called without write callback
+
+
+
+</dd>
+
+
+
+
+<dt><a name="shellquote"></a><strong>shellquote</strong>&nbsp;(value)</dt>
+<dd>
+
+Safely quote value for use in shell commands. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         value: String containing the value to quote
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Single-quote enclosed string with embedded quotes escaped
+
+
+
+</dd>
+
+
+
+
+<dt><a name="spairs"></a><strong>spairs</strong>&nbsp;(t, f)</dt>
+<dd>
+
+Return a key, value iterator which returns the values sorted according to 
+the provided callback function. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: The table to iterate
+       </li>
+       
+       <li>
+         f: A callback function to decide the order of elements
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Function value containing the corresponding iterator
+
+
+
+</dd>
+
+
+
+
+<dt><a name="split"></a><strong>split</strong>&nbsp;(str, pat, max, regex)</dt>
+<dd>
+
+Splits given string on a defined separator sequence and return a table 
+containing the resulting substrings. 
+The optional max parameter specifies the number of bytes to process, 
+regardless of the actual length of the given string. The optional last 
+parameter, regex, specifies whether the separator sequence is 
+nterpreted as regular expression. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String value containing the data to split up
+       </li>
+       
+       <li>
+         pat: String with separator pattern (optional, defaults to "\n")
+       </li>
+       
+       <li>
+         max: Maximum times to split (optional)
+       </li>
+       
+       <li>
+         regex: Boolean indicating whether to interpret the separator 
+                                       pattern as regular expression (optional, default is false)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing the resulting substrings
+
+
+
+</dd>
+
+
+
+
+<dt><a name="strip_bytecode"></a><strong>strip_bytecode</strong>&nbsp;(code)</dt>
+<dd>
+
+Strips unnescessary lua bytecode from given string. 
+Information like line numbers and debugging numbers will be discarded. 
+Original version by Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         code: String value containing the original lua byte code
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String value containing the stripped lua byte code
+
+
+
+</dd>
+
+
+
+
+<dt><a name="striptags"></a><strong>striptags</strong>&nbsp;(value)</dt>
+<dd>
+
+Strip HTML tags from given string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         value: String containing the HTML text
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String with HTML tags stripped of
+
+
+
+</dd>
+
+
+
+
+<dt><a name="threadlocal"></a><strong>threadlocal</strong>&nbsp;()</dt>
+<dd>
+
+Create a new or get an already existing thread local store associated with 
+the current active coroutine. 
+A thread local store is private a table object 
+whose values can't be accessed from outside of the running coroutine. 
+
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table value representing the corresponding thread local store
+
+
+
+</dd>
+
+
+
+
+<dt><a name="trim"></a><strong>trim</strong>&nbsp;(str)</dt>
+<dd>
+
+Remove leading and trailing whitespace from given string value. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String value containing whitespace padded data
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String value with leading and trailing space removed
+
+
+
+</dd>
+
+
+
+
+<dt><a name="ubus"></a><strong>ubus</strong>&nbsp;(object, method, values)</dt>
+<dd>
+
+Issue an ubus call. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         object: String containing the ubus object to call
+       </li>
+       
+       <li>
+         method: String containing the ubus method to call
+       </li>
+       
+       <li>
+         values: Table containing the values to pass
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containin the ubus result
+
+
+
+</dd>
+
+
+
+
+<dt><a name="update"></a><strong>update</strong>&nbsp;(t, updates)</dt>
+<dd>
+
+Update values in given table with the values from the second given table. 
+Both table are - in fact - merged together. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: Table which should be updated
+       </li>
+       
+       <li>
+         updates: Table containing the values to update
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Always nil
+
+
+
+</dd>
+
+
+
+
+<dt><a name="urldecode"></a><strong>urldecode</strong>&nbsp;(str, decode_plus)</dt>
+<dd>
+
+Decode an URL-encoded string - optionally decoding the "+" sign to space. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: Input string in x-www-urlencoded format
+       </li>
+       
+       <li>
+         decode_plus: Decode "+" signs to spaces if true (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+The decoded string
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urlencode">
+               urlencode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="urlencode"></a><strong>urlencode</strong>&nbsp;(str)</dt>
+<dd>
+
+URL-encode given string. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         str: String to encode
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+String containing the encoded data
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#urldecode">
+               urldecode
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="vspairs"></a><strong>vspairs</strong>&nbsp;(t)</dt>
+<dd>
+
+Return a key, value iterator for the given table. 
+The table pairs are sorted by value. 
+
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         t: The table to iterate
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Function value containing the corresponding iterator
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.CHANGELOG.html b/package/luci/documentation/api/modules/nixio.CHANGELOG.html
new file mode 100644 (file)
index 0000000..7d98747
--- /dev/null
@@ -0,0 +1,286 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li><strong>nixio.CHANGELOG</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.CHANGELOG</code></h1>
+
+<p>
+ Changes and improvements.</p>
+
+
+
+
+
+
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#0.2">0.2</a></td>
+       <td class="summary">
+ Initial Release.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#0.3">0.3</a></td>
+       <td class="summary">
+ Service Release.</td>
+       </tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="0.2"></a><strong>0.2</strong></dt>
+<dd>
+ Initial Release. 
+ <ul> 
+ <li>Initial Release</li>   
+ </ul>
+
+
+
+</dd>
+
+
+<dt><a name="0.3"></a><strong>0.3</strong></dt>
+<dd>
+ Service Release. 
+ <ul> 
+ <li>Added getifaddrs() function.</li> 
+ <li>Added getsockopt(), setsockopt(), getsockname() and getpeername() 
+ directly to TLS-socket objects unifying the socket interface.</li> 
+ <li>Added support for CyaSSL as cryptographical backend.</li> 
+ <li>Added support for x509 certificates in DER format.</li> 
+ <li>Added support for splice() in UnifiedIO.copyz().</li> 
+ <li>Added interface to inject chunks into UnifiedIO.linesource() buffer.</li> 
+ <li>Changed TLS behaviour to explicitely separate servers and clients.</li> 
+ <li>Fixed usage of signed datatype breaking Base64 decoding.</li> 
+ <li>Fixed namespace clashes for nixio.fs.</li> 
+ <li>Fixed splice() support for some exotic C libraries.</li> 
+ <li>Reconfigure axTLS cryptographical provider and mark it as obsolete.</li> 
+ </ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.CryptoHash.html b/package/luci/documentation/api/modules/nixio.CryptoHash.html
new file mode 100644 (file)
index 0000000..7d2f48b
--- /dev/null
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li><strong>nixio.CryptoHash</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.CryptoHash</code></h1>
+
+<p>
+ Cryptographical Hash and HMAC object.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#CryptoHash.final">CryptoHash:final</a>&nbsp;()</td>
+       <td class="summary">
+ Finalize the hash and return the digest.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#CryptoHash.update">CryptoHash:update</a>&nbsp;(chunk)</td>
+       <td class="summary">
+ Add another chunk of data to be hashed.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="CryptoHash.final"></a><strong>CryptoHash:final</strong>&nbsp;()</dt>
+<dd>
+
+ Finalize the hash and return the digest.
+
+
+
+
+
+<h3>Usage:</h3>
+You cannot call update on a hash object that was already finalized 
+ you can however call final multiple times to get the digest.
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>hexdigest
+       
+       <li>buffer containing binary digest
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CryptoHash.update"></a><strong>CryptoHash:update</strong>&nbsp;(chunk)</dt>
+<dd>
+
+ Add another chunk of data to be hashed.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         chunk: Chunk of data
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+CryptoHash object (self)
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.File.html b/package/luci/documentation/api/modules/nixio.File.html
new file mode 100644 (file)
index 0000000..7a7500a
--- /dev/null
@@ -0,0 +1,669 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li><strong>nixio.File</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.File</code></h1>
+
+<p>
+ Large File Object. 
+ Large file operations are supported up to 52 bits if the Lua number type is 
+ double (default).</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#File.close">File:close</a>&nbsp;()</td>
+       <td class="summary">
+ Close the file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.fileno">File:fileno</a>&nbsp;()</td>
+       <td class="summary">
+ Get the number of the filedescriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.lock">File:lock</a>&nbsp;(command, length)</td>
+       <td class="summary">
+ Apply or test a lock on the file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.read">File:read</a>&nbsp;(length)</td>
+       <td class="summary">
+ Read from a file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.seek">File:seek</a>&nbsp;(offset, whence)</td>
+       <td class="summary">
+ Reposition read / write offset of the file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.setblocking">File:setblocking</a>&nbsp;(blocking)</td>
+       <td class="summary">
+ (POSIX) Set the blocking mode of the file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.stat">File:stat</a>&nbsp;(field)</td>
+       <td class="summary">
+ Get file status and attributes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.sync">File:sync</a>&nbsp;(data_only)</td>
+       <td class="summary">
+ Synchronizes the file with the storage device.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.tell">File:tell</a>&nbsp;()</td>
+       <td class="summary">
+ Return the current read / write offset of the file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#File.write">File:write</a>&nbsp;(buffer, offset, length)</td>
+       <td class="summary">
+ Write to the file descriptor.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="File.close"></a><strong>File:close</strong>&nbsp;()</dt>
+<dd>
+
+ Close the file descriptor.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.fileno"></a><strong>File:fileno</strong>&nbsp;()</dt>
+<dd>
+
+ Get the number of the filedescriptor.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+file descriptor number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.lock"></a><strong>File:lock</strong>&nbsp;(command, length)</dt>
+<dd>
+
+ Apply or test a lock on the file.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         command: Locking Command ["lock", "tlock", "ulock", "test"]
+       </li>
+       
+       <li>
+         length: Amount of Bytes to lock from current offset (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls lockf() on POSIX and _locking() on Windows.
+       
+       <li>The "lock" command is blocking, "tlock" is non-blocking, 
+ "ulock" unlocks and "test" only tests for the lock.
+       
+       <li>The "test" command is not available on Windows.
+       
+       <li>Locks are by default advisory on POSIX, but mandatory on Windows.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.read"></a><strong>File:read</strong>&nbsp;(length)</dt>
+<dd>
+
+ Read from a file descriptor.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all requested data 
+ is read at once especially when dealing with pipes. 
+ You have to check the return value - the length of the buffer actually read - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>The length of the return buffer is limited by the (compile time)  
+ nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default). 
+ Any read request greater than that will be safely truncated to this value.  
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+buffer containing data successfully read
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.seek"></a><strong>File:seek</strong>&nbsp;(offset, whence)</dt>
+<dd>
+
+ Reposition read / write offset of the file descriptor. 
+ The seek will be done either from the beginning of the file or relative 
+ to the current position or relative to the end.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         offset: File Offset
+       </li>
+       
+       <li>
+         whence: Starting point [<strong>"set"</strong>, "cur", "end"]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls lseek().
+
+
+
+<h3>Return value:</h3>
+new (absolute) offset position
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.setblocking"></a><strong>File:setblocking</strong>&nbsp;(blocking)</dt>
+<dd>
+
+ (POSIX) Set the blocking mode of the file descriptor.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         blocking: (boolean)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.stat"></a><strong>File:stat</strong>&nbsp;(field)</dt>
+<dd>
+
+ Get file status and attributes.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         field: Only return a specific field, not the whole table (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls fstat().
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>atime = Last access timestamp</li> 
+ <li>blksize = Blocksize (POSIX only)</li> 
+ <li>blocks = Blocks used (POSIX only)</li> 
+ <li>ctime = Creation timestamp</li> 
+ <li>dev = Device ID</li> 
+ <li>gid = Group ID</li> 
+ <li>ino = Inode</li> 
+ <li>modedec = Mode converted into a decimal number</li> 
+ <li>modestr = Mode as string as returned by <code>ls -l</code></li> 
+ <li>mtime = Last modification timestamp</li> 
+ <li>nlink = Number of links</li> 
+ <li>rdev = Device ID (if special file)</li> 
+ <li>size = Size in bytes</li> 
+ <li>type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]</li> 
+ <li>uid = User ID</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.sync"></a><strong>File:sync</strong>&nbsp;(data_only)</dt>
+<dd>
+
+ Synchronizes the file with the storage device. 
+ Returns when the file is successfully written to the disk.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         data_only: Do not synchronize the metadata. (optional, boolean)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls fsync() when data_only equals false 
+ otherwise fdatasync(), on Windows _commit() is used instead.
+       
+       <li>fdatasync() is only supported by Linux and Solaris. For other systems 
+ the <em>data_only</em> parameter is ignored and fsync() is always called.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.tell"></a><strong>File:tell</strong>&nbsp;()</dt>
+<dd>
+
+ Return the current read / write offset of the file descriptor.
+
+
+
+
+
+<h3>Usage:</h3>
+This function calls lseek() with offset 0 from the current position.
+
+
+
+<h3>Return value:</h3>
+offset position
+
+
+
+</dd>
+
+
+
+
+<dt><a name="File.write"></a><strong>File:write</strong>&nbsp;(buffer, offset, length)</dt>
+<dd>
+
+ Write to the file descriptor.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all data 
+ in the buffer is written at once especially when dealing with pipes. 
+ You have to check the return value - the number of bytes actually written - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>Unlike standard Lua indexing the lowest offset and default is 0.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.README.html b/package/luci/documentation/api/modules/nixio.README.html
new file mode 100644 (file)
index 0000000..22dd793
--- /dev/null
@@ -0,0 +1,370 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li><strong>nixio.README</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.README</code></h1>
+
+<p>
+ General Information.</p>
+
+
+
+
+
+
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#Errorhandling">Errorhandling</a></td>
+       <td class="summary">
+ General error handling information.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Functions">Functions</a></td>
+       <td class="summary">
+ Function conventions.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Platforms">Platforms</a></td>
+       <td class="summary">
+ Platform information.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLS-Crypto">TLS-Crypto</a></td>
+       <td class="summary">
+ Cryptography and TLS libraries.</td>
+       </tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Errorhandling"></a><strong>Errorhandling</strong></dt>
+<dd>
+ General error handling information. 
+ <ul> 
+ <li> Most of the functions available in this library may fail. If any error 
+ occurs the function returns <strong>nil or false</strong>, an error code 
+ (usually errno) and an additional error message text (if avaialable).</li> 
+ <li>At the moment false is only returned when a non-blocking I/O function 
+ fails with EAGAIN, EWOULDBLOCK or WSAEWOULDBLOCK for any others nil is 
+ returned as first parameter. Therefore you can use false to write portable 
+ non-blocking I/O applications.</li> 
+ <li>Note that the function documentation does only mention the return values 
+ in case of a successful operation.</li>  
+ <li>You can find a table of common error numbers and other useful constants 
+ like signal numbers in <strong>nixio.const</strong> e.g. nixio.const.EINVAL, 
+ nixio.const.SIGTERM, etc. For portability there is a second error constant 
+ table <strong>nixio.const_sock</strong> for socket error codes. This might 
+ be important if you are dealing with Windows applications, on POSIX however 
+ const_sock is just an alias for const.</li> 
+ <li>With some exceptions - which are explicitely stated in the function 
+ documentation - all blocking functions are signal-protected and will not fail 
+ with EINTR.</li> 
+ <li>On POSIX the SIGPIPE signal will be set to ignore upon initialization. 
+ You should restore the default behaviour or set a custom signal handler 
+ in your program after loading nixio if you need this behaviour.</li> 
+ </ul>
+
+
+
+</dd>
+
+
+<dt><a name="Functions"></a><strong>Functions</strong></dt>
+<dd>
+ Function conventions. 
+ <br />In general all functions are namend and behave like their POSIX API 
+ counterparts - where applicable - applying the following rules: 
+ <ul> 
+ <li>Functions should be named like the underlying POSIX API function omitting 
+ prefixes or suffixes - especially when placed in an object-context ( 
+ lockf -> File:lock, fsync -> File:sync, dup2 -> dup, ...)</li> 
+ <li>If you are unclear about the behaviour of a function you should consult 
+ your OS API documentation (e.g. the manpages).</li> 
+ <li>If the name is significantly different from the POSIX-function, the 
+ underlying function(s) are stated in the documentation.</li> 
+ <li>Parameters should reflect those of the C-API, buffer length arguments and  
+ by-reference parameters should be omitted for practical purposes.</li> 
+ <li>If a C function accepts a bitfield as parameter, it should be translated 
+ into lower case string flags representing the flags if the bitfield is the  
+ last parameter and also omitting prefixes or suffixes. (e.g.  waitpid 
+ (pid, &s, WNOHANG | WUNTRACED) -> waitpid(pid, "nohang", "untraced"),  
+ getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) -> 
+ Socket:getopt("socket", "reuseaddr"), etc.) </li> 
+ <li>If it is not applicable to provide a string representation of the 
+ bitfield a bitfield generator helper is provided. It is named FUNCTION_flags. 
+ (open("/tmp/test", O_RDONLY | O_NONBLOCK) -> open("/tmp/test", open_flags( 
+ "rdonly", "nonblock")))</li>   
+ </ul>
+
+
+
+</dd>
+
+
+<dt><a name="Platforms"></a><strong>Platforms</strong></dt>
+<dd>
+ Platform information. 
+ <ul> 
+ <li>The minimum platform requirements are a decent POSIX 2001 support. 
+ Builds are more or less tested on Linux, Solaris and FreeBSD. Builds for 
+ Windows XP SP1 and later can be compiled with MinGW either from Windows 
+ itself or using the MinGW cross-compiler. Earlier versions of Windows are not 
+ supported.</li> 
+ <li>In general all functions which don't have any remarks  
+ in their documentation are available on all platforms.</li> 
+ <li>Functions with a (POSIX), (Linux) or similar prefix are only available 
+ on these specific platforms. Same appplies to parameters of functions 
+ with a similar suffix.</li> 
+ <li>Some functions might have limitations on some platforms. This should 
+ be stated in the documentation. Please also consult your OS API  
+ documentation.</li>    
+ </ul>
+
+
+
+</dd>
+
+
+<dt><a name="TLS-Crypto"></a><strong>TLS-Crypto</strong></dt>
+<dd>
+ Cryptography and TLS libraries. 
+ <ul> 
+ <li>Currently 3 underlying cryptography libraries are supported: openssl, 
+ cyassl and axTLS. The name of the library in use is written to  
+ <strong>nixio.tls_provider</strong></li> 
+ <li>You should whenever possible use openssl or cyassl as axTLS has only  
+ limited support. It does not provide support for non-blocking sockets and 
+ is probably less audited than the other ones.</li> 
+ <li>As the supported Windows versions are not suitable for embedded devices 
+ axTLS is at the moment not supported on Windows.</li>   
+ </ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.Socket.html b/package/luci/documentation/api/modules/nixio.Socket.html
new file mode 100644 (file)
index 0000000..1850991
--- /dev/null
@@ -0,0 +1,1029 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li><strong>nixio.Socket</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.Socket</code></h1>
+
+<p>
+ Socket Object. 
+ Supports IPv4, IPv6 and UNIX (POSIX only) families.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.accept">Socket:accept</a>&nbsp;()</td>
+       <td class="summary">
+ Accept a connection on the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.bind">Socket:bind</a>&nbsp;(host, port)</td>
+       <td class="summary">
+ Bind the socket to a network address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.close">Socket:close</a>&nbsp;()</td>
+       <td class="summary">
+ Close the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.connect">Socket:connect</a>&nbsp;(host, port)</td>
+       <td class="summary">
+ Connect the socket to a network address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.fileno">Socket:fileno</a>&nbsp;()</td>
+       <td class="summary">
+ Get the number of the filedescriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.getopt">Socket:getopt</a>&nbsp;(level, option)</td>
+       <td class="summary">
+ Get a socket option.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.getpeername">Socket:getpeername</a>&nbsp;()</td>
+       <td class="summary">
+ Get the peer address of a socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.getsockname">Socket:getsockname</a>&nbsp;()</td>
+       <td class="summary">
+ Get the local address of a socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.listen">Socket:listen</a>&nbsp;(backlog)</td>
+       <td class="summary">
+ Listen for connections on the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.read  ">Socket:read  </a>&nbsp;(length)</td>
+       <td class="summary">
+ Receive a message on the socket (This is an alias for recv).</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.recv  ">Socket:recv  </a>&nbsp;(length)</td>
+       <td class="summary">
+ Receive a message on the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.recvfrom">Socket:recvfrom</a>&nbsp;(length)</td>
+       <td class="summary">
+ Receive a message on the socket including the senders source address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.send">Socket:send</a>&nbsp;(buffer, offset, length)</td>
+       <td class="summary">
+ Send a message on the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.sendto">Socket:sendto</a>&nbsp;(buffer, host, port, offset, length)</td>
+       <td class="summary">
+ Send a message on the socket specifying the destination.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.setblocking">Socket:setblocking</a>&nbsp;(blocking)</td>
+       <td class="summary">
+ Set the blocking mode of the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.setopt">Socket:setopt</a>&nbsp;(level, option, value)</td>
+       <td class="summary">
+ Set a socket option.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.shutdown">Socket:shutdown</a>&nbsp;(how)</td>
+       <td class="summary">
+ Shut down part of a full-duplex connection.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#Socket.write">Socket:write</a>&nbsp;(buffer, offset, length)</td>
+       <td class="summary">
+ Send a message on the socket (This is an alias for send).</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Socket.accept"></a><strong>Socket:accept</strong>&nbsp;()</dt>
+<dd>
+
+ Accept a connection on the socket.
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>Socket Object
+       
+       <li>Peer IP-Address
+       
+       <li>Peer Port
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.bind"></a><strong>Socket:bind</strong>&nbsp;(host, port)</dt>
+<dd>
+
+ Bind the socket to a network address.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: Host (optional, default: all addresses)
+       </li>
+       
+       <li>
+         port: Port or service description
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls getaddrinfo() and bind() but NOT listen().
+       
+       <li>If <em>host</em> is a domain name it will be looked up and bind()  
+ tries the IP-Addresses in the order returned by the DNS resolver 
+ until the bind succeeds. 
+       
+       <li>UNIX sockets ignore the <em>port</em>, 
+ and interpret <em>host</em> as a socket path.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.close"></a><strong>Socket:close</strong>&nbsp;()</dt>
+<dd>
+
+ Close the socket.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.connect"></a><strong>Socket:connect</strong>&nbsp;(host, port)</dt>
+<dd>
+
+ Connect the socket to a network address.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: Hostname or IP-Address (optional, default: localhost)
+       </li>
+       
+       <li>
+         port: Port or service description
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls getaddrinfo() and connect().
+       
+       <li>If <em>host</em> is a domain name it will be looked up and connect()  
+ tries the IP-Addresses in the order returned by the DNS resolver 
+ until the connect succeeds. 
+       
+       <li>UNIX sockets ignore the <em>port</em>, 
+ and interpret <em>host</em> as a socket path.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.fileno"></a><strong>Socket:fileno</strong>&nbsp;()</dt>
+<dd>
+
+ Get the number of the filedescriptor.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+file descriptor number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.getopt"></a><strong>Socket:getopt</strong>&nbsp;(level, option)</dt>
+<dd>
+
+ Get a socket option.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         level: Level ["socket", "tcp", "ip", "ipv6"]
+       </li>
+       
+       <li>
+         option: Option        ["keepalive", "reuseaddr", "sndbuf", "rcvbuf",  
+ "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute",  
+ "bindtodevice", "error", "oobinline", "cork" (TCP),  "nodelay" (TCP), 
+ "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" 
+ (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" 
+ (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.getpeername"></a><strong>Socket:getpeername</strong>&nbsp;()</dt>
+<dd>
+
+ Get the peer address of a socket.
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>IP-Address
+       
+       <li>Port
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.getsockname"></a><strong>Socket:getsockname</strong>&nbsp;()</dt>
+<dd>
+
+ Get the local address of a socket.
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>IP-Address
+       
+       <li>Port
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.listen"></a><strong>Socket:listen</strong>&nbsp;(backlog)</dt>
+<dd>
+
+ Listen for connections on the socket.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         backlog: Length of queue for pending connections
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.read  "></a><strong>Socket:read  </strong>&nbsp;(length)</dt>
+<dd>
+
+ Receive a message on the socket (This is an alias for recv). 
+ See the recvfrom description for more details.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+buffer containing data successfully read
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Socket.recvfrom">
+               Socket:recvfrom
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Socket.recv  "></a><strong>Socket:recv  </strong>&nbsp;(length)</dt>
+<dd>
+
+ Receive a message on the socket. 
+ This function is identical to recvfrom except that it does not return  
+ the sender's source address. See the recvfrom description for more details.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+buffer containing data successfully read
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Socket.recvfrom">
+               Socket:recvfrom
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Socket.recvfrom"></a><strong>Socket:recvfrom</strong>&nbsp;(length)</dt>
+<dd>
+
+ Receive a message on the socket including the senders source address.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all requested data 
+ is read at once. 
+ You have to check the return value - the length of the buffer actually read - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>The length of the return buffer is limited by the (compile time)  
+ nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default). 
+ Any read request greater than that will be safely truncated to this value.  
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>buffer containing data successfully read
+       
+       <li>host                IP-Address of the sender
+       
+       <li>port                Port of the sender
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.send"></a><strong>Socket:send</strong>&nbsp;(buffer, offset, length)</dt>
+<dd>
+
+ Send a message on the socket. 
+ This function is identical to sendto except for the missing destination 
+ parameters. See the sendto description for a detailed description.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Socket.sendto">
+               Socket:sendto
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="Socket.sendto"></a><strong>Socket:sendto</strong>&nbsp;(buffer, host, port, offset, length)</dt>
+<dd>
+
+ Send a message on the socket specifying the destination.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         host: Target IP-Address
+       </li>
+       
+       <li>
+         port: Target Port
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all data 
+ in the buffer is written at once. 
+ You have to check the return value - the number of bytes actually written - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>Unlike standard Lua indexing the lowest offset and default is 0.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.setblocking"></a><strong>Socket:setblocking</strong>&nbsp;(blocking)</dt>
+<dd>
+
+ Set the blocking mode of the socket.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         blocking: (boolean)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.setopt"></a><strong>Socket:setopt</strong>&nbsp;(level, option, value)</dt>
+<dd>
+
+ Set a socket option.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         level: Level ["socket", "tcp", "ip", "ipv6"]
+       </li>
+       
+       <li>
+         option: Option        ["keepalive", "reuseaddr", "sndbuf", "rcvbuf",  
+ "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute",  
+ "bindtodevice", "error", "oobinline", "cork" (TCP),  "nodelay" (TCP), 
+ "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" 
+ (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" 
+ (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)]
+       </li>
+       
+       <li>
+         value: Value
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.shutdown"></a><strong>Socket:shutdown</strong>&nbsp;(how)</dt>
+<dd>
+
+ Shut down part of a full-duplex connection.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         how: (optional, default: rdwr) ["rdwr", "rd", "wr"] 
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Socket.write"></a><strong>Socket:write</strong>&nbsp;(buffer, offset, length)</dt>
+<dd>
+
+ Send a message on the socket (This is an alias for send). 
+ See the sendto description for a detailed description.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#Socket.sendto">
+               Socket:sendto
+       </a>
+       
+</ul>
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.TLSContext.html b/package/luci/documentation/api/modules/nixio.TLSContext.html
new file mode 100644 (file)
index 0000000..c84d318
--- /dev/null
@@ -0,0 +1,475 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li><strong>nixio.TLSContext</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.TLSContext</code></h1>
+
+<p>
+ Transport Layer Security Context Object.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.create">TLSContext:create</a>&nbsp;(socket)</td>
+       <td class="summary">
+ Create a TLS Socket from a socket descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.set_cert">TLSContext:set_cert</a>&nbsp;(path)</td>
+       <td class="summary">
+ Assign a PEM certificate to this context.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.set_ciphers">TLSContext:set_ciphers</a>&nbsp;(cipherlist)</td>
+       <td class="summary">
+ Set the available ciphers for this context.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.set_key">TLSContext:set_key</a>&nbsp;(path)</td>
+       <td class="summary">
+ Assign a PEM private key to this context.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.set_verify">TLSContext:set_verify</a>&nbsp;(flag1, ...)</td>
+       <td class="summary">
+ Set the verification flags of this context.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSContext.set_verify_depth">TLSContext:set_verify_depth</a>&nbsp;(depth)</td>
+       <td class="summary">
+ Set the verification depth of this context.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="TLSContext.create"></a><strong>TLSContext:create</strong>&nbsp;(socket)</dt>
+<dd>
+
+ Create a TLS Socket from a socket descriptor.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         socket: Socket Object
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+TLSSocket Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSContext.set_cert"></a><strong>TLSContext:set_cert</strong>&nbsp;(path)</dt>
+<dd>
+
+ Assign a PEM certificate to this context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Certificate File path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_CTX_use_certificate_chain_file().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSContext.set_ciphers"></a><strong>TLSContext:set_ciphers</strong>&nbsp;(cipherlist)</dt>
+<dd>
+
+ Set the available ciphers for this context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         cipherlist: String containing a list of ciphers
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_CTX_set_cipher_list().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSContext.set_key"></a><strong>TLSContext:set_key</strong>&nbsp;(path)</dt>
+<dd>
+
+ Assign a PEM private key to this context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Private Key File path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_CTX_use_PrivateKey_file().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSContext.set_verify"></a><strong>TLSContext:set_verify</strong>&nbsp;(flag1, ...)</dt>
+<dd>
+
+ Set the verification flags of this context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         flag1: First Flag     ["none", "peer", "verify_fail_if_no_peer_cert",  
+ "client_once"]
+       </li>
+       
+       <li>
+         ...: More Flags       [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_CTX_set_verify().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSContext.set_verify_depth"></a><strong>TLSContext:set_verify_depth</strong>&nbsp;(depth)</dt>
+<dd>
+
+ Set the verification depth of this context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         depth: Depth
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_CTX_set_verify_depth().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.TLSSocket.html b/package/luci/documentation/api/modules/nixio.TLSSocket.html
new file mode 100644 (file)
index 0000000..5d6098a
--- /dev/null
@@ -0,0 +1,571 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li><strong>nixio.TLSSocket</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.TLSSocket</code></h1>
+
+<p>
+ TLS Socket Object. 
+ TLS Sockets contain the underlying socket and context in the fields 
+ "socket" and "context".</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.accept">TLSSocket:accept</a>&nbsp;()</td>
+       <td class="summary">
+ Wait for a TLS handshake from a client.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.connect">TLSSocket:connect</a>&nbsp;()</td>
+       <td class="summary">
+ Initiate the TLS handshake as client with the server.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.read  ">TLSSocket:read  </a>&nbsp;(length)</td>
+       <td class="summary">
+ Receive a message on the socket (This is an alias for recv).</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.recv">TLSSocket:recv</a>&nbsp;(length)</td>
+       <td class="summary">
+ Receive a message on the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.send">TLSSocket:send</a>&nbsp;(buffer, offset, length)</td>
+       <td class="summary">
+ Send a message to the socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.shutdown">TLSSocket:shutdown</a>&nbsp;()</td>
+       <td class="summary">
+ Shut down the TLS connection.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#TLSSocket.write">TLSSocket:write</a>&nbsp;(buffer, offset, length)</td>
+       <td class="summary">
+ Send a message on the socket (This is an alias for send).</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="TLSSocket.accept"></a><strong>TLSSocket:accept</strong>&nbsp;()</dt>
+<dd>
+
+ Wait for a TLS handshake from a client.
+
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls SSL_accept().
+       
+       <li>You have to call either connect or accept before transmitting data.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#TLSSocket.connect">
+               TLSSocket:connect
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.connect"></a><strong>TLSSocket:connect</strong>&nbsp;()</dt>
+<dd>
+
+ Initiate the TLS handshake as client with the server.
+
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls SSL_connect().
+       
+       <li>You have to call either connect or accept before transmitting data.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#TLSSocket.accept">
+               TLSSocket:accept
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.read  "></a><strong>TLSSocket:read  </strong>&nbsp;(length)</dt>
+<dd>
+
+ Receive a message on the socket (This is an alias for recv). 
+ See the recv description for more details.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+buffer containing data successfully read
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#TLSSocket.recv">
+               TLSSocket:recv
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.recv"></a><strong>TLSSocket:recv</strong>&nbsp;(length)</dt>
+<dd>
+
+ Receive a message on the socket.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Amount of data to read (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls SSL_read().
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all requested data 
+ is read at once. 
+ You have to check the return value - the length of the buffer actually read - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>The length of the return buffer is limited by the (compile time)  
+ nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default). 
+ Any read request greater than that will be safely truncated to this value.  
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+buffer containing data successfully read
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.send"></a><strong>TLSSocket:send</strong>&nbsp;(buffer, offset, length)</dt>
+<dd>
+
+ Send a message to the socket.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function calls SSL_write().
+       
+       <li><strong>Warning:</strong> It is not guaranteed that all data 
+ in the buffer is written at once. 
+ You have to check the return value - the number of bytes actually written - 
+ or use the safe IO functions in the high-level IO utility module.
+       
+       <li>Unlike standard Lua indexing the lowest offset and default is 0.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.shutdown"></a><strong>TLSSocket:shutdown</strong>&nbsp;()</dt>
+<dd>
+
+ Shut down the TLS connection.
+
+
+
+
+
+<h3>Usage:</h3>
+This function calls SSL_shutdown().
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="TLSSocket.write"></a><strong>TLSSocket:write</strong>&nbsp;(buffer, offset, length)</dt>
+<dd>
+
+ Send a message on the socket (This is an alias for send). 
+ See the send description for a detailed description.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer holding the data to be written.
+       </li>
+       
+       <li>
+         offset: Offset to start reading the buffer from. (optional)
+       </li>
+       
+       <li>
+         length: Length of chunk to read from the buffer. (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number of bytes written
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#TLSSocket.send">
+               TLSSocket:send
+       </a>
+       
+</ul>
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.UnifiedIO.html b/package/luci/documentation/api/modules/nixio.UnifiedIO.html
new file mode 100644 (file)
index 0000000..6410ffb
--- /dev/null
@@ -0,0 +1,763 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li><strong>nixio.UnifiedIO</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Object Instance <code>nixio.UnifiedIO</code></h1>
+
+<p>
+ Unified high-level I/O utility API for Files, Sockets and TLS-Sockets. 
+ These functions are added to the object function tables by doing <strong> 
+ require "nixio.util"</strong>, can be used on all nixio IO  Descriptors and 
+ are based on the shared low-level read() and write() functions.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.blocksource">UnifiedIO:blocksource</a>&nbsp;(blocksize, limit)</td>
+       <td class="summary">
+ Create a block-based iterator.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.close">UnifiedIO:close</a>&nbsp;()</td>
+       <td class="summary">
+ Close the descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.copy">UnifiedIO:copy</a>&nbsp;(fdout, size)</td>
+       <td class="summary">
+ Copy data from the current descriptor to another one.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.copyz">UnifiedIO:copyz</a>&nbsp;(fdout, size)</td>
+       <td class="summary">
+ Copy data from the current descriptor to another one using kernel-space 
+ copying if possible.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.is_file">UnifiedIO:is_file</a>&nbsp;()</td>
+       <td class="summary">
+ Test whether the I/O-Descriptor is a file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.is_socket">UnifiedIO:is_socket</a>&nbsp;()</td>
+       <td class="summary">
+ Test whether the I/O-Descriptor is a socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.is_tls_socket">UnifiedIO:is_tls_socket</a>&nbsp;()</td>
+       <td class="summary">
+ Test whether the I/O-Descriptor is a TLS socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.linesource">UnifiedIO:linesource</a>&nbsp;(limit)</td>
+       <td class="summary">
+ Create a line-based iterator.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.readall">UnifiedIO:readall</a>&nbsp;(length)</td>
+       <td class="summary">
+ Read a block of data and wait until all data is available.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.sink">UnifiedIO:sink</a>&nbsp;(close_when_done)</td>
+       <td class="summary">
+ Create a sink.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#UnifiedIO.writeall">UnifiedIO:writeall</a>&nbsp;(block)</td>
+       <td class="summary">
+ Write a block of data and wait until all data is written.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="UnifiedIO.blocksource"></a><strong>UnifiedIO:blocksource</strong>&nbsp;(blocksize, limit)</dt>
+<dd>
+
+ Create a block-based iterator.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         blocksize: Advisory blocksize (optional)
+       </li>
+       
+       <li>
+         limit: Amount of data to consume (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the low-level read function of the descriptor.
+       
+       <li>The blocksize given is only advisory and to be seen as an upper limit, 
+ if an underlying read returns less bytes the chunk is nevertheless returned.
+       
+       <li>If the limit parameter is omitted, the iterator returns data 
+ until an end-of-file, end-of-stream, connection shutdown or similar happens.
+       
+       <li>The iterator will not buffer so it is safe to mix with calls to read.
+       
+       <li>If the descriptor is non-blocking the iterator may fail with EAGAIN.
+       
+       <li>The iterator can be used as an LTN12 source.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+Block-based Iterator
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.close"></a><strong>UnifiedIO:close</strong>&nbsp;()</dt>
+<dd>
+
+ Close the descriptor.
+
+
+
+
+
+<h3>Usage:</h3>
+If the descriptor is a TLS-socket the underlying descriptor is 
+ closed without touching the TLS connection.
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.copy"></a><strong>UnifiedIO:copy</strong>&nbsp;(fdout, size)</dt>
+<dd>
+
+ Copy data from the current descriptor to another one.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         fdout: Target Descriptor
+       </li>
+       
+       <li>
+         size: Bytes to copy (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the blocksource function of the source descriptor 
+ and the sink function of the target descriptor.
+       
+       <li>If the limit parameter is omitted, data is copied 
+ until an end-of-file, end-of-stream, connection shutdown or similar happens.
+       
+       <li>If the descriptor is non-blocking the function may fail with EAGAIN.
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>bytes that were successfully written if no error occurred
+       
+       <li>- reserved for error code -
+       
+       <li>- reserved for error message -
+       
+       <li>bytes that were successfully written even if an error occurred
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.copyz"></a><strong>UnifiedIO:copyz</strong>&nbsp;(fdout, size)</dt>
+<dd>
+
+ Copy data from the current descriptor to another one using kernel-space 
+ copying if possible.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         fdout: Target Descriptor
+       </li>
+       
+       <li>
+         size: Bytes to copy (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the sendfile() syscall to copy the data or the 
+ blocksource function of the source descriptor and the sink function 
+ of the target descriptor as a fallback mechanism.
+       
+       <li>If the limit parameter is omitted, data is copied 
+ until an end-of-file, end-of-stream, connection shutdown or similar happens.
+       
+       <li>If the descriptor is non-blocking the function may fail with EAGAIN.
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>bytes that were successfully written if no error occurred
+       
+       <li>- reserved for error code -
+       
+       <li>- reserved for error message -
+       
+       <li>bytes that were successfully written even if an error occurred
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.is_file"></a><strong>UnifiedIO:is_file</strong>&nbsp;()</dt>
+<dd>
+
+ Test whether the I/O-Descriptor is a file. 
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+boolean
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.is_socket"></a><strong>UnifiedIO:is_socket</strong>&nbsp;()</dt>
+<dd>
+
+ Test whether the I/O-Descriptor is a socket. 
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+boolean
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.is_tls_socket"></a><strong>UnifiedIO:is_tls_socket</strong>&nbsp;()</dt>
+<dd>
+
+ Test whether the I/O-Descriptor is a TLS socket. 
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+boolean
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.linesource"></a><strong>UnifiedIO:linesource</strong>&nbsp;(limit)</dt>
+<dd>
+
+ Create a line-based iterator. 
+ Lines may end with either \n or \r\n, these control chars are not included 
+ in the return value.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         limit: Line limit
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the low-level read function of the descriptor.
+       
+       <li><strong>Note:</strong> This function uses an internal buffer to read 
+ ahead. Do NOT mix calls to read(all) and the returned iterator. If you want 
+ to stop reading line-based and want to use the read(all) functions instead 
+ you can pass "true" to the iterator which will flush the buffer  
+ and return the bufferd data.
+       
+       <li>If the limit parameter is omitted, this function uses the nixio 
+ buffersize (8192B by default).
+       
+       <li>If the descriptor is non-blocking the iterator may fail with EAGAIN.
+       
+       <li>The iterator can be used as an LTN12 source.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+Line-based Iterator
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.readall"></a><strong>UnifiedIO:readall</strong>&nbsp;(length)</dt>
+<dd>
+
+ Read a block of data and wait until all data is available.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         length: Bytes to read (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the low-level read function of the descriptor.
+       
+       <li>If the length parameter is omitted, this function returns all data 
+ that can be read before an end-of-file, end-of-stream, connection shutdown 
+ or similar happens.
+       
+       <li>If the descriptor is non-blocking this function may fail with EAGAIN.
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>data that was successfully read if no error occurred
+       
+       <li>- reserved for error code -
+       
+       <li>- reserved for error message -
+       
+       <li>data that was successfully read even if an error occurred
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.sink"></a><strong>UnifiedIO:sink</strong>&nbsp;(close_when_done)</dt>
+<dd>
+
+ Create a sink. 
+ This sink will simply write all data that it receives and optionally 
+ close the descriptor afterwards.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         close_when_done: (optional, boolean)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the writeall function of the descriptor.
+       
+       <li>If the descriptor is non-blocking the sink may fail with EAGAIN.
+       
+       <li>The iterator can be used as an LTN12 sink.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+Sink
+
+
+
+</dd>
+
+
+
+
+<dt><a name="UnifiedIO.writeall"></a><strong>UnifiedIO:writeall</strong>&nbsp;(block)</dt>
+<dd>
+
+ Write a block of data and wait until all data is written.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         block: Bytes to write
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function uses the low-level write function of the descriptor.
+       
+       <li>If the descriptor is non-blocking this function may fail with EAGAIN.
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>bytes that were successfully written if no error occurred
+       
+       <li>- reserved for error code -
+       
+       <li>- reserved for error message -
+       
+       <li>bytes that were successfully written even if an error occurred
+       
+</ol>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.bin.html b/package/luci/documentation/api/modules/nixio.bin.html
new file mode 100644 (file)
index 0000000..48e6fcd
--- /dev/null
@@ -0,0 +1,423 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li><strong>nixio.bin</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.bin</code></h1>
+
+<p>
+ Binary operations and conversion.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#b64decode">b64decode</a>&nbsp;(buffer)</td>
+       <td class="summary">
+ Base64 decode a given buffer.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#b64encode">b64encode</a>&nbsp;(buffer)</td>
+       <td class="summary">
+ Base64 encode a given buffer.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#crc32">crc32</a>&nbsp;(buffer, initial)</td>
+       <td class="summary">
+ Calculate the CRC32 value of a buffer.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#hexlify">hexlify</a>&nbsp;(buffer)</td>
+       <td class="summary">
+ Return a hexadecimal ASCII represantation of the content of a buffer.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#unhexlify">unhexlify</a>&nbsp;(hexvalue)</td>
+       <td class="summary">
+ Return a binary buffer from a hexadecimal ASCII representation.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="b64decode"></a><strong>b64decode</strong>&nbsp;(buffer)</dt>
+<dd>
+
+ Base64 decode a given buffer.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Base 64 Encoded data
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+binary data
+
+
+
+</dd>
+
+
+
+
+<dt><a name="b64encode"></a><strong>b64encode</strong>&nbsp;(buffer)</dt>
+<dd>
+
+ Base64 encode a given buffer.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+base64 encoded buffer
+
+
+
+</dd>
+
+
+
+
+<dt><a name="crc32"></a><strong>crc32</strong>&nbsp;(buffer, initial)</dt>
+<dd>
+
+ Calculate the CRC32 value of a buffer. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer
+       </li>
+       
+       <li>
+         initial: Initial CRC32 value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+crc32 value
+
+
+
+</dd>
+
+
+
+
+<dt><a name="hexlify"></a><strong>hexlify</strong>&nbsp;(buffer)</dt>
+<dd>
+
+ Return a hexadecimal ASCII represantation of the content of a buffer. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         buffer: Buffer
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+representation using characters [0-9a-f]
+
+
+
+</dd>
+
+
+
+
+<dt><a name="unhexlify"></a><strong>unhexlify</strong>&nbsp;(hexvalue)</dt>
+<dd>
+
+ Return a binary buffer from a hexadecimal ASCII representation. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         hexvalue: representation using characters [0-9a-f]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+binary data
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.bit.html b/package/luci/documentation/api/modules/nixio.bit.html
new file mode 100644 (file)
index 0000000..4197363
--- /dev/null
@@ -0,0 +1,740 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li><strong>nixio.bit</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.bit</code></h1>
+
+<p>
+ Bitfield operators and mainpulation functions. 
+ Can be used as a drop-in replacement for bitlib.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#arshift">arshift</a>&nbsp;(oper, shift)</td>
+       <td class="summary">
+ Arithmetically right shift a number.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#band">band</a>&nbsp;(oper1, oper2, ...)</td>
+       <td class="summary">
+ Bitwise AND several numbers.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#bnot">bnot</a>&nbsp;(oper)</td>
+       <td class="summary">
+ Invert given number.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#bor">bor</a>&nbsp;(oper1, oper2, ...)</td>
+       <td class="summary">
+ Bitwise OR several numbers.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#bxor">bxor</a>&nbsp;(oper1, oper2, ...)</td>
+       <td class="summary">
+ Bitwise XOR several numbers.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#cast">cast</a>&nbsp;(oper)</td>
+       <td class="summary">
+ Cast a number to the bit-operating range.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#check">check</a>&nbsp;(bitfield, flag1, ...)</td>
+       <td class="summary">
+ Checks whether given flags are set in a bitfield.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#div">div</a>&nbsp;(oper1, oper2, ...)</td>
+       <td class="summary">
+ Integer division of 2 or more numbers.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#lshift">lshift</a>&nbsp;(oper, shift)</td>
+       <td class="summary">
+ Left shift a number.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#rshift">rshift</a>&nbsp;(oper, shift)</td>
+       <td class="summary">
+ Right shift a number.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#set">set</a>&nbsp;(bitfield, flag1, ...)</td>
+       <td class="summary">
+ Sets one or more flags of a bitfield.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#unset">unset</a>&nbsp;(bitfield, flag1, ...)</td>
+       <td class="summary">
+ Unsets one or more flags of a bitfield.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="arshift"></a><strong>arshift</strong>&nbsp;(oper, shift)</dt>
+<dd>
+
+ Arithmetically right shift a number.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper: number
+       </li>
+       
+       <li>
+         shift: bits to shift 
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="band"></a><strong>band</strong>&nbsp;(oper1, oper2, ...)</dt>
+<dd>
+
+ Bitwise AND several numbers.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper1: First Operand
+       </li>
+       
+       <li>
+         oper2: Second Operand
+       </li>
+       
+       <li>
+         ...: More Operands
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="bnot"></a><strong>bnot</strong>&nbsp;(oper)</dt>
+<dd>
+
+ Invert given number.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper: Operand
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="bor"></a><strong>bor</strong>&nbsp;(oper1, oper2, ...)</dt>
+<dd>
+
+ Bitwise OR several numbers.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper1: First Operand
+       </li>
+       
+       <li>
+         oper2: Second Operand
+       </li>
+       
+       <li>
+         ...: More Operands
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="bxor"></a><strong>bxor</strong>&nbsp;(oper1, oper2, ...)</dt>
+<dd>
+
+ Bitwise XOR several numbers.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper1: First Operand
+       </li>
+       
+       <li>
+         oper2: Second Operand
+       </li>
+       
+       <li>
+         ...: More Operands
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="cast"></a><strong>cast</strong>&nbsp;(oper)</dt>
+<dd>
+
+ Cast a number to the bit-operating range.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper: number
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="check"></a><strong>check</strong>&nbsp;(bitfield, flag1, ...)</dt>
+<dd>
+
+ Checks whether given flags are set in a bitfield.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         bitfield: Bitfield
+       </li>
+       
+       <li>
+         flag1: First Flag
+       </li>
+       
+       <li>
+         ...: More Flags
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true when all flags are set, otherwise false
+
+
+
+</dd>
+
+
+
+
+<dt><a name="div"></a><strong>div</strong>&nbsp;(oper1, oper2, ...)</dt>
+<dd>
+
+ Integer division of 2 or more numbers.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper1: Operand 1
+       </li>
+       
+       <li>
+         oper2: Operand 2
+       </li>
+       
+       <li>
+         ...: More Operands
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="lshift"></a><strong>lshift</strong>&nbsp;(oper, shift)</dt>
+<dd>
+
+ Left shift a number.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper: number
+       </li>
+       
+       <li>
+         shift: bits to shift 
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="rshift"></a><strong>rshift</strong>&nbsp;(oper, shift)</dt>
+<dd>
+
+ Right shift a number.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oper: number
+       </li>
+       
+       <li>
+         shift: bits to shift 
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+number
+
+
+
+</dd>
+
+
+
+
+<dt><a name="set"></a><strong>set</strong>&nbsp;(bitfield, flag1, ...)</dt>
+<dd>
+
+ Sets one or more flags of a bitfield.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         bitfield: Bitfield
+       </li>
+       
+       <li>
+         flag1: First Flag
+       </li>
+       
+       <li>
+         ...: More Flags
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+altered bitfield
+
+
+
+</dd>
+
+
+
+
+<dt><a name="unset"></a><strong>unset</strong>&nbsp;(bitfield, flag1, ...)</dt>
+<dd>
+
+ Unsets one or more flags of a bitfield.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         bitfield: Bitfield
+       </li>
+       
+       <li>
+         flag1: First Flag
+       </li>
+       
+       <li>
+         ...: More Flags
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+altered bitfield
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.crypto.html b/package/luci/documentation/api/modules/nixio.crypto.html
new file mode 100644 (file)
index 0000000..b91fe28
--- /dev/null
@@ -0,0 +1,315 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li><strong>nixio.crypto</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.crypto</code></h1>
+
+<p>
+ Cryptographical library.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.crypto.hash">hash</a>&nbsp;(algo)</td>
+       <td class="summary">
+ Create a hash object.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.crypto.hmac">hmac</a>&nbsp;(algo, key)</td>
+       <td class="summary">
+ Create a HMAC object.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="nixio.crypto.hash"></a><strong>hash</strong>&nbsp;(algo)</dt>
+<dd>
+
+ Create a hash object. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         algo: Algorithm ["sha1", "md5"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+CryptoHash Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.crypto.hmac"></a><strong>hmac</strong>&nbsp;(algo, key)</dt>
+<dd>
+
+ Create a HMAC object. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         algo: Algorithm ["sha1", "md5"]
+       </li>
+       
+       <li>
+         key: HMAC-Key
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+CryptoHash Object
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.fs.html b/package/luci/documentation/api/modules/nixio.fs.html
new file mode 100644 (file)
index 0000000..c9d3459
--- /dev/null
@@ -0,0 +1,1558 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.html">nixio</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li><strong>nixio.fs</strong></li>
+       
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio.fs</code></h1>
+
+<p>
+ Low-level and high-level filesystem manipulation library.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.access">access</a>&nbsp;(path, mode1, ...)</td>
+       <td class="summary">
+ Check user's permission on a file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.basename">basename</a>&nbsp;(path)</td>
+       <td class="summary">
+ Strip the directory part from a path.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.chmod">chmod</a>&nbsp;(path, mode)</td>
+       <td class="summary">
+ Change the file mode.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.chown">chown</a>&nbsp;(path, user, group)</td>
+       <td class="summary">
+ (POSIX) Change owner and group of a file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.copy">copy</a>&nbsp;(src, dest)</td>
+       <td class="summary">
+ Copy a file, directory or symlink non-recursively preserving file mode, 
+ timestamps, owner and group.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.copyr">copyr</a>&nbsp;(src, dest)</td>
+       <td class="summary">
+ Copy a file, directory or symlink recursively preserving file mode, 
+ timestamps, owner and group.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.datacopy">datacopy</a>&nbsp;(src, dest, limit)</td>
+       <td class="summary">
+ Copy data between files.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.dir">dir</a>&nbsp;(path)</td>
+       <td class="summary">
+ Iterate over the entries of a directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.dirname">dirname</a>&nbsp;(path)</td>
+       <td class="summary">
+ Strip the base from a path.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.glob">glob</a>&nbsp;(pattern)</td>
+       <td class="summary">
+ (POSIX) Find pathnames matching a pattern.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.lchown">lchown</a>&nbsp;(path, user, group)</td>
+       <td class="summary">
+ (POSIX) Change owner and group of a file and do not resolve 
+ if target is a symlink.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.link">link</a>&nbsp;(oldpath, newpath)</td>
+       <td class="summary">
+ Create a hard link.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.lstat">lstat</a>&nbsp;(path, field)</td>
+       <td class="summary">
+ Get file status and attributes and do not resolve if target is a symlink.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.mkdir">mkdir</a>&nbsp;(path, mode)</td>
+       <td class="summary">
+ Create a new directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.mkdirr">mkdirr</a>&nbsp;(dest, mode)</td>
+       <td class="summary">
+ Create a directory and all needed parent directories recursively.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.mkfifo">mkfifo</a>&nbsp;(path, mode)</td>
+       <td class="summary">
+ (POSIX) Create a FIFO (named pipe).</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.move">move</a>&nbsp;(src, dest)</td>
+       <td class="summary">
+ Rename a file, directory or symlink non-recursively across filesystems.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.mover">mover</a>&nbsp;(src, dest)</td>
+       <td class="summary">
+ Rename a file, directory or symlink recursively across filesystems.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.readfile">readfile</a>&nbsp;(path, limit)</td>
+       <td class="summary">
+ Read the contents of a file into a buffer.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.readlink">readlink</a>&nbsp;(path)</td>
+       <td class="summary">
+ (POSIX) Read the target of a symbolic link.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.realpath">realpath</a>&nbsp;(path)</td>
+       <td class="summary">
+ Return the cannonicalized absolute pathname.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.remove">remove</a>&nbsp;(path)</td>
+       <td class="summary">
+ Remove a file or directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.rename">rename</a>&nbsp;(src, dest)</td>
+       <td class="summary">
+ Renames a file or directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.rmdir">rmdir</a>&nbsp;(path)</td>
+       <td class="summary">
+ Remove an empty directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.stat">stat</a>&nbsp;(path, field)</td>
+       <td class="summary">
+ Get file status and attributes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.statvfs">statvfs</a>&nbsp;(path)</td>
+       <td class="summary">
+ (POSIX) Get filesystem statistics.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.symlink">symlink</a>&nbsp;(oldpath, newpath)</td>
+       <td class="summary">
+ (POSIX) Create a symbolic link.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.unlink">unlink</a>&nbsp;(path)</td>
+       <td class="summary">
+ Delete a name and - if no links are left - the associated file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.utimes">utimes</a>&nbsp;(path, actime, mtime)</td>
+       <td class="summary">
+ Change file last access and last modification time.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fs.writefile">writefile</a>&nbsp;(path, data)</td>
+       <td class="summary">
+ Write a buffer into a file truncating the file first.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="nixio.fs.access"></a><strong>access</strong>&nbsp;(path, mode1, ...)</dt>
+<dd>
+
+ Check user's permission on a file.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         mode1: First Mode to check ["f", "r", "w", "x"]
+       </li>
+       
+       <li>
+         ...: More Modes to check      [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.basename"></a><strong>basename</strong>&nbsp;(path)</dt>
+<dd>
+
+ Strip the directory part from a path.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function cannot fail and will never return nil.
+
+
+
+<h3>Return value:</h3>
+basename
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.chmod"></a><strong>chmod</strong>&nbsp;(path, mode)</dt>
+<dd>
+
+ Change the file mode.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         mode: File mode        
+ [decimal mode number, "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]"]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>Windows only supports setting the write-protection through the 
+ "Writable to others" bit.
+       
+       <li><strong>Notice:</strong> The mode-flag for the functions 
+ open, mkdir, mkfifo are affected by the umask. 
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="">
+               umask
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.chown"></a><strong>chown</strong>&nbsp;(path, user, group)</dt>
+<dd>
+
+ (POSIX) Change owner and group of a file.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         user: User ID or Username             (optional)
+       </li>
+       
+       <li>
+         group: Group ID or Groupname  (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.copy"></a><strong>copy</strong>&nbsp;(src, dest)</dt>
+<dd>
+
+ Copy a file, directory or symlink non-recursively preserving file mode, 
+ timestamps, owner and group.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source path
+       </li>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The destination must always be a full destination path e.g. do not 
+ omit the basename even if source and destination basename are equal. 
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.copyr"></a><strong>copyr</strong>&nbsp;(src, dest)</dt>
+<dd>
+
+ Copy a file, directory or symlink recursively preserving file mode, 
+ timestamps, owner and group.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source path
+       </li>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The destination must always be a full destination path e.g. do not 
+ omit the basename even if source and destination basename are equal. 
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.datacopy"></a><strong>datacopy</strong>&nbsp;(src, dest, limit)</dt>
+<dd>
+
+ Copy data between files.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source file path
+       </li>
+       
+       <li>
+         dest: Destination file path
+       </li>
+       
+       <li>
+         limit: Maximum bytes to copy (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.dir"></a><strong>dir</strong>&nbsp;(path)</dt>
+<dd>
+
+ Iterate over the entries of a directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The special entries "." and ".." are omitted.
+
+
+
+<h3>Return value:</h3>
+directory iterator returning one entry per call
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.dirname"></a><strong>dirname</strong>&nbsp;(path)</dt>
+<dd>
+
+ Strip the base from a path.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function cannot fail and will never return nil.
+
+
+
+<h3>Return value:</h3>
+dirname
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.glob"></a><strong>glob</strong>&nbsp;(pattern)</dt>
+<dd>
+
+ (POSIX) Find pathnames matching a pattern.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pattern: Pattern
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>path iterator
+       
+       <li>number of matches
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.lchown"></a><strong>lchown</strong>&nbsp;(path, user, group)</dt>
+<dd>
+
+ (POSIX) Change owner and group of a file and do not resolve 
+ if target is a symlink.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         user: User ID or Username             (optional)
+       </li>
+       
+       <li>
+         group: Group ID or Groupname  (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.link"></a><strong>link</strong>&nbsp;(oldpath, newpath)</dt>
+<dd>
+
+ Create a hard link.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oldpath: Path
+       </li>
+       
+       <li>
+         newpath: Path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function calls link() on POSIX and CreateHardLink() on Windows.
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.lstat"></a><strong>lstat</strong>&nbsp;(path, field)</dt>
+<dd>
+
+ Get file status and attributes and do not resolve if target is a symlink.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         field: Only return a specific field, not the whole table (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing attributes (see stat for a detailed description)
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.fs.stat">
+               stat
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.mkdir"></a><strong>mkdir</strong>&nbsp;(path, mode)</dt>
+<dd>
+
+ Create a new directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         mode: File mode (optional, see chmod and umask)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.fs.chmod">
+               chmod
+       </a>
+       
+       <li><a href="">
+               umask
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.mkdirr"></a><strong>mkdirr</strong>&nbsp;(dest, mode)</dt>
+<dd>
+
+ Create a directory and all needed parent directories recursively. 
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+       <li>
+         mode: File mode (optional, see chmod and umask)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.fs.chmod">
+               chmod
+       </a>
+       
+       <li><a href="">
+               umask
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.mkfifo"></a><strong>mkfifo</strong>&nbsp;(path, mode)</dt>
+<dd>
+
+ (POSIX) Create a FIFO (named pipe).
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         mode: File mode (optional, see chmod and umask)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.fs.chmod">
+               chmod
+       </a>
+       
+       <li><a href="">
+               umask
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.move"></a><strong>move</strong>&nbsp;(src, dest)</dt>
+<dd>
+
+ Rename a file, directory or symlink non-recursively across filesystems.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source path
+       </li>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The destination must always be a full destination path e.g. do not 
+ omit the basename even if source and destination basename are equal. 
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.mover"></a><strong>mover</strong>&nbsp;(src, dest)</dt>
+<dd>
+
+ Rename a file, directory or symlink recursively across filesystems.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source path
+       </li>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The destination must always be a full destination path e.g. do not 
+ omit the basename even if source and destination basename are equal. 
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.readfile"></a><strong>readfile</strong>&nbsp;(path, limit)</dt>
+<dd>
+
+ Read the contents of a file into a buffer.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         limit: Maximum bytes to read (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+file contents
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.readlink"></a><strong>readlink</strong>&nbsp;(path)</dt>
+<dd>
+
+ (POSIX) Read the target of a symbolic link.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+target path
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.realpath"></a><strong>realpath</strong>&nbsp;(path)</dt>
+<dd>
+
+ Return the cannonicalized absolute pathname.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+absolute path
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.remove"></a><strong>remove</strong>&nbsp;(path)</dt>
+<dd>
+
+ Remove a file or directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.rename"></a><strong>rename</strong>&nbsp;(src, dest)</dt>
+<dd>
+
+ Renames a file or directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         src: Source path
+       </li>
+       
+       <li>
+         dest: Destination path
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+It is normally not possible to rename files across filesystems.
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.rmdir"></a><strong>rmdir</strong>&nbsp;(path)</dt>
+<dd>
+
+ Remove an empty directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.stat"></a><strong>stat</strong>&nbsp;(path, field)</dt>
+<dd>
+
+ Get file status and attributes.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         field: Only return a specific field, not the whole table (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>atime = Last access timestamp</li> 
+ <li>blksize = Blocksize (POSIX only)</li> 
+ <li>blocks = Blocks used (POSIX only)</li> 
+ <li>ctime = Creation timestamp</li> 
+ <li>dev = Device ID</li> 
+ <li>gid = Group ID</li> 
+ <li>ino = Inode</li> 
+ <li>modedec = Mode converted into a decimal number</li> 
+ <li>modestr = Mode as string as returned by <code>ls -l</code></li> 
+ <li>mtime = Last modification timestamp</li> 
+ <li>nlink = Number of links</li> 
+ <li>rdev = Device ID (if special file)</li> 
+ <li>size = Size in bytes</li> 
+ <li>type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]</li> 
+ <li>uid = User ID</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.statvfs"></a><strong>statvfs</strong>&nbsp;(path)</dt>
+<dd>
+
+ (POSIX) Get filesystem statistics.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path to any file within the filesystem.
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>bavail = available blocks</li> 
+ <li>bfree = free blocks</li> 
+ <li>blocks = number of fragments</li> 
+ <li>frsize = fragment size</li> 
+ <li>favail = available inodes</li> 
+ <li>ffree = free inodes</li> 
+ <li>files = inodes</li> 
+ <li>flag = flags</li> 
+ <li>fsid = filesystem ID</li> 
+ <li>namemax = maximum filename length</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.symlink"></a><strong>symlink</strong>&nbsp;(oldpath, newpath)</dt>
+<dd>
+
+ (POSIX) Create a symbolic link.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oldpath: Path
+       </li>
+       
+       <li>
+         newpath: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.unlink"></a><strong>unlink</strong>&nbsp;(path)</dt>
+<dd>
+
+ Delete a name and - if no links are left - the associated file.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.utimes"></a><strong>utimes</strong>&nbsp;(path, actime, mtime)</dt>
+<dd>
+
+ Change file last access and last modification time.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         actime: Last access timestamp (optional, default: current time)
+       </li>
+       
+       <li>
+         mtime: Last modification timestamp (optional, default: actime)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fs.writefile"></a><strong>writefile</strong>&nbsp;(path, data)</dt>
+<dd>
+
+ Write a buffer into a file truncating the file first.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Path
+       </li>
+       
+       <li>
+         data: Data to write
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/api/modules/nixio.html b/package/luci/documentation/api/modules/nixio.html
new file mode 100644 (file)
index 0000000..65294a6
--- /dev/null
@@ -0,0 +1,2401 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+       <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+       <div id="product_logo"></div>
+       <div id="product_name"><big><b></b></big></div>
+       <div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+       
+       <li><a href="../index.html">Index</a></li>
+       
+</ul>
+
+
+<!-- Module list -->
+
+<h1>Modules</h1>
+<ul>
+
+       <li>
+               <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.html">luci.http</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.date.html">luci.http.date</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.i18n.html">luci.i18n</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.html">luci.ip</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.json.html">luci.json</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.html">luci.jsonc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.model.uci.html">luci.model.uci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.html">luci.rpcc</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.html">luci.sys</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.init.html">luci.sys.init</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.net.html">luci.sys.net</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.process.html">luci.sys.process</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.user.html">luci.sys.user</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
+       </li>
+
+       <li>
+               <a href="../modules/luci.util.html">luci.util</a>
+       </li>
+
+       <li><strong>nixio</strong></li>
+       
+       <li>
+               <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.File.html">nixio.File</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.README.html">nixio.README</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.Socket.html">nixio.Socket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bin.html">nixio.bin</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.bit.html">nixio.bit</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.crypto.html">nixio.crypto</a>
+       </li>
+
+       <li>
+               <a href="../modules/nixio.fs.html">nixio.fs</a>
+       </li>
+
+</ul>
+
+
+
+<!-- File list -->
+
+
+
+
+
+
+
+</div><!-- id="navigation" -->
+
+<div id="content">
+
+<h1>Class <code>nixio</code></h1>
+
+<p>
+ General POSIX IO library.</p>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.bind">bind</a>&nbsp;(host, port, family, socktype)</td>
+       <td class="summary">
+ Create a new socket and bind it to a network address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.chdir">chdir</a>&nbsp;(path)</td>
+       <td class="summary">
+ Change the working directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.closelog">closelog</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Close the connection to the system logger.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.connect">connect</a>&nbsp;(host, port, family, socktype)</td>
+       <td class="summary">
+ Create a new socket and connect to a network address.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.crypt">crypt</a>&nbsp;(key, salt)</td>
+       <td class="summary">
+ (POSIX) Encrypt a user password.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.dup">dup</a>&nbsp;(oldfd, newfd)</td>
+       <td class="summary">
+ Duplicate a file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.errno">errno</a>&nbsp;()</td>
+       <td class="summary">
+ Get the last system error code.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.exec">exec</a>&nbsp;(executable, ...)</td>
+       <td class="summary">
+ Execute a file to replace the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.exece">exece</a>&nbsp;(executable, arguments, environment)</td>
+       <td class="summary">
+ Execute a file with a custom environment to replace the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.execp">execp</a>&nbsp;(executable, ...)</td>
+       <td class="summary">
+ Invoke the shell and execute a file to replace the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.fork">fork</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Clone the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getaddrinfo">getaddrinfo</a>&nbsp;(host, family, service)</td>
+       <td class="summary">
+ Look up a hostname and service via DNS.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getcwd">getcwd</a>&nbsp;()</td>
+       <td class="summary">
+ Get the current working directory.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getenv">getenv</a>&nbsp;(variable)</td>
+       <td class="summary">
+ Get the current environment table or a specific environment variable.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getgid">getgid</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Get the group id of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getgr">getgr</a>&nbsp;(group)</td>
+       <td class="summary">
+ (POSIX) Get all or a specific user group.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getifaddrs">getifaddrs</a>&nbsp;()</td>
+       <td class="summary">
+ (Linux, BSD) Get a list of available network interfaces and their addresses.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getnameinfo">getnameinfo</a>&nbsp;(ipaddr)</td>
+       <td class="summary">
+ Reverse look up an IP-Address via DNS.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getpid">getpid</a>&nbsp;()</td>
+       <td class="summary">
+ Get the ID of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getppid">getppid</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Get the parent process id of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getproto">getproto</a>&nbsp;(proto)</td>
+       <td class="summary">
+ Get all or a specifc proto entry.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getprotobyname">getprotobyname</a>&nbsp;(name)</td>
+       <td class="summary">
+ Get protocol entry by name.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getprotobynumber">getprotobynumber</a>&nbsp;(proto)</td>
+       <td class="summary">
+ Get protocol entry by number.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getpw">getpw</a>&nbsp;(user)</td>
+       <td class="summary">
+ (POSIX) Get all or a specific user account.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getsp">getsp</a>&nbsp;(user)</td>
+       <td class="summary">
+ (Linux, Solaris) Get all or a specific shadow password entry.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.getuid">getuid</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Get the user id of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.kill">kill</a>&nbsp;(target, signal)</td>
+       <td class="summary">
+ (POSIX) Send a signal to one or more processes.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.nanosleep">nanosleep</a>&nbsp;(seconds, nanoseconds)</td>
+       <td class="summary">
+ Sleep for a specified amount of time.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.nice">nice</a>&nbsp;(nice)</td>
+       <td class="summary">
+ (POSIX) Change priority of current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.open">open</a>&nbsp;(path, flags, mode)</td>
+       <td class="summary">
+ Open a file.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.open_flags">open_flags</a>&nbsp;(flag1, ...)</td>
+       <td class="summary">
+ Generate flags for a call to open().</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.openlog">openlog</a>&nbsp;(ident, flag1, ...)</td>
+       <td class="summary">
+ (POSIX) Open a connection to the system logger.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.pipe">pipe</a>&nbsp;()</td>
+       <td class="summary">
+ Create a pipe.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.poll">poll</a>&nbsp;(fds, timeout)</td>
+       <td class="summary">
+ Wait for some event on a file descriptor.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.poll_flags">poll_flags</a>&nbsp;(mode1, ...)</td>
+       <td class="summary">
+ Generate events-bitfield or parse revents-bitfield for poll.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.sendfile">sendfile</a>&nbsp;(socket, file, length)</td>
+       <td class="summary">
+ (POSIX) Send data from a file to a socket in kernel-space.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.setenv">setenv</a>&nbsp;(variable, value)</td>
+       <td class="summary">
+ Set or unset a environment variable.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.setgid">setgid</a>&nbsp;(gid)</td>
+       <td class="summary">
+ (POSIX) Set the group id of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.setlogmask">setlogmask</a>&nbsp;(priority)</td>
+       <td class="summary">
+ (POSIX) Set the logmask of the system logger for current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.setsid">setsid</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Create a new session and set the process group ID.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.setuid">setuid</a>&nbsp;(gid)</td>
+       <td class="summary">
+ (POSIX) Set the user id of the current process.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.signal">signal</a>&nbsp;(signal, handler)</td>
+       <td class="summary">
+ Ignore or use set the default handler for a signal.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.socket">socket</a>&nbsp;(domain, type)</td>
+       <td class="summary">
+ Create a new socket.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.splice">splice</a>&nbsp;(fdin, fdout, length, flags)</td>
+       <td class="summary">
+ (Linux) Send data from / to a pipe in kernel-space.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.splice_flags">splice_flags</a>&nbsp;(flag1, ...)</td>
+       <td class="summary">
+ (Linux) Generate a flag bitfield for a call to splice.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.strerror">strerror</a>&nbsp;(errno)</td>
+       <td class="summary">
+ Get the error message for the corresponding error code.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.sysinfo">sysinfo</a>&nbsp;()</td>
+       <td class="summary">
+ (Linux) Get overall system statistics.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.syslog">syslog</a>&nbsp;(priority)</td>
+       <td class="summary">
+ (POSIX) Write a message to the system logger.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.times">times</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Get process times.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.tls">tls</a>&nbsp;(mode)</td>
+       <td class="summary">
+ Create a new TLS context.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.umask">umask</a>&nbsp;(mask)</td>
+       <td class="summary">
+ Sets the file mode creation mask.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.uname">uname</a>&nbsp;()</td>
+       <td class="summary">
+ (POSIX) Get information about current system and kernel.</td>
+       </tr>
+
+       <tr>
+       <td class="name" nowrap><a href="#nixio.waitpid">waitpid</a>&nbsp;(pid, flag1, ...)</td>
+       <td class="summary">
+ (POSIX) Wait for a process to change state.</td>
+       </tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="nixio.bind"></a><strong>bind</strong>&nbsp;(host, port, family, socktype)</dt>
+<dd>
+
+ Create a new socket and bind it to a network address. 
+ This function is a shortcut for calling nixio.socket and then bind() 
+ on the socket object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: Hostname or IP-Address (optional, default: all addresses)
+       </li>
+       
+       <li>
+         port: Port or service description
+       </li>
+       
+       <li>
+         family: Address family [<strong>"any"</strong>, "inet", "inet6"]
+       </li>
+       
+       <li>
+         socktype: Socket Type [<strong>"stream"</strong>, "dgram"]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This functions calls getaddrinfo(), socket(), 
+ setsockopt() and bind() but NOT listen().
+       
+       <li>The <em>reuseaddr</em>-option is automatically set before binding.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+Socket Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.chdir"></a><strong>chdir</strong>&nbsp;(path)</dt>
+<dd>
+
+ Change the working directory.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: New working directory
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.closelog"></a><strong>closelog</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Close the connection to the system logger.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.connect"></a><strong>connect</strong>&nbsp;(host, port, family, socktype)</dt>
+<dd>
+
+ Create a new socket and connect to a network address. 
+ This function is a shortcut for calling nixio.socket and then connect() 
+ on the socket object.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: Hostname or IP-Address (optional, default: localhost)
+       </li>
+       
+       <li>
+         port: Port or service description
+       </li>
+       
+       <li>
+         family: Address family [<strong>"any"</strong>, "inet", "inet6"]
+       </li>
+       
+       <li>
+         socktype: Socket Type [<strong>"stream"</strong>, "dgram"]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This functions calls getaddrinfo(), socket() and connect().
+
+
+
+<h3>Return value:</h3>
+Socket Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.crypt"></a><strong>crypt</strong>&nbsp;(key, salt)</dt>
+<dd>
+
+ (POSIX) Encrypt a user password.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         key: Key
+       </li>
+       
+       <li>
+         salt: Salt
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+password hash
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.dup"></a><strong>dup</strong>&nbsp;(oldfd, newfd)</dt>
+<dd>
+
+ Duplicate a file descriptor.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         oldfd: Old descriptor [File Object, Socket Object (POSIX only)]
+       </li>
+       
+       <li>
+         newfd: New descriptor to serve as copy (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This funcation calls dup2() if <em>newfd</em> is set, otherwise dup().
+
+
+
+<h3>Return value:</h3>
+File Object of new descriptor
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.errno"></a><strong>errno</strong>&nbsp;()</dt>
+<dd>
+
+ Get the last system error code.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Error code
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.exec"></a><strong>exec</strong>&nbsp;(executable, ...)</dt>
+<dd>
+
+ Execute a file to replace the current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         executable: Executable
+       </li>
+       
+       <li>
+         ...: Parameters
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>The name of the executable is automatically passed as argv[0]
+       
+       <li>This function does not return on success.
+       
+</ul>
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.exece"></a><strong>exece</strong>&nbsp;(executable, arguments, environment)</dt>
+<dd>
+
+ Execute a file with a custom environment to replace the current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         executable: Executable
+       </li>
+       
+       <li>
+         arguments: Argument Table
+       </li>
+       
+       <li>
+         environment: Environment Table (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>The name of the executable is automatically passed as argv[0]
+       
+       <li>This function does not return on success.
+       
+</ul>
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.execp"></a><strong>execp</strong>&nbsp;(executable, ...)</dt>
+<dd>
+
+ Invoke the shell and execute a file to replace the current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         executable: Executable
+       </li>
+       
+       <li>
+         ...: Parameters
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>The name of the executable is automatically passed as argv[0]
+       
+       <li>This function does not return on success.
+       
+</ul>
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.fork"></a><strong>fork</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Clone the current process.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+the child process id for the parent process, 0 for the child process
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getaddrinfo"></a><strong>getaddrinfo</strong>&nbsp;(host, family, service)</dt>
+<dd>
+
+ Look up a hostname and service via DNS.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         host: hostname to lookup      (optional)
+       </li>
+       
+       <li>
+         family: address family [<strong>"any"</strong>, "inet", "inet6"]  
+       </li>
+       
+       <li>
+         service: service name or port (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing one or more tables containing: <ul> 
+ <li>family = ["inet", "inet6"]</li> 
+ <li>socktype = ["stream", "dgram", "raw"]</li> 
+ <li>address = Resolved IP-Address</li> 
+ <li>port = Resolved Port (if service was given)</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getcwd"></a><strong>getcwd</strong>&nbsp;()</dt>
+<dd>
+
+ Get the current working directory.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+workign directory
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getenv"></a><strong>getenv</strong>&nbsp;(variable)</dt>
+<dd>
+
+ Get the current environment table or a specific environment variable.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         variable: Variable (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+environment table or single environment variable
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getgid"></a><strong>getgid</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Get the group id of the current process.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+process group id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getgr"></a><strong>getgr</strong>&nbsp;(group)</dt>
+<dd>
+
+ (POSIX) Get all or a specific user group.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         group: Group ID or groupname (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>name = Group Name</li> 
+ <li>gid = Group ID</li> 
+ <li>passwd = Password</li> 
+ <li>mem = {Member #1, Member #2, ...}</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getifaddrs"></a><strong>getifaddrs</strong>&nbsp;()</dt>
+<dd>
+
+ (Linux, BSD) Get a list of available network interfaces and their addresses.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing one or more tables containing: <ul> 
+ <li>name = Interface Name</li> 
+ <li>family = ["inet", "inet6", "packet"]</li> 
+ <li>addr = Interface Address (IPv4, IPv6, MAC, ...)</li> 
+ <li>broadaddr = Broadcast Address</li> 
+ <li>dstaddr = Destination Address (Point-to-Point)</li> 
+ <li>netmask = Netmask (if available)</li> 
+ <li>prefix = Prefix (if available)</li> 
+ <li>flags = Table of interface flags (up, multicast, loopback, ...)</li> 
+ <li>data = Statistics (Linux, "packet"-family)</li> 
+ <li>hatype = Hardware Type Identifier (Linix, "packet"-family)</li> 
+ <li>ifindex = Interface Index (Linux, "packet"-family)</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getnameinfo"></a><strong>getnameinfo</strong>&nbsp;(ipaddr)</dt>
+<dd>
+
+ Reverse look up an IP-Address via DNS.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ipaddr: IPv4 or IPv6-Address
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+FQDN
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getpid"></a><strong>getpid</strong>&nbsp;()</dt>
+<dd>
+
+ Get the ID of the current process.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+process id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getppid"></a><strong>getppid</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Get the parent process id of the current process.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+parent process id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getproto"></a><strong>getproto</strong>&nbsp;(proto)</dt>
+<dd>
+
+ Get all or a specifc proto entry.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         proto: protocol number or name to lookup (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table (or if no parameter is given, a table of tables) 
+                  containing the following fields: <ul> 
+ <li>name = Protocol Name</li> 
+ <li>proto = Protocol Number</li> 
+ <li>aliases = Table of alias names</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getprotobyname"></a><strong>getprotobyname</strong>&nbsp;(name)</dt>
+<dd>
+
+ Get protocol entry by name.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         name: protocol name to lookup
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function returns nil if the given protocol is unknown.
+
+
+
+<h3>Return value:</h3>
+Table containing the following fields: <ul> 
+ <li>name = Protocol Name</li> 
+ <li>proto = Protocol Number</li> 
+ <li>aliases = Table of alias names</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getprotobynumber"></a><strong>getprotobynumber</strong>&nbsp;(proto)</dt>
+<dd>
+
+ Get protocol entry by number.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         proto: protocol number to lookup
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+This function returns nil if the given protocol is unknown.
+
+
+
+<h3>Return value:</h3>
+Table containing the following fields: <ul> 
+ <li>name = Protocol Name</li> 
+ <li>proto = Protocol Number</li> 
+ <li>aliases = Table of alias names</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getpw"></a><strong>getpw</strong>&nbsp;(user)</dt>
+<dd>
+
+ (POSIX) Get all or a specific user account.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         user: User ID or username (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>name = Name</li> 
+ <li>uid = ID</li> 
+ <li>gid = Group ID</li> 
+ <li>passwd = Password</li> 
+ <li>dir = Home directory</li> 
+ <li>gecos = Information</li> 
+ <li>shell = Shell</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getsp"></a><strong>getsp</strong>&nbsp;(user)</dt>
+<dd>
+
+ (Linux, Solaris) Get all or a specific shadow password entry.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         user: username (optional)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>namp = Name</li> 
+ <li>expire = Expiration Date</li> 
+ <li>flag = Flags</li> 
+ <li>inact = Inactivity Date</li> 
+ <li>lstchg = Last change</li> 
+ <li>max = Maximum</li> 
+ <li>min = Minimum</li> 
+ <li>warn = Warning</li> 
+ <li>pwdp = Password Hash</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.getuid"></a><strong>getuid</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Get the user id of the current process.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+process user id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.kill"></a><strong>kill</strong>&nbsp;(target, signal)</dt>
+<dd>
+
+ (POSIX) Send a signal to one or more processes.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         target: Target process of process group.
+       </li>
+       
+       <li>
+         signal: Signal to send
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.nanosleep"></a><strong>nanosleep</strong>&nbsp;(seconds, nanoseconds)</dt>
+<dd>
+
+ Sleep for a specified amount of time.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         seconds: Seconds to wait (optional)
+       </li>
+       
+       <li>
+         nanoseconds: Nanoseconds to wait (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>Not all systems support nanosecond precision but you can expect 
+ to have at least maillisecond precision.
+       
+       <li>This function is not signal-protected and may fail with EINTR.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.nice"></a><strong>nice</strong>&nbsp;(nice)</dt>
+<dd>
+
+ (POSIX) Change priority of current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         nice: Nice Value
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.open"></a><strong>open</strong>&nbsp;(path, flags, mode)</dt>
+<dd>
+
+ Open a file.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         path: Filesystem path to open
+       </li>
+       
+       <li>
+         flags: Flag string or number (see open_flags). 
+ [<strong>"r"</strong>, "r+", "w", "w+", "a", "a+"]
+       </li>
+       
+       <li>
+         mode: File mode for newly created files (see chmod, umask).
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+Although this function also supports the traditional fopen()  
+ file flags it does not create a file stream but uses the open() syscall.
+
+
+
+<h3>Return value:</h3>
+File Object
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.umask">
+               umask
+       </a>
+       
+       <li><a href="#nixio.open_flags">
+               open_flags
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.open_flags"></a><strong>open_flags</strong>&nbsp;(flag1, ...)</dt>
+<dd>
+
+ Generate flags for a call to open().
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         flag1: First Flag ["append", "creat", "excl", "nonblock", "ndelay", 
+ "sync", "trunc", "rdonly", "wronly", "rdwr"]
+       </li>
+       
+       <li>
+         ...: More Flags [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function cannot fail and will never return nil.
+       
+       <li>The "nonblock" and "ndelay" flags are aliases.
+       
+       <li>The "nonblock", "ndelay" and "sync" flags are no-ops on Windows.
+       
+</ul>
+
+
+
+<h3>Return value:</h3>
+flag to be used as second parameter to open
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.openlog"></a><strong>openlog</strong>&nbsp;(ident, flag1, ...)</dt>
+<dd>
+
+ (POSIX) Open a connection to the system logger.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         ident: Identifier
+       </li>
+       
+       <li>
+         flag1: Flag 1 ["cons", "nowait", "pid", "perror", "ndelay", "odelay"]
+       </li>
+       
+       <li>
+         ...: More flags [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.pipe"></a><strong>pipe</strong>&nbsp;()</dt>
+<dd>
+
+ Create a pipe.
+
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>File Object of the read end
+       
+       <li>File Object of the write end
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.poll"></a><strong>poll</strong>&nbsp;(fds, timeout)</dt>
+<dd>
+
+ Wait for some event on a file descriptor. 
+ poll() sets the revents-field of the tables provided by fds to a bitfield 
+ indicating the events that occurred.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         fds: Table containing one or more tables containing <ul> 
+ <li> fd = I/O Descriptor [Socket Object, File Object (POSIX)]</li> 
+ <li> events = events to wait for (bitfield generated with poll_flags)</li> 
+ </ul>
+       </li>
+       
+       <li>
+         timeout: Timeout in milliseconds
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage</h3>
+<ul>
+       
+       <li>This function works in-place on the provided table and only 
+ writes the revents field, you can use other fields on your demand.
+       
+       <li>All metamethods on the tables provided as fds are ignored.
+       
+       <li>The revents-fields are not reset when the call times out. 
+ You have to check the first return value to be 0 to handle this case.
+       
+       <li>If you want to wait on a TLS-Socket you have to use the underlying 
+ socket instead.
+       
+       <li>On Windows poll is emulated through select(), can only be used 
+ on socket descriptors and cannot take more than 64 descriptors per call.
+       
+       <li>This function is not signal-protected and may fail with EINTR.
+       
+</ul>
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>number of ready IO descriptors
+       
+       <li>the fds-table with revents-fields set
+       
+</ol>
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.poll_flags">
+               poll_flags
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.poll_flags"></a><strong>poll_flags</strong>&nbsp;(mode1, ...)</dt>
+<dd>
+
+ Generate events-bitfield or parse revents-bitfield for poll.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mode1: revents-Flag bitfield returned from poll to parse OR  
+ ["in", "out", "err", "pri" (POSIX), "hup" (POSIX), "nval" (POSIX)]
+       </li>
+       
+       <li>
+         ...: More mode strings for generating the flag [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+table with boolean fields reflecting the mode parameter  
+ <strong>OR</strong> bitfield to use for the events-Flag field
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.poll">
+               poll
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.sendfile"></a><strong>sendfile</strong>&nbsp;(socket, file, length)</dt>
+<dd>
+
+ (POSIX) Send data from a file to a socket in kernel-space.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         socket: Socket Object
+       </li>
+       
+       <li>
+         file: File Object
+       </li>
+       
+       <li>
+         length: Amount of data to send (in Bytes).
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+bytes sent
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.setenv"></a><strong>setenv</strong>&nbsp;(variable, value)</dt>
+<dd>
+
+ Set or unset a environment variable.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         variable: Variable
+       </li>
+       
+       <li>
+         value: Value (optional)
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+The environment variable will be unset if value is omitted.
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.setgid"></a><strong>setgid</strong>&nbsp;(gid)</dt>
+<dd>
+
+ (POSIX) Set the group id of the current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         gid: New Group ID
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.setlogmask"></a><strong>setlogmask</strong>&nbsp;(priority)</dt>
+<dd>
+
+ (POSIX) Set the logmask of the system logger for current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         priority: Priority ["emerg", "alert", "crit", "err", "warning", 
+ "notice", "info", "debug"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.setsid"></a><strong>setsid</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Create a new session and set the process group ID.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+session id
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.setuid"></a><strong>setuid</strong>&nbsp;(gid)</dt>
+<dd>
+
+ (POSIX) Set the user id of the current process.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         gid: New User ID
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.signal"></a><strong>signal</strong>&nbsp;(signal, handler)</dt>
+<dd>
+
+ Ignore or use set the default handler for a signal.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         signal: Signal
+       </li>
+       
+       <li>
+         handler: ["ign", "dfl"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+true
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.socket"></a><strong>socket</strong>&nbsp;(domain, type)</dt>
+<dd>
+
+ Create a new socket.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         domain: Domain ["inet", "inet6", "unix"]
+       </li>
+       
+       <li>
+         type: Type   ["stream", "dgram", "raw"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Socket Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.splice"></a><strong>splice</strong>&nbsp;(fdin, fdout, length, flags)</dt>
+<dd>
+
+ (Linux) Send data from / to a pipe in kernel-space.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         fdin: Input I/O descriptor 
+       </li>
+       
+       <li>
+         fdout: Output I/O descriptor
+       </li>
+       
+       <li>
+         length: Amount of data to send (in Bytes).
+       </li>
+       
+       <li>
+         flags: (optional, bitfield generated by splice_flags)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+bytes sent
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.splice_flags">
+               splice_flags
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.splice_flags"></a><strong>splice_flags</strong>&nbsp;(flag1, ...)</dt>
+<dd>
+
+ (Linux) Generate a flag bitfield for a call to splice.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         flag1: First Flag     ["move", "nonblock", "more"]
+       </li>
+       
+       <li>
+         ...: More flags       [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Flag bitfield
+
+
+
+<h3>See also:</h3>
+<ul>
+       
+       <li><a href="#nixio.splice">
+               splice
+       </a>
+       
+</ul>
+
+</dd>
+
+
+
+
+<dt><a name="nixio.strerror"></a><strong>strerror</strong>&nbsp;(errno)</dt>
+<dd>
+
+ Get the error message for the corresponding error code.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         errno: System error code
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+Error message
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.sysinfo"></a><strong>sysinfo</strong>&nbsp;()</dt>
+<dd>
+
+ (Linux) Get overall system statistics.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>uptime = system uptime in seconds</li> 
+ <li>loads = {loadavg1, loadavg5, loadavg15}</li> 
+ <li>totalram = total RAM</li> 
+ <li>freeram = free RAM</li> 
+ <li>sharedram = shared RAM</li> 
+ <li>bufferram = buffered RAM</li> 
+ <li>totalswap = total SWAP</li> 
+ <li>freeswap = free SWAP</li> 
+ <li>procs = number of running processes</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.syslog"></a><strong>syslog</strong>&nbsp;(priority)</dt>
+<dd>
+
+ (POSIX) Write a message to the system logger.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         priority: Priority ["emerg", "alert", "crit", "err", "warning", 
+ "notice", "info", "debug"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.times"></a><strong>times</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Get process times.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>utime = user time</li> 
+ <li>utime = system time</li> 
+ <li>cutime = children user time</li> 
+ <li>cstime = children system time</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.tls"></a><strong>tls</strong>&nbsp;(mode)</dt>
+<dd>
+
+ Create a new TLS context.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mode: TLS-Mode ["client", "server"]
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+TLSContext Object
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.umask"></a><strong>umask</strong>&nbsp;(mask)</dt>
+<dd>
+
+ Sets the file mode creation mask.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         mask: New creation mask (see chmod for format specifications)
+       </li>
+       
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>the old umask as decimal mode number
+       
+       <li>the old umask as mode string
+       
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.uname"></a><strong>uname</strong>&nbsp;()</dt>
+<dd>
+
+ (POSIX) Get information about current system and kernel.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+Table containing: <ul> 
+ <li>sysname = operating system</li> 
+ <li>nodename = network name (usually hostname)</li> 
+ <li>release = OS release</li> 
+ <li>version = OS version</li> 
+ <li>machine = hardware identifier</li> 
+ </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="nixio.waitpid"></a><strong>waitpid</strong>&nbsp;(pid, flag1, ...)</dt>
+<dd>
+
+ (POSIX) Wait for a process to change state.
+
+
+<h3>Parameters</h3>
+<ul>
+       
+       <li>
+         pid: Process ID       (optional, default: any childprocess)
+       </li>
+       
+       <li>
+         flag1: Flag   (optional) ["nohang", "untraced", "continued"]
+       </li>
+       
+       <li>
+         ...: More Flags [-"-]
+       </li>
+       
+</ul>
+
+
+
+
+<h3>Usage:</h3>
+If the "nohang" is given this function becomes non-blocking.
+
+
+
+<h3>Return values:</h3>
+<ol>
+       
+       <li>process id of child or 0 if no child has changed state
+       
+       <li>["exited", "signaled", "stopped"]
+       
+       <li>[exit code, terminate signal, stop signal]
+       
+</ol>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+       <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/package/luci/documentation/i18n.md b/package/luci/documentation/i18n.md
new file mode 100644 (file)
index 0000000..226a406
--- /dev/null
@@ -0,0 +1,19 @@
+# General
+Translations are saved in the folder po/ for each module and application. You find the reference in po/templates/<package>.pot. The actual translation files can be found at po/[lang]/[package].po .
+
+In order to use the commands below you need to have the _gettext'' utilities (''msgcat'', ''msgfmt'', ''msgmerge_) installed on your system.
+
+# Rebuild po files
+If you want to rebuild the translations after you made changes to a package this is an easy way:
+       
+       ./build/i18n-scan.pl applications/[application] > applications/[application]/po/templates/[application_basename].pot
+       ./build/i18n-update.pl applications/[application]/po
+
+       Example:
+       ./build/i18n-scan.pl applications/luci-app-firewall > applications/luci-app-firewall/po/templates/firewall.pot
+       ./build/i18n-update.pl applications/luci-app-firewall/po
+       (note that the directory argument can be omitted for i18n-update.pl to update all apps)
+       
+*Note:* Some packages share translation files, in this case you need to scan through all their folders. The first command from above should then be:
+       
+       ./build/i18n-scan.pl applications/[package-1] applications/[package-2] applications/[package-n] > [location of shared template]/[application].pot
diff --git a/package/luci/libs/luci-lib-httpclient/Makefile b/package/luci/libs/luci-lib-httpclient/Makefile
new file mode 100644 (file)
index 0000000..b8bd428
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=HTTP(S) client library
+LUCI_DEPENDS:=+luci-base +luci-lib-nixio +luci-lib-httpprotoutils
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua b/package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua
new file mode 100644 (file)
index 0000000..79ce412
--- /dev/null
@@ -0,0 +1,419 @@
+-- Copyright 2009 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "nixio.util"
+local nixio = require "nixio"
+
+local ltn12 = require "luci.ltn12"
+local util = require "luci.util"
+local table = require "table"
+local http = require "luci.http"
+local date = require "luci.http.date"
+local ip = require "luci.ip"
+
+local type, pairs, ipairs, tonumber, tostring = type, pairs, ipairs, tonumber, tostring
+local unpack, string = unpack, string
+
+module "luci.httpclient"
+
+function chunksource(sock, buffer)
+       buffer = buffer or ""
+       return function()
+               local output
+               local _, endp, count = buffer:find("^([0-9a-fA-F]+);?.-\r\n")
+               while not count and #buffer <= 1024 do
+                       local newblock, code = sock:recv(1024 - #buffer)
+                       if not newblock then
+                               return nil, code
+                       end
+                       buffer = buffer .. newblock
+                       _, endp, count = buffer:find("^([0-9a-fA-F]+);?.-\r\n")
+               end
+               count = tonumber(count, 16)
+               if not count then
+                       return nil, -1, "invalid encoding"
+               elseif count == 0 then
+                       return nil
+               elseif count + 2 <= #buffer - endp then
+                       output = buffer:sub(endp+1, endp+count)
+                       buffer = buffer:sub(endp+count+3)
+                       return output
+               else
+                       output = buffer:sub(endp+1, endp+count)
+                       buffer = ""
+                       if count - #output > 0 then
+                               local remain, code = sock:recvall(count-#output)
+                               if not remain then
+                                       return nil, code
+                               end
+                               output = output .. remain
+                               count, code = sock:recvall(2)
+                       else
+                               count, code = sock:recvall(count+2-#buffer+endp)
+                       end
+                       if not count then
+                               return nil, code
+                       end
+                       return output
+               end
+       end
+end
+
+
+function request_to_buffer(uri, options)
+       local source, code, msg = request_to_source(uri, options)
+       local output = {}
+
+       if not source then
+               return nil, code, msg
+       end
+
+       source, code = ltn12.pump.all(source, (ltn12.sink.table(output)))
+
+       if not source then
+               return nil, code
+       end
+
+       return table.concat(output)
+end
+
+function request_to_source(uri, options)
+       local status, response, buffer, sock = request_raw(uri, options)
+       if not status then
+               return status, response, buffer
+       elseif status ~= 200 and status ~= 206 then
+               return nil, status, buffer
+       end
+
+       if response.headers["Transfer-Encoding"] == "chunked" then
+               return chunksource(sock, buffer)
+       else
+               return ltn12.source.cat(ltn12.source.string(buffer), sock:blocksource())
+       end
+end
+
+function parse_url(uri)
+       local url, rest, tmp = {}, nil, nil
+
+       url.scheme, rest = uri:match("^(%w+)://(.+)$")
+       if not (url.scheme and rest) then
+               return nil
+       end
+
+       url.auth, tmp = rest:match("^([^@]+)@(.+)$")
+       if url.auth and tmp then
+               rest = tmp
+       end
+
+       url.host, tmp = rest:match("^%[([0-9a-fA-F:]+)%](.*)$")
+       if url.host and tmp then
+               url.ip6addr = ip.IPv6(url.host)
+               if not url.ip6addr then
+                       return nil
+               end
+               url.host = string.format("[%s]", url.ip6addr:string())
+               rest = tmp
+       else
+               url.host, tmp = rest:match("^(%d+%.%d+%.%d+%.%d+)(.*)$")
+               if url.host and tmp then
+                       url.ipaddr = ip.IPv4(url.host)
+                       if not url.ipaddr then
+                               return nil
+                       end
+                       url.host = url.ipaddr:string()
+                       rest = tmp
+               else
+                       url.host, tmp = rest:match("^([0-9a-zA-Z%.%-]+)(.*)$")
+                       if url.host and tmp then
+                               rest = tmp
+                       else
+                               return nil
+                       end
+               end
+       end
+
+       url.port, tmp = rest:match("^:(%d+)(.*)$")
+       if url.port and tmp then
+               url.port = tonumber(url.port)
+               rest = tmp
+               if url.port < 1 or url.port > 65535 then
+                       return nil
+               end
+       end
+
+       if url.scheme == "http" then
+               url.port = url.port or 80
+               url.default_port = (url.port == 80)
+       elseif url.scheme == "https" then
+               url.port = url.port or 443
+               url.default_port = (url.port == 443)
+       end
+
+       if rest == "" then
+               url.path = "/"
+       else
+               url.path = rest
+       end
+
+       return url
+end
+
+--
+-- GET HTTP-resource
+--
+function request_raw(uri, options)
+       options = options or {}
+
+       if options.params then
+               uri = uri .. '?' .. http.urlencode_params(options.params)
+       end
+
+       local url = parse_url(uri)
+
+       if not url then
+               return nil, -1, "unable to parse URI"
+       end
+
+       if url.scheme ~= "http" and url.scheme ~= "https" then
+               return nil, -2, "protocol not supported"
+       end
+
+       options.depth = options.depth or 10
+       local headers = options.headers or {}
+       local protocol = options.protocol or "HTTP/1.1"
+       headers["User-Agent"] = headers["User-Agent"] or "LuCI httpclient 0.1"
+
+       if headers.Connection == nil then
+               headers.Connection = "close"
+       end
+
+       if url.auth and not headers.Authorization then
+               headers.Authorization = "Basic " .. nixio.bin.b64encode(url.auth)
+       end
+
+       local addr = tostring(url.ip6addr or url.ipaddr or url.host)
+       local sock, code, msg = nixio.connect(addr, url.port)
+       if not sock then
+               return nil, code, msg
+       end
+
+       sock:setsockopt("socket", "sndtimeo", options.sndtimeo or 15)
+       sock:setsockopt("socket", "rcvtimeo", options.rcvtimeo or 15)
+
+       if url.scheme == "https" then
+               local tls = options.tls_context or nixio.tls()
+               sock = tls:create(sock)
+               local stat, code, error = sock:connect()
+               if not stat then
+                       return stat, code, error
+               end
+       end
+
+       -- Pre assemble fixes
+       if protocol == "HTTP/1.1" then
+               headers.Host = headers.Host or
+                       (url.default_port and url.host or string.format("%s:%d", url.host, url.port))
+       end
+
+       if type(options.body) == "table" then
+               options.body = http.urlencode_params(options.body)
+       end
+
+       if type(options.body) == "string" then
+               headers["Content-Length"] = headers["Content-Length"] or #options.body
+               headers["Content-Type"] = headers["Content-Type"] or
+                       "application/x-www-form-urlencoded"
+               options.method = options.method or "POST"
+       end
+
+       if type(options.body) == "function" then
+               options.method = options.method or "POST"
+       end
+
+       if options.cookies then
+               local cookiedata = {}
+               for _, c in ipairs(options.cookies) do
+                       local cdo = c.flags.domain
+                       local cpa = c.flags.path
+                       if   (cdo == url.host or cdo == "."..url.host or url.host:sub(-#cdo) == cdo)
+                        and (cpa == url.path or cpa == "/" or cpa .. "/" == url.path:sub(#cpa+1))
+                        and (not c.flags.secure or url.scheme == "https")
+                       then
+                               cookiedata[#cookiedata+1] = c.key .. "=" .. c.value
+                       end
+               end
+               if headers["Cookie"] then
+                       headers["Cookie"] = headers["Cookie"] .. "; " .. table.concat(cookiedata, "; ")
+               else
+                       headers["Cookie"] = table.concat(cookiedata, "; ")
+               end
+       end
+
+       -- Assemble message
+       local message = {(options.method or "GET") .. " " .. url.path .. " " .. protocol}
+
+       for k, v in pairs(headers) do
+               if type(v) == "string" or type(v) == "number" then
+                       message[#message+1] = k .. ": " .. v
+               elseif type(v) == "table" then
+                       for i, j in ipairs(v) do
+                               message[#message+1] = k .. ": " .. j
+                       end
+               end
+       end
+
+       message[#message+1] = ""
+       message[#message+1] = ""
+
+       -- Send request
+       sock:sendall(table.concat(message, "\r\n"))
+
+       if type(options.body) == "string" then
+               sock:sendall(options.body)
+       elseif type(options.body) == "function" then
+               local res = {options.body(sock)}
+               if not res[1] then
+                       sock:close()
+                       return unpack(res)
+               end
+       end
+
+       -- Create source and fetch response
+       local linesrc = sock:linesource()
+       local line, code, error = linesrc()
+
+       if not line then
+               sock:close()
+               return nil, code, error
+       end
+
+       local protocol, status, msg = line:match("^([%w./]+) ([0-9]+) (.*)")
+
+       if not protocol then
+               sock:close()
+               return nil, -3, "invalid response magic: " .. line
+       end
+
+       local response = {
+               status = line, headers = {}, code = 0, cookies = {}, uri = uri
+       }
+
+       line = linesrc()
+       while line and line ~= "" do
+               local key, val = line:match("^([%w-]+)%s?:%s?(.*)")
+               if key and key ~= "Status" then
+                       if type(response.headers[key]) == "string" then
+                               response.headers[key] = {response.headers[key], val}
+                       elseif type(response.headers[key]) == "table" then
+                               response.headers[key][#response.headers[key]+1] = val
+                       else
+                               response.headers[key] = val
+                       end
+               end
+               line = linesrc()
+       end
+
+       if not line then
+               sock:close()
+               return nil, -4, "protocol error"
+       end
+
+       -- Parse cookies
+       if response.headers["Set-Cookie"] then
+               local cookies = response.headers["Set-Cookie"]
+               for _, c in ipairs(type(cookies) == "table" and cookies or {cookies}) do
+                       local cobj = cookie_parse(c)
+                       cobj.flags.path = cobj.flags.path or url.path:match("(/.*)/?[^/]*")
+                       if not cobj.flags.domain or cobj.flags.domain == "" then
+                               cobj.flags.domain = url.host
+                               response.cookies[#response.cookies+1] = cobj
+                       else
+                               local hprt, cprt = {}, {}
+
+                               -- Split hostnames and save them in reverse order
+                               for part in url.host:gmatch("[^.]*") do
+                                       table.insert(hprt, 1, part)
+                               end
+                               for part in cobj.flags.domain:gmatch("[^.]*") do
+                                       table.insert(cprt, 1, part)
+                               end
+
+                               local valid = true
+                               for i, part in ipairs(cprt) do
+                                       -- If parts are different and no wildcard
+                                       if hprt[i] ~= part and #part ~= 0 then
+                                               valid = false
+                                               break
+                                       -- Wildcard on invalid position
+                                       elseif hprt[i] ~= part and #part == 0 then
+                                               if i ~= #cprt or (#hprt ~= i and #hprt+1 ~= i) then
+                                                       valid = false
+                                                       break
+                                               end
+                                       end
+                               end
+                               -- No TLD cookies
+                               if valid and #cprt > 1 and #cprt[2] > 0 then
+                                       response.cookies[#response.cookies+1] = cobj
+                               end
+                       end
+               end
+       end
+
+       -- Follow
+       response.code = tonumber(status)
+       if response.code and options.depth > 0 then
+               if (response.code == 301 or response.code == 302 or response.code == 307)
+                and response.headers.Location then
+                       local nuri = response.headers.Location or response.headers.location
+                       if not nuri then
+                               return nil, -5, "invalid reference"
+                       end
+                       if not nuri:match("^%w+://") then
+                               nuri = url.default_port and string.format("%s://%s%s", url.scheme, url.host, nuri)
+                                       or string.format("%s://%s:%d%s", url.scheme, url.host, url.port, nuri)
+                       end
+
+                       options.depth = options.depth - 1
+                       if options.headers then
+                               options.headers.Host = nil
+                       end
+                       sock:close()
+
+                       return request_raw(nuri, options)
+               end
+       end
+
+       return response.code, response, linesrc(true)..sock:readall(), sock
+end
+
+function cookie_parse(cookiestr)
+       local key, val, flags = cookiestr:match("%s?([^=;]+)=?([^;]*)(.*)")
+       if not key then
+               return nil
+       end
+
+       local cookie = {key = key, value = val, flags = {}}
+       for fkey, fval in flags:gmatch(";%s?([^=;]+)=?([^;]*)") do
+               fkey = fkey:lower()
+               if fkey == "expires" then
+                       fval = date.to_unix(fval:gsub("%-", " "))
+               end
+               cookie.flags[fkey] = fval
+       end
+
+       return cookie
+end
+
+function cookie_create(cookie)
+       local cookiedata = {cookie.key .. "=" .. cookie.value}
+
+       for k, v in pairs(cookie.flags) do
+               if k == "expires" then
+                       v = date.to_http(v):gsub(", (%w+) (%w+) (%w+) ", ", %1-%2-%3 ")
+               end
+               cookiedata[#cookiedata+1] = k .. ((#v > 0) and ("=" .. v) or "")
+       end
+
+       return table.concat(cookiedata, "; ")
+end
diff --git a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua b/package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua
new file mode 100644 (file)
index 0000000..b886e96
--- /dev/null
@@ -0,0 +1,284 @@
+-- Copyright 2009 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "nixio.util"
+local nixio = require "nixio"
+local httpc = require "luci.httpclient"
+local ltn12 = require "luci.ltn12"
+
+local print, tonumber, require, unpack = print, tonumber, require, unpack
+
+module "luci.httpclient.receiver"
+
+local function prepare_fd(target)
+       -- Open fd for appending
+       local oflags = nixio.open_flags("wronly", "creat")
+       local file, code, msg = nixio.open(target, oflags)
+       if not file then
+               return file, code, msg
+       end
+       
+       -- Acquire lock
+       local stat, code, msg = file:lock("tlock")
+       if not stat then
+               return stat, code, msg
+       end
+       
+       file:seek(0, "end") 
+       
+       return file
+end
+
+local function splice_async(sock, pipeout, pipein, file, cb)
+       local ssize = 65536
+       local smode = nixio.splice_flags("move", "more", "nonblock")
+
+       -- Set pipe non-blocking otherwise we might end in a deadlock
+       local stat, code, msg = pipein:setblocking(false)
+       if stat then
+               stat, code, msg = pipeout:setblocking(false)
+       end
+       if not stat then
+               return stat, code, msg
+       end
+       
+       
+       local pollsock = {
+               {fd=sock, events=nixio.poll_flags("in")}
+       }
+       
+       local pollfile = {
+               {fd=file, events=nixio.poll_flags("out")}
+       }
+       
+       local done
+       local active -- Older splice implementations sometimes don't detect EOS
+       
+       repeat
+               active = false
+               
+               -- Socket -> Pipe
+               repeat
+                       nixio.poll(pollsock, 15000)
+               
+                       stat, code, msg = nixio.splice(sock, pipeout, ssize, smode)
+                       if stat == nil then
+                               return stat, code, msg
+                       elseif stat == 0 then
+                               done = true
+                               break
+                       elseif stat then
+                               active = true
+                       end
+               until stat == false
+               
+               -- Pipe -> File
+               repeat
+                       nixio.poll(pollfile, 15000)
+               
+                       stat, code, msg = nixio.splice(pipein, file, ssize, smode)
+                       if stat == nil then
+                               return stat, code, msg
+                       elseif stat then
+                               active = true
+                       end
+               until stat == false
+               
+               if cb then
+                       cb(file)
+               end
+               
+               if not active then
+                       -- We did not splice any data, maybe EOS, fallback to default
+                       return false
+               end
+       until done
+       
+       pipein:close()
+       pipeout:close()
+       sock:close()
+       file:close()
+       return true
+end
+
+local function splice_sync(sock, pipeout, pipein, file, cb)
+       local os = require "os"
+       local ssize = 65536
+       local smode = nixio.splice_flags("move", "more")
+       local stat
+       
+       -- This is probably the only forking http-client ;-)
+       local pid, code, msg = nixio.fork()
+       if not pid then
+               return pid, code, msg
+       elseif pid == 0 then
+               pipein:close()
+               file:close()
+
+               repeat
+                       stat, code = nixio.splice(sock, pipeout, ssize, smode)
+               until not stat or stat == 0
+       
+               pipeout:close()
+               sock:close()
+               os.exit(stat or code)
+       else
+               pipeout:close()
+               sock:close()
+               
+               repeat
+                       stat, code, msg = nixio.splice(pipein, file, ssize, smode)
+                       if cb then
+                               cb(file)
+                       end
+               until not stat or stat == 0
+               
+               pipein:close()
+               file:close()
+               
+               if not stat then
+                       nixio.kill(pid, 15)
+                       nixio.wait(pid)
+                       return stat, code, msg
+               else
+                       pid, msg, code = nixio.wait(pid)
+                       if msg == "exited" then
+                               if code == 0 then
+                                       return true
+                               else
+                                       return nil, code, nixio.strerror(code)
+                               end
+                       else
+                               return nil, -0x11, "broken pump"
+                       end
+               end
+       end
+end
+
+function request_to_file(uri, target, options, cbs)
+       options = options or {}
+       cbs = cbs or {}
+       options.headers = options.headers or {}
+       local hdr = options.headers
+       local file, code, msg
+       
+       if target then
+               file, code, msg = prepare_fd(target)
+               if not file then
+                       return file, code, msg
+               end
+       
+               local off = file:tell()
+               
+               -- Set content range
+               if off > 0 then
+                       hdr.Range = hdr.Range or ("bytes=" .. off .. "-")  
+               end
+       end
+       
+       local code, resp, buffer, sock = httpc.request_raw(uri, options)
+       if not code then
+               -- No success
+               if file then
+                       file:close()
+               end
+               return code, resp, buffer
+       elseif hdr.Range and code ~= 206 then
+               -- We wanted a part but we got the while file
+               sock:close()
+               if file then
+                       file:close()
+               end
+               return nil, -4, code, resp
+       elseif not hdr.Range and code ~= 200 then
+               -- We encountered an error
+               sock:close()
+               if file then
+                       file:close()
+               end
+               return nil, -4, code, resp
+       end
+       
+       if cbs.on_header then
+               local stat = {cbs.on_header(file, code, resp)}
+               if stat[1] == false then
+                       if file then
+                               file:close()
+                       end
+                       sock:close()
+                       return unpack(stat)
+               elseif stat[2] then
+                       file = file and stat[2]
+               end
+       end
+       
+       if not file then
+               return nil, -5, "no target given"
+       end
+
+       local chunked = resp.headers["Transfer-Encoding"] == "chunked"
+       local stat
+
+       -- Write the buffer to file
+       file:writeall(buffer)
+       
+       repeat
+               if not options.splice or not sock:is_socket() or chunked then
+                       break
+               end
+               
+               -- This is a plain TCP socket and there is no encoding so we can splice
+       
+               local pipein, pipeout, msg = nixio.pipe()
+               if not pipein then
+                       sock:close()
+                       file:close()
+                       return pipein, pipeout, msg
+               end
+               
+               
+               -- Adjust splice values
+               local ssize = 65536
+               local smode = nixio.splice_flags("move", "more")
+               
+               -- Splicing 512 bytes should never block on a fresh pipe
+               local stat, code, msg = nixio.splice(sock, pipeout, 512, smode)
+               if stat == nil then
+                       break
+               end
+               
+               -- Now do the real splicing
+               local cb = cbs.on_write
+               if options.splice == "asynchronous" then
+                       stat, code, msg = splice_async(sock, pipeout, pipein, file, cb)
+               elseif options.splice == "synchronous" then
+                       stat, code, msg = splice_sync(sock, pipeout, pipein, file, cb)
+               else
+                       break
+               end
+               
+               if stat == false then
+                       break
+               end
+
+               return stat, code, msg
+       until true
+       
+       local src = chunked and httpc.chunksource(sock) or sock:blocksource()
+       local snk = file:sink()
+       
+       if cbs.on_write then
+               src = ltn12.source.chain(src, function(chunk)
+                       cbs.on_write(file)
+                       return chunk
+               end)
+       end
+       
+       -- Fallback to read/write
+       stat, code, msg = ltn12.pump.all(src, snk)
+
+       file:close()
+       sock:close()
+       return stat and true, code, msg
+end
+
diff --git a/package/luci/libs/luci-lib-httpprotoutils/Makefile b/package/luci/libs/luci-lib-httpprotoutils/Makefile
new file mode 100644 (file)
index 0000000..851a362
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2018 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=HTTP protocol utility functions
+LUCI_DEPENDS:=+luci-base
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.lua b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.lua
new file mode 100644 (file)
index 0000000..86b4db2
--- /dev/null
@@ -0,0 +1,110 @@
+-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+-- This class provides basic ETag handling and implements most of the
+-- conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 .
+module("luci.http.conditionals", package.seeall)
+
+local date = require("luci.http.date")
+
+
+function mk_etag( stat )
+       if stat ~= nil then
+               return string.format( '"%x-%x-%x"', stat.ino, stat.size, stat.mtime )
+       end
+end
+
+-- Test whether the given message object contains an "If-Match" header and
+-- compare it against the given stat object.
+function if_match( req, stat )
+       local h    = req.headers
+       local etag = mk_etag( stat )
+
+       -- Check for matching resource
+       if type(h['If-Match']) == "string" then
+               for ent in h['If-Match']:gmatch("([^, ]+)") do
+                       if ( ent == '*' or ent == etag ) and stat ~= nil then
+                               return true
+                       end
+               end
+
+               return false, 412
+       end
+
+       return true
+end
+
+-- Test whether the given message object contains an "If-Modified-Since" header
+-- and compare it against the given stat object.
+function if_modified_since( req, stat )
+       local h = req.headers
+
+       -- Compare mtimes
+       if type(h['If-Modified-Since']) == "string" then
+               local since = date.to_unix( h['If-Modified-Since'] )
+
+               if stat == nil or since < stat.mtime then
+                       return true
+               end
+
+               return false, 304, {
+                       ["ETag"]          = mk_etag( stat );
+                       ["Date"]          = date.to_http( os.time() );
+                       ["Last-Modified"] = date.to_http( stat.mtime )
+               }
+       end
+
+       return true
+end
+
+-- Test whether the given message object contains an "If-None-Match" header and
+-- compare it against the given stat object.
+function if_none_match( req, stat )
+       local h      = req.headers
+       local etag   = mk_etag( stat )
+       local method = req.env and req.env.REQUEST_METHOD or "GET"
+
+       -- Check for matching resource
+       if type(h['If-None-Match']) == "string" then
+               for ent in h['If-None-Match']:gmatch("([^, ]+)") do
+                       if ( ent == '*' or ent == etag ) and stat ~= nil then
+                               if method == "GET" or method == "HEAD" then
+                                       return false, 304, {
+                                               ["ETag"]          = etag;
+                                               ["Date"]          = date.to_http( os.time() );
+                                               ["Last-Modified"] = date.to_http( stat.mtime )
+                                       }
+                               else
+                                       return false, 412
+                               end
+                       end
+               end
+       end
+
+       return true
+end
+
+-- The If-Range header is currently not implemented due to the lack of general
+-- byte range stuff in luci.http.protocol . This function will always return
+-- false, 412 to indicate a failed precondition.
+function if_range( req, stat )
+       -- Sorry, no subranges (yet)
+       return false, 412
+end
+
+-- Test whether the given message object contains an "If-Unmodified-Since"
+-- header and compare it against the given stat object.
+function if_unmodified_since( req, stat )
+       local h = req.headers
+
+       -- Compare mtimes
+       if type(h['If-Unmodified-Since']) == "string" then
+               local since = date.to_unix( h['If-Unmodified-Since'] )
+
+               if stat ~= nil and since <= stat.mtime then
+                       return false, 412
+               end
+       end
+
+       return true
+end
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.luadoc b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.luadoc
new file mode 100644 (file)
index 0000000..7ce0b5e
--- /dev/null
@@ -0,0 +1,85 @@
+---[[
+LuCI http protocol implementation - HTTP/1.1 bits.
+
+This class provides basic ETag handling and implements most of the
+conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 .
+]]
+module "luci.http.conditionals"
+
+---[[
+Implement 14.19 / ETag.
+
+@class function
+@name mk_etag
+@param stat    A file.stat structure
+@return                String containing the generated tag suitable for ETag headers
+]]
+
+---[[
+14.24 / If-Match
+
+Test whether the given message object contains an "If-Match" header and
+compare it against the given stat object.
+@class function
+@name if_match
+@param req     HTTP request message object
+@param stat    A file.stat object
+@return                Boolean indicating whether the precondition is ok
+@return                Alternative status code if the precondition failed
+]]
+
+---[[
+14.25 / If-Modified-Since
+
+Test whether the given message object contains an "If-Modified-Since" header
+and compare it against the given stat object.
+@class function
+@name if_modified_since
+@param req     HTTP request message object
+@param stat    A file.stat object
+@return                Boolean indicating whether the precondition is ok
+@return                Alternative status code if the precondition failed
+@return                Table containing extra HTTP headers if the precondition failed
+]]
+
+---[[
+14.26 / If-None-Match
+
+Test whether the given message object contains an "If-None-Match" header and
+compare it against the given stat object.
+@class function
+@name if_none_match
+@param req     HTTP request message object
+@param stat    A file.stat object
+@return                Boolean indicating whether the precondition is ok
+@return                Alternative status code if the precondition failed
+@return                Table containing extra HTTP headers if the precondition failed
+]]
+
+---[[
+14.27 / If-Range
+
+The If-Range header is currently not implemented due to the lack of general
+byte range stuff in luci.http.protocol . This function will always return
+false, 412 to indicate a failed precondition.
+@class function
+@name if_range
+@param req     HTTP request message object
+@param stat    A file.stat object
+@return                Boolean indicating whether the precondition is ok
+@return                Alternative status code if the precondition failed
+]]
+
+---[[
+14.28 / If-Unmodified-Since
+
+Test whether the given message object contains an "If-Unmodified-Since"
+header and compare it against the given stat object.
+@class function
+@name if_unmodified_since
+@param req     HTTP request message object
+@param stat    A file.stat object
+@return                Boolean indicating whether the precondition is ok
+@return                Alternative status code if the precondition failed
+]]
+
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.lua b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.lua
new file mode 100644 (file)
index 0000000..72f1bdb
--- /dev/null
@@ -0,0 +1,87 @@
+-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+-- This class contains functions to parse, compare and format http dates.
+module("luci.http.date", package.seeall)
+
+require("luci.sys.zoneinfo")
+
+
+MONTHS = {
+       "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
+       "Sep", "Oct", "Nov", "Dec"
+}
+
+function tz_offset(tz)
+
+       if type(tz) == "string" then
+
+               -- check for a numeric identifier
+               local s, v = tz:match("([%+%-])([0-9]+)")
+               if s == '+' then s = 1 else s = -1 end
+               if v then v = tonumber(v) end
+
+               if s and v then
+                       return s * 60 * ( math.floor( v / 100 ) * 60 + ( v % 100 ) )
+
+               -- lookup symbolic tz
+               elseif luci.sys.zoneinfo.OFFSET[tz:lower()] then
+                       return luci.sys.zoneinfo.OFFSET[tz:lower()]
+               end
+
+       end
+
+       -- bad luck
+       return 0
+end
+
+function to_unix(date)
+
+       local wd, day, mon, yr, hr, min, sec, tz = date:match(
+               "([A-Z][a-z][a-z]), ([0-9]+) " ..
+               "([A-Z][a-z][a-z]) ([0-9]+) " ..
+               "([0-9]+):([0-9]+):([0-9]+) " ..
+               "([A-Z0-9%+%-]+)"
+       )
+
+       if day and mon and yr and hr and min and sec then
+               -- find month
+               local month = 1
+               for i = 1, 12 do
+                       if MONTHS[i] == mon then
+                               month = i
+                               break
+                       end
+               end
+
+               -- convert to epoch time
+               return tz_offset(tz) + os.time( {
+                       year  = yr,
+                       month = month,
+                       day   = day,
+                       hour  = hr,
+                       min   = min,
+                       sec   = sec
+               } )
+       end
+
+       return 0
+end
+
+function to_http(time)
+       return os.date( "%a, %d %b %Y %H:%M:%S GMT", time )
+end
+
+function compare(d1, d2)
+
+       if d1:match("[^0-9]") then d1 = to_unix(d1) end
+       if d2:match("[^0-9]") then d2 = to_unix(d2) end
+
+       if d1 == d2 then
+               return 0
+       elseif d1 < d2 then
+               return -1
+       else
+               return 1
+       end
+end
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.luadoc b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/date.luadoc
new file mode 100644 (file)
index 0000000..6028fb4
--- /dev/null
@@ -0,0 +1,46 @@
+---[[
+LuCI http protocol implementation - date helper class.
+
+This class contains functions to parse, compare and format http dates.
+]]
+module "luci.http.date"
+
+---[[
+Return the time offset in seconds between the UTC and given time zone.
+
+@class function
+@name tz_offset
+@param tz      Symbolic or numeric timezone specifier
+@return                Time offset to UTC in seconds
+]]
+
+---[[
+Parse given HTTP date string and convert it to unix epoch time.
+
+@class function
+@name to_unix
+@param data    String containing the date
+@return                Unix epoch time
+]]
+
+---[[
+Convert the given unix epoch time to valid HTTP date string.
+
+@class function
+@name to_http
+@param time    Unix epoch time
+@return                String containing the formatted date
+]]
+
+---[[
+Compare two dates which can either be unix epoch times or HTTP date strings.
+
+@class function
+@name compare
+@param d1      The first date or epoch time to compare
+@param d2      The first date or epoch time to compare
+@return                -1  -  if d1 is lower then d2
+@return                0   -  if both dates are equal
+@return                1   -  if d1 is higher then d2
+]]
+
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.lua b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.lua
new file mode 100644 (file)
index 0000000..0bcff8a
--- /dev/null
@@ -0,0 +1,78 @@
+-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+-- This class provides functions to guess mime types from file extensions and
+-- vice versa.
+module("luci.http.mime", package.seeall)
+
+require("luci.util")
+
+MIME_TYPES = {
+    ["txt"]   = "text/plain";
+    ["js"]    = "text/javascript";
+    ["css"]   = "text/css";
+    ["htm"]   = "text/html";
+    ["html"]  = "text/html";
+    ["patch"] = "text/x-patch";
+    ["c"]     = "text/x-csrc";
+    ["h"]     = "text/x-chdr";
+    ["o"]     = "text/x-object";
+    ["ko"]    = "text/x-object";
+
+    ["bmp"]   = "image/bmp";
+    ["gif"]   = "image/gif";
+    ["png"]   = "image/png";
+    ["jpg"]   = "image/jpeg";
+    ["jpeg"]  = "image/jpeg";
+    ["svg"]   = "image/svg+xml";
+
+    ["zip"]   = "application/zip";
+    ["pdf"]   = "application/pdf";
+    ["xml"]   = "application/xml";
+    ["xsl"]   = "application/xml";
+    ["doc"]   = "application/msword";
+    ["ppt"]   = "application/vnd.ms-powerpoint";
+    ["xls"]   = "application/vnd.ms-excel";
+    ["odt"]   = "application/vnd.oasis.opendocument.text";
+    ["odp"]   = "application/vnd.oasis.opendocument.presentation";
+    ["pl"]    = "application/x-perl";
+    ["sh"]    = "application/x-shellscript";
+    ["php"]   = "application/x-php";
+    ["deb"]   = "application/x-deb";
+    ["iso"]   = "application/x-cd-image";
+    ["tgz"]   = "application/x-compressed-tar";
+
+    ["mp3"]   = "audio/mpeg";
+    ["ogg"]   = "audio/x-vorbis+ogg";
+    ["wav"]   = "audio/x-wav";
+
+    ["mpg"]   = "video/mpeg";
+    ["mpeg"]  = "video/mpeg";
+    ["avi"]   = "video/x-msvideo";
+}
+
+-- "application/octet-stream" if the extension is unknown.
+function to_mime(filename)
+       if type(filename) == "string" then
+               local ext = filename:match("[^%.]+$")
+
+               if ext and MIME_TYPES[ext:lower()] then
+                       return MIME_TYPES[ext:lower()]
+               end
+       end
+
+       return "application/octet-stream"
+end
+
+-- given mime-type is unknown.
+function to_ext(mimetype)
+       if type(mimetype) == "string" then
+               for ext, type in luci.util.kspairs( MIME_TYPES ) do
+                       if type == mimetype then
+                               return ext
+                       end
+               end
+       end
+
+       return nil
+end
diff --git a/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc b/package/luci/libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc
new file mode 100644 (file)
index 0000000..9c7f01a
--- /dev/null
@@ -0,0 +1,34 @@
+---[[
+LuCI http protocol implementation - mime helper class.
+
+This class provides functions to guess mime types from file extensions and
+vice versa.
+]]
+module "luci.http.mime"
+
+---[[
+MIME mapping table containing extension - mimetype relations.
+
+@class table
+]]
+
+---[[
+Extract extension from a filename and return corresponding mime-type or
+
+"application/octet-stream" if the extension is unknown.
+@class function
+@name to_mime
+@param filename        The filename for which the mime type is guessed
+@return                        String containign the determined mime type
+]]
+
+---[[
+Return corresponding extension for a given mime type or nil if the
+
+given mime-type is unknown.
+@class function
+@name to_ext
+@param mimetype        The mimetype to retrieve the extension from
+@return                        String with the extension or nil for unknown type
+]]
+
diff --git a/package/luci/libs/luci-lib-ip/Makefile b/package/luci/libs/luci-lib-ip/Makefile
new file mode 100644 (file)
index 0000000..15cb537
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2015 LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Lua library for IP calculation and routing information
+LUCI_DEPENDS:=+liblua +libnl-tiny
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-ip/src/Makefile b/package/luci/libs/luci-lib-ip/src/Makefile
new file mode 100644 (file)
index 0000000..76abd27
--- /dev/null
@@ -0,0 +1,17 @@
+IP_CFLAGS = -std=gnu99 -I$(STAGING_DIR)/usr/include/libnl-tiny/
+IP_LDFLAGS = -llua -lm -lnl-tiny
+IP_OBJ = ip.o
+IP_LIB = ip.so
+
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(IP_CFLAGS) $(FPIC) -c -o $@ $<
+
+compile: $(IP_OBJ)
+       $(CC) $(LDFLAGS) -shared -o $(IP_LIB) $(IP_OBJ) $(IP_LDFLAGS)
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/lib/lua/luci
+       cp $(IP_LIB) $(DESTDIR)/usr/lib/lua/luci/$(IP_LIB)
+
+clean:
+       rm -f *.o *.so
diff --git a/package/luci/libs/luci-lib-ip/src/ip.c b/package/luci/libs/luci-lib-ip/src/ip.c
new file mode 100644 (file)
index 0000000..188a70f
--- /dev/null
@@ -0,0 +1,1635 @@
+/*
+Copyright 2015-2018 Jo-Philipp Wich <jo@mein.io>
+
+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.
+*/
+
+#define _GNU_SOURCE
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <limits.h>
+
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+
+#include <net/if.h>
+#include <netinet/ether.h>
+#include <arpa/inet.h>
+#include <netlink/msg.h>
+#include <netlink/attr.h>
+#include <netlink/socket.h>
+#include <linux/rtnetlink.h>
+
+#define LUCI_IP "luci.ip"
+#define LUCI_IP_CIDR "luci.ip.cidr"
+
+#define RTA_INT(x)     (*(int *)RTA_DATA(x))
+#define RTA_U32(x)     (*(uint32_t *)RTA_DATA(x))
+
+#define AF_BITS(f) \
+       ((f) == AF_INET ? 32 : \
+               ((f) == AF_INET6 ? 128 : \
+                       ((f) == AF_PACKET ? 48 : 0)))
+
+#define AF_BYTES(f) \
+       ((f) == AF_INET ? 4 : \
+               ((f) == AF_INET6 ? 16 : \
+                       ((f) == AF_PACKET ? 6 : 0)))
+
+static int hz = 0;
+static struct nl_sock *sock = NULL;
+
+typedef struct {
+       union {
+               struct in_addr v4;
+               struct in6_addr v6;
+               struct ether_addr mac;
+               uint8_t u8[16];
+       } addr;
+       uint16_t family;
+       int16_t bits;
+} cidr_t;
+
+struct dump_filter {
+       bool get;
+       int family;
+       int iif;
+       int oif;
+       int type;
+       int scope;
+       int proto;
+       int table;
+       cidr_t gw;
+       cidr_t from;
+       cidr_t src;
+       cidr_t dst;
+       struct ether_addr mac;
+       bool from_exact;
+       bool dst_exact;
+};
+
+struct dump_state {
+       int index;
+       int pending;
+       int callback;
+       struct lua_State *L;
+       struct dump_filter *filter;
+};
+
+
+static int _cidr_new(lua_State *L, int index, int family, bool mask);
+
+static cidr_t *L_checkcidr (lua_State *L, int index, cidr_t *p)
+{
+       if (lua_type(L, index) == LUA_TUSERDATA)
+               return luaL_checkudata(L, index, LUCI_IP_CIDR);
+
+       if (_cidr_new(L, index, p ? p->family : 0, false))
+               return lua_touserdata(L, -1);
+
+       luaL_error(L, "Invalid operand");
+       return NULL;
+}
+
+static bool parse_mac(const char *mac, struct ether_addr *ea)
+{
+       unsigned long int n;
+       char *e, sep = 0;
+       int i;
+
+       for (i = 0; i < 6; i++)
+       {
+               if (i > 0)
+               {
+                       if (sep == 0 && (mac[0] == ':' || mac[0] == '-'))
+                               sep = mac[0];
+
+                       if (sep == 0 || mac[0] != sep)
+                               return false;
+
+                       mac++;
+               }
+
+               n = strtoul(mac, &e, 16);
+
+               if (n > 0xFF)
+                       return false;
+
+               mac += (e - mac);
+               ea->ether_addr_octet[i] = n;
+       }
+
+       if (mac[0] != 0)
+               return false;
+
+       return true;
+}
+
+static bool parse_mask(int family, const char *mask, int16_t *bits)
+{
+       char *e;
+       union {
+               struct in_addr v4;
+               struct in6_addr v6;
+               struct ether_addr mac;
+               uint8_t u8[16];
+       } m;
+
+       if (family == AF_INET && inet_pton(AF_INET, mask, &m.v4))
+       {
+               for (*bits = 0, m.v4.s_addr = ntohl(m.v4.s_addr);
+                        *bits < AF_BITS(AF_INET) && (m.v4.s_addr << *bits) & 0x80000000;
+                        ++*bits);
+       }
+       else if ((family == AF_INET6 && inet_pton(AF_INET6, mask, &m.v6)) ||
+                (family == AF_PACKET && parse_mac(mask, &m.mac)))
+       {
+               for (*bits = 0;
+                        *bits < AF_BITS(family) && (m.u8[*bits / 8] << (*bits % 8)) & 128;
+                        ++*bits);
+       }
+       else
+       {
+               *bits = strtoul(mask, &e, 10);
+
+               if (e == mask || *e != 0 || *bits > AF_BITS(family))
+                       return false;
+       }
+
+       return true;
+}
+
+static bool parse_cidr(const char *dest, cidr_t *pp)
+{
+       char *p, buf[INET6_ADDRSTRLEN * 2 + 2];
+
+       strncpy(buf, dest, sizeof(buf) - 1);
+
+       p = strchr(buf, '/');
+
+       if (p)
+               *p++ = 0;
+
+       if (inet_pton(AF_INET, buf, &pp->addr.v4))
+               pp->family = AF_INET;
+       else if (inet_pton(AF_INET6, buf, &pp->addr.v6))
+               pp->family = AF_INET6;
+       else if (parse_mac(buf, &pp->addr.mac))
+               pp->family = AF_PACKET;
+       else
+               return false;
+
+       if (p)
+       {
+               if (!parse_mask(pp->family, p, &pp->bits))
+                       return false;
+       }
+       else
+       {
+               pp->bits = AF_BITS(pp->family);
+       }
+
+       return true;
+}
+
+static int format_cidr(lua_State *L, cidr_t *p)
+{
+       char buf[INET6_ADDRSTRLEN];
+
+       if (p->family == AF_PACKET)
+       {
+               snprintf(buf, sizeof(buf), "%02X:%02X:%02X:%02X:%02X:%02X",
+                        p->addr.mac.ether_addr_octet[0],
+                        p->addr.mac.ether_addr_octet[1],
+                        p->addr.mac.ether_addr_octet[2],
+                        p->addr.mac.ether_addr_octet[3],
+                        p->addr.mac.ether_addr_octet[4],
+                        p->addr.mac.ether_addr_octet[5]);
+
+               if (p->bits < AF_BITS(AF_PACKET))
+                       lua_pushfstring(L, "%s/%d", buf, p->bits);
+               else
+                       lua_pushstring(L, buf);
+       }
+       else
+       {
+               if (p->bits < AF_BITS(p->family))
+                       lua_pushfstring(L, "%s/%d",
+                                       inet_ntop(p->family, &p->addr.v6, buf, sizeof(buf)),
+                                       p->bits);
+               else
+                       lua_pushstring(L,
+                                      inet_ntop(p->family, &p->addr.v6, buf, sizeof(buf)));
+       }
+
+       return 1;
+}
+
+static int L_getint(lua_State *L, int index, const char *name)
+{
+       int rv = 0;
+
+       lua_getfield(L, index, name);
+
+       if (lua_type(L, -1) == LUA_TNUMBER)
+               rv = lua_tonumber(L, -1);
+
+       lua_pop(L, 1);
+
+       return rv;
+}
+
+static const char * L_getstr(lua_State *L, int index, const char *name)
+{
+       const char *rv = NULL;
+
+       lua_getfield(L, index, name);
+
+       if (lua_type(L, -1) == LUA_TSTRING)
+               rv = lua_tostring(L, -1);
+
+       lua_pop(L, 1);
+
+       return rv;
+}
+
+static void L_setint(struct lua_State *L, const char *name, uint32_t n)
+{
+       lua_pushinteger(L, n);
+       lua_setfield(L, -2, name);
+}
+
+static void L_setbool(struct lua_State *L, const char *name, bool val)
+{
+       lua_pushboolean(L, val);
+       lua_setfield(L, -2, name);
+}
+
+static void L_setaddr(struct lua_State *L, const char *name,
+                      int family, void *addr, int bits)
+{
+       cidr_t *p;
+
+       if (!addr)
+               return;
+
+       p = lua_newuserdata(L, sizeof(*p));
+
+       if (!p)
+               return;
+
+       if (family == AF_INET)
+       {
+               p->family = AF_INET;
+               p->bits = (bits < 0) ? AF_BITS(AF_INET) : bits;
+               p->addr.v4 = *(struct in_addr *)addr;
+       }
+       else if (family == AF_INET6)
+       {
+               p->family = AF_INET6;
+               p->bits = (bits < 0) ? AF_BITS(AF_INET6) : bits;
+               p->addr.v6 = *(struct in6_addr *)addr;
+       }
+       else
+       {
+               p->family = AF_PACKET;
+               p->bits = (bits < 0) ? AF_BITS(AF_PACKET) : bits;
+               p->addr.mac = *(struct ether_addr *)addr;
+       }
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       lua_setfield(L, -2, name);
+}
+
+static void L_setstr(struct lua_State *L, const char *name, const char *val)
+{
+       lua_pushstring(L, val);
+       lua_setfield(L, -2, name);
+}
+
+static void L_setdev(struct lua_State *L, const char *name,
+                     struct nlattr *attr)
+{
+       char buf[32];
+
+       if (if_indextoname(RTA_INT(attr), buf))
+               L_setstr(L, name, buf);
+}
+
+static int L_checkbits(lua_State *L, int index, cidr_t *p)
+{
+       int16_t s16;
+       int bits;
+
+       if (lua_gettop(L) < index || lua_isnil(L, index))
+       {
+               bits = p->bits;
+       }
+       else if (lua_type(L, index) == LUA_TNUMBER)
+       {
+               bits = lua_tointeger(L, index);
+
+               if (bits < 0 || bits > AF_BITS(p->family))
+                       return luaL_error(L, "Invalid prefix size");
+       }
+       else if (lua_type(L, index) == LUA_TSTRING)
+       {
+               if (!parse_mask(p->family, lua_tostring(L, index), &s16))
+                       return luaL_error(L, "Invalid netmask format");
+
+               bits = s16;
+       }
+       else
+       {
+               return luaL_error(L, "Invalid data type");
+       }
+
+       return bits;
+}
+
+static int _cidr_new(lua_State *L, int index, int family, bool mask)
+{
+       uint32_t n;
+       const char *addr;
+       cidr_t cidr = { }, *cidrp;
+
+       if (lua_type(L, index) == LUA_TNUMBER)
+       {
+               n = htonl(lua_tointeger(L, index));
+
+               if (family == AF_INET6)
+               {
+                       cidr.family = AF_INET6;
+                       cidr.addr.v6.s6_addr[12] = n;
+                       cidr.addr.v6.s6_addr[13] = (n >> 8);
+                       cidr.addr.v6.s6_addr[14] = (n >> 16);
+                       cidr.addr.v6.s6_addr[15] = (n >> 24);
+               }
+               else if (family == AF_INET)
+               {
+                       cidr.family = AF_INET;
+                       cidr.addr.v4.s_addr = n;
+               }
+               else
+               {
+                       cidr.family = AF_PACKET;
+                       cidr.addr.mac.ether_addr_octet[2] = n;
+                       cidr.addr.mac.ether_addr_octet[3] = (n >> 8);
+                       cidr.addr.mac.ether_addr_octet[4] = (n >> 16);
+                       cidr.addr.mac.ether_addr_octet[5] = (n >> 24);
+               }
+
+               cidr.bits = AF_BITS(cidr.family);
+       }
+       else
+       {
+               addr = luaL_checkstring(L, index);
+
+               if (!parse_cidr(addr, &cidr))
+                       return 0;
+
+               if (family && cidr.family != family)
+                       return 0;
+
+               if (mask)
+                       cidr.bits = L_checkbits(L, index + 1, &cidr);
+       }
+
+       if (!(cidrp = lua_newuserdata(L, sizeof(*cidrp))))
+               return 0;
+
+       *cidrp = cidr;
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_new(lua_State *L)
+{
+       return _cidr_new(L, 1, 0, true);
+}
+
+static int cidr_ipv4(lua_State *L)
+{
+       return _cidr_new(L, 1, AF_INET, true);
+}
+
+static int cidr_ipv6(lua_State *L)
+{
+       return _cidr_new(L, 1, AF_INET6, true);
+}
+
+static int cidr_mac(lua_State *L)
+{
+       return _cidr_new(L, 1, AF_PACKET, true);
+}
+
+static int cidr_check(lua_State *L, int family)
+{
+       cidr_t cidr = { }, *cidrp;
+       const char *addr;
+
+       if (lua_type(L, 1) == LUA_TSTRING)
+       {
+               addr = lua_tostring(L, 1);
+
+               if (addr && parse_cidr(addr, &cidr) && cidr.family == family)
+                       return format_cidr(L, &cidr);
+       }
+       else
+       {
+               cidrp = lua_touserdata(L, 1);
+
+               if (cidrp == NULL)
+                       return 0;
+
+               if (!lua_getmetatable(L, 1))
+                       return 0;
+
+               lua_getfield(L, LUA_REGISTRYINDEX, LUCI_IP_CIDR);
+
+               if (!lua_rawequal(L, -1, -2))
+                       cidrp = NULL;
+
+               lua_pop(L, 2);
+
+               if (cidrp != NULL && cidrp->family == family)
+                       return format_cidr(L, cidrp);
+       }
+
+       return 0;
+}
+
+static int cidr_checkip4(lua_State *L)
+{
+       return cidr_check(L, AF_INET);
+}
+
+static int cidr_checkip6(lua_State *L)
+{
+       return cidr_check(L, AF_INET6);
+}
+
+static int cidr_checkmac(lua_State *L)
+{
+       return cidr_check(L, AF_PACKET);
+}
+
+static int cidr_is4(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, p->family == AF_INET);
+       return 1;
+}
+
+static int cidr_is4rfc1918(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       uint32_t a = htonl(p->addr.v4.s_addr);
+
+       lua_pushboolean(L, (p->family == AF_INET &&
+                           ((a >= 0x0A000000 && a <= 0x0AFFFFFF) ||
+                            (a >= 0xAC100000 && a <= 0xAC1FFFFF) ||
+                            (a >= 0xC0A80000 && a <= 0xC0A8FFFF))));
+
+       return 1;
+}
+
+static int cidr_is4linklocal(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       uint32_t a = htonl(p->addr.v4.s_addr);
+
+       lua_pushboolean(L, (p->family == AF_INET &&
+                           a >= 0xA9FE0000 &&
+                           a <= 0xA9FEFFFF));
+
+       return 1;
+}
+
+static bool _is_mapped4(cidr_t *p)
+{
+       return (p->family == AF_INET6 &&
+               p->addr.v6.s6_addr[0] == 0 &&
+               p->addr.v6.s6_addr[1] == 0 &&
+               p->addr.v6.s6_addr[2] == 0 &&
+               p->addr.v6.s6_addr[3] == 0 &&
+               p->addr.v6.s6_addr[4] == 0 &&
+               p->addr.v6.s6_addr[5] == 0 &&
+               p->addr.v6.s6_addr[6] == 0 &&
+               p->addr.v6.s6_addr[7] == 0 &&
+               p->addr.v6.s6_addr[8] == 0 &&
+               p->addr.v6.s6_addr[9] == 0 &&
+               p->addr.v6.s6_addr[10] == 0xFF &&
+               p->addr.v6.s6_addr[11] == 0xFF);
+}
+
+static int cidr_is6mapped4(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, _is_mapped4(p));
+       return 1;
+}
+
+static int cidr_is6(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, p->family == AF_INET6);
+       return 1;
+}
+
+static int cidr_is6linklocal(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, (p->family == AF_INET6 &&
+                           p->addr.v6.s6_addr[0] == 0xFE &&
+                           p->addr.v6.s6_addr[1] >= 0x80 &&
+                           p->addr.v6.s6_addr[1] <= 0xBF));
+
+       return 1;
+}
+
+static int cidr_ismac(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, p->family == AF_PACKET);
+       return 1;
+}
+
+static int cidr_ismacmcast(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, (p->family == AF_PACKET &&
+                           (p->addr.mac.ether_addr_octet[0] & 0x1)));
+
+       return 1;
+}
+
+static int cidr_ismaclocal(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+
+       lua_pushboolean(L, (p->family == AF_PACKET &&
+                           (p->addr.mac.ether_addr_octet[0] & 0x2)));
+
+       return 1;
+}
+
+static int _cidr_cmp(lua_State *L)
+{
+       cidr_t *a = L_checkcidr(L, 1, NULL);
+       cidr_t *b = L_checkcidr(L, 2, NULL);
+
+       if (a->family != b->family)
+               return (a->family - b->family);
+
+       return memcmp(&a->addr.v6, &b->addr.v6, AF_BYTES(a->family));
+}
+
+static int cidr_lower(lua_State *L)
+{
+       lua_pushboolean(L, _cidr_cmp(L) < 0);
+       return 1;
+}
+
+static int cidr_higher(lua_State *L)
+{
+       lua_pushboolean(L, _cidr_cmp(L) > 0);
+       return 1;
+}
+
+static int cidr_equal(lua_State *L)
+{
+       lua_pushboolean(L, _cidr_cmp(L) == 0);
+       return 1;
+}
+
+static int cidr_lower_equal(lua_State *L)
+{
+       lua_pushboolean(L, _cidr_cmp(L) <= 0);
+       return 1;
+}
+
+static int cidr_prefix(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       int bits = L_checkbits(L, 2, p);
+
+       p->bits = bits;
+       lua_pushinteger(L, p->bits);
+       return 1;
+}
+
+static void _apply_mask(cidr_t *p, int bits, bool inv)
+{
+       uint8_t b, i;
+
+       if (bits <= 0)
+       {
+               memset(&p->addr.u8, inv * 0xFF, AF_BYTES(p->family));
+       }
+       else if (p->family == AF_INET && bits <= AF_BITS(AF_INET))
+       {
+               if (inv)
+                       p->addr.v4.s_addr |= ntohl((1 << (AF_BITS(AF_INET) - bits)) - 1);
+               else
+                       p->addr.v4.s_addr &= ntohl(~((1 << (AF_BITS(AF_INET) - bits)) - 1));
+       }
+       else if (bits <= AF_BITS(p->family))
+       {
+               for (i = 0; i < AF_BYTES(p->family); i++)
+               {
+                       b = (bits > 8) ? 8 : bits;
+                       if (inv)
+                               p->addr.u8[i] |= ~((uint8_t)(0xFF << (8 - b)));
+                       else
+                               p->addr.u8[i] &= (uint8_t)(0xFF << (8 - b));
+                       bits -= b;
+               }
+       }
+}
+
+static int cidr_network(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL), *p2;
+       int bits = L_checkbits(L, 2, p1);
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       *p2 = *p1;
+       p2->bits = AF_BITS(p1->family);
+       _apply_mask(p2, bits, false);
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_host(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2 = lua_newuserdata(L, sizeof(*p2));
+
+       if (!p2)
+               return 0;
+
+       *p2 = *p1;
+       p2->bits = AF_BITS(p1->family);
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_mask(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL), *p2;
+       int bits = L_checkbits(L, 2, p1);
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       p2->bits = AF_BITS(p1->family);
+       p2->family = p1->family;
+
+       memset(&p2->addr.v6.s6_addr, 0xFF, sizeof(p2->addr.v6.s6_addr));
+       _apply_mask(p2, bits, false);
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_broadcast(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2;
+       int bits = L_checkbits(L, 2, p1);
+
+       if (p1->family != AF_INET)
+               return 0;
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       *p2 = *p1;
+       p2->bits = AF_BITS(AF_INET);
+       _apply_mask(p2, bits, true);
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_mapped4(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2;
+
+       if (!_is_mapped4(p1))
+               return 0;
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       p2->family = AF_INET;
+       p2->bits = (p1->bits > AF_BITS(AF_INET)) ? AF_BITS(AF_INET) : p1->bits;
+       memcpy(&p2->addr.v4, p1->addr.v6.s6_addr + 12, sizeof(p2->addr.v4));
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_tolinklocal(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2;
+       int i;
+
+       if (p1->family != AF_PACKET)
+               return 0;
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       p2->family = AF_INET6;
+       p2->bits = AF_BITS(AF_INET6);
+       p2->addr.u8[0] = 0xFE;
+       p2->addr.u8[1] = 0x80;
+       p2->addr.u8[8] = p1->addr.u8[0] ^ 0x02;
+       p2->addr.u8[9] = p1->addr.u8[1];
+       p2->addr.u8[10] = p1->addr.u8[2];
+       p2->addr.u8[11] = 0xFF;
+       p2->addr.u8[12] = 0xFE;
+       p2->addr.u8[13] = p1->addr.u8[3];
+       p2->addr.u8[14] = p1->addr.u8[4];
+       p2->addr.u8[15] = p1->addr.u8[5];
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_tomac(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2;
+       int i;
+
+       if (p1->family != AF_INET6 ||
+           p1->addr.u8[0] != 0xFE ||
+           p1->addr.u8[1] != 0x80 ||
+           p1->addr.u8[2] != 0x00 ||
+           p1->addr.u8[3] != 0x00 ||
+           p1->addr.u8[4] != 0x00 ||
+           p1->addr.u8[5] != 0x00 ||
+           p1->addr.u8[6] != 0x00 ||
+           p1->addr.u8[7] != 0x00 ||
+           p1->addr.u8[11] != 0xFF ||
+           p1->addr.u8[12] != 0xFE)
+           return 0;
+
+       if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
+               return 0;
+
+       p2->family = AF_PACKET;
+       p2->bits = AF_BITS(AF_PACKET);
+       p2->addr.u8[0] = p1->addr.u8[8] ^ 0x02;
+       p2->addr.u8[1] = p1->addr.u8[9];
+       p2->addr.u8[2] = p1->addr.u8[10];
+       p2->addr.u8[3] = p1->addr.u8[13];
+       p2->addr.u8[4] = p1->addr.u8[14];
+       p2->addr.u8[5] = p1->addr.u8[15];
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_contains(lua_State *L)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2 = L_checkcidr(L, 2, NULL);
+       cidr_t a = *p1, b = *p2;
+       bool rv = false;
+
+       if (p1->family == p2->family && p1->bits <= p2->bits)
+       {
+               _apply_mask(&a, p1->bits, false);
+               _apply_mask(&b, p1->bits, false);
+
+               rv = !memcmp(&a.addr.v6, &b.addr.v6, AF_BYTES(a.family));
+       }
+
+       lua_pushboolean(L, rv);
+       return 1;
+}
+
+#define BYTE(a, i) \
+       (a)->addr.u8[AF_BYTES((a)->family) - (i) - 1]
+
+static int _cidr_add_sub(lua_State *L, bool add)
+{
+       cidr_t *p1 = L_checkcidr(L, 1, NULL);
+       cidr_t *p2 = L_checkcidr(L, 2, p1);
+       cidr_t r = *p1;
+       bool inplace = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : false;
+       bool ok = true;
+       uint8_t i, carry;
+       uint32_t a, b;
+
+       if (p1->family == p2->family)
+       {
+               if (p1->family == AF_INET)
+               {
+                       a = ntohl(p1->addr.v4.s_addr);
+                       b = ntohl(p2->addr.v4.s_addr);
+
+                       /* would over/underflow */
+                       if ((add && (UINT_MAX - a) < b) || (!add && a < b))
+                       {
+                               r.addr.v4.s_addr = add * 0xFFFFFFFF;
+                               ok = false;
+                       }
+                       else
+                       {
+                               r.addr.v4.s_addr = add ? htonl(a + b) : htonl(a - b);
+                       }
+               }
+               else
+               {
+                       for (i = 0, carry = 0; i < AF_BYTES(p1->family); i++)
+                       {
+                               if (add)
+                               {
+                                       BYTE(&r, i) = BYTE(p1, i) + BYTE(p2, i) + carry;
+                                       carry = (BYTE(p1, i) + BYTE(p2, i) + carry) / 256;
+                               }
+                               else
+                               {
+                                       BYTE(&r, i) = (BYTE(p1, i) - BYTE(p2, i) - carry);
+                                       carry = (BYTE(p1, i) < (BYTE(p2, i) + carry));
+                               }
+                       }
+
+                       /* would over/underflow */
+                       if (carry)
+                       {
+                               memset(&r.addr.u8, add * 0xFF, AF_BYTES(r.family));
+                               ok = false;
+                       }
+               }
+       }
+       else
+       {
+               ok = false;
+       }
+
+       if (inplace)
+       {
+               *p1 = r;
+               lua_pushboolean(L, ok);
+               return 1;
+       }
+
+       if (!(p1 = lua_newuserdata(L, sizeof(*p1))))
+               return 0;
+
+       *p1 = r;
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_add(lua_State *L)
+{
+       return _cidr_add_sub(L, true);
+}
+
+static int cidr_sub(lua_State *L)
+{
+       return _cidr_add_sub(L, false);
+}
+
+static int cidr_minhost(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       cidr_t r = *p;
+       uint8_t i, rest, carry;
+
+       _apply_mask(&r, r.bits, false);
+
+       if (r.family == AF_INET && r.bits < AF_BITS(AF_INET))
+       {
+               r.bits = AF_BITS(AF_INET);
+               r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) + 1);
+       }
+       else if (r.bits < AF_BITS(r.family))
+       {
+               r.bits = AF_BITS(r.family);
+
+               for (i = 0, carry = 1; i < AF_BYTES(r.family); i++)
+               {
+                       rest = (BYTE(&r, i) + carry) > 255;
+                       BYTE(&r, i) += carry;
+                       carry = rest;
+               }
+       }
+
+       if (!(p = lua_newuserdata(L, sizeof(*p))))
+               return 0;
+
+       *p = r;
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_maxhost(lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       cidr_t r = *p;
+
+       _apply_mask(&r, r.bits, true);
+
+       if (r.family == AF_INET && r.bits < AF_BITS(AF_INET))
+       {
+               r.bits = AF_BITS(AF_INET);
+               r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) - 1);
+       }
+       else
+       {
+               r.bits = AF_BITS(r.family);
+       }
+
+       if (!(p = lua_newuserdata(L, sizeof(*p))))
+               return 0;
+
+       *p = r;
+
+       luaL_getmetatable(L, LUCI_IP_CIDR);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int cidr_gc (lua_State *L)
+{
+       return 0;
+}
+
+static int cidr_tostring (lua_State *L)
+{
+       cidr_t *p = L_checkcidr(L, 1, NULL);
+       return format_cidr(L, p);
+}
+
+/*
+ * route functions
+ */
+
+static bool diff_prefix(int family, void *addr, int bits, bool exact, cidr_t *p)
+{
+       uint8_t i, b, r, *a;
+       uint32_t m;
+
+       if (!p->family)
+               return false;
+
+       if (!addr || p->family != family || p->bits > bits)
+               return true;
+
+       if (family == AF_INET)
+       {
+               m = p->bits ? htonl(~((1 << (AF_BITS(AF_INET) - p->bits)) - 1)) : 0;
+
+               if ((((struct in_addr *)addr)->s_addr & m) != (p->addr.v4.s_addr & m))
+                       return true;
+       }
+       else
+       {
+               for (i = 0, a = addr, r = p->bits; i < AF_BYTES(p->family); i++)
+               {
+                       b = r ? (0xFF << (8 - ((r > 8) ? 8 : r))) : 0;
+
+                       if ((a[i] & b) != (p->addr.u8[i] & b))
+                               return true;
+
+                       r -= ((r > 8) ? 8 : r);
+               }
+       }
+
+       return (exact && p->bits != bits);
+}
+
+static int cb_dump_route(struct nl_msg *msg, void *arg)
+{
+       struct dump_state *s = arg;
+       struct dump_filter *f = s->filter;
+       struct nlmsghdr *hdr = nlmsg_hdr(msg);
+       struct rtmsg *rt = NLMSG_DATA(hdr);
+       struct nlattr *tb[RTA_MAX+1];
+       struct in6_addr *src, *dst, *gw, *from, def = { };
+       int iif, oif, bitlen;
+       uint32_t table;
+
+       if (hdr->nlmsg_type != RTM_NEWROUTE ||
+           (rt->rtm_family != AF_INET && rt->rtm_family != AF_INET6))
+               return NL_SKIP;
+
+       nlmsg_parse(hdr, sizeof(*rt), tb, RTA_MAX, NULL);
+
+       iif   = tb[RTA_IIF]     ? RTA_INT(tb[RTA_IIF])      : 0;
+       oif   = tb[RTA_OIF]     ? RTA_INT(tb[RTA_OIF])      : 0;
+       table = tb[RTA_TABLE]   ? RTA_U32(tb[RTA_TABLE])    : rt->rtm_table;
+       from  = tb[RTA_SRC]     ? RTA_DATA(tb[RTA_SRC])     : NULL;
+       src   = tb[RTA_PREFSRC] ? RTA_DATA(tb[RTA_PREFSRC]) : NULL;
+       dst   = tb[RTA_DST]     ? RTA_DATA(tb[RTA_DST])     : &def;
+       gw    = tb[RTA_GATEWAY] ? RTA_DATA(tb[RTA_GATEWAY]) : NULL;
+
+       bitlen = AF_BITS(rt->rtm_family);
+
+       if (!f->get) {
+               if ((f->type   && rt->rtm_type     != f->type)   ||
+                   (f->family && rt->rtm_family   != f->family) ||
+                   (f->proto  && rt->rtm_protocol != f->proto)  ||
+                   (f->scope  && rt->rtm_scope    != f->scope)  ||
+                   (f->iif    && iif              != f->iif)    ||
+                   (f->oif    && oif              != f->oif)    ||
+                   (f->table  && table            != f->table)  ||
+                   diff_prefix(rt->rtm_family, from, rt->rtm_src_len,
+                               f->from_exact, &f->from)         ||
+                   diff_prefix(rt->rtm_family, dst,  rt->rtm_dst_len,
+                               f->dst_exact, &f->dst)           ||
+                   diff_prefix(rt->rtm_family, gw,   bitlen,
+                               false, &f->gw)                   ||
+                   diff_prefix(rt->rtm_family, src,  bitlen,
+                               false, &f->src))
+                       goto out;
+       }
+
+       if (s->callback)
+               lua_pushvalue(s->L, 2);
+
+       lua_newtable(s->L);
+
+       L_setint(s->L, "type", rt->rtm_type);
+       L_setint(s->L, "family", (rt->rtm_family == AF_INET) ? 4 : 6);
+
+       L_setaddr(s->L, "dest", rt->rtm_family, dst, rt->rtm_dst_len);
+
+       if (gw)
+               L_setaddr(s->L, "gw", rt->rtm_family, gw, -1);
+
+       if (from)
+               L_setaddr(s->L, "from", rt->rtm_family, from, rt->rtm_src_len);
+
+       if (iif)
+               L_setdev(s->L, "iif", tb[RTA_IIF]);
+
+       if (oif)
+               L_setdev(s->L, "dev", tb[RTA_OIF]);
+
+       L_setint(s->L, "table", table);
+       L_setint(s->L, "proto", rt->rtm_protocol);
+       L_setint(s->L, "scope", rt->rtm_scope);
+
+       if (src)
+               L_setaddr(s->L, "src", rt->rtm_family, src, -1);
+
+       if (tb[RTA_PRIORITY])
+               L_setint(s->L, "metric", RTA_U32(tb[RTA_PRIORITY]));
+
+       if (rt->rtm_family == AF_INET6 && tb[RTA_CACHEINFO])
+       {
+               struct rta_cacheinfo *ci = RTA_DATA(tb[RTA_CACHEINFO]);
+
+               if (ci->rta_expires)
+               {
+                       if (ci->rta_expires)
+                               L_setint(s->L, "expires", ci->rta_expires / hz);
+
+                       if (ci->rta_error != 0)
+                               L_setint(s->L, "error", ci->rta_error);
+               }
+       }
+
+       s->index++;
+
+       if (s->callback)
+               lua_call(s->L, 1, 0);
+       else if (hdr->nlmsg_flags & NLM_F_MULTI)
+               lua_rawseti(s->L, -2, s->index);
+
+out:
+       s->pending = !!(hdr->nlmsg_flags & NLM_F_MULTI);
+       return NL_SKIP;
+}
+
+static int
+cb_done(struct nl_msg *msg, void *arg)
+{
+       struct dump_state *s = arg;
+       s->pending = 0;
+       return NL_STOP;
+}
+
+static int
+cb_error(struct sockaddr_nl *nla, struct nlmsgerr *err, void *arg)
+{
+       struct dump_state *s = arg;
+       s->pending = 0;
+       return NL_STOP;
+}
+
+static int _error(lua_State *L, int code, const char *msg)
+{
+       lua_pushnil(L);
+       lua_pushnumber(L, code ? code : errno);
+       lua_pushstring(L, msg ? msg : strerror(errno));
+
+       return 3;
+}
+
+static int _route_dump(lua_State *L, struct dump_filter *filter)
+{
+       int flags = NLM_F_REQUEST;
+       struct dump_state s = {
+               .L = L,
+               .pending = 1,
+               .index = 0,
+               .callback = lua_isfunction(L, 2),
+               .filter = filter
+       };
+
+       if (!hz)
+               hz = sysconf(_SC_CLK_TCK);
+
+       if (!sock)
+       {
+               sock = nl_socket_alloc();
+               if (!sock)
+                       return _error(L, -1, "Out of memory");
+
+               if (nl_connect(sock, NETLINK_ROUTE))
+                       return _error(L, 0, NULL);
+       }
+
+       struct nl_msg *msg;
+       struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT);
+       struct rtmsg rtm = {
+               .rtm_family = filter->family,
+               .rtm_dst_len = filter->dst.bits,
+               .rtm_src_len = filter->src.bits
+       };
+
+       if (!filter->get)
+               flags |= NLM_F_DUMP;
+
+       msg = nlmsg_alloc_simple(RTM_GETROUTE, flags);
+       if (!msg)
+               goto out;
+
+       nlmsg_append(msg, &rtm, sizeof(rtm), 0);
+
+       if (filter->get) {
+               nla_put(msg, RTA_DST, AF_BYTES(filter->dst.family),
+                       &filter->dst.addr.v6);
+
+               if (filter->src.family)
+                       nla_put(msg, RTA_SRC, AF_BYTES(filter->src.family),
+                               &filter->src.addr.v6);
+       }
+
+       nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_route, &s);
+       nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &s);
+       nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &s);
+
+       nl_send_auto_complete(sock, msg);
+
+       if (!filter->get && !s.callback)
+               lua_newtable(L);
+
+       while (s.pending > 0)
+               nl_recvmsgs(sock, cb);
+
+       nlmsg_free(msg);
+
+out:
+       nl_cb_put(cb);
+
+       if (s.callback)
+               return 0;
+
+       if (!filter->get)
+               return 1;
+
+       return (s.index > 0);
+}
+
+static int route_get(lua_State *L)
+{
+       struct dump_filter filter = { .get = true };
+       const char *dest = luaL_checkstring(L, 1);
+       const char *from = luaL_optstring(L, 2, NULL);
+
+       if (!parse_cidr(dest, &filter.dst))
+               return _error(L, -1, "Invalid destination");
+
+       if (from && !parse_cidr(from, &filter.src))
+               return _error(L, -1, "Invalid source");
+
+       if (filter.src.family != 0 &&
+           filter.src.family != filter.dst.family)
+               return _error(L, -1, "Different source/destination family");
+
+       filter.family = filter.dst.family;
+
+       return _route_dump(L, &filter);
+}
+
+static int route_dump(lua_State *L)
+{
+       const char *s;
+       cidr_t p = { };
+       struct dump_filter filter = { };
+
+       if (lua_type(L, 1) == LUA_TTABLE)
+       {
+               filter.family = L_getint(L, 1, "family");
+
+               if (filter.family == 4)
+                       filter.family = AF_INET;
+               else if (filter.family == 6)
+                       filter.family = AF_INET6;
+               else
+                       filter.family = 0;
+
+               if ((s = L_getstr(L, 1, "iif")) != NULL)
+                       filter.iif = if_nametoindex(s);
+
+               if ((s = L_getstr(L, 1, "oif")) != NULL)
+                       filter.oif = if_nametoindex(s);
+
+               filter.type = L_getint(L, 1, "type");
+               filter.scope = L_getint(L, 1, "scope");
+               filter.proto = L_getint(L, 1, "proto");
+               filter.table = L_getint(L, 1, "table");
+
+               if ((s = L_getstr(L, 1, "gw")) != NULL && parse_cidr(s, &p))
+                       filter.gw = p;
+
+               if ((s = L_getstr(L, 1, "from")) != NULL && parse_cidr(s, &p))
+                       filter.from = p;
+
+               if ((s = L_getstr(L, 1, "src")) != NULL && parse_cidr(s, &p))
+                       filter.src = p;
+
+               if ((s = L_getstr(L, 1, "dest")) != NULL && parse_cidr(s, &p))
+                       filter.dst = p;
+
+               if ((s = L_getstr(L, 1, "from_exact")) != NULL && parse_cidr(s, &p))
+                       filter.from = p, filter.from_exact = true;
+
+               if ((s = L_getstr(L, 1, "dest_exact")) != NULL && parse_cidr(s, &p))
+                       filter.dst = p, filter.dst_exact = true;
+       }
+
+       return _route_dump(L, &filter);
+}
+
+
+static bool diff_macaddr(struct ether_addr *mac1, struct ether_addr *mac2)
+{
+       struct ether_addr empty = { };
+
+       if (!memcmp(mac2, &empty, sizeof(empty)))
+               return false;
+
+       if (!mac1 || memcmp(mac1, mac2, sizeof(empty)))
+               return true;
+
+       return false;
+}
+
+static int cb_dump_neigh(struct nl_msg *msg, void *arg)
+{
+       char buf[32];
+       struct ether_addr *mac;
+       struct in6_addr *dst;
+       struct dump_state *s = arg;
+       struct dump_filter *f = s->filter;
+       struct nlmsghdr *hdr = nlmsg_hdr(msg);
+       struct ndmsg *nd = NLMSG_DATA(hdr);
+       struct nlattr *tb[NDA_MAX+1];
+       int bitlen;
+
+       if (hdr->nlmsg_type != RTM_NEWNEIGH ||
+           (nd->ndm_family != AF_INET && nd->ndm_family != AF_INET6))
+               return NL_SKIP;
+
+       nlmsg_parse(hdr, sizeof(*nd), tb, NDA_MAX, NULL);
+
+       mac = tb[NDA_LLADDR] ? RTA_DATA(tb[NDA_LLADDR]) : NULL;
+       dst = tb[NDA_DST]    ? RTA_DATA(tb[NDA_DST])    : NULL;
+
+       bitlen = AF_BITS(nd->ndm_family);
+
+       if ((f->family && nd->ndm_family  != f->family) ||
+           (f->iif    && nd->ndm_ifindex != f->iif) ||
+               (f->type   && !(f->type & nd->ndm_state)) ||
+           diff_prefix(nd->ndm_family, dst, bitlen, false, &f->dst) ||
+           diff_macaddr(mac, &f->mac))
+               goto out;
+
+       if (s->callback)
+               lua_pushvalue(s->L, 2);
+
+       lua_newtable(s->L);
+
+       L_setint(s->L, "family", (nd->ndm_family == AF_INET) ? 4 : 6);
+       L_setstr(s->L, "dev", if_indextoname(nd->ndm_ifindex, buf));
+
+       L_setbool(s->L, "router", (nd->ndm_flags & NTF_ROUTER));
+       L_setbool(s->L, "proxy", (nd->ndm_flags & NTF_PROXY));
+
+       L_setbool(s->L, "incomplete", (nd->ndm_state & NUD_INCOMPLETE));
+       L_setbool(s->L, "reachable", (nd->ndm_state & NUD_REACHABLE));
+       L_setbool(s->L, "stale", (nd->ndm_state & NUD_STALE));
+       L_setbool(s->L, "delay", (nd->ndm_state & NUD_DELAY));
+       L_setbool(s->L, "probe", (nd->ndm_state & NUD_PROBE));
+       L_setbool(s->L, "failed", (nd->ndm_state & NUD_FAILED));
+       L_setbool(s->L, "noarp", (nd->ndm_state & NUD_NOARP));
+       L_setbool(s->L, "permanent", (nd->ndm_state & NUD_PERMANENT));
+
+       if (dst)
+               L_setaddr(s->L, "dest", nd->ndm_family, dst, -1);
+
+       if (mac)
+               L_setaddr(s->L, "mac", AF_PACKET, mac, -1);
+
+       s->index++;
+
+       if (s->callback)
+               lua_call(s->L, 1, 0);
+       else if (hdr->nlmsg_flags & NLM_F_MULTI)
+               lua_rawseti(s->L, -2, s->index);
+
+out:
+       s->pending = !!(hdr->nlmsg_flags & NLM_F_MULTI);
+       return NL_SKIP;
+}
+
+static int neighbor_dump(lua_State *L)
+{
+       cidr_t p = { };
+       const char *s;
+       struct ether_addr *mac;
+       struct dump_filter filter = { .type = 0xFF & ~NUD_NOARP };
+       struct dump_state st = {
+               .callback = lua_isfunction(L, 2),
+               .pending = 1,
+               .filter = &filter,
+               .L = L
+       };
+
+       if (lua_type(L, 1) == LUA_TTABLE)
+       {
+               filter.family = L_getint(L, 1, "family");
+
+               if (filter.family == 4)
+                       filter.family = AF_INET;
+               else if (filter.family == 6)
+                       filter.family = AF_INET6;
+               else
+                       filter.family = 0;
+
+               if ((s = L_getstr(L, 1, "dev")) != NULL)
+                       filter.iif = if_nametoindex(s);
+
+               if ((s = L_getstr(L, 1, "dest")) != NULL && parse_cidr(s, &p))
+                       filter.dst = p;
+
+               if ((s = L_getstr(L, 1, "mac")) != NULL &&
+                   (mac = ether_aton(s)) != NULL)
+                       filter.mac = *mac;
+       }
+
+       if (!sock)
+       {
+               sock = nl_socket_alloc();
+               if (!sock)
+                       return _error(L, -1, "Out of memory");
+
+               if (nl_connect(sock, NETLINK_ROUTE))
+                       return _error(L, 0, NULL);
+       }
+
+       struct nl_msg *msg;
+       struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT);
+       struct ndmsg ndm = {
+               .ndm_family = filter.family
+       };
+
+       msg = nlmsg_alloc_simple(RTM_GETNEIGH, NLM_F_REQUEST | NLM_F_DUMP);
+       if (!msg)
+               goto out;
+
+       nlmsg_append(msg, &ndm, sizeof(ndm), 0);
+
+       nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_neigh, &st);
+       nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &st);
+       nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &st);
+
+       nl_send_auto_complete(sock, msg);
+
+       if (!st.callback)
+               lua_newtable(L);
+
+       while (st.pending > 0)
+               nl_recvmsgs(sock, cb);
+
+       nlmsg_free(msg);
+
+out:
+       nl_cb_put(cb);
+       return (st.callback == 0);
+}
+
+
+static int cb_dump_link(struct nl_msg *msg, void *arg)
+{
+       char buf[48];
+       struct dump_state *s = arg;
+       struct nlmsghdr *hdr = nlmsg_hdr(msg);
+       struct ifinfomsg *ifm = NLMSG_DATA(hdr);
+       struct nlattr *tb[IFLA_MAX+1];
+       int i, len;
+
+       if (hdr->nlmsg_type != RTM_NEWLINK)
+               return NL_SKIP;
+
+       nlmsg_parse(hdr, sizeof(*ifm), tb, IFLA_MAX, NULL);
+
+       L_setbool(s->L, "up", (ifm->ifi_flags & IFF_RUNNING));
+       L_setint(s->L, "type", ifm->ifi_type);
+       L_setstr(s->L, "name", if_indextoname(ifm->ifi_index, buf));
+
+       if (tb[IFLA_MTU])
+               L_setint(s->L, "mtu", RTA_U32(tb[IFLA_MTU]));
+
+       if (tb[IFLA_TXQLEN])
+               L_setint(s->L, "qlen", RTA_U32(tb[IFLA_TXQLEN]));
+
+       if (tb[IFLA_MASTER])
+               L_setdev(s->L, "master", tb[IFLA_MASTER]);
+
+       if (tb[IFLA_ADDRESS] && nla_len(tb[IFLA_ADDRESS]) == AF_BYTES(AF_PACKET))
+               L_setaddr(s->L, "mac", AF_PACKET, nla_get_string(tb[IFLA_ADDRESS]), -1);
+
+       s->pending = 0;
+       return NL_SKIP;
+}
+
+static int link_get(lua_State *L)
+{
+       const char *dev = luaL_checkstring(L, 1);
+       struct dump_state st = {
+               .pending = 1,
+               .L = L
+       };
+
+       if (!sock)
+       {
+               sock = nl_socket_alloc();
+               if (!sock)
+                       return _error(L, -1, "Out of memory");
+
+               if (nl_connect(sock, NETLINK_ROUTE))
+                       return _error(L, 0, NULL);
+       }
+
+       struct nl_msg *msg = nlmsg_alloc_simple(RTM_GETLINK, NLM_F_REQUEST);
+       struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT);
+       struct ifinfomsg ifm = { .ifi_index = if_nametoindex(dev) };
+
+       if (!msg || !cb)
+               return 0;
+
+       nlmsg_append(msg, &ifm, sizeof(ifm), 0);
+
+       nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_link, &st);
+       nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &st);
+       nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &st);
+
+       lua_newtable(L);
+
+       nl_send_auto_complete(sock, msg);
+
+       while (st.pending > 0)
+               nl_recvmsgs(sock, cb);
+
+       nlmsg_free(msg);
+       nl_cb_put(cb);
+
+       return 1;
+}
+
+
+static const luaL_reg ip_methods[] = {
+       { "new",                        cidr_new          },
+       { "IPv4",                       cidr_ipv4         },
+       { "IPv6",                       cidr_ipv6         },
+       { "MAC",                        cidr_mac          },
+
+       { "checkip4",                   cidr_checkip4     },
+       { "checkip6",                   cidr_checkip6     },
+       { "checkmac",                   cidr_checkmac     },
+
+       { "route",                      route_get         },
+       { "routes",                     route_dump        },
+
+       { "neighbors",          neighbor_dump     },
+
+       { "link",                       link_get          },
+
+       { }
+};
+
+static const luaL_reg ip_cidr_methods[] = {
+       { "is4",                        cidr_is4          },
+       { "is4rfc1918",         cidr_is4rfc1918   },
+       { "is4linklocal",       cidr_is4linklocal },
+       { "is6",                        cidr_is6          },
+       { "is6linklocal",       cidr_is6linklocal },
+       { "is6mapped4",         cidr_is6mapped4   },
+       { "ismac",                      cidr_ismac        },
+       { "ismaclocal",         cidr_ismaclocal   },
+       { "ismacmcast",         cidr_ismacmcast   },
+       { "lower",                      cidr_lower        },
+       { "higher",                     cidr_higher       },
+       { "equal",                      cidr_equal        },
+       { "prefix",                     cidr_prefix       },
+       { "network",            cidr_network      },
+       { "host",                       cidr_host         },
+       { "mask",                       cidr_mask         },
+       { "broadcast",          cidr_broadcast    },
+       { "mapped4",            cidr_mapped4      },
+       { "tomac",                      cidr_tomac        },
+       { "tolinklocal",        cidr_tolinklocal  },
+       { "contains",           cidr_contains     },
+       { "add",                        cidr_add          },
+       { "sub",                        cidr_sub          },
+       { "minhost",            cidr_minhost      },
+       { "maxhost",            cidr_maxhost      },
+       { "string",                     cidr_tostring     },
+
+       { "__lt",                       cidr_lower        },
+       { "__le",                       cidr_lower_equal  },
+       { "__eq",                       cidr_equal        },
+       { "__add",                      cidr_add          },
+       { "__sub",                      cidr_sub          },
+       { "__gc",                       cidr_gc           },
+       { "__tostring",         cidr_tostring     },
+
+       { }
+};
+
+int luaopen_luci_ip(lua_State *L)
+{
+       luaL_register(L, LUCI_IP, ip_methods);
+
+       luaL_newmetatable(L, LUCI_IP_CIDR);
+       luaL_register(L, NULL, ip_cidr_methods);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+       lua_pop(L, 1);
+
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-ip/src/ip.luadoc b/package/luci/libs/luci-lib-ip/src/ip.luadoc
new file mode 100644 (file)
index 0000000..afd171b
--- /dev/null
@@ -0,0 +1,1048 @@
+--- LuCI IP calculation and netlink access library.
+module "luci.ip"
+
+---[[
+Construct a new luci.ip.cidr instance and autodetect the address family.
+Throws an error if the given strings do not represent a valid address or
+if the given optional netmask is of a different family.
+@class function
+@sort 1
+@name new
+@param address String containing a valid IPv4 or IPv6 address, optionally
+with prefix size (CIDR notation) or netmask separated by slash.
+@param netmask String containing a valid IPv4 or IPv6 netmask or number
+containing a prefix size in bits (`0..32` for IPv4,
+`0..128` for IPv6). Overrides mask embedded in the first argument
+if specified. (optional)
+@return A `luci.ip.cidr` object representing the given
+address/mask range.
+@usage `addr = luci.ip.new("10.24.0.1/24")
+addr = luci.ip.new("10.24.0.1/255.255.255.0")
+addr = luci.ip.new("10.24.0.1", "255.255.255.0")        -- separate netmask
+addr = luci.ip.new("10.24.0.1/24", 16)                  -- override netmask
+
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64")
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::")
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::")
+addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask`
+@see IPv4
+@see IPv6
+@see MAC
+]]
+
+---[[
+Construct a new IPv4 luci.ip.cidr instance.
+Throws an error if the given string does not represent a valid IPv4 address or
+if the given optional netmask is of a different family.
+@class function
+@sort 2
+@name IPv4
+@param address String containing a valid IPv4, optionally with prefix size
+(CIDR notation) or netmask separated by slash.
+@param netmask String containing a valid IPv4 netmask or number
+containing a prefix size between `0` and `32` bit.
+Overrides mask embedded in the first argument if specified. (optional)
+@return A `luci.ip.cidr` object representing the given IPv4 range.
+@usage `addr = luci.ip.IPv4("10.24.0.1/24")
+addr = luci.ip.IPv4("10.24.0.1/255.255.255.0")
+addr = luci.ip.IPv4("10.24.0.1", "255.255.255.0")        -- separate netmask
+addr = luci.ip.IPv4("10.24.0.1/24", 16)                  -- override netmask`
+@see IPv6
+@see MAC
+]]
+
+---[[
+Construct a new IPv6 luci.ip.cidr instance.
+Throws an error if the given string does not represent a valid IPv6 address or
+if the given optional netmask is of a different family.
+@class function
+@sort 3
+@name IPv6
+@param address String containing a valid IPv6, optionally with prefix size
+(CIDR notation) or netmask separated by slash.
+@param netmask String containing a valid IPv4 netmask or number
+containing a prefix size between `0` and `128` bit.
+Overrides mask embedded in the first argument if specified. (optional)
+@return A `luci.ip.cidr` object representing the given IPv6 range.
+@usage `addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64")
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::")
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::")
+addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask`
+@see IPv4
+@see MAC
+]]
+
+---[[
+Construct a new MAC luci.ip.cidr instance.
+Throws an error if the given string does not represent a valid ethernet MAC
+address or if the given optional mask is of a different family.
+@class function
+@sort 4
+@name MAC
+@param address  String containing a valid ethernet MAC address, optionally with
+prefix size (CIDR notation) or mask separated by slash.
+@param netmask  String containing a valid MAC address mask or number
+containing a prefix size between `0` and `48` bit.
+Overrides mask embedded in the first argument if specified. (optional)
+@return A `luci.ip.cidr` object representing the given MAC address range.
+@usage `intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24")
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/FF:FF:FF:0:0:0")
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00", "FF:FF:FF:0:0:0")
+intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24", 48) -- override mask`
+@see IPv4
+@see IPv6
+]]
+
+---[[
+Verify an IPv4 address.
+
+Checks whether given argument is a preexisting luci.ip.cidr IPv4 address
+instance or a string literal convertible to an IPv4 address and returns a
+plain Lua string containing the canonical representation of the address.
+
+If the argument is not a valid address, returns nothing. This function is
+intended to aid in safely verifying address literals without having to deal
+with exceptions.
+@class function
+@sort 5
+@name checkip4
+@param address  String containing a valid IPv4 address or existing
+luci.ip.cidr IPv4 instance.
+@return A string representing the given IPv4 address.
+@usage `ipv4 = luci.ip.checkip4(luci.ip.new("127.0.0.1"))  -- "127.0.0.1"
+ipv4 = luci.ip.checkip4("127.0.0.1")               -- "127.0.0.1"
+ipv4 = luci.ip.checkip4("nonesense")               -- nothing
+ipv4 = luci.ip.checkip4(123)                       -- nothing
+ipv4 = luci.ip.checkip4(nil)                       -- nothing
+ipv4 = luci.ip.checkip4()                          -- nothing`
+@see checkip6
+@see checkmac
+]]
+
+---[[
+Verify an IPv6 address.
+
+Checks whether given argument is a preexisting luci.ip.cidr IPv6 address
+instance or a string literal convertible to an IPv6 address and returns a
+plain Lua string containing the canonical representation of the address.
+
+If the argument is not a valid address, returns nothing. This function is
+intended to aid in safely verifying address literals without having to deal
+with exceptions.
+@class function
+@sort 6
+@name checkip6
+@param address  String containing a valid IPv6 address or existing
+luci.ip.cidr IPv6 instance.
+@return A string representing the given IPv6 address.
+@usage `ipv6 = luci.ip.checkip6(luci.ip.new("0:0:0:0:0:0:0:1"))  -- "::1"
+ipv6 = luci.ip.checkip6("0:0:0:0:0:0:0:1")               -- "::1"
+ipv6 = luci.ip.checkip6("nonesense")                     -- nothing
+ipv6 = luci.ip.checkip6(123)                             -- nothing
+ipv6 = luci.ip.checkip6(nil)                             -- nothing
+ipv6 = luci.ip.checkip6()                                -- nothing`
+@see checkip4
+@see checkmac
+]]
+
+---[[
+Verify an ethernet MAC address.
+
+Checks whether given argument is a preexisting luci.ip.cidr MAC address
+instance or a string literal convertible to an ethernet MAC and returns a
+plain Lua string containing the canonical representation of the address.
+
+If the argument is not a valid address, returns nothing. This function is
+intended to aid in safely verifying address literals without having to deal
+with exceptions.
+@class function
+@sort 7
+@name checkmac
+@param address  String containing a valid MAC address or existing luci.ip.cidr
+MAC address instance.
+@return A string representing the given MAC address.
+@usage `mac = luci.ip.checkmac(luci.ip.new("00-11-22-cc-dd-ee"))  -- "00:11:22:CC:DD:EE"
+mac = luci.ip.checkmac("00:11:22:cc:dd:ee")               -- "00:11:22:CC:DD:EE"
+mac = luci.ip.checkmac("nonesense")                       -- nothing
+mac = luci.ip.checkmac(123)                               -- nothing
+mac = luci.ip.checkmac(nil)                               -- nothing
+mac = luci.ip.checkmac()                                  -- nothing`
+@see checkip4
+@see checkip6
+]]
+
+---[[
+Determine the route leading to the given destination.
+@class function
+@sort 8
+@name route
+@param address A `luci.ip.cidr` instance or a string containing
+a valid IPv4 or IPv6 range as specified by `luci.ip.new()`.
+@param source   A `luci.ip.cidr` instance or a string containing
+the preferred source address for route selection (optional).
+@return <p>Table containing the fields described below.</p>
+<table id="routetable">
+<tr><th>Field</th><th>Description</th></tr>
+<tr><td>`type`<td>
+  <p>Route type with one of the following numeric values:</p>
+  <table>
+  <tr>
+       <td>`1`</td>
+       <td>`RTN_UNICAST` - Gateway or direct route</td>
+  </tr>
+  <tr>
+       <td>`2`</td>
+       <td>`RTN_LOCAL` - Accept locally</td>
+  </tr>
+  <tr>
+       <td>`3`</td>
+       <td>`RTN_BROADCAST` -
+           Accept locally as broadcast send as broadcast</td>
+  </tr>
+  <tr>
+       <td>`4`</td>
+       <td>`RTN_ANYCAST` -
+        Accept locally as broadcast but send as unicast</td>
+  </tr>
+  <tr>
+       <td>`5`</td>
+       <td>`RTN_MULTICAST` - Multicast route</td>
+  </tr>
+  </table>
+</td></tr>
+<tr>
+  <td>`family`</td>
+  <td>Number containing the route family, `4` for IPv4 or
+      `6` for IPv6</td>
+</tr>
+<tr>
+  <td>`dest`</td>
+  <td>Destination `luci.ip.cidr` instance</td>
+</tr>
+<tr>
+  <td>`gw`</td>
+  <td>Gateway `luci.ip.cidr` instance (optional)</td>
+</tr>
+<tr>
+  <td>`from`</td>
+  <td>Source address `luci.ip.cidr` instance (optional)</td>
+</tr>
+<tr>
+  <td>`src`</td>
+  <td>Preferred source `luci.ip.cidr` instance (optional)</td>
+</tr>
+<tr>
+  <td>`dev`</td>
+  <td>String containing the name of the outgoing interface</td>
+</tr>
+<tr>
+  <td>`iif`</td>
+  <td>String containing the name of the incoming interface (optional)</td>
+</tr>
+<tr>
+  <td>`table`</td>
+  <td>Number of the associated routing table (`0..65535`)</td>
+</tr>
+<tr>
+  <td>`proto`</td>
+  <td>Number of the associated routing protocol</td>
+</tr>
+<tr>
+  <td>`scope`</td>
+  <td>Number describing the scope of the route, most commonly
+      `0` for global or `253` for on-link</td>
+</tr>
+<tr>
+  <td>`metric`</td>
+  <td>Number describing the route metric (optional)</td>
+</tr>
+<tr>
+  <td>`expires`</td>
+  <td>Number of seconds the prefix is valid (IPv6 only, optional)</td>
+</tr>
+<tr>
+  <td>`error`</td>
+  <td>Route destination error code (optional)</td>
+</tr>
+</table>
+@usage <ul>
+<li>Find default gateway by getting route to Google's public NS server
+`rt = luci.ip.route("8.8.8.8")
+if rt ~= nil then
+       print("gateway is", rt.gw)
+end`</li>
+<li>Determine IPv6 upstream interface `rt = luci.ip.route("2001::/7")
+if rt ~= nil then
+       print("ipv6 upstream device is", rt.dev)
+end`</li>
+</ul>
+@see routes
+]]
+
+---[[
+Fetch all routes, optionally matching the given criteria.
+@class function
+@sort 9
+@name routes
+@param filter  <p>Table containing one or more of the possible filter
+criteria described below (optional)</p><table>
+<tr><th>Field</th><th>Description</th></tr>
+<tr><td>`family`</td><td>
+ Number describing the address family to return - `4` selects
+ IPv4 routes, `6` IPv6 ones. Any other value selects both.
+</td></tr>
+<tr><td>`iif`</td><td>
+ String containing the incoming route interface to match.
+</td></tr>
+<tr><td>`oif`</td><td>
+ String containing the outgoing route interface to match.
+</td></tr>
+<tr><td>`type`</td><td>
+ Numeric type to match, e.g. `1` for unicast.
+</td></tr>
+<tr><td>`scope`</td><td>
+ Numeric scope to match, e.g. `253` for onlink.
+</td></tr>
+<tr><td>`proto`</td><td>
+ Numeric protocol to match, e.g. `2` for boot.
+</td></tr>
+<tr><td>`table`</td><td>
+ Numeric routing table to match (`0..65535`).
+</td></tr>
+<tr><td>`gw`</td><td>
+ String containing the gateway address to match. Can be in any notation
+ specified by `luci.ip.new()`. Prefix matching is performed when
+ comparing the routes, e.g. "192.168.1.0/24" would select routes with gateway
+ addresses `192.168.1.1 .. 192.168.1.255`.
+</td></tr>
+<tr><td>`dest`</td><td>
+ String containing the destination to match. Prefix matching is performed.
+</td></tr>
+<tr><td>`from`</td><td>
+ String containing the source address to match. Prefix matching is performed.
+</td></tr>
+<tr><td>`src`</td><td>
+ String containing the preferred source address to match.
+ Prefix matching is performed.
+</td></tr>
+<tr><td>`dest_exact`</td><td>
+ String containing the destination to match. Exact matching is performed,
+ e.g. `dest = "0.0.0.0/0"` would match <em>any</em> IPv4 route
+ while `dest_exact = "0.0.0.0/0"` will <em>only</em> match the
+ default route.
+</td></tr>
+<tr><td>`from_exact`</td><td>
+ String containing the source address to match. Exact matching is performed.
+</td></tr>
+</table>
+@param callback  <p>Callback function to invoke for each found route
+instead of returning one table of route objects (optional)</p>
+@return If no callback function is provided, a table of routes
+<a href="#routetable">as specified by `luci.ip.route()`</a>
+is returned. If a callback function is given, it is invoked for each route
+and nothing is returned.
+@see route
+@usage <ul>
+<li>Find all IPv4 default routes:
+`luci.ip.routes({ dest_exact = "0.0.0.0/0" }, function(rt)
+       print(rt.type, rt.gw, rt.dev)
+end)`</li>
+<li>Find all global IPv6 prefixes on the current system:
+`luci.ip.routes({ from = "2001::/7" }, function(rt)
+       print(rt.from)
+end)`</li>
+<li>Fetch all IPv4 routes:
+`routes = luci.ip.routes({ family = 4 })
+for _, rt in ipairs(routes) do
+       print(rt.dest, rt.gw, rt.dev)
+end`</li>
+</ul>
+]]
+
+---[[
+Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table
+@class function
+@sort 10
+@name neighbors
+@param filter  <p>Table containing one or more of the possible filter
+criteria described below (optional)</p><table>
+<tr><th>Field</th><th>Description</th></tr>
+<tr><td>`family`</td><td>
+ Number describing the address family to return - `4` selects
+ IPv4 ARP, `6` select IPv6 neighbour entries. Any other value
+ selects both.
+</td></tr>
+<tr><td>`dev`</td><td>
+ String containing the associated interface to match.
+</td></tr>
+<tr><td>`dest`</td><td>
+ String containing the associated address to match. Can be in any notation
+ specified by `luci.ip.new()`. Prefix matching is performed when
+ comparing the addresses, e.g. "192.168.1.0/24" would select ARP entries
+ for `192.168.1.1 .. 192.168.1.255`.
+</td></tr>
+<tr><td>`mac`</td><td>
+ String containing MAC address to match.
+</td></tr>
+</table>
+@param callback  <p>Callback function to invoke for each found neighbour
+entry instead of returning one table of neighbour entries (optional)</p>
+@return If no callback function is provided, a table of neighbour entries
+is returned. If a callback function is given, it is invoked for each entry
+and nothing is returned.
+
+A neighbour entry is a table containing the following fields:
+
+<table>
+<tr><th>Field</th><th>Description</th></tr>
+<tr>
+  <td>`family`</td>
+  <td>Number containing the neighbour entry family, `4` for IPv4
+      ARP or `6` for IPv6 NDP</td>
+</tr>
+<tr>
+  <td>`dev`</td>
+  <td>String containing the associated device of the neighbour entry</td>
+</tr>
+<tr>
+  <td>`dest`</td>
+  <td>IP address `luci.ip.cidr` instance</td>
+</tr>
+<tr>
+  <td>`mac`</td>
+  <td>MAC address `luci.ip.cidr` instance</td>
+</tr>
+<tr>
+  <td>`router`</td>
+  <td>Boolean "true" if the neighbour entry is a router (IPv6, optional)</td>
+</tr>
+<tr>
+  <td>`proxy`</td>
+  <td>Boolean "true" if this is a proxy entry (optional)</td>
+</tr>
+<tr>
+  <td>`incomplete`</td>
+  <td>Boolean "true" if the entry is in incomplete state (optional)</td>
+</tr>
+<tr>
+  <td>`reachable`</td>
+  <td>Boolean "true" if the entry is in reachable state (optional)</td>
+</tr>
+<tr>
+  <td>`stale`</td>
+  <td>Boolean "true" if the entry is stale (optional)</td>
+</tr>
+<tr>
+  <td>`delay`</td>
+  <td>Boolean "true" if the entry is delayed (optional)</td>
+</tr>
+<tr>
+  <td>`probe`</td>
+  <td>Boolean "true" if the entry is in probe state (optional)</td>
+</tr>
+<tr>
+  <td>`failed`</td>
+  <td>Boolean "true" if the entry is in failed state (optional)</td>
+</tr>
+<tr>
+  <td>`noarp`</td>
+  <td>Boolean "true" if the entry is not caused by NDP or
+      ARP (optional)</td>
+</tr>
+<tr>
+  <td>`permanent`</td>
+  <td>Boolean "true" if the entry was statically configured from
+      userspace (optional)</td>
+</tr>
+</table>
+@usage <ul>
+<li>Find all ARP neighbours in the LAN:
+`luci.ip.neighbors({ dest = "192.168.0.0/16" }, function(n)
+       print(n.dest, n.mac)
+end)`</li>
+<li>Find all active IPv6 addresses of host with given MAC:
+`luci.ip.neighbors({ family = 6, mac = "00:21:63:75:aa:17" },
+       function(n)
+               print(n.dest)
+       end)`</li>
+</ul>
+]]
+
+---[[
+Fetch basic device information
+@class function
+@sort 11
+@name link
+@param device  String containing the network device to query
+@return  If the given interface is found, a table containing the fields
+described below is returned, else an empty table.
+
+<table>
+<tr><th>Field</th><th>Description</th></tr>
+<tr>
+  <td>`up`</td>
+  <td>Boolean indicating whether the device is in IFF_RUNNING state</td>
+</tr>
+<tr>
+  <td>`type`</td>
+  <td>Numeric value indicating the type of the device, e.g. `1`
+      for ethernet.</td>
+</tr>
+<tr>
+  <td>`name`</td>
+  <td>String containing the name of the device</td>
+</tr>
+<tr>
+  <td>`master`</td>
+  <td>If queried device is a bridge port, string containing the name of
+      parent bridge device (optional)</td>
+</tr>
+<tr>
+  <td>`mtu`</td>
+  <td>Number containing the current MTU of the device</td>
+</tr>
+<tr>
+  <td>`qlen`</td>
+  <td>Number containing the TX queue length of the device</td>
+</tr>
+<tr>
+  <td>`mac`</td>
+  <td>MAC address `luci.ip.cidr` instance representing the device ethernet
+      address</td>
+</tr>
+</table>
+@usage <ul>
+<li>Test whether device br-lan exists:
+`print(luci.ip.link("br-lan").name ~= nil)
+`</li>
+<li>Query MAC address of eth0:
+`print(luci.ip.link("eth0").mac)
+`</li>
+</ul>
+]]
+
+
+--- IP CIDR Object.
+-- Represents an IPv4 or IPv6 address range.
+-- @cstyle instance
+module "luci.ip.cidr"
+
+---[[
+Checks whether the CIDR instance is an IPv4 address range
+
+@class function
+@sort 1
+@name cidr.is4
+@see cidr.is6
+@see cidr.ismac
+@return `true` if the CIDR is an IPv4 range, else `false`
+]]
+
+---[[
+Checks whether the CIDR instance is within the private RFC1918 address space
+
+@class function
+@sort 2
+@name cidr.is4rfc1918
+@return `true` if the entire range of this CIDR lies within one of
+       the ranges `10.0.0.0-10.255.255.255`,
+       `172.16.0.0-172.31.0.0` or
+       `192.168.0.0-192.168.255.255`, else `false`.
+@usage `local addr = luci.ip.new("192.168.45.2/24")
+if addr:is4rfc1918() then
+       print("Is a private address")
+end`
+]]
+
+---[[
+Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address
+
+@class function
+@sort 3
+@name cidr.is4linklocal
+@return `true` if the entire range of this CIDR lies within the range
+       the range `169.254.0.0-169.254.255.255`, else `false`.
+@usage `local addr = luci.ip.new("169.254.34.125")
+if addr:is4linklocal() then
+       print("Is a zeroconf address")
+end`
+]]
+
+---[[
+Checks whether the CIDR instance is an IPv6 address range
+
+@class function
+@sort 4
+@name cidr.is6
+@see cidr.is4
+@see cidr.ismac
+@return `true` if the CIDR is an IPv6 range, else `false`
+]]
+
+---[[
+Checks whether the CIDR instance is an IPv6 link local address
+
+@class function
+@sort 5
+@name cidr.is6linklocal
+@return `true` if the entire range of this CIDR lies within the range
+       the `fe80::/10` range, else `false`.
+@usage `local addr = luci.ip.new("fe92:53a:3216:af01:221:63ff:fe75:aa17/64")
+if addr:is6linklocal() then
+       print("Is a linklocal address")
+end`
+]]
+
+---[[
+Checks whether the CIDR instance is an IPv6 mapped IPv4 address
+
+@class function
+@sort 6
+@name cidr.is6mapped4
+@return `true` if the address is an IPv6 mapped IPv4 address in the
+       form `::ffff:1.2.3.4`.
+@usage `local addr = luci.ip.new("::ffff:192.168.1.1")
+if addr:is6mapped4() then
+       print("Is a mapped IPv4 address")
+end`
+]]
+
+---[[
+Checks whether the CIDR instance is an ethernet MAC address range
+
+@class function
+@sort 7
+@name cidr.ismac
+@see cidr.is4
+@see cidr.is6
+@return `true` if the CIDR is a MAC address range, else `false`
+]]
+
+---[[
+Checks whether the CIDR instance is a locally administered (LAA) MAC address
+
+@class function
+@sort 8
+@name cidr.ismaclocal
+@return `true` if the MAC address sets the locally administered bit.
+@usage `local mac = luci.ip.new("02:C0:FF:EE:00:01")
+if mac:ismaclocal() then
+  print("Is an LAA MAC address")
+end`
+]]
+
+---[[
+Checks whether the CIDR instance is a multicast MAC address
+
+@class function
+@sort 9
+@name cidr.ismacmcast
+@return `true` if the MAC address sets the multicast bit.
+@usage `local mac = luci.ip.new("01:00:5E:7F:00:10")
+if addr:ismacmcast() then
+  print("Is a multicast MAC address")
+end`
+]]
+
+---[[
+Checks whether this CIDR instance is lower than the given argument.
+The comparisation follows these rules:
+<ul><li>An IPv4 address is always lower than an IPv6 address and IPv6 addresses
+are considered lower than MAC addresses</li>
+<li>Prefix sizes are ignored</li></ul>
+
+@class function
+@sort 10
+@name cidr.lower
+@param addr A `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()` to compare against.
+@return `true` if this CIDR is lower than the given address,
+       else `false`.
+@usage `local addr = luci.ip.new("192.168.1.1")
+print(addr:lower(addr)) -- false
+print(addr:lower("10.10.10.10/24")) -- false
+print(addr:lower(luci.ip.new("::1"))) -- true
+print(addr:lower(luci.ip.new("192.168.200.1"))) -- true
+print(addr:lower(luci.ip.new("00:14:22:01:23:45"))) -- true`
+@see cidr.higher
+@see cidr.equal
+]]
+
+---[[
+Checks whether this CIDR instance is higher than the given argument.
+The comparisation follows these rules:
+<ul><li>An IPv4 address is always lower than an IPv6 address and IPv6 addresses
+are considered lower than MAC addresses</li>
+<li>Prefix sizes are ignored</li></ul>
+
+@class function
+@sort 11
+@name cidr.higher
+@param addr A `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()` to compare against.
+@return `true` if this CIDR is higher than the given address,
+       else `false`.
+@usage `local addr = luci.ip.new("192.168.1.1")
+print(addr:higher(addr)) -- false
+print(addr:higher("10.10.10.10/24")) -- true
+print(addr:higher(luci.ip.new("::1"))) -- false
+print(addr:higher(luci.ip.new("192.168.200.1"))) -- false
+print(addr:higher(luci.ip.new("00:14:22:01:23:45"))) -- false`
+@see cidr.lower
+@see cidr.equal
+]]
+
+---[[
+Checks whether this CIDR instance is equal to the given argument.
+
+@class function
+@sort 12
+@name cidr.equal
+@param addr A `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()` to compare against.
+@return `true` if this CIDR is equal to the given address,
+       else `false`.
+@usage `local addr = luci.ip.new("192.168.1.1")
+print(addr:equal(addr)) -- true
+print(addr:equal("192.168.1.1")) -- true
+print(addr:equal(luci.ip.new("::1"))) -- false
+
+local addr6 = luci.ip.new("::1")
+print(addr6:equal("0:0:0:0:0:0:0:1/64")) -- true
+print(addr6:equal(luci.ip.new("fe80::221:63ff:fe75:aa17"))) -- false
+
+local mac = luci.ip.new("00:14:22:01:23:45")
+print(mac:equal("0:14:22:1:23:45")) -- true
+print(mac:equal(luci.ip.new("01:23:45:67:89:AB")) -- false`
+@see cidr.lower
+@see cidr.higher
+]]
+
+---[[
+Get or set prefix size of CIDR instance.
+If the optional mask parameter is given, the prefix size of this CIDR is altered
+else the current prefix size is returned.
+
+@class function
+@sort 13
+@name cidr.prefix
+@param mask Either a number containing the number of bits (`0..32`
+       for IPv4, `0..128` for IPv6 or `0..48` for MAC addresses) or a string
+  containing a valid netmask (optional)
+@return Bit count of the current prefix size
+@usage `local range = luci.ip.new("192.168.1.1/255.255.255.0")
+print(range:prefix()) -- 24
+
+range:prefix(16)
+print(range:prefix()) -- 16
+
+range:prefix("255.255.255.255")
+print(range:prefix()) -- 32`
+]]
+
+---[[
+Derive network address of CIDR instance.
+
+Returns a new CIDR instance representing the network address of this instance
+with all host parts masked out. The used prefix size can be overridden by the
+optional mask parameter.
+
+@class function
+@sort 14
+@name cidr.network
+@param mask Either a number containing the number of bits (`0..32`
+       for IPv4, `0..128` for IPv6 or `0..48` for MAC addresses) or a string
+  containing a valid netmask (optional)
+@return CIDR instance representing the network address
+@usage `local range = luci.ip.new("192.168.62.243/255.255.0.0")
+print(range:network())                -- "192.168.0.0"
+print(range:network(24))              -- "192.168.62.0"
+print(range:network("255.255.255.0")) -- "192.168.62.0"
+
+local range6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64")
+print(range6:network())               -- "fd9b:62b3:9cc5::"`
+]]
+
+---[[
+Derive host address of CIDR instance.
+
+This function essentially constructs a copy of this CIDR with the prefix size
+set to `32` for IPv4, `128` for IPv6 or `48` for MAC addresses.
+
+@class function
+@sort 15
+@name cidr.host
+@return CIDR instance representing the host address
+@usage `local range = luci.ip.new("172.19.37.45/16")
+print(range)        -- "172.19.37.45/16"
+print(range:host()) -- "172.19.37.45"`
+]]
+
+---[[
+Derive netmask of CIDR instance.
+
+Constructs a CIDR instance representing the netmask of this instance. The used
+prefix size can be overridden by the optional mask parameter.
+
+@class function
+@sort 16
+@name cidr.mask
+@param mask Either a number containing the number of bits (`0..32`
+       for IPv4, `0..128` for IPv6 or `0..48` for MAC addresses) or a string
+  containing a valid netmask (optional)
+@return CIDR instance representing the netmask
+@usage `local range = luci.ip.new("172.19.37.45/16")
+print(range:mask())            -- "255.255.0.0"
+print(range:mask(24))          -- "255.255.255.0"
+print(range:mask("255.0.0.0")) -- "255.0.0.0"`
+]]
+
+---[[
+Derive broadcast address of CIDR instance.
+
+Constructs a CIDR instance representing the broadcast address of this instance.
+The used prefix size can be overridden by the optional mask parameter.
+
+This function has no effect on IPv6 or MAC address instances, it will return
+nothing in this case.
+
+@class function
+@sort 17
+@name cidr.broadcast
+@param mask Either a number containing the number of bits (`0..32` for IPv4) or
+  a string containing a valid netmask (optional)
+@return Return a new CIDR instance representing the broadcast address if this
+       instance is an IPv4 range, else return nothing.
+@usage `local range = luci.ip.new("172.19.37.45/16")
+print(range:broadcast())            -- "172.19.255.255"
+print(range:broadcast(24))          -- "172.19.37.255"
+print(range:broadcast("255.0.0.0")) -- "172.255.255.255"`
+]]
+
+---[[
+Derive mapped IPv4 address of CIDR instance.
+
+Constructs a CIDR instance representing the IPv4 address of the IPv6 mapped
+IPv4 address in this instance.
+
+This function has no effect on IPv4 instances, MAC address instances or IPv6
+instances which are not a mapped address, it will return nothing in this case.
+
+@class function
+@sort 18
+@name cidr.mapped4
+@return Return a new CIDR instance representing the IPv4 address if this
+       instance is an IPv6 mapped IPv4 address, else return nothing.
+@usage `local addr = luci.ip.new("::ffff:172.16.19.1")
+print(addr:mapped4()) -- "172.16.19.1"`
+]]
+
+---[[
+Derive MAC address of IPv6 link local CIDR instance.
+
+Constructs a CIDR instance representing the MAC address contained in the IPv6
+link local address of this instance.
+
+This function has no effect on IPv4 instances, MAC address instances or IPv6
+instances which are not a link local address, it will return nothing in this
+case.
+
+@class function
+@sort 19
+@name cidr.tomac
+@return Return a new CIDR instance representing the MAC address if this
+  instance is an IPv6 link local address, else return nothing.
+@usage `local addr = luci.ip.new("fe80::6666:b3ff:fe47:e1b9")
+print(addr:tomac()) -- "64:66:B3:47:E1:B9"`
+]]
+
+---[[
+Derive IPv6 link local address from MAC address CIDR instance.
+
+Constructs a CIDR instance representing the IPv6 link local address of the
+MAC address represented by this instance.
+
+This function has no effect on IPv4 instances or IPv6 instances, it will return
+nothing in this case.
+
+@class function
+@sort 20
+@name cidr.tolinklocal
+@return Return a new CIDR instance representing the IPv6 link local address.
+@usage `local mac = luci.ip.new("64:66:B3:47:E1:B9")
+print(mac:tolinklocal()) -- "fe80::6666:b3ff:fe47:e1b9"`
+]]
+
+---[[
+Test whether CIDR contains given range.
+
+@class function
+@sort 21
+@name cidr.contains
+@param addr A `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()` to test.
+@return `true` if this instance fully contains the given address else
+       `false`.
+@usage `local range = luci.ip.new("10.24.0.0/255.255.0.0")
+print(range:contains("10.24.5.1"))  -- true
+print(range:contains("::1"))        -- false
+print(range:contains("10.0.0.0/8")) -- false
+
+local range6 = luci.ip.new("fe80::/10")
+print(range6:contains("fe80::221:63f:fe75:aa17/64"))         -- true
+print(range6:contains("fd9b:6b3:c5:0:221:63f:fe75:aa17/64")) -- false
+
+local intel_macs = luci.ip.MAC("C0:B6:F9:00:00:00/24")
+print(intel_macs:contains("C0:B6:F9:A3:C:11"))  -- true
+print(intel_macs:contains("64:66:B3:47:E1:B9")) -- false`
+]]
+
+---[[
+Add given amount to CIDR instance. If the result would overflow the maximum
+address space, the result is set to the highest possible address.
+
+@class function
+@sort 22
+@name cidr.add
+@param amount A numeric value between 0 and 0xFFFFFFFF, a
+       `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()`.
+@param inplace If `true`, modify this instance instead of returning
+       a new derived CIDR instance.
+@return <ul>
+       <li>When adding inplace: Return `true` if the addition succeeded
+           or `false` when the addition overflowed.</li>
+       <li>When deriving new CIDR: Return new instance representing the value of
+        this instance plus the added amount or the highest possible address if
+           the addition overflowed the available address space.</li></ul>
+@usage `local addr = luci.ip.new("192.168.1.1/24")
+print(addr:add(250))           -- "192.168.1.251/24"
+print(addr:add("0.0.99.0"))    -- "192.168.100.1/24"
+
+addr:add(256, true)            -- true
+print(addr)                    -- "192.168.2.1/24
+
+addr:add("255.0.0.0", true)    -- false (overflow)
+print(addr)                    -- "255.255.255.255/24
+
+local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64")
+print(addr6:add(256))          -- "fe80::221:63f:fe75:ab17/64"
+print(addr6:add("::ffff:0"))   -- "fe80::221:640:fe74:aa17/64"
+
+addr6:add(256, true)           -- true
+print(addr6)                   -- "fe80::221:63f:fe75:ab17/64
+
+addr6:add("ffff::", true)      -- false (overflow)
+print(addr6)                   -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"
+
+local mac = luci.ip.new("00:14:22:01:23:45")
+print(mac:add(256))            -- "00:14:22:01:24:45"
+print(mac:add("0:0:0:0:FF:0")  -- "00:14:22:02:22:45"
+
+mac:add(256, true)             -- true
+print(mac)                     -- "00:14:22:01:24:45"
+
+mac:add("FF:FF:0:0:0:0", true) -- false (overflow)
+print(mac)                     -- "FF:FF:FF:FF:FF:FF"`
+]]
+
+---[[
+Subtract given amount from CIDR instance. If the result would under, the lowest
+possible address is returned.
+
+@class function
+@sort 23
+@name cidr.sub
+@param amount A numeric value between 0 and 0xFFFFFFFF, a
+       `luci.ip.cidr` instance or a string convertible by
+       `luci.ip.new()`.
+@param inplace If `true`, modify this instance instead of returning
+       a new derived CIDR instance.
+@return <ul>
+       <li>When subtracting inplace: Return `true` if the subtraction
+           succeeded or `false` when the subtraction underflowed.</li>
+       <li>When deriving new CIDR: Return new instance representing the value of
+        this instance minus the subtracted amount or the lowest address if
+           the subtraction underflowed.</li></ul>
+@usage `local addr = luci.ip.new("192.168.1.1/24")
+print(addr:sub(256))         -- "192.168.0.1/24"
+print(addr:sub("0.168.0.0")) -- "192.0.1.1/24"
+
+addr:sub(256, true)          -- true
+print(addr)                  -- "192.168.0.1/24
+
+addr:sub("255.0.0.0", true)  -- false (underflow)
+print(addr)                  -- "0.0.0.0/24
+
+local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64")
+print(addr6:sub(256))        -- "fe80::221:63f:fe75:a917/64"
+print(addr6:sub("::ffff:0")) -- "fe80::221:63e:fe76:aa17/64"
+
+addr:sub(256, true)          -- true
+print(addr)                  -- "fe80::221:63f:fe75:a917/64"
+
+addr:sub("ffff::", true)     -- false (underflow)
+print(addr)                  -- "::/64"
+
+local mac = luci.ip.new("00:14:22:01:23:45")
+print(mac:sub(256))            -- "00:14:22:01:22:45"
+print(mac:sub("0:0:0:0:FF:0")  -- "00:14:22:00:24:45"
+
+mac:sub(256, true)             -- true
+print(mac)                     -- "00:14:22:01:22:45"
+
+mac:sub("FF:FF:0:0:0:0", true) -- false (overflow)
+print(mac)                     -- "00:00:00:00:00:00"`
+]]
+
+---[[
+Calculate the lowest possible host address within this CIDR instance.
+
+@class function
+@sort 24
+@name cidr.minhost
+@return Returns a new CIDR instance representing the lowest host address
+       within this range.
+@usage `local addr = luci.ip.new("192.168.123.56/24")
+print(addr:minhost())  -- "192.168.123.1"
+
+local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64")
+print(addr6:minhost()) -- "fd9b:62b3:9cc5::1"
+
+local mac = luci.ip.new("00:14:22:01:22:45/32")
+print(mac:minhost())   -- "00:14:22:01:00:01"`
+]]
+
+---[[
+Calculate the highest possible host address within this CIDR instance.
+
+@class function
+@sort 25
+@name cidr.maxhost
+@return Returns a new CIDR instance representing the highest host address
+       within this range.
+@usage `local addr = luci.ip.new("192.168.123.56/24")
+print(addr:maxhost())  -- "192.168.123.254" (.255 is broadcast)
+
+local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64")
+print(addr6:maxhost()) -- "fd9b:62b3:9cc5:0:ffff:ffff:ffff:ffff"
+
+local mac = luci.ip.new("00:14:22:01:22:45/32")
+print(mac:maxhost())   -- "00:14:22:01:FF:FF"`
+]]
+
+---[[
+Convert CIDR instance into string representation.
+
+If the prefix size of instance is less than 32 for IPv4, 128 for IPv6 or 48 for
+MACs, the address is returned in the form "address/prefix" otherwise just
+"address".
+
+It is usually not required to call this function directly as CIDR objects
+define it as __tostring function in the associated metatable.
+
+@class function
+@sort 26
+@name cidr.string
+@return Returns a string representing the range or address of this CIDR instance
+]]
diff --git a/package/luci/libs/luci-lib-ipkg/Makefile b/package/luci/libs/luci-lib-ipkg/Makefile
new file mode 100644 (file)
index 0000000..52fcf6f
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2018 Jo-Philipp Wich <jo@mein.io>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Legacy opkg interface class
+LUCI_DEPENDS:=+luci-base
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.lua b/package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.lua
new file mode 100644 (file)
index 0000000..e27ea52
--- /dev/null
@@ -0,0 +1,247 @@
+-- Copyright 2008-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local os   = require "os"
+local io   = require "io"
+local fs   = require "nixio.fs"
+local util = require "luci.util"
+
+local type  = type
+local pairs = pairs
+local error = error
+local table = table
+
+local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite --nocase"
+local icfg = "/etc/opkg.conf"
+
+module "luci.model.ipkg"
+
+
+-- Internal action function
+local function _action(cmd, ...)
+       local cmdline = { ipkg, cmd }
+
+       local k, v
+       for k, v in pairs({...}) do
+               cmdline[#cmdline+1] = util.shellquote(v)
+       end
+
+       local c = "%s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" % table.concat(cmdline, " ")
+       local r = os.execute(c)
+       local e = fs.readfile("/tmp/opkg.stderr")
+       local o = fs.readfile("/tmp/opkg.stdout")
+
+       fs.unlink("/tmp/opkg.stderr")
+       fs.unlink("/tmp/opkg.stdout")
+
+       return r, o or "", e or ""
+end
+
+-- Internal parser function
+local function _parselist(rawdata)
+       if type(rawdata) ~= "function" then
+               error("OPKG: Invalid rawdata given")
+       end
+
+       local data = {}
+       local c = {}
+       local l = nil
+
+       for line in rawdata do
+               if line:sub(1, 1) ~= " " then
+                       local key, val = line:match("(.-): ?(.*)%s*")
+
+                       if key and val then
+                               if key == "Package" then
+                                       c = {Package = val}
+                                       data[val] = c
+                               elseif key == "Status" then
+                                       c.Status = {}
+                                       for j in val:gmatch("([^ ]+)") do
+                                               c.Status[j] = true
+                                       end
+                               else
+                                       c[key] = val
+                               end
+                               l = key
+                       end
+               else
+                       -- Multi-line field
+                       c[l] = c[l] .. "\n" .. line
+               end
+       end
+
+       return data
+end
+
+-- Internal lookup function
+local function _lookup(cmd, pkg)
+       local cmdline = { ipkg, cmd }
+       if pkg then
+               cmdline[#cmdline+1] = util.shellquote(pkg)
+       end
+
+       -- OPKG sometimes kills the whole machine because it sucks
+       -- Therefore we have to use a sucky approach too and use
+       -- tmpfiles instead of directly reading the output
+       local tmpfile = os.tmpname()
+       os.execute("%s >%s 2>/dev/null" %{ table.concat(cmdline, " "), tmpfile })
+
+       local data = _parselist(io.lines(tmpfile))
+       os.remove(tmpfile)
+       return data
+end
+
+
+function info(pkg)
+       return _lookup("info", pkg)
+end
+
+function status(pkg)
+       return _lookup("status", pkg)
+end
+
+function install(...)
+       return _action("install", ...)
+end
+
+function installed(pkg)
+       local p = status(pkg)[pkg]
+       return (p and p.Status and p.Status.installed)
+end
+
+function remove(...)
+       return _action("remove", ...)
+end
+
+function update()
+       return _action("update")
+end
+
+function upgrade()
+       return _action("upgrade")
+end
+
+-- List helper
+local function _list(action, pat, cb)
+       local cmdline = { ipkg, action }
+       if pat then
+               cmdline[#cmdline+1] = util.shellquote(pat)
+       end
+
+       local fd = io.popen(table.concat(cmdline, " "))
+       if fd then
+               local name, version, sz, desc
+               while true do
+                       local line = fd:read("*l")
+                       if not line then break end
+
+                       name, version, sz, desc = line:match("^(.-) %- (.-) %- (.-) %- (.+)")
+
+                       if not name then
+                               name, version, sz = line:match("^(.-) %- (.-) %- (.+)")
+                               desc = ""
+                       end
+
+                       if name and version then
+                               if #version > 26 then
+                                       version = version:sub(1,21) .. ".." .. version:sub(-3,-1)
+                               end
+
+                               cb(name, version, sz, desc)
+                       end
+
+                       name    = nil
+                       version = nil
+                       sz      = nil
+                       desc    = nil
+               end
+
+               fd:close()
+       end
+end
+
+function list_all(pat, cb)
+       _list("list --size", pat, cb)
+end
+
+function list_installed(pat, cb)
+       _list("list_installed --size", pat, cb)
+end
+
+function find(pat, cb)
+       _list("find --size", pat, cb)
+end
+
+
+function overlay_root()
+       local od = "/"
+       local fd = io.open(icfg, "r")
+
+       if fd then
+               local ln
+
+               repeat
+                       ln = fd:read("*l")
+                       if ln and ln:match("^%s*option%s+overlay_root%s+") then
+                               od = ln:match("^%s*option%s+overlay_root%s+(%S+)")
+
+                               local s = fs.stat(od)
+                               if not s or s.type ~= "dir" then
+                                       od = "/"
+                               end
+
+                               break
+                       end
+               until not ln
+
+               fd:close()
+       end
+
+       return od
+end
+
+function compare_versions(ver1, comp, ver2)
+       if not ver1 or not ver2
+       or not comp or not (#comp > 0) then
+               error("Invalid parameters")
+               return nil
+       end
+       -- correct compare string
+       if comp == "<>" or comp == "><" or comp == "!=" or comp == "~=" then comp = "~="
+       elseif comp == "<=" or comp == "<" or comp == "=<" then comp = "<="
+       elseif comp == ">=" or comp == ">" or comp == "=>" then comp = ">="
+       elseif comp == "="  or comp == "==" then comp = "=="
+       elseif comp == "<<" then comp = "<"
+       elseif comp == ">>" then comp = ">"
+       else
+               error("Invalid compare string")
+               return nil
+       end
+
+       local av1 = util.split(ver1, "[%.%-]", nil, true)
+       local av2 = util.split(ver2, "[%.%-]", nil, true)
+
+       local max = table.getn(av1)
+       if (table.getn(av1) < table.getn(av2)) then
+               max = table.getn(av2)
+       end
+
+       for i = 1, max, 1  do
+               local s1 = av1[i] or ""
+               local s2 = av2[i] or ""
+
+               -- first "not equal" found return true
+               if comp == "~=" and (s1 ~= s2) then return true end
+               -- first "lower" found return true
+               if (comp == "<" or comp == "<=") and (s1 < s2) then return true end
+               -- first "greater" found return true
+               if (comp == ">" or comp == ">=") and (s1 > s2) then return true end
+               -- not equal then return false
+               if (s1 ~= s2) then return false end
+       end
+
+       -- all equal and not compare greater or lower then true
+       return not (comp == "<" or comp == ">")
+end
diff --git a/package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.luadoc b/package/luci/libs/luci-lib-ipkg/luasrc/model/ipkg.luadoc
new file mode 100644 (file)
index 0000000..4e1548d
--- /dev/null
@@ -0,0 +1,125 @@
+---[[
+LuCI OPKG call abstraction library
+]]
+module "luci.model.ipkg"
+
+---[[
+Return information about installed and available packages.
+
+@class function
+@name info
+@param pkg Limit output to a (set of) packages
+@return Table containing package information
+]]
+
+---[[
+Return the package status of one or more packages.
+
+@class function
+@name status
+@param pkg Limit output to a (set of) packages
+@return Table containing package status information
+]]
+
+---[[
+Install one or more packages.
+
+@class function
+@name install
+@param ... List of packages to install
+@return Boolean indicating the status of the action
+@return OPKG return code, STDOUT and STDERR
+]]
+
+---[[
+Determine whether a given package is installed.
+
+@class function
+@name installed
+@param pkg Package
+@return Boolean
+]]
+
+---[[
+Remove one or more packages.
+
+@class function
+@name remove
+@param ... List of packages to install
+@return Boolean indicating the status of the action
+@return OPKG return code, STDOUT and STDERR
+]]
+
+---[[
+Update package lists.
+
+@class function
+@name update
+@return Boolean indicating the status of the action
+@return OPKG return code, STDOUT and STDERR
+]]
+
+---[[
+Upgrades all installed packages.
+
+@class function
+@name upgrade
+@return Boolean indicating the status of the action
+@return OPKG return code, STDOUT and STDERR
+]]
+
+---[[
+List all packages known to opkg.
+
+@class function
+@name list_all
+@param pat     Only find packages matching this pattern, nil lists all packages
+@param cb      Callback function invoked for each package, receives name, version and description as arguments
+@return        nothing
+]]
+
+---[[
+List installed packages.
+
+@class function
+@name list_installed
+@param pat     Only find packages matching this pattern, nil lists all packages
+@param cb      Callback function invoked for each package, receives name, version and description as arguments
+@return        nothing
+]]
+
+---[[
+Find packages that match the given pattern.
+
+@class function
+@name find
+@param pat     Find packages whose names or descriptions match this pattern, nil results in zero results
+@param cb      Callback function invoked for each patckage, receives name, version and description as arguments
+@return        nothing
+]]
+
+---[[
+Determines the overlay root used by opkg.
+
+@class function
+@name overlay_root
+@return                String containing the directory path of the overlay root.
+]]
+
+---[[
+lua version of opkg compare-versions
+
+@class function
+@name compare_versions
+@param ver1    string version 1
+@param ver2    string version 2
+@param comp    string compare versions using
+               "<=" or "<" lower-equal
+               ">" or ">=" greater-equal
+               "=" equal
+               "<<" lower
+               ">>" greater
+               "~=" not equal
+@return Boolean indicating the status of the compare
+]]
+
diff --git a/package/luci/libs/luci-lib-iptparser/Makefile b/package/luci/libs/luci-lib-iptparser/Makefile
new file mode 100644 (file)
index 0000000..06748ad
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2018 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Iptables listing parser class
+LUCI_DEPENDS:=+luci-base
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.lua b/package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.lua
new file mode 100644 (file)
index 0000000..7ff665e
--- /dev/null
@@ -0,0 +1,374 @@
+--[[
+
+Iptables parser and query library
+(c) 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+(c) 2008-2009 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+
+]]--
+
+local luci  = {}
+luci.util   = require "luci.util"
+luci.sys    = require "luci.sys"
+luci.ip     = require "luci.ip"
+
+local pcall = pcall
+local io = require "io"
+local tonumber, ipairs, table = tonumber, ipairs, table
+
+module("luci.sys.iptparser")
+
+IptParser = luci.util.class()
+
+function IptParser.__init__( self, family )
+       self._family = (tonumber(family) == 6) and 6 or 4
+       self._rules  = { }
+       self._chains = { }
+       self._tables = { }
+
+       local t = self._tables
+       local s = self:_supported_tables(self._family)
+
+       if s.filter then t[#t+1] = "filter" end
+       if s.nat    then t[#t+1] = "nat"    end
+       if s.mangle then t[#t+1] = "mangle" end
+       if s.raw    then t[#t+1] = "raw"    end
+
+       if self._family == 4 then
+               self._nulladdr = "0.0.0.0/0"
+               self._command  = "iptables -t %s --line-numbers -nxvL"
+       else
+               self._nulladdr = "::/0"
+               self._command  = "ip6tables -t %s --line-numbers -nxvL"
+       end
+
+       self:_parse_rules()
+end
+
+function IptParser._supported_tables( self, family )
+       local tables = { }
+       local ok, lines = pcall(io.lines,
+               (family == 6) and "/proc/net/ip6_tables_names"
+                              or "/proc/net/ip_tables_names")
+
+       if ok and lines then
+               local line
+               for line in lines do
+                       tables[line] = true
+               end
+       end
+
+       return tables
+end
+
+-- search criteria as only argument. If args is nil or an empty table then all
+-- rules will be returned.
+--
+-- The following keys in the args table are recognized:
+-- <ul>
+--  <li> table          - Match rules that are located within the given table
+--  <li> chain          - Match rules that are located within the given chain
+--  <li> target                 - Match rules with the given target
+--  <li> protocol       - Match rules that match the given protocol, rules with
+--                                             protocol "all" are always matched
+--  <li> source                 - Match rules with the given source, rules with source
+--                                             "0.0.0.0/0" (::/0) are always matched
+--  <li> destination - Match rules with the given destination, rules with
+--                                             destination "0.0.0.0/0" (::/0) are always matched
+--  <li> inputif        - Match rules with the given input interface, rules
+--                                             with input      interface "*" (=all) are always matched
+--  <li> outputif       - Match rules with the given output interface, rules
+--                                             with output     interface "*" (=all) are always matched
+--  <li> flags          - Match rules that match the given flags, current
+--                                             supported values are "-f" (--fragment)
+--                                             and "!f" (! --fragment)
+--  <li> options        - Match rules containing all given options
+-- </ul>
+-- The return value is a list of tables representing the matched rules.
+-- Each rule table contains the following fields:
+-- <ul>
+--  <li> index          - The index number of the rule
+--  <li> table          - The table where the rule is located, can be one
+--                                             of "filter", "nat" or "mangle"
+--  <li> chain          - The chain where the rule is located, e.g. "INPUT"
+--                                             or "postrouting_wan"
+--  <li> target                 - The rule target, e.g. "REJECT" or "DROP"
+--  <li> protocol              The matching protocols, e.g. "all" or "tcp"
+--  <li> flags          - Special rule options ("--", "-f" or "!f")
+--  <li> inputif        - Input interface of the rule, e.g. "eth0.0"
+--                                             or "*" for all interfaces
+--  <li> outputif       - Output interface of the rule,e.g. "eth0.0"
+--                                             or "*" for all interfaces
+--  <li> source                 - The source ip range, e.g. "0.0.0.0/0" (::/0)
+--  <li> destination - The destination ip range, e.g. "0.0.0.0/0" (::/0)
+--  <li> options        - A list of specific options of the rule,
+--                                             e.g. { "reject-with", "tcp-reset" }
+--  <li> packets        - The number of packets matched by the rule
+--  <li> bytes          - The number of total bytes matched by the rule
+-- </ul>
+-- Example:
+-- <pre>
+-- ip = luci.sys.iptparser.IptParser()
+-- result = ip.find( {
+--     target="REJECT",
+--     protocol="tcp",
+--     options={ "reject-with", "tcp-reset" }
+-- } )
+-- </pre>
+-- This will match all rules with target "-j REJECT",
+-- protocol "-p tcp" (or "-p all")
+-- and the option "--reject-with tcp-reset".
+function IptParser.find( self, args )
+
+       local args = args or { }
+       local rv   = { }
+
+       args.source      = args.source      and self:_parse_addr(args.source)
+       args.destination = args.destination and self:_parse_addr(args.destination)
+
+       for i, rule in ipairs(self._rules) do
+               local match = true
+
+               -- match table
+               if not ( not args.table or args.table:lower() == rule.table ) then
+                       match = false
+               end
+
+               -- match chain
+               if not ( match == true and (
+                       not args.chain or args.chain == rule.chain
+               ) ) then
+                       match = false
+               end
+
+               -- match target
+               if not ( match == true and (
+                       not args.target or args.target == rule.target
+               ) ) then
+                       match = false
+               end
+
+               -- match protocol
+               if not ( match == true and (
+                       not args.protocol or rule.protocol == "all" or
+                       args.protocol:lower() == rule.protocol
+               ) ) then
+                       match = false
+               end
+
+               -- match source
+               if not ( match == true and (
+                       not args.source or rule.source == self._nulladdr or
+                       self:_parse_addr(rule.source):contains(args.source)
+               ) ) then
+                       match = false
+               end
+
+               -- match destination
+               if not ( match == true and (
+                       not args.destination or rule.destination == self._nulladdr or
+                       self:_parse_addr(rule.destination):contains(args.destination)
+               ) ) then
+                       match = false
+               end
+
+               -- match input interface
+               if not ( match == true and (
+                       not args.inputif or rule.inputif == "*" or
+                       args.inputif == rule.inputif
+               ) ) then
+                       match = false
+               end
+
+               -- match output interface
+               if not ( match == true and (
+                       not args.outputif or rule.outputif == "*" or
+                       args.outputif == rule.outputif
+               ) ) then
+                       match = false
+               end
+
+               -- match flags (the "opt" column)
+               if not ( match == true and (
+                       not args.flags or rule.flags == args.flags
+               ) ) then
+                       match = false
+               end
+
+               -- match specific options
+               if not ( match == true and (
+                       not args.options or
+                       self:_match_options( rule.options, args.options )
+               ) ) then
+                       match = false
+               end
+
+               -- insert match
+               if match == true then
+                       rv[#rv+1] = rule
+               end
+       end
+
+       return rv
+end
+
+
+-- through external commands.
+function IptParser.resync( self )
+       self._rules = { }
+       self._chain = nil
+       self:_parse_rules()
+end
+
+
+function IptParser.tables( self )
+       return self._tables
+end
+
+
+function IptParser.chains( self, table )
+       local lookup = { }
+       local chains = { }
+       for _, r in ipairs(self:find({table=table})) do
+               if not lookup[r.chain] then
+                       lookup[r.chain]   = true
+                       chains[#chains+1] = r.chain
+               end
+       end
+       return chains
+end
+
+
+--                             and "rules". The "rules" field is a table of rule tables.
+function IptParser.chain( self, table, chain )
+       return self._chains[table:lower()] and self._chains[table:lower()][chain]
+end
+
+
+function IptParser.is_custom_target( self, target )
+       for _, r in ipairs(self._rules) do
+               if r.chain == target then
+                       return true
+               end
+       end
+       return false
+end
+
+
+-- [internal] Parse address according to family.
+function IptParser._parse_addr( self, addr )
+       if self._family == 4 then
+               return luci.ip.IPv4(addr)
+       else
+               return luci.ip.IPv6(addr)
+       end
+end
+
+-- [internal] Parse iptables output from all tables.
+function IptParser._parse_rules( self )
+
+       for i, tbl in ipairs(self._tables) do
+
+               self._chains[tbl] = { }
+
+               for i, rule in ipairs(luci.util.execl(self._command % tbl)) do
+
+                       if rule:find( "^Chain " ) == 1 then
+
+                               local crefs
+                               local cname, cpol, cpkt, cbytes = rule:match(
+                                       "^Chain ([^%s]*) %(policy (%w+) " ..
+                                       "(%d+) packets, (%d+) bytes%)"
+                               )
+
+                               if not cname then
+                                       cname, crefs = rule:match(
+                                               "^Chain ([^%s]*) %((%d+) references%)"
+                                       )
+                               end
+
+                               self._chain = cname
+                               self._chains[tbl][cname] = {
+                                       policy     = cpol,
+                                       packets    = tonumber(cpkt or 0),
+                                       bytes      = tonumber(cbytes or 0),
+                                       references = tonumber(crefs or 0),
+                                       rules      = { }
+                               }
+
+                       else
+                               if rule:find("%d") == 1 then
+
+                                       local rule_parts   = luci.util.split( rule, "%s+", nil, true )
+                                       local rule_details = { }
+
+                                       -- cope with rules that have no target assigned
+                                       if rule:match("^%d+%s+%d+%s+%d+%s%s") then
+                                               table.insert(rule_parts, 4, nil)
+                                       end
+
+                                       -- ip6tables opt column is usually zero-width
+                                       if self._family == 6 then
+                                               table.insert(rule_parts, 6, "--")
+                                       end
+
+                                       rule_details["table"]       = tbl
+                                       rule_details["chain"]       = self._chain
+                                       rule_details["index"]       = tonumber(rule_parts[1])
+                                       rule_details["packets"]     = tonumber(rule_parts[2])
+                                       rule_details["bytes"]       = tonumber(rule_parts[3])
+                                       rule_details["target"]      = rule_parts[4]
+                                       rule_details["protocol"]    = rule_parts[5]
+                                       rule_details["flags"]       = rule_parts[6]
+                                       rule_details["inputif"]     = rule_parts[7]
+                                       rule_details["outputif"]    = rule_parts[8]
+                                       rule_details["source"]      = rule_parts[9]
+                                       rule_details["destination"] = rule_parts[10]
+                                       rule_details["options"]     = { }
+
+                                       for i = 11, #rule_parts  do
+                                               if #rule_parts[i] > 0 then
+                                                       rule_details["options"][i-10] = rule_parts[i]
+                                               end
+                                       end
+
+                                       self._rules[#self._rules+1] = rule_details
+
+                                       self._chains[tbl][self._chain].rules[
+                                               #self._chains[tbl][self._chain].rules + 1
+                                       ] = rule_details
+                               end
+                       end
+               end
+       end
+
+       self._chain = nil
+end
+
+
+-- [internal] Return true if optlist1 contains all elements of optlist 2.
+--            Return false in all other cases.
+function IptParser._match_options( self, o1, o2 )
+
+       -- construct a hashtable of first options list to speed up lookups
+       local oh = { }
+       for i, opt in ipairs( o1 ) do oh[opt] = true end
+
+       -- iterate over second options list
+       -- each string in o2 must be also present in o1
+       -- if o2 contains a string which is not found in o1 then return false
+       for i, opt in ipairs( o2 ) do
+               if not oh[opt] then
+                       return false
+               end
+       end
+
+       return true
+end
diff --git a/package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc b/package/luci/libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc
new file mode 100644 (file)
index 0000000..071e7d5
--- /dev/null
@@ -0,0 +1,69 @@
+---[[
+LuCI iptables parser and query library
+
+@cstyle        instance
+]]
+module "luci.sys.iptparser"
+
+---[[
+Create a new iptables parser object.
+
+@class function
+@name  IptParser
+@param family  Number specifying the address family. 4 for IPv4, 6 for IPv6
+@return        IptParser instance
+]]
+
+---[[
+Find all firewall rules that match the given criteria. Expects a table with
+
+search criteria as only argument. If args is nil or an empty table then all
+rules will be returned.
+]]
+
+---[[
+Rebuild the internal lookup table, for example when rules have changed
+
+through external commands.
+@class function
+@name IptParser.resync
+@return        nothing
+]]
+
+---[[
+Find the names of all tables.
+
+@class function
+@name IptParser.tables
+@return                Table of table names.
+]]
+
+---[[
+Find the names of all chains within the given table name.
+
+@class function
+@name IptParser.chains
+@param table   String containing the table name
+@return                Table of chain names in the order they occur.
+]]
+
+---[[
+Return the given firewall chain within the given table name.
+
+@class function
+@name IptParser.chain
+@param table   String containing the table name
+@param chain   String containing the chain name
+@return                Table containing the fields "policy", "packets", "bytes"
+--                             and "rules". The "rules" field is a table of rule tables.
+]]
+
+---[[
+Test whether the given target points to a custom chain.
+
+@class function
+@name IptParser.is_custom_target
+@param target  String containing the target action
+@return                        Boolean indicating whether target is a custom chain.
+]]
+
diff --git a/package/luci/libs/luci-lib-json/Makefile b/package/luci/libs/luci-lib-json/Makefile
new file mode 100644 (file)
index 0000000..ededc1f
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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:=LuCI JSON library
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-json/luasrc/json.lua b/package/luci/libs/luci-lib-json/luasrc/json.lua
new file mode 100644 (file)
index 0000000..6d4d752
--- /dev/null
@@ -0,0 +1,535 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local nixio     = require "nixio"
+local util      = require "luci.util"
+local table     = require "table"
+local string    = require "string"
+local coroutine = require "coroutine"
+
+local assert    = assert
+local tonumber  = tonumber
+local tostring  = tostring
+local error     = error
+local type         = type
+local pairs        = pairs
+local ipairs    = ipairs
+local next      = next
+local pcall            = pcall
+
+local band      = nixio.bit.band
+local bor       = nixio.bit.bor
+local rshift    = nixio.bit.rshift
+local char      = string.char
+
+local getmetatable = getmetatable
+
+module "luci.json"
+
+
+function decode(json, ...)
+       local a = ActiveDecoder(function() return nil end, ...)
+       a.chunk = json
+       local s, obj = pcall(a.get, a)
+       return s and obj or nil
+end
+
+
+function encode(obj, ...)
+       local out = {}
+       local e = Encoder(obj, 1, ...):source()
+       local chnk, err
+       repeat
+               chnk, err = e()
+               out[#out+1] = chnk
+       until not chnk
+       return not err and table.concat(out) or nil
+end
+
+
+function null()
+       return null
+end
+
+Encoder = util.class()
+
+function Encoder.__init__(self, data, buffersize, fastescape)
+       self.data = data
+       self.buffersize = buffersize or 512
+       self.buffer = ""
+       self.fastescape = fastescape
+
+       getmetatable(self).__call = Encoder.source
+end
+
+function Encoder.source(self)
+       local source = coroutine.create(self.dispatch)
+       return function()
+               local res, data = coroutine.resume(source, self, self.data, true)
+               if res then
+                       return data
+               else
+                       return nil, data
+               end
+       end
+end
+
+function Encoder.dispatch(self, data, start)
+       local parser = self.parsers[type(data)]
+
+       parser(self, data)
+
+       if start then
+               if #self.buffer > 0 then
+                       coroutine.yield(self.buffer)
+               end
+
+               coroutine.yield()
+       end
+end
+
+function Encoder.put(self, chunk)
+       if self.buffersize < 2 then
+               coroutine.yield(chunk)
+       else
+               if #self.buffer + #chunk > self.buffersize then
+                       local written = 0
+                       local fbuffer = self.buffersize - #self.buffer
+
+                       coroutine.yield(self.buffer .. chunk:sub(written + 1, fbuffer))
+                       written = fbuffer
+
+                       while #chunk - written > self.buffersize do
+                               fbuffer = written + self.buffersize
+                               coroutine.yield(chunk:sub(written + 1, fbuffer))
+                               written = fbuffer
+                       end
+
+                       self.buffer = chunk:sub(written + 1)
+               else
+                       self.buffer = self.buffer .. chunk
+               end
+       end
+end
+
+function Encoder.parse_nil(self)
+       self:put("null")
+end
+
+function Encoder.parse_bool(self, obj)
+       self:put(obj and "true" or "false")
+end
+
+function Encoder.parse_number(self, obj)
+       self:put(tostring(obj))
+end
+
+function Encoder.parse_string(self, obj)
+       if self.fastescape then
+               self:put('"' .. obj:gsub('\\', '\\\\'):gsub('"', '\\"') .. '"')
+       else
+               self:put('"' ..
+                       obj:gsub('[%c\\"]',
+                               function(char)
+                                       return '\\u00%02x' % char:byte()
+                               end
+                       )
+               .. '"')
+       end
+end
+
+function Encoder.parse_iter(self, obj)
+       if obj == null then
+               return self:put("null")
+       end
+
+       if type(obj) == "table" and (#obj == 0 and next(obj)) then
+               self:put("{")
+               local first = true
+
+               for key, entry in pairs(obj) do
+                       if key ~= null then
+                               first = first or self:put(",")
+                               first = first and false
+                               self:parse_string(tostring(key))
+                               self:put(":")
+                               self:dispatch(entry)
+                       end
+               end
+
+               self:put("}")
+       else
+               self:put("[")
+               local first = true
+
+               if type(obj) == "table" then
+                       for i=1, #obj do
+                               first = first or self:put(",")
+                               first = first and nil
+                               self:dispatch(obj[i])
+                       end
+               else
+                       for entry in obj do
+                               first = first or self:put(",")
+                               first = first and nil
+                               self:dispatch(entry)
+                       end
+               end
+
+               self:put("]")
+       end
+end
+
+function Encoder.parse_udata(self, obj)
+       return self:parse_string(tostring(obj))
+end
+
+Encoder.parsers = {
+       ['nil']      = Encoder.parse_nil,
+       ['table']    = Encoder.parse_iter,
+       ['number']   = Encoder.parse_number,
+       ['string']   = Encoder.parse_string,
+       ['boolean']  = Encoder.parse_bool,
+       ['function'] = Encoder.parse_iter,
+       ['userdata'] = Encoder.parse_udata,
+}
+
+
+Decoder = util.class()
+
+function Decoder.__init__(self, customnull)
+       self.cnull = customnull
+       getmetatable(self).__call = Decoder.sink
+end
+
+function Decoder.sink(self)
+       local sink = coroutine.create(self.dispatch)
+       return function(...)
+               return coroutine.resume(sink, self, ...)
+       end
+end
+
+
+function Decoder.get(self)
+       return self.data
+end
+
+function Decoder.dispatch(self, chunk, src_err, strict)
+       local robject, object
+       local oset = false
+
+       while chunk do
+               while chunk and #chunk < 1 do
+                       chunk = self:fetch()
+               end
+
+               assert(not strict or chunk, "Unexpected EOS")
+               if not chunk then break end
+
+               local char   = chunk:sub(1, 1)
+               local parser = self.parsers[char]
+                or (char:match("%s")     and self.parse_space)
+                or (char:match("[0-9-]") and self.parse_number)
+                or error("Unexpected char '%s'" % char)
+
+               chunk, robject = parser(self, chunk)
+
+               if parser ~= self.parse_space then
+                       assert(not oset, "Scope violation: Too many objects")
+                       object = robject
+                       oset = true
+
+                       if strict then
+                               return chunk, object
+                       end
+               end
+       end
+
+       assert(not src_err, src_err)
+       assert(oset, "Unexpected EOS")
+
+       self.data = object
+end
+
+
+function Decoder.fetch(self)
+       local tself, chunk, src_err = coroutine.yield()
+       assert(chunk or not src_err, src_err)
+       return chunk
+end
+
+
+function Decoder.fetch_atleast(self, chunk, bytes)
+       while #chunk < bytes do
+               local nchunk = self:fetch()
+               assert(nchunk, "Unexpected EOS")
+               chunk = chunk .. nchunk
+       end
+
+       return chunk
+end
+
+
+function Decoder.fetch_until(self, chunk, pattern)
+       local start = chunk:find(pattern)
+
+       while not start do
+               local nchunk = self:fetch()
+               assert(nchunk, "Unexpected EOS")
+               chunk = chunk .. nchunk
+               start = chunk:find(pattern)
+       end
+
+       return chunk, start
+end
+
+
+function Decoder.parse_space(self, chunk)
+       local start = chunk:find("[^%s]")
+
+       while not start do
+               chunk = self:fetch()
+               if not chunk then
+                       return nil
+               end
+               start = chunk:find("[^%s]")
+       end
+
+       return chunk:sub(start)
+end
+
+
+function Decoder.parse_literal(self, chunk, literal, value)
+       chunk = self:fetch_atleast(chunk, #literal)
+       assert(chunk:sub(1, #literal) == literal, "Invalid character sequence")
+       return chunk:sub(#literal + 1), value
+end
+
+
+function Decoder.parse_null(self, chunk)
+       return self:parse_literal(chunk, "null", self.cnull and null)
+end
+
+
+function Decoder.parse_true(self, chunk)
+       return self:parse_literal(chunk, "true", true)
+end
+
+
+function Decoder.parse_false(self, chunk)
+       return self:parse_literal(chunk, "false", false)
+end
+
+
+function Decoder.parse_number(self, chunk)
+       local chunk, start = self:fetch_until(chunk, "[^0-9eE.+-]")
+       local number = tonumber(chunk:sub(1, start - 1))
+       assert(number, "Invalid number specification")
+       return chunk:sub(start), number
+end
+
+
+function Decoder.parse_string(self, chunk)
+       local str = ""
+       local object = nil
+       assert(chunk:sub(1, 1) == '"', 'Expected "')
+       chunk = chunk:sub(2)
+
+       while true do
+               local spos = chunk:find('[\\"]')
+               if spos then
+                       str = str .. chunk:sub(1, spos - 1)
+
+                       local char = chunk:sub(spos, spos)
+                       if char == '"' then                             -- String end
+                               chunk = chunk:sub(spos + 1)
+                               break
+                       elseif char == "\\" then                -- Escape sequence
+                               chunk, object = self:parse_escape(chunk:sub(spos))
+                               str = str .. object
+                       end
+               else
+                       str = str .. chunk
+                       chunk = self:fetch()
+                       assert(chunk, "Unexpected EOS while parsing a string")
+               end
+       end
+
+       return chunk, str
+end
+
+
+function Decoder.utf8_encode(self, s1, s2)
+       local n = s1 * 256 + s2
+
+       if n >= 0 and n <= 0x7F then
+               return char(n)
+       elseif n >= 0 and n <= 0x7FF then
+               return char(
+                       bor(band(rshift(n,  6), 0x1F), 0xC0),
+                       bor(band(n,             0x3F), 0x80)
+               )
+       elseif n >= 0 and n <= 0xFFFF then
+               return char(
+                       bor(band(rshift(n, 12), 0x0F), 0xE0),
+                       bor(band(rshift(n,  6), 0x3F), 0x80),
+                       bor(band(n,             0x3F), 0x80)
+               )
+       elseif n >= 0 and n <= 0x10FFFF then
+               return char(
+                       bor(band(rshift(n, 18), 0x07), 0xF0),
+                       bor(band(rshift(n, 12), 0x3F), 0x80),
+                       bor(band(rshift(n,  6), 0x3F), 0x80),
+                       bor(band(n,             0x3F), 0x80)
+               )
+       else
+               return "?"
+       end
+end
+
+
+function Decoder.parse_escape(self, chunk)
+       local str = ""
+       chunk = self:fetch_atleast(chunk:sub(2), 1)
+       local char = chunk:sub(1, 1)
+       chunk = chunk:sub(2)
+
+       if char == '"' then
+               return chunk, '"'
+       elseif char == "\\" then
+               return chunk, "\\"
+       elseif char == "u" then
+               chunk = self:fetch_atleast(chunk, 4)
+               local s1, s2 = chunk:sub(1, 2), chunk:sub(3, 4)
+               s1, s2 = tonumber(s1, 16), tonumber(s2, 16)
+               assert(s1 and s2, "Invalid Unicode character")
+
+               return chunk:sub(5), self:utf8_encode(s1, s2)
+       elseif char == "/" then
+               return chunk, "/"
+       elseif char == "b" then
+               return chunk, "\b"
+       elseif char == "f" then
+               return chunk, "\f"
+       elseif char == "n" then
+               return chunk, "\n"
+       elseif char == "r" then
+               return chunk, "\r"
+       elseif char == "t" then
+               return chunk, "\t"
+       else
+               error("Unexpected escaping sequence '\\%s'" % char)
+       end
+end
+
+
+function Decoder.parse_array(self, chunk)
+       chunk = chunk:sub(2)
+       local array = {}
+       local nextp = 1
+
+       local chunk, object = self:parse_delimiter(chunk, "%]")
+
+       if object then
+               return chunk, array
+       end
+
+       repeat
+               chunk, object = self:dispatch(chunk, nil, true)
+               table.insert(array, nextp, object)
+               nextp = nextp + 1
+
+               chunk, object = self:parse_delimiter(chunk, ",%]")
+               assert(object, "Delimiter expected")
+       until object == "]"
+
+       return chunk, array
+end
+
+
+function Decoder.parse_object(self, chunk)
+       chunk = chunk:sub(2)
+       local array = {}
+       local name
+
+       local chunk, object = self:parse_delimiter(chunk, "}")
+
+       if object then
+               return chunk, array
+       end
+
+       repeat
+               chunk = self:parse_space(chunk)
+               assert(chunk, "Unexpected EOS")
+
+               chunk, name   = self:parse_string(chunk)
+
+               chunk, object = self:parse_delimiter(chunk, ":")
+               assert(object, "Separator expected")
+
+               chunk, object = self:dispatch(chunk, nil, true)
+               array[name] = object
+
+               chunk, object = self:parse_delimiter(chunk, ",}")
+               assert(object, "Delimiter expected")
+       until object == "}"
+
+       return chunk, array
+end
+
+
+function Decoder.parse_delimiter(self, chunk, delimiter)
+       while true do
+               chunk = self:fetch_atleast(chunk, 1)
+               local char = chunk:sub(1, 1)
+               if char:match("%s") then
+                       chunk = self:parse_space(chunk)
+                       assert(chunk, "Unexpected EOS")
+               elseif char:match("[%s]" % delimiter) then
+                       return chunk:sub(2), char
+               else
+                       return chunk, nil
+               end
+       end
+end
+
+
+Decoder.parsers = {
+       ['"'] = Decoder.parse_string,
+       ['t'] = Decoder.parse_true,
+       ['f'] = Decoder.parse_false,
+       ['n'] = Decoder.parse_null,
+       ['['] = Decoder.parse_array,
+       ['{'] = Decoder.parse_object
+}
+
+
+ActiveDecoder = util.class(Decoder)
+
+function ActiveDecoder.__init__(self, source, customnull)
+       Decoder.__init__(self, customnull)
+       self.source = source
+       self.chunk = nil
+       getmetatable(self).__call = self.get
+end
+
+
+function ActiveDecoder.get(self)
+       local chunk, src_err, object
+       if not self.chunk then
+               chunk, src_err = self.source()
+       else
+               chunk = self.chunk
+       end
+
+       self.chunk, object = self:dispatch(chunk, src_err, true)
+       return object
+end
+
+
+function ActiveDecoder.fetch(self)
+       local chunk, src_err = self.source()
+       assert(chunk or not src_err, src_err)
+       return chunk
+end
diff --git a/package/luci/libs/luci-lib-json/luasrc/json.luadoc b/package/luci/libs/luci-lib-json/luasrc/json.luadoc
new file mode 100644 (file)
index 0000000..37f97d2
--- /dev/null
@@ -0,0 +1,94 @@
+---[[
+LuCI JSON-Library
+
+@cstyle        instance
+]]
+module "luci.json"
+
+---[[
+Directly decode a JSON string
+
+@class function
+@name decode
+@param json JSON-String
+@return Lua object
+]]
+
+---[[
+Direcly encode a Lua object into a JSON string.
+
+@class function
+@name encode
+@param obj Lua Object
+@return JSON string
+]]
+
+---[[
+Null replacement function
+
+@class function
+@name null
+@return null
+]]
+
+---[[
+Create a new JSON-Encoder.
+
+@class function
+@name  Encoder
+@param data                    Lua-Object to be encoded.
+@param buffersize      Blocksize of returned data source.
+@param fastescape      Use non-standard escaping (don't escape control chars)
+@return JSON-Encoder
+]]
+
+---[[
+Create an LTN12 source providing the encoded JSON-Data.
+
+@class function
+@name Encoder.source
+@return LTN12 source
+]]
+
+---[[
+Create a new JSON-Decoder.
+
+@class function
+@name  Decoder
+@param customnull Use luci.json.null instead of nil for decoding null
+@return JSON-Decoder
+]]
+
+---[[
+Create an LTN12 sink from the decoder object which accepts the JSON-Data.
+
+@class function
+@name Decoder.sink
+@return LTN12 sink
+]]
+
+---[[
+Get the decoded data packets after the rawdata has been sent to the sink.
+
+@class function
+@name Decoder.get
+@return Decoded data
+]]
+
+---[[
+Create a new Active JSON-Decoder.
+
+@class function
+@name  ActiveDecoder
+@param   customnull    Use luci.json.null instead of nil for decoding null
+@return  Active JSON-Decoder
+]]
+
+---[[
+Fetches one JSON-object from given source
+
+@class function
+@name ActiveDecoder.get
+@return Decoded object
+]]
+
diff --git a/package/luci/libs/luci-lib-jsonc/Makefile b/package/luci/libs/luci-lib-jsonc/Makefile
new file mode 100644 (file)
index 0000000..6a63dab
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2015 LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Lua binding for JSON-C
+LUCI_DEPENDS:=+liblua +libjson-c
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-jsonc/src/Makefile b/package/luci/libs/luci-lib-jsonc/src/Makefile
new file mode 100644 (file)
index 0000000..e15fbac
--- /dev/null
@@ -0,0 +1,17 @@
+JSONC_CFLAGS = -std=gnu99 -I$(STAGING_DIR)/usr/include/json-c/
+JSONC_LDFLAGS = -llua -lm -ljson-c
+JSONC_OBJ = jsonc.o
+JSONC_LIB = jsonc.so
+
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(JSONC_CFLAGS) $(FPIC) -c -o $@ $<
+
+compile: $(JSONC_OBJ)
+       $(CC) $(LDFLAGS) -shared -o $(JSONC_LIB) $(JSONC_OBJ) $(JSONC_LDFLAGS)
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/lib/lua/luci
+       cp $(JSONC_LIB) $(DESTDIR)/usr/lib/lua/luci/$(JSONC_LIB)
+
+clean:
+       rm -f *.o *.so
diff --git a/package/luci/libs/luci-lib-jsonc/src/jsonc.c b/package/luci/libs/luci-lib-jsonc/src/jsonc.c
new file mode 100644 (file)
index 0000000..9ff8520
--- /dev/null
@@ -0,0 +1,532 @@
+/*
+Copyright 2015 Jo-Philipp Wich <jow@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
+
+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.
+*/
+
+#define _GNU_SOURCE
+
+#include <math.h>
+#include <stdbool.h>
+#include <json-c/json.h>
+
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+
+#define LUCI_JSONC "luci.jsonc"
+#define LUCI_JSONC_PARSER "luci.jsonc.parser"
+
+struct seen {
+       size_t size;
+       size_t len;
+       const void *ptrs[];
+};
+
+struct json_state {
+       struct json_object *obj;
+       struct json_tokener *tok;
+       enum json_tokener_error err;
+};
+
+static void _json_to_lua(lua_State *L, struct json_object *obj);
+static struct json_object * _lua_to_json(lua_State *L, int index);
+static struct json_object * _lua_to_json_rec(lua_State *L, int index, struct seen **seen);
+
+static int json_new(lua_State *L)
+{
+       struct json_state *s;
+       struct json_tokener *tok = json_tokener_new();
+
+       if (!tok)
+               return 0;
+
+       s = lua_newuserdata(L, sizeof(*s));
+
+       if (!s)
+       {
+               json_tokener_free(tok);
+               return 0;
+       }
+
+       s->tok = tok;
+       s->obj = NULL;
+       s->err = json_tokener_continue;
+
+       luaL_getmetatable(L, LUCI_JSONC_PARSER);
+       lua_setmetatable(L, -2);
+
+       return 1;
+}
+
+static int json_parse(lua_State *L)
+{
+       size_t len;
+       const char *json = luaL_checklstring(L, 1, &len);
+       struct json_state s = {
+               .tok = json_tokener_new()
+       };
+
+       if (!s.tok)
+               return 0;
+
+       s.obj = json_tokener_parse_ex(s.tok, json, len);
+       s.err = json_tokener_get_error(s.tok);
+
+       if (s.obj)
+       {
+               _json_to_lua(L, s.obj);
+               json_object_put(s.obj);
+       }
+       else
+       {
+               lua_pushnil(L);
+       }
+
+       if (s.err == json_tokener_continue)
+               s.err = json_tokener_error_parse_eof;
+
+       if (s.err)
+               lua_pushstring(L, json_tokener_error_desc(s.err));
+
+       json_tokener_free(s.tok);
+       return (1 + !!s.err);
+}
+
+static int json_stringify(lua_State *L)
+{
+       struct json_object *obj = _lua_to_json(L, 1);
+       bool pretty = lua_toboolean(L, 2);
+       int flags = 0;
+
+       if (pretty)
+               flags |= JSON_C_TO_STRING_PRETTY | JSON_C_TO_STRING_SPACED;
+
+       lua_pushstring(L, json_object_to_json_string_ext(obj, flags));
+       json_object_put(obj);
+       return 1;
+}
+
+
+static int json_parse_chunk(lua_State *L)
+{
+       size_t len;
+       struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+       const char *chunk = luaL_checklstring(L, 2, &len);
+
+       s->obj = json_tokener_parse_ex(s->tok, chunk, len);
+    s->err = json_tokener_get_error(s->tok);
+
+       if (!s->err)
+       {
+               lua_pushboolean(L, true);
+               return 1;
+       }
+       else if (s->err == json_tokener_continue)
+       {
+               lua_pushboolean(L, false);
+               return 1;
+       }
+
+       lua_pushnil(L);
+       lua_pushstring(L, json_tokener_error_desc(s->err));
+       return 2;
+}
+
+static void _json_to_lua(lua_State *L, struct json_object *obj)
+{
+       int n;
+
+       switch (json_object_get_type(obj))
+       {
+       case json_type_object:
+               lua_newtable(L);
+               json_object_object_foreach(obj, key, val)
+               {
+                       _json_to_lua(L, val);
+                       lua_setfield(L, -2, key);
+               }
+               break;
+
+       case json_type_array:
+               lua_newtable(L);
+               for (n = 0; n < json_object_array_length(obj); n++)
+               {
+                       _json_to_lua(L, json_object_array_get_idx(obj, n));
+                       lua_rawseti(L, -2, n + 1);
+               }
+               break;
+
+       case json_type_boolean:
+               lua_pushboolean(L, json_object_get_boolean(obj));
+               break;
+
+       case json_type_int:
+               lua_pushinteger(L, json_object_get_int(obj));
+               break;
+
+       case json_type_double:
+               lua_pushnumber(L, json_object_get_double(obj));
+               break;
+
+       case json_type_string:
+               lua_pushstring(L, json_object_get_string(obj));
+               break;
+
+       case json_type_null:
+               lua_pushnil(L);
+               break;
+       }
+}
+
+static int json_parse_get(lua_State *L)
+{
+       struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+
+       if (!s->obj || s->err)
+               lua_pushnil(L);
+       else
+               _json_to_lua(L, s->obj);
+
+       return 1;
+}
+
+static int _lua_test_array(lua_State *L, int index)
+{
+       int max = 0;
+       lua_Number idx;
+
+       if (!lua_checkstack(L, 2))
+               return -1;
+
+       lua_pushnil(L);
+
+       /* check for non-integer keys */
+       while (lua_next(L, index))
+       {
+               if (lua_type(L, -2) != LUA_TNUMBER)
+                       goto out;
+
+               idx = lua_tonumber(L, -2);
+
+               if (idx != (lua_Number)(lua_Integer)idx)
+                       goto out;
+
+               if (idx <= 0)
+                       goto out;
+
+               if (idx > max)
+                       max = idx;
+
+               lua_pop(L, 1);
+               continue;
+
+out:
+               lua_pop(L, 2);
+               return -1;
+       }
+
+       /* check for holes */
+       //for (i = 1; i <= max; i++)
+       //{
+       //      lua_rawgeti(L, index, i);
+       //
+       //      if (lua_isnil(L, -1))
+       //      {
+       //              lua_pop(L, 1);
+       //              return 0;
+       //      }
+       //
+       //      lua_pop(L, 1);
+       //}
+
+       return max;
+}
+
+
+static bool visited(struct seen **sp, const void *ptr) {
+       struct seen *s = *sp;
+       size_t i;
+
+       if (s->len >= s->size)
+       {
+               i = s->size + 10;
+               s = realloc(*sp, sizeof(struct seen) + sizeof(void *) * i);
+
+               if (!s)
+               {
+                       if (*sp)
+                               free(*sp);
+
+                       *sp = NULL;
+                       return true;
+               }
+
+               s->size = i;
+               *sp = s;
+       }
+
+       for (i = 0; i < s->len; i++)
+               if (s->ptrs[i] == ptr)
+                       return true;
+
+       s->ptrs[s->len++] = ptr;
+       return false;
+}
+
+static struct json_object * _lua_to_json_rec(lua_State *L, int index,
+                                             struct seen **seen)
+{
+       lua_Number nd, ni;
+       struct json_object *obj;
+       const char *key;
+       int i, max;
+
+       if (index < 0)
+               index = lua_gettop(L) + index + 1;
+
+       switch (lua_type(L, index))
+       {
+       case LUA_TTABLE:
+               if (visited(seen, lua_topointer(L, index)))
+                       return NULL;
+
+               max = _lua_test_array(L, index);
+
+               if (max >= 0)
+               {
+                       obj = json_object_new_array();
+
+                       if (!obj)
+                               return NULL;
+
+                       if (!lua_checkstack(L, 1))
+                               return NULL;
+
+                       for (i = 1; i <= max; i++)
+                       {
+                               lua_rawgeti(L, index, i);
+
+                               json_object_array_put_idx(obj, i - 1,
+                                                         _lua_to_json_rec(L, -1, seen));
+
+                               lua_pop(L, 1);
+                       }
+
+                       return obj;
+               }
+
+               obj = json_object_new_object();
+
+               if (!obj)
+                       return NULL;
+
+               if (!lua_checkstack(L, 3))
+                       return NULL;
+
+               lua_pushnil(L);
+
+               while (lua_next(L, index))
+               {
+                       lua_pushvalue(L, -2);
+                       key = lua_tostring(L, -1);
+
+                       if (key)
+                               json_object_object_add(obj, key,
+                                                      _lua_to_json_rec(L, -2, seen));
+
+                       lua_pop(L, 2);
+               }
+
+               return obj;
+
+       case LUA_TNIL:
+               return NULL;
+
+       case LUA_TBOOLEAN:
+               return json_object_new_boolean(lua_toboolean(L, index));
+
+       case LUA_TNUMBER:
+               nd = lua_tonumber(L, index);
+               ni = lua_tointeger(L, index);
+
+               if (nd == ni)
+                       return json_object_new_int(nd);
+
+               return json_object_new_double(nd);
+
+       case LUA_TSTRING:
+               return json_object_new_string(lua_tostring(L, index));
+       }
+
+       return NULL;
+}
+
+static struct json_object * _lua_to_json(lua_State *L, int index)
+{
+       struct seen *s = calloc(sizeof(struct seen) + sizeof(void *) * 10, 1);
+       struct json_object *rv;
+
+       if (!s)
+               return NULL;
+
+       s->size = 10;
+
+       rv = _lua_to_json_rec(L, index, &s);
+
+       free(s);
+
+       return rv;
+}
+
+static int json_parse_set(lua_State *L)
+{
+       struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+
+       s->err = 0;
+       s->obj = _lua_to_json(L, 2);
+
+       return 0;
+}
+
+static int json_parse_sink_closure(lua_State *L)
+{
+       bool finished = lua_toboolean(L, lua_upvalueindex(2));
+       if (lua_isnil(L, 1))
+       {
+               // no more data available
+               if (finished)
+               {
+                       // we were finished parsing
+                       lua_pushboolean(L, true);
+                       return 1;
+               }
+               else
+               {
+                       lua_pushnil(L);
+                       lua_pushstring(L, "Incomplete JSON data");
+                       return 2;
+               }
+       }
+       else
+       {
+               if (finished)
+               {
+                       lua_pushnil(L);
+                       lua_pushstring(L, "Unexpected data after complete JSON object");
+                       return 2;
+               }
+               else
+               {
+                       // luci.jsonc.parser.chunk()
+                       lua_pushcfunction(L, json_parse_chunk);
+                       // parser object from closure
+                       lua_pushvalue(L, lua_upvalueindex(1));
+                       // chunk
+                       lua_pushvalue(L, 1);
+                       lua_call(L, 2, 2);
+
+                       if (lua_isnil(L, -2))
+                       {
+                               // an error occurred, leave (nil, errmsg) on the stack and return it
+                               return 2;
+                       }
+                       else if (lua_toboolean(L, -2))
+                       {
+                               // finished reading, set finished=true and return nil to prevent further input
+                               lua_pop(L, 2);
+                               lua_pushboolean(L, true);
+                               lua_replace(L, lua_upvalueindex(2));
+                               lua_pushnil(L);
+                               return 1;
+                       }
+                       else
+                       {
+                               // not finished reading, return true
+                               lua_pop(L, 2);
+                               lua_pushboolean(L, true);
+                               return 1;
+                       }
+               }
+       }
+}
+
+static int json_parse_sink(lua_State *L)
+{
+       luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+       lua_pushboolean(L, false);
+       lua_pushcclosure(L, json_parse_sink_closure, 2);
+       return 1;
+}
+
+static int json_tostring(lua_State *L)
+{
+       struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+       bool pretty = lua_toboolean(L, 2);
+       int flags = 0;
+
+       if (pretty)
+               flags |= JSON_C_TO_STRING_PRETTY | JSON_C_TO_STRING_SPACED;
+
+       lua_pushstring(L, json_object_to_json_string_ext(s->obj, flags));
+       return 1;
+}
+
+static int json_gc(lua_State *L)
+{
+       struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER);
+
+       if (s->obj)
+               json_object_put(s->obj);
+
+       if (s->tok)
+               json_tokener_free(s->tok);
+
+       return 0;
+}
+
+
+static const luaL_reg jsonc_methods[] = {
+       { "new",                        json_new          },
+       { "parse",                      json_parse        },
+       { "stringify",          json_stringify    },
+
+       { }
+};
+
+static const luaL_reg jsonc_parser_methods[] = {
+       { "parse",                      json_parse_chunk  },
+       { "get",                        json_parse_get    },
+       { "set",                        json_parse_set    },
+       { "sink",                       json_parse_sink   },
+       { "stringify",          json_tostring     },
+
+       { "__gc",                       json_gc           },
+       { "__tostring",         json_tostring     },
+
+       { }
+};
+
+
+int luaopen_luci_jsonc(lua_State *L)
+{
+       luaL_register(L, LUCI_JSONC, jsonc_methods);
+
+       luaL_newmetatable(L, LUCI_JSONC_PARSER);
+       luaL_register(L, NULL, jsonc_parser_methods);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+       lua_pop(L, 1);
+
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc b/package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc
new file mode 100644 (file)
index 0000000..720b17d
--- /dev/null
@@ -0,0 +1,146 @@
+--- LuCI JSON parsing and serialization library.
+-- The luci.jsonc class is a high level Lua binding to the JSON-C library to
+-- allow reading and writing JSON data with minimal overhead.
+module "luci.jsonc"
+
+---[[
+Construct a new luci.jsonc.parser instance.
+@class function
+@sort 1
+@name new
+@return A `luci.jsonc.parser` object representing a JSON-C tokener.
+@usage `parser = luci.jsonc.new()`
+]]
+
+---[[
+Parse a complete JSON string and convert it into a Lua data structure.
+@class function
+@sort 2
+@name parse
+@param json  A string containing the JSON data to parse, must be either a
+       JSON array or a JSON object.
+@return On success, a table containing the parsed JSON data is returned, on
+       failure the function returns `nil` and a string containing the reason of
+       the parse error.
+@usage `data = luci.jsonc.parse('{ "name": "John", "age": 34 }')
+print(data.name)  -- "John"`
+@see stringify
+]]
+
+---[[
+Convert given Lua data into a JSON string.
+
+This function recursively converts the given Lua data into a JSON string,
+ignoring any unsupported data. Lua tables are converted into JSON arrays if they
+only contain integer keys, mixed tables are turned into JSON objects with any
+existing numeric keys converted into strings.
+
+Lua functions, coroutines and userdata objects are ignored and Lua numbers are
+converted to integers if they do not contain fractional values.
+
+@class function
+@sort 3
+@name stringify
+@param data  The Lua data to convert, can be a table, string, boolean or number.
+@param pretty  A boolean value indicating whether the resulting JSON should be
+       pretty printed.
+@return Returns a string containing the JSON representation of the given Lua
+       data.
+@usage `json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } })
+print(json)  -- '{"item":true,"values":[1,2,3]}'`
+@see parse
+]]
+
+
+--- LuCI JSON parser instance.
+-- A JSON parser instance is useful to parse JSON data chunk by chunk, without
+-- the need to assemble all data in advance.
+-- @cstyle instance
+module "luci.jsonc.parser"
+
+---[[
+Parses one chunk of JSON data.
+
+@class function
+@sort 1
+@name parser.parse
+@see parser.get
+@param json  String containing the JSON fragment to parse
+@return <ul>
+       <li>`true` if a complete JSON object has been parsed and no further input is
+           expected.</li>
+       <li>`false` if further input is required</li>
+       <li>`nil` if an error was encountered while parsing the current chunk.
+           In this case a string describing the parse error is returned as second
+           value.</li></ul>
+@usage `parser = luci.jsonc.new()
+
+while true do
+       chunk = ...  -- fetch a cunk of data, e.g. from a socket
+       finish, errmsg = <b>parser.parse(chunk)</b>
+
+       if finish == nil then
+               error("Cannot parse JSON: " .. errmsg)
+       end
+
+       if finish == true then
+               break
+       end
+end`
+]]
+
+---[[
+Convert parsed JSON data into Lua table.
+
+@class function
+@sort 2
+@name parser.get
+@see parser.parse
+@return Parsed JSON object converted into a Lua table or `nil` if the parser
+       didn't finish or encountered an error.
+@usage `parser = luci.jsonc.new()
+parser:parse('{ "example": "test" }')
+
+data = parser:get()
+print(data.example)  -- "test"`
+]]
+
+---[[
+Put Lua data into the parser.
+
+@class function
+@sort 3
+@name parser.set
+@see parser.stringify
+@param data  Lua data to put into the parser object. The data is converted to an
+       internal JSON representation that can be dumped with `stringify()`.
+       The conversion follows the rules described in `luci.jsonc.stringify`.
+@return Nothing is returned.
+@usage `parser = luci.jsonc.new()
+parser:set({ "some", "data" })`
+]]
+
+---[[
+Generate an ltn12-compatible sink.
+
+@class function
+@sort 4
+@name parser.sink
+@return Returns a function that can be used as an ltn12 sink.
+@usage `parser = luci.jsonc.new()
+ltn12.pump.all(ltn12.source.file(io.input()), parser:sink())
+print(parser:get())`
+]]
+
+---[[
+Serialize current parser state as JSON.
+
+@class function
+@sort 5
+@name parser.stringify
+@param pretty A boolean value indicating whether the resulting JSON should be pretty printed.
+@return Returns the serialized JSON data of this parser instance.
+@usage `parser = luci.jsonc.new()
+parser:parse('{ "example": "test" }')
+print(parser:serialize())  -- '{"example":"test"}'`
+]]
diff --git a/package/luci/libs/luci-lib-luaneightbl/Makefile b/package/luci/libs/luci-lib-luaneightbl/Makefile
new file mode 100644 (file)
index 0000000..f0185b8
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=neightbl - Lua lib for IPv6 neighbors
+LUCI_DEPENDS:=+liblua
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-luaneightbl/src/Makefile b/package/luci/libs/luci-lib-luaneightbl/src/Makefile
new file mode 100644 (file)
index 0000000..f856d2f
--- /dev/null
@@ -0,0 +1,17 @@
+NEIGHTBL_CFLAGS = -std=gnu99
+NEIGHTBL_LDFLAGS = -llua -lm
+NEIGHTBL_OBJ = neightbl.o
+NEIGHTBL_LIB = neightbl.so
+
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(NEIGHTBL_CFLAGS) $(FPIC) -c -o $@ $<
+
+compile: $(NEIGHTBL_OBJ)
+       $(CC) $(LDFLAGS) -shared -o $(NEIGHTBL_LIB) $(NEIGHTBL_OBJ) $(NEIGHTBL_LDFLAGS)
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/lib/lua
+       cp $(NEIGHTBL_LIB) $(DESTDIR)/usr/lib/lua/$(NEIGHTBL_LIB)
+
+clean:
+       rm -f *.o *.so
diff --git a/package/luci/libs/luci-lib-luaneightbl/src/neightbl.c b/package/luci/libs/luci-lib-luaneightbl/src/neightbl.c
new file mode 100644 (file)
index 0000000..987ec5e
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+License:
+Copyright 2013 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+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.
+*/
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+#include <linux/rtnetlink.h>
+#include <sys/socket.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <net/if.h>
+#include <arpa/inet.h>
+#include <netinet/ether.h>
+
+char *ether_ntoa_l (const struct ether_addr *addr, char *buf)
+{
+  sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x",
+           addr->ether_addr_octet[0], addr->ether_addr_octet[1],
+           addr->ether_addr_octet[2], addr->ether_addr_octet[3],
+           addr->ether_addr_octet[4], addr->ether_addr_octet[5]);
+  return buf;
+}
+
+static int neightbl_get(lua_State *L) {
+       int sock = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);
+       struct sockaddr_nl kernel = {AF_NETLINK, 0, 0, 0};
+       if (connect(sock, (struct sockaddr*)&kernel, sizeof(kernel)))
+               goto error;
+
+       const char *ifname = luaL_checkstring(L, 1);
+       int ifindex = if_nametoindex(ifname);
+       if (ifindex <= 0)
+               goto error;
+
+       struct {
+               struct nlmsghdr hdr;
+               struct ndmsg ndm;
+       } req = {
+               {sizeof(req), RTM_GETNEIGH, NLM_F_REQUEST | NLM_F_DUMP, 1, 0},
+               {AF_INET6, 0, 0, ifindex, 0, 0, 0},
+       };
+
+       if (send(sock, &req, sizeof(req), 0) != sizeof(req))
+               goto error;
+
+       lua_newtable(L);
+
+       char buf[8192];
+       struct nlmsghdr *nh = (struct nlmsghdr*)buf;
+       do {
+               ssize_t len = recv(sock, buf, sizeof(buf), 0);
+               if (len < 0) {
+                       lua_pop(L, 1);
+                       goto error;
+               }
+
+
+               for (;NLMSG_OK(nh, (size_t)len) && nh->nlmsg_type == RTM_NEWNEIGH;
+                               nh = NLMSG_NEXT(nh, len)) {
+                       struct ndmsg *ndm = NLMSG_DATA(nh);
+                       if (NLMSG_PAYLOAD(nh, 0) < sizeof(*ndm) || ndm->ndm_ifindex != ifindex)
+                               continue;
+
+                       ssize_t alen = NLMSG_PAYLOAD(nh, sizeof(*ndm));
+                       char buf[INET6_ADDRSTRLEN] = {0}, *mac = NULL, str_buf[ETH_ALEN];
+                       for (struct rtattr *rta = (struct rtattr*)&ndm[1]; RTA_OK(rta, alen);
+                                       rta = RTA_NEXT(rta, alen)) {
+                               if (rta->rta_type == NDA_DST && RTA_PAYLOAD(rta) >= sizeof(struct in6_addr))
+                                       inet_ntop(AF_INET6, RTA_DATA(rta), buf, sizeof(buf));
+                               else if (rta->rta_type == NDA_LLADDR && RTA_PAYLOAD(rta) >= 6)
+                                       mac = ether_ntoa_l(RTA_DATA(rta),str_buf);
+                       }
+
+                       if (mac)
+                               lua_pushstring(L, mac);
+                       else
+                               lua_pushboolean(L, false);
+
+                       lua_setfield(L, -2, buf);
+               }
+       } while (nh->nlmsg_type == RTM_NEWNEIGH);
+
+       close(sock);
+        return 1;
+
+error:
+       close(sock);
+       lua_pushnil(L);
+       lua_pushinteger(L, errno);
+       lua_pushstring(L, strerror(errno));
+       return 3;
+}
+
+
+static const luaL_reg R[] = {
+        {"get", neightbl_get},
+        {NULL, NULL}
+};
+
+
+int luaopen_neightbl(lua_State *l)
+{
+       luaL_register(l, "neightbl", R);
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-nixio/.gitignore b/package/luci/libs/luci-lib-nixio/.gitignore
new file mode 100644 (file)
index 0000000..a21f2a2
--- /dev/null
@@ -0,0 +1,11 @@
+src/libaxtls.a
+.depend
+.config.*
+_stage
+conf
+lex.zconf.c
+lkc_defs.h
+mconf
+zconf.tab.h
+zconf.tab.c
+src/nixio.dll
diff --git a/package/luci/libs/luci-lib-nixio/LICENSE b/package/luci/libs/luci-lib-nixio/LICENSE
new file mode 100644 (file)
index 0000000..f49a4e1
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/Makefile b/package/luci/libs/luci-lib-nixio/Makefile
new file mode 100644 (file)
index 0000000..4e501b8
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# 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:=NIXIO POSIX library
+LUCI_DEPENDS:=+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl +liblua
+
+PKG_LICENSE:=Apache-2.0
+
+define Package/luci-lib-nixio/config
+       choice
+               prompt "TLS Provider"
+               default PACKAGE_luci-lib-nixio_notls
+
+               config PACKAGE_luci-lib-nixio_notls
+                       bool "Disabled"
+
+               config PACKAGE_luci-lib-nixio_axtls
+                       bool "Builtin (axTLS)"
+
+               config PACKAGE_luci-lib-nixio_cyassl
+                       bool "CyaSSL"
+                       select PACKAGE_libcyassl
+
+               config PACKAGE_luci-lib-nixio_openssl
+                       bool "OpenSSL"
+                       select PACKAGE_libopenssl
+       endchoice
+endef
+
+NIXIO_TLS:=
+
+ifneq ($(CONFIG_PACKAGE_luci-lib-nixio_axtls),)
+  NIXIO_TLS:=axtls
+endif
+
+ifneq ($(CONFIG_PACKAGE_luci-lib-nixio_openssl),)
+  NIXIO_TLS:=openssl
+endif
+
+ifneq ($(CONFIG_PACKAGE_luci-lib-nixio_cyassl),)
+  NIXIO_TLS:=cyassl
+  LUCI_CFLAGS+=-I$(STAGING_DIR)/usr/include/cyassl
+endif
+
+MAKE_VARS += NIXIO_TLS="$(NIXIO_TLS)"
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-nixio/NOTICE b/package/luci/libs/luci-lib-nixio/NOTICE
new file mode 100644 (file)
index 0000000..96d1192
--- /dev/null
@@ -0,0 +1,10 @@
+nixio - Linux I/O library for lua
+Copyright 2009 Steven Barth <steven@midlink.org>
+Licensed under the Apache License, Version 2.0.
+
+Contains code from:
+axTLS          - Copyright 2008 Cameron Rich
+
+Thanks for testing, feedback and code snippets:
+John Crispin <blogic@openwrt.org>
+Jo-Philipp Wich <jow@openwrt.org>
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/README b/package/luci/libs/luci-lib-nixio/README
new file mode 100644 (file)
index 0000000..ba9b36b
--- /dev/null
@@ -0,0 +1,13 @@
+Building:
+       Use GNU Make.
+       make or gmake depending on your system.
+       
+       Special make flags:
+
+       OS              Override Target OS      [Linux|FreeBSD|SunOS|Windows]
+       NIXIO_TLS       TLS-Library             [*openssl|axtls]
+       NIXIO_CROSS_CC  MinGW CC (Windows)      `which i586-mingw32msvc-cc`
+       LUA_CFLAGS      Lua CFLAGS              `pkg-config --cflags lua5.1`
+       LUA_TARGET      Lua compile             target  [*source|strip|compile]
+       LUA_MODULEDIR   Install LUA_PATH        "/usr/share/lua/5.1"
+       LUA_LIBRARYDIR  Install LUA_CPATH       "/usr/lib/lua/5.1"
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/Makefile
new file mode 100644 (file)
index 0000000..02c33d2
--- /dev/null
@@ -0,0 +1,181 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+-include config/.config
+
+ifneq ($(strip $(HAVE_DOT_CONFIG)),y)
+all: menuconfig
+else
+all: target
+endif
+
+include config/makefile.conf
+
+target : $(STAGE) $(TARGET)
+
+# VERSION has to come from the command line
+RELEASE=axTLS-$(VERSION)
+
+# standard version
+target:
+       $(MAKE) -C crypto
+       $(MAKE) -C ssl
+ifdef CONFIG_AXHTTPD
+       $(MAKE) -C httpd
+endif
+ifdef CONFIG_BINDINGS
+       $(MAKE) -C bindings
+endif
+ifdef CONFIG_SAMPLES
+       $(MAKE) -C samples
+endif
+
+$(STAGE) : ssl/version.h
+       @mkdir -p $(STAGE)
+
+# create a version file with something in it.
+ssl/version.h:
+       @echo "#define AXTLS_VERSION    \"(no version)\"" > ssl/version.h
+
+$(PREFIX) :
+       @mkdir -p $(PREFIX)/lib
+       @mkdir -p $(PREFIX)/bin
+
+release:
+       $(MAKE) -C config/scripts/config clean
+       -$(MAKE) clean
+       -@rm config/*.msi config/*.back.aip config/config.h config/.config*
+       -@rm www/index.20*
+       -@rm -fr $(STAGE)
+       @echo "#define AXTLS_VERSION    \"$(VERSION)\"" > ssl/version.h
+       cd ../; tar cvfz $(RELEASE).tar.gz --wildcards-match-slash --exclude .svn axTLS; cd -;
+
+docs:
+       $(MAKE) -C docsrc doco
+
+# build the Win32 demo release version
+win32_demo:
+       @echo "#define AXTLS_VERSION    \"$(VERSION)\"" > ssl/version.h
+       $(MAKE) win32releaseconf
+
+install: $(PREFIX) all
+       cp --no-dereference $(STAGE)/libax* $(PREFIX)/lib
+       chmod 755 $(PREFIX)/lib/libax* 
+ifdef CONFIG_SAMPLES
+       install -m 755 $(STAGE)/ax* $(PREFIX)/bin 
+endif
+ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+       install -m 755 $(STAGE)/htpasswd $(PREFIX)/bin 
+endif
+ifdef CONFIG_PLATFORM_CYGWIN
+       install -m 755 $(STAGE)/cygaxtls.dll $(PREFIX)/bin 
+endif
+ifdef CONFIG_PERL_BINDINGS 
+       install -m 755 $(STAGE)/axtlsp.pm `perl -e 'use Config; print $$Config{installarchlib};'`
+endif
+       @mkdir -p -m 755 $(PREFIX)/include/axTLS
+       install -m 644 crypto/*.h $(PREFIX)/include/axTLS
+       install -m 644 ssl/*.h $(PREFIX)/include/axTLS
+       -rm $(PREFIX)/include/axTLS/cert.h
+       -rm $(PREFIX)/include/axTLS/private_key.h
+       install -m 644 config/config.h $(PREFIX)/include/axTLS
+
+installclean:
+       -@rm $(PREFIX)/lib/libax* > /dev/null 2>&1
+       -@rm $(PREFIX)/bin/ax* > /dev/null 2>&1
+       -@rm $(PREFIX)/bin/axhttpd* > /dev/null 2>&1
+       -@rm `perl -e 'use Config; print $$Config{installarchlib};'`/axtlsp.pm > /dev/null 2>&1
+
+test:
+       cd $(STAGE); ssltest; ../ssl/test/test_axssl.sh; cd -;
+
+# tidy up things
+clean::
+       @cd crypto; $(MAKE) clean
+       @cd ssl; $(MAKE) clean
+       @cd httpd; $(MAKE) clean
+       @cd samples; $(MAKE) clean
+       @cd docsrc; $(MAKE) clean
+       @cd bindings; $(MAKE) clean
+
+# ---------------------------------------------------------------------------
+# mconf stuff
+# ---------------------------------------------------------------------------
+
+CONFIG_CONFIG_IN = config/Config.in
+CONFIG_DEFCONFIG = config/defconfig
+
+config/scripts/config/conf: config/scripts/config/Makefile
+       $(MAKE) -C config/scripts/config conf
+       -@if [ ! -f config/.config ] ; then \
+               cp $(CONFIG_DEFCONFIG) config/.config; \
+       fi
+
+config/scripts/config/mconf: config/scripts/config/Makefile
+       $(MAKE) -C config/scripts/config ncurses conf mconf
+       -@if [ ! -f config/.config ] ; then \
+               cp $(CONFIG_DEFCONFIG) .config; \
+       fi
+
+cleanconf:
+       $(MAKE) -C config/scripts/config clean
+       @rm -f config/.config
+
+menuconfig: config/scripts/config/mconf
+       @./config/scripts/config/mconf $(CONFIG_CONFIG_IN)
+
+config: config/scripts/config/conf
+       @./config/scripts/config/conf $(CONFIG_CONFIG_IN)
+
+oldconfig: config/scripts/config/conf
+       @./config/scripts/config/conf -o $(CONFIG_CONFIG_IN)
+
+default: config/scripts/config/conf
+       @./config/scripts/config/conf -d $(CONFIG_CONFIG_IN) > /dev/null
+       $(MAKE)
+
+randconfig: config/scripts/config/conf
+       @./config/scripts/config/conf -r $(CONFIG_CONFIG_IN)
+
+allnoconfig: config/scripts/config/conf
+       @./config/scripts/config/conf -n $(CONFIG_CONFIG_IN)
+
+allyesconfig: config/scripts/config/conf
+       @./config/scripts/config/conf -y $(CONFIG_CONFIG_IN)
+
+# The special win32 release configuration
+win32releaseconf: config/scripts/config/conf
+       @./config/scripts/config/conf -D config/win32config $(CONFIG_CONFIG_IN) > /dev/null
+       $(MAKE)
+
+# The special linux release configuration
+linuxconf: config/scripts/config/conf
+       @./config/scripts/config/conf -D config/linuxconfig $(CONFIG_CONFIG_IN) > /dev/null
+       $(MAKE)
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/README b/package/luci/libs/luci-lib-nixio/axTLS/README
new file mode 100644 (file)
index 0000000..c8926d9
--- /dev/null
@@ -0,0 +1,3 @@
+
+See www/index.html for the README, CHANGELOG, LICENSE and other notes.
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in
new file mode 100644 (file)
index 0000000..12a696b
--- /dev/null
@@ -0,0 +1,105 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+menu "Language Bindings"
+
+config CONFIG_BINDINGS
+    bool "Create language bindings"
+    default n
+    help
+        axTLS supports language bindings in C#, VB.NET, Java and Perl.
+
+        Select Y here if you want to build the various language bindings.
+
+config CONFIG_CSHARP_BINDINGS
+    bool "Create C# bindings"
+    default n
+    depends on CONFIG_BINDINGS
+    help
+        Build C# bindings.
+
+        This requires .NET to be installed on Win32 platforms and mono to be
+        installed on all other platforms.
+
+config CONFIG_VBNET_BINDINGS
+    bool "Create VB.NET bindings"
+    default n
+    depends on CONFIG_BINDINGS
+    help
+        Build VB.NET bindings.
+
+        This requires the .NET to be installed and is only built under Win32
+        platforms.
+
+menu ".Net Framework"
+depends on CONFIG_CSHARP_BINDINGS || CONFIG_VBNET_BINDINGS
+config CONFIG_DOT_NET_FRAMEWORK_BASE
+    string "Location of .NET Framework"
+    default "c:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727"
+endmenu
+
+config CONFIG_JAVA_BINDINGS
+    bool "Create Java bindings"
+    default n
+    depends on CONFIG_BINDINGS
+    help
+        Build Java bindings.
+
+        Current Issues (see README): 
+        * Needs Java 1.4 or better.
+        * If building under Win32 it will use the Win32 JDK.
+
+menu "Java Home"
+depends on CONFIG_JAVA_BINDINGS
+config CONFIG_JAVA_HOME
+    string "Location of JDK"
+    default "c:\\Program Files\\Java\\jdk1.5.0_06" if CONFIG_PLATFORM_WIN32 || CONFIG_PLATFORM_CYGWIN
+    default "/usr/local/jdk142" if !CONFIG_PLATFORM_WIN32 && !CONFIG_PLATFORM_CYGWIN
+    depends on CONFIG_JAVA_BINDINGS 
+    help
+        The location of Sun's JDK.
+endmenu
+
+config CONFIG_PERL_BINDINGS
+    bool "Create Perl bindings"
+    default n
+    depends on CONFIG_BINDINGS
+    help
+        Build Perl bindings.
+
+        Current Issues (see README):
+        * 64 bit versions don't work at present.
+        * libperl.so needs to be in the shared library path.
+
+menu "Perl Home"
+depends on CONFIG_PERL_BINDINGS && CONFIG_PLATFORM_WIN32
+config CONFIG_PERL_CORE
+    string "Location of Perl CORE"
+    default "c:\\perl\\lib\\CORE"
+    help:
+        works with ActiveState
+        "http://www.activestate.com/Products/ActivePerl"
+
+config CONFIG_PERL_LIB
+    string "Name of Perl Library"
+    default "perl58.lib"
+endmenu
+
+config CONFIG_LUA_BINDINGS
+    bool "Create Lua bindings"
+    default n
+    depends on CONFIG_BINDINGS && !CONFIG_PLATFORM_WIN32
+    help
+        Build Lua bindings (see www.lua.org).
+
+menu "Lua Home"
+depends on CONFIG_LUA_BINDINGS 
+config CONFIG_LUA_CORE
+    string "Location of Lua CORE"
+    default "/usr/local"
+    help:
+        If the Lua exists on another directory then this needs to be changed
+endmenu
+
+endmenu
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile
new file mode 100644 (file)
index 0000000..7654fbb
--- /dev/null
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+all:
+
+include ../config/.config
+include ../config/makefile.conf
+
+ifdef CONFIG_CSHARP_BINDINGS
+all: csharp/axInterface.cs
+endif
+
+ifdef CONFIG_VBNET_BINDINGS
+all: vbnet/axInterface.vb
+endif
+
+ifdef CONFIG_JAVA_BINDINGS
+all: java/axtlsj.java
+endif
+
+ifdef CONFIG_PERL_BINDINGS
+all: perl/axTLSp_wrap.c
+endif
+
+ifdef CONFIG_LUA_BINDINGS
+all: lua/axTLSl_wrap.c
+endif
+
+csharp/axInterface.cs: ../ssl/ssl.h
+       @perl ./generate_interface.pl -csharp
+
+vbnet/axInterface.vb: ../ssl/ssl.h
+       @perl ./generate_interface.pl -vbnet
+
+java/axTLSj.i: ../ssl/ssl.h
+       @perl ./generate_SWIG_interface.pl -java
+
+java/axtlsj.java: java/axTLSj.i $(wildcard java/SSL*.java)
+       @cd java; swig -java -package axTLSj axTLSj.i; $(MAKE)
+
+perl/axTLSp.i: ../ssl/ssl.h
+       @perl ./generate_SWIG_interface.pl -perl
+
+perl/axTLSp_wrap.c: perl/axTLSp.i
+       @cd perl; swig -perl5 axTLSp.i; $(MAKE)
+
+lua/axTLSl.i: ../ssl/ssl.h
+       @perl ./generate_SWIG_interface.pl -lua
+
+lua/axTLSl_wrap.c: lua/axTLSl.i
+       @cd lua; swig -lua axTLSl.i; $(MAKE)
+
+clean::
+       $(MAKE) -C csharp clean
+       $(MAKE) -C vbnet clean
+       $(MAKE) -C java clean
+       $(MAKE) -C perl clean
+       $(MAKE) -C lua clean
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/README b/package/luci/libs/luci-lib-nixio/axTLS/bindings/README
new file mode 100644 (file)
index 0000000..8bc3109
--- /dev/null
@@ -0,0 +1,43 @@
+===============================================================================
+=                             Language Bindings                               =
+===============================================================================
+
+The tools to generate the various language bindings are done here.
+SWIG 1.3.24 or better is required for creating the Java and Perl bindings.
+
+Perl scripts are used to parse ssl.h and automagically give the appropriate 
+bindings.
+
+At present, the four languages supported are:
+
+* C#
+* VB.NET
+* Java
+* Perl
+
+To generate each binding run the following:
+
+C#:
+> generate_interface.pl -csharp
+
+VB.NET:
+> generate_interface.pl -vbnet
+
+
+Java:
+> generate_SWIG_interface.pl -java
+> cd java; swig -java -package axTLSj -noextern axTLSj.i
+
+Perl:
+> generate_SWIG_interface.pl -perl
+> cd perl; swig -noextern -perl axTLSp.i
+
+Java and Perl both create a library each called libaxtlsj.so and libaxtlsp.so 
+(or axtlsj.dll and atlsp.dll on Win32 platforms).
+
+Note: the "-noextern" is deprecated in swig 1.3.27 and newer. The "-noextern"
+option was required to get Win32 bindings to work (which is why is has probably
+been deprecated).
+
+Each binding (except for Perl) has an extra helper interface to make life 
+easier.
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile
new file mode 100644 (file)
index 0000000..3414f85
--- /dev/null
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+
+clean::
+       @rm -f axssl* axInterface.cs
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs b/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs
new file mode 100644 (file)
index 0000000..cf64a25
--- /dev/null
@@ -0,0 +1,491 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * A wrapper around the unmanaged interface to give a semi-decent C# API
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using System.Net.Sockets;
+
+/**
+ * @defgroup csharp_api C# API.
+ *
+ * Ensure that the appropriate Dispose() methods are called when finished with
+ * various objects - otherwise memory leaks will result.
+ * @{
+ */
+namespace axTLS
+{
+    /**
+     * @class SSL
+     * @ingroup csharp_api 
+     * @brief A representation of an SSL connection.
+     */
+    public class SSL
+    {
+        public IntPtr m_ssl;    /**< A pointer to the real SSL type */
+
+        /**
+         * @brief Store the reference to an SSL context.
+         * @param ip [in] A reference to an SSL object.
+         */
+        public SSL(IntPtr ip)
+        {
+            m_ssl = ip;
+        }
+
+        /**
+         * @brief Free any used resources on this connection. 
+         * 
+         * A "Close Notify" message is sent on this connection (if possible). 
+         * It is up to the application to close the socket.
+         */
+        public void Dispose()
+        {
+            axtls.ssl_free(m_ssl);
+        }
+
+        /**
+         * @brief Return the result of a handshake.
+         * @return SSL_OK if the handshake is complete and ok.
+         * @see ssl.h for the error code list.
+         */
+        public int HandshakeStatus()
+        {
+            return axtls.ssl_handshake_status(m_ssl);
+        }
+
+        /**
+         * @brief Return the SSL cipher id.
+         * @return The cipher id which is one of:
+         * - SSL_AES128_SHA (0x2f)
+         * - SSL_AES256_SHA (0x35)
+         * - SSL_RC4_128_SHA (0x05)
+         * - SSL_RC4_128_MD5 (0x04)
+         */
+        public byte GetCipherId()
+        {
+            return axtls.ssl_get_cipher_id(m_ssl);
+        }
+
+        /**
+         * @brief Get the session id for a handshake. 
+         * 
+         * This will be a 32 byte sequence and is available after the first
+         * handshaking messages are sent.
+         * @return The session id as a 32 byte sequence.
+         * @note A SSLv23 handshake may have only 16 valid bytes.
+         */
+        public byte[] GetSessionId()
+        {
+            IntPtr ptr = axtls.ssl_get_session_id(m_ssl);
+            byte sess_id_size = axtls.ssl_get_session_id_size(m_ssl);
+            byte[] result = new byte[sess_id_size];
+            Marshal.Copy(ptr, result, 0, sess_id_size);
+            return result;
+        }
+
+        /**
+         * @brief Retrieve an X.509 distinguished name component.
+         * 
+         * When a handshake is complete and a certificate has been exchanged, 
+         * then the details of the remote certificate can be retrieved.
+         *
+         * This will usually be used by a client to check that the server's 
+         * common name matches the URL.
+         *
+         * A full handshake needs to occur for this call to work.
+         *
+         * @param component [in] one of:
+         * - SSL_X509_CERT_COMMON_NAME
+         * - SSL_X509_CERT_ORGANIZATION
+         * - SSL_X509_CERT_ORGANIZATIONAL_NAME
+         * - SSL_X509_CA_CERT_COMMON_NAME
+         * - SSL_X509_CA_CERT_ORGANIZATION
+         * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME
+         * @return The appropriate string (or null if not defined)
+         */
+        public string GetCertificateDN(int component)
+        {
+            return axtls.ssl_get_cert_dn(m_ssl, component);
+        }
+    }
+
+    /**
+     * @class SSLUtil
+     * @ingroup csharp_api 
+     * @brief Some global helper functions.
+     */
+    public class SSLUtil
+    {
+
+        /**
+         * @brief Return the build mode of the axTLS project.
+         * @return The build mode is one of:
+         * - SSL_BUILD_SERVER_ONLY
+         * - SSL_BUILD_ENABLE_VERIFICATION
+         * - SSL_BUILD_ENABLE_CLIENT
+         * - SSL_BUILD_FULL_MODE
+         */
+        public static int BuildMode()
+        {
+            return axtls.ssl_get_config(axtls.SSL_BUILD_MODE);
+        }
+
+        /**
+         * @brief Return the number of chained certificates that the 
+         * client/server supports.
+         * @return The number of supported server certificates.
+         */
+        public static int MaxCerts()
+        {
+            return axtls.ssl_get_config(axtls.SSL_MAX_CERT_CFG_OFFSET);
+        }
+
+        /**
+         * @brief Return the number of CA certificates that the client/server
+         * supports.
+         * @return The number of supported CA certificates.
+         */
+        public static int MaxCACerts()
+        {
+            return axtls.ssl_get_config(axtls.SSL_MAX_CA_CERT_CFG_OFFSET);
+        }
+
+        /**
+         * @brief Indicate if PEM is supported.
+         * @return true if PEM supported.
+         */
+        public static bool HasPEM()
+        {
+            return axtls.ssl_get_config(axtls.SSL_HAS_PEM) > 0 ? true : false;
+        }
+
+        /**
+         * @brief Display the text string of the error.
+         * @param error_code [in] The integer error code.
+         */
+        public static void DisplayError(int error_code)
+        {
+            axtls.ssl_display_error(error_code);
+        }
+
+        /**
+         * @brief Return the version of the axTLS project.
+         */
+        public static string Version()
+        {
+            return axtls.ssl_version();
+        }
+    }
+
+    /**
+     * @class SSLCTX
+     * @ingroup csharp_api 
+     * @brief A base object for SSLServer/SSLClient.
+     */
+    public class SSLCTX
+    {
+        /**
+         * @brief A reference to the real client/server context.
+         */
+        protected IntPtr m_ctx;
+
+        /**
+         * @brief Establish a new client/server context.
+         *
+         * This function is called before any client/server SSL connections are 
+         * made.  If multiple threads are used, then each thread will have its 
+         * own SSLCTX context. Any number of connections may be made with a 
+         * single context. 
+         *
+         * Each new connection will use the this context's private key and 
+         * certificate chain. If a different certificate chain is required, 
+         * then a different context needs to be be used.
+         *
+         * @param options [in]  Any particular options. At present the options
+         * supported are:
+         * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if 
+         * the server authentication fails. The certificate can be 
+         * authenticated later with a call to VerifyCert().
+         * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client 
+         * authentication i.e. each handshake will include a "certificate 
+         * request" message from the server.
+         * - SSL_DISPLAY_BYTES (full mode build only): Display the byte 
+         * sequences during the handshake.
+         * - SSL_DISPLAY_STATES (full mode build only): Display the state 
+         * changes during the handshake.
+         * - SSL_DISPLAY_CERTS (full mode build only): Display the 
+         * certificates that are passed during a handshake.
+         * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key 
+         * details that are passed during a handshake.
+         * @param num_sessions [in] The number of sessions to be used for 
+         * session caching. If this value is 0, then there is no session 
+         * caching.
+         * @return A client/server context.
+         */
+        protected SSLCTX(uint options, int num_sessions)
+        {
+            m_ctx = axtls.ssl_ctx_new(options, num_sessions);
+        }
+
+        /**
+         * @brief Remove a client/server context.
+         *
+         * Frees any used resources used by this context. Each connection will 
+         * be sent a "Close Notify" alert (if possible).
+         */
+        public void Dispose()
+        {
+            axtls.ssl_ctx_free(m_ctx);
+        }
+
+        /**
+         * @brief Read the SSL data stream.
+         * @param ssl [in] An SSL object reference.
+         * @param in_data [out] After a successful read, the decrypted data 
+         * will be here. It will be null otherwise.
+         * @return The number of decrypted bytes:
+         * - if > 0, then the handshaking is complete and we are returning the 
+         * number of decrypted bytes. 
+         * - SSL_OK if the handshaking stage is successful (but not yet 
+         * complete).  
+         * - < 0 if an error.
+         * @see ssl.h for the error code list.
+         * @note Use in_data before doing any successive ssl calls.
+         */
+        public int Read(SSL ssl, out byte[] in_data)
+        {
+            IntPtr ptr = IntPtr.Zero;
+            int ret = axtls.ssl_read(ssl.m_ssl, ref ptr);
+
+            if (ret > axtls.SSL_OK)
+            {
+                in_data = new byte[ret];
+                Marshal.Copy(ptr, in_data, 0, ret);
+            }
+            else
+            {
+                in_data = null;
+            }
+
+            return ret;
+        }
+
+        /**
+         * @brief Write to the SSL data stream.
+         * @param ssl [in] An SSL obect reference.
+         * @param out_data [in] The data to be written
+         * @return The number of bytes sent, or if < 0 if an error.
+         * @see ssl.h for the error code list.
+         */
+        public int Write(SSL ssl, byte[] out_data)
+        {
+            return axtls.ssl_write(ssl.m_ssl, out_data, out_data.Length);
+        }
+
+        /**
+         * @brief Write to the SSL data stream.
+         * @param ssl [in] An SSL obect reference.
+         * @param out_data [in] The data to be written
+         * @param out_len [in] The number of bytes to be written
+         * @return The number of bytes sent, or if < 0 if an error.
+         * @see ssl.h for the error code list.
+         */
+        public int Write(SSL ssl, byte[] out_data, int out_len)
+        {
+            return axtls.ssl_write(ssl.m_ssl, out_data, out_len);
+        }
+
+        /**
+         * @brief Find an ssl object based on a Socket reference.
+         *
+         * Goes through the list of SSL objects maintained in a client/server 
+         * context to look for a socket match.
+         * @param s [in] A reference to a <A HREF="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketssocketclasstopic.asp">Socket</A> object.
+         * @return A reference to the SSL object. Returns null if the object 
+         * could not be found.
+         */
+        public SSL Find(Socket s)
+        {
+            int client_fd = s.Handle.ToInt32();
+            return new SSL(axtls.  ssl_find(m_ctx, client_fd));
+        }
+
+        /**
+         * @brief Authenticate a received certificate.
+         * 
+         * This call is usually made by a client after a handshake is complete 
+         * and the context is in SSL_SERVER_VERIFY_LATER mode.
+         * @param ssl [in] An SSL object reference.
+         * @return SSL_OK if the certificate is verified.
+         */
+        public int VerifyCert(SSL ssl)
+        {
+            return axtls.ssl_verify_cert(ssl.m_ssl);
+        }
+
+        /**
+         * @brief Force the client to perform its handshake again.
+         *
+         * For a client this involves sending another "client hello" message.
+         * For the server is means sending a "hello request" message.
+         *
+         * This is a blocking call on the client (until the handshake 
+         * completes).
+         * @param ssl [in] An SSL object reference.
+         * @return SSL_OK if renegotiation instantiation was ok
+         */
+        public int Renegotiate(SSL ssl)
+        {
+            return axtls.ssl_renegotiate(ssl.m_ssl);
+        }
+
+        /**
+         * @brief Load a file into memory that is in binary DER or ASCII PEM 
+         * format.
+         *
+         * These are temporary objects that are used to load private keys,
+         * certificates etc into memory.
+         * @param obj_type [in] The format of the file. Can be one of:
+         * - SSL_OBJ_X509_CERT (no password required)
+         * - SSL_OBJ_X509_CACERT (no password required)
+         * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported)
+         * - SSL_OBJ_P8 (RC4-128 encrypted data supported)
+         * - SSL_OBJ_P12 (RC4-128 encrypted data supported)
+         *
+         * PEM files are automatically detected (if supported).
+         * @param filename [in] The location of a file in DER/PEM format.
+         * @param password [in] The password used. Can be null if not required.
+         * @return SSL_OK if all ok
+         */
+        public int ObjLoad(int obj_type, string filename, string password)
+        {
+            return axtls.ssl_obj_load(m_ctx, obj_type, filename, password);
+        }
+
+        /**
+         * @brief Transfer binary data into the object loader.
+         *
+         * These are temporary objects that are used to load private keys,
+         * certificates etc into memory.
+         * @param obj_type [in] The format of the memory data.
+         * @param data [in] The binary data to be loaded.
+         * @param len [in] The amount of data to be loaded.
+         * @param password [in] The password used. Can be null if not required.
+         * @return SSL_OK if all ok
+         */
+        public int ObjLoad(int obj_type, byte[] data, int len, string password)
+        {
+            return axtls.ssl_obj_memory_load(m_ctx, obj_type, 
+                                            data, len, password);
+        }
+    }
+
+    /**
+     * @class SSLServer
+     * @ingroup csharp_api 
+     * @brief The server context.
+     *
+     * All server connections are started within a server context.
+     */
+    public class SSLServer : SSLCTX
+    {
+        /**
+         * @brief Start a new server context.
+         * 
+         * @see SSLCTX for details.
+         */
+        public SSLServer(uint options, int num_sessions) :
+                            base(options, num_sessions) {}
+
+        /**
+         * @brief Establish a new SSL connection to an SSL client.
+         *
+         * It is up to the application to establish the initial socket 
+         * connection.
+         *
+         * Call Dispose() when the connection is to be removed.
+         * @param s [in] A reference to a <A HREF="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketssocketclasstopic.asp">Socket</A> object.
+         * @return An SSL object reference.
+         */
+        public SSL Connect(Socket s)
+        {
+            int client_fd = s.Handle.ToInt32();
+            return new SSL(axtls.ssl_server_new(m_ctx, client_fd));
+        }
+    }
+
+    /**
+     * @class SSLClient
+     * @ingroup csharp_api
+     * @brief The client context.
+     *
+     * All client connections are started within a client context.
+     */
+    public class SSLClient : SSLCTX
+    {
+        /**
+         * @brief Start a new client context.
+         * 
+         * @see SSLCTX for details.
+         */
+        public SSLClient(uint options, int num_sessions) :
+                        base(options, num_sessions) {}
+
+        /**
+         * @brief Establish a new SSL connection to an SSL server.
+         *
+         * It is up to the application to establish the initial socket 
+         * connection.
+         *
+         * This is a blocking call - it will finish when the handshake is 
+         * complete (or has failed).
+         *
+         * Call Dispose() when the connection is to be removed.
+         * @param s [in] A reference to a <A HREF="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketssocketclasstopic.asp">Socket</A> object.
+         * @param session_id [in] A 32 byte session id for session resumption. 
+         * This can be null if no session resumption is not required.
+         * @return An SSL object reference. Use SSL.handshakeStatus() to check 
+         * if a handshake succeeded.
+         */
+        public SSL Connect(Socket s, byte[] session_id)
+        {
+            int client_fd = s.Handle.ToInt32();
+            byte sess_id_size = (byte)(session_id != null ? 
+                                session_id.Length : 0);
+            return new SSL(axtls.ssl_client_new(m_ctx, client_fd, session_id,
+                        sess_id_size));
+        }
+    }
+}
+/** @} */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl b/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl
new file mode 100755 (executable)
index 0000000..4b25179
--- /dev/null
@@ -0,0 +1,393 @@
+#!/usr/bin/perl
+
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#===============================================================
+# Transforms function signature into SWIG format
+sub transformSignature
+{
+    foreach $item (@_)
+    { 
+        $line =~ s/STDCALL //g;
+        $line =~ s/EXP_FUNC/extern/g;
+
+        # make API Java more 'byte' friendly
+        $line =~ s/uint32_t/int/g;
+        $line =~ s/const uint8_t \* /const unsigned char \* /g;
+        $line =~ s/\(void\)/()/g;
+        if ($ARGV[0] eq "-java")
+        {
+            $line =~ s/.*ssl_read.*//g;
+            $line =~ s/const uint8_t \*(\w+)/const signed char $1\[\]/g;
+            $line =~ s/uint8_t/signed char/g;
+        }
+        elsif ($ARGV[0] eq "-perl")
+        {
+            $line =~ s/const uint8_t \*(\w+)/const unsigned char $1\[\]/g;
+            $line =~ s/uint8_t/unsigned char/g;
+        }
+        else # lua
+        {
+            $line =~ s/const uint8_t \*session_id/const unsigned char session_id\[\]/g;
+            $line =~ s/const uint8_t \*\w+/unsigned char *INPUT/g;
+            $line =~ s/uint8_t/unsigned char/g;
+        }
+    }
+
+    return $line;
+}
+
+# Parse input file
+sub parseFile
+{
+    foreach $line (@_)
+    {
+        next if $line =~ /ssl_x509_create/; # ignore for now
+
+        # test for a #define
+        if (!$skip && $line =~ m/^#define/)
+        {
+            $splitDefine = 1 if $line =~ m/\\$/;
+            print DATA_OUT $line;
+
+            # check line is not split
+            next if $splitDefine == 1;
+        }
+
+        # pick up second line of #define statement
+        if ($splitDefine) 
+        {
+            print DATA_OUT $line;
+
+            # check line is not split
+            $splitDefine = ($line =~ m/\\$/);
+            next;
+        } 
+
+        # test for function declaration
+        if (!$skip && $line =~ /EXP_FUNC/ && $line !~/\/\*/)
+        {
+            $line = transformSignature($line);
+            $splitFunctionDeclaration = $line !~ /;/;
+            print DATA_OUT $line;
+            next;
+        }
+
+        if ($splitFunctionDeclaration) 
+        {
+            $line = transformSignature($line);
+            $splitFunctionDeclaration = $line !~ /;/;
+            print DATA_OUT $line;
+            next;
+        }
+    }
+}
+
+#===============================================================
+
+# Determine which module to build from cammand-line options
+use strict;
+use Getopt::Std;
+
+my $module;
+my $interfaceFile;
+my $data_file;
+my $skip;
+my $splitLine;
+my @raw_data;
+
+if (not defined  $ARGV[0])
+{
+    goto ouch;
+}
+
+if ($ARGV[0] eq "-java")
+{
+    print "Generating Java interface file\n";
+    $module = "axtlsj";
+    $interfaceFile = "java/axTLSj.i";
+}
+elsif ($ARGV[0] eq "-perl")
+{
+    print "Generating Perl interface file\n";
+    $module = "axtlsp";
+    $interfaceFile = "perl/axTLSp.i";
+}
+elsif ($ARGV[0] eq "-lua")
+{
+    print "Generating lua interface file\n";
+    $module = "axtlsl";
+    $interfaceFile = "lua/axTLSl.i";
+}
+else
+{
+ouch:
+    die "Usage: $0 [-java | -perl | -lua]\n";
+}
+
+# Input file required to generate SWIG interface file.
+$data_file = "../ssl/ssl.h";
+
+# Open input files
+open(DATA_IN, $data_file) || die("Could not open file ($data_file)!");
+@raw_data = <DATA_IN>;
+
+# Open output file
+open(DATA_OUT, ">$interfaceFile") || die("Cannot Open File");
+
+#
+# I wish I could say it was easy to generate the Perl/Java/Lua bindings, 
+# but each had their own set of challenges... :-(.
+#
+print DATA_OUT << "END";
+%module $module\n
+
+/* include our own header */
+%inline %{
+#include "ssl.h"
+%}
+
+%include "typemaps.i"
+/* Some SWIG magic to make the API a bit more Java friendly */
+#ifdef SWIGJAVA
+
+%apply long { SSL * };
+%apply long { SSL_CTX * };
+%apply long { SSLObjLoader * };
+
+/* allow "unsigned char []" to become "byte[]" */
+%include "arrays_java.i"
+
+/* convert these pointers to use long */
+%apply signed char[] {unsigned char *};
+%apply signed char[] {signed char *};
+
+/* allow ssl_get_session_id() to return "byte[]" */
+%typemap(out) unsigned char * ssl_get_session_id \"if (result) jresult = SWIG_JavaArrayOutSchar(jenv, result, ssl_get_session_id_size((SSL const *)arg1));\"
+
+/* allow ssl_client_new() to have a null session_id input */
+%typemap(in) const signed char session_id[] (jbyte *jarr) {
+    if (jarg3 == NULL)
+    {
+        jresult = (jint)ssl_client_new(arg1,arg2,NULL,0);
+        return jresult;
+    }
+    
+    if (!SWIG_JavaArrayInSchar(jenv, &jarr, &arg3, jarg3)) return 0;
+}   
+
+/* Lot's of work required for an ssl_read() due to its various custom
+ * requirements.
+ */
+%native (ssl_read) int ssl_read(SSL *ssl, jobject in_data);
+%{
+JNIEXPORT jint JNICALL Java_axTLSj_axtlsjJNI_ssl_1read(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2) {
+    jint jresult = 0 ;
+    SSL *arg1;
+    unsigned char *arg2;
+    jbyte *jarr;
+    int result;
+    JNIEnv e = *jenv;
+    jclass holder_class;
+    jfieldID fid;
+
+    arg1 = (SSL *)jarg1;
+    result = (int)ssl_read(arg1, &arg2);
+
+    /* find the "m_buf" entry in the SSLReadHolder class */
+    if (!(holder_class = e->GetObjectClass(jenv,jarg2)) ||
+            !(fid = e->GetFieldID(jenv,holder_class, "m_buf", "[B")))
+        return SSL_NOT_OK;
+
+    if (result > SSL_OK)
+    {
+        int i;
+
+        /* create a new byte array to hold the read data */
+        jbyteArray jarray = e->NewByteArray(jenv, result);
+
+        /* copy the bytes across to the java byte array */
+        jarr = e->GetByteArrayElements(jenv, jarray, 0);
+        for (i = 0; i < result; i++)
+            jarr[i] = (jbyte)arg2[i];
+
+        /* clean up and set the new m_buf object */
+        e->ReleaseByteArrayElements(jenv, jarray, jarr, 0);
+        e->SetObjectField(jenv, jarg2, fid, jarray);
+    }
+    else    /* set to null */
+        e->SetObjectField(jenv, jarg2, fid, NULL);
+
+    jresult = (jint)result;
+    return jresult;
+}
+%}
+
+/* Big hack to get hold of a socket's file descriptor */
+%typemap (jtype) long "Object"
+%typemap (jstype) long "Object"
+%native (getFd) int getFd(long sock);
+%{
+JNIEXPORT jint JNICALL Java_axTLSj_axtlsjJNI_getFd(JNIEnv *env, jclass jcls, jobject sock)
+{
+    JNIEnv e = *env;
+    jfieldID fid;
+    jobject impl;
+    jobject fdesc;
+
+    /* get the SocketImpl from the Socket */
+    if (!(jcls = e->GetObjectClass(env,sock)) ||
+            !(fid = e->GetFieldID(env,jcls,"impl","Ljava/net/SocketImpl;")) ||
+            !(impl = e->GetObjectField(env,sock,fid))) return -1;
+
+    /* get the FileDescriptor from the SocketImpl */
+    if (!(jcls = e->GetObjectClass(env,impl)) ||
+            !(fid = e->GetFieldID(env,jcls,"fd","Ljava/io/FileDescriptor;")) ||
+            !(fdesc = e->GetObjectField(env,impl,fid))) return -1;
+
+    /* get the fd from the FileDescriptor */
+    if (!(jcls = e->GetObjectClass(env,fdesc)) ||
+            !(fid = e->GetFieldID(env,jcls,"fd","I"))) return -1;
+
+    /* return the descriptor */
+    return e->GetIntField(env,fdesc,fid);
+} 
+%}
+
+#endif
+
+/* Some SWIG magic to make the API a bit more Perl friendly */
+#ifdef SWIGPERL
+
+/* for ssl_session_id() */
+%typemap(out) const unsigned char * {
+    SV *svs = newSVpv((unsigned char *)\$1, ssl_get_session_id_size((SSL const *)arg1));
+    \$result = newRV(svs);
+    sv_2mortal(\$result);
+    argvi++;
+}
+
+/* for ssl_write() */
+%typemap(in) const unsigned char out_data[] {
+    SV* tempsv;
+    if (!SvROK(\$input))
+        croak("Argument \$argnum is not a reference.");
+    tempsv = SvRV(\$input);
+    if (SvTYPE(tempsv) != SVt_PV)
+        croak("Argument \$argnum is not an string.");
+    \$1 = (unsigned char *)SvPV(tempsv, PL_na);
+}
+
+/* for ssl_read() */
+%typemap(in) unsigned char **in_data (unsigned char *buf) {
+    \$1 = &buf;
+}
+
+%typemap(argout) unsigned char **in_data { 
+    if (result > SSL_OK) {
+        SV *svs = newSVpv(*\$1, result);
+        \$result = newRV(svs);
+        sv_2mortal(\$result);
+        argvi++;
+    }
+}
+
+/* for ssl_client_new() */
+%typemap(in) const unsigned char session_id[] {
+    /* check for a reference */
+    if (SvOK(\$input) && SvROK(\$input)) {
+        SV* tempsv = SvRV(\$input);
+        if (SvTYPE(tempsv) != SVt_PV)
+            croak("Argument \$argnum is not an string.");
+        \$1 = (unsigned char *)SvPV(tempsv, PL_na); 
+    } 
+    else
+        \$1 = NULL;
+}
+
+#endif
+
+/* Some SWIG magic to make the API a bit more Lua friendly */
+#ifdef SWIGLUA
+SWIG_NUMBER_TYPEMAP(unsigned char);
+SWIG_TYPEMAP_NUM_ARR(uchar,unsigned char);
+
+/* for ssl_session_id() */
+%typemap(out) const unsigned char * {
+    int i;
+    lua_newtable(L);
+    for (i = 0; i < ssl_get_session_id_size((SSL const *)arg1); i++){
+        lua_pushnumber(L,(lua_Number)result[i]);
+        lua_rawseti(L,-2,i+1); /* -1 is the number, -2 is the table */
+    }
+    SWIG_arg++;
+}
+
+/* for ssl_read() */
+%typemap(in) unsigned char **in_data (unsigned char *buf) {
+    \$1 = &buf;
+}
+
+%typemap(argout) unsigned char **in_data { 
+    if (result > SSL_OK) {
+               int i;
+               lua_newtable(L);
+               for (i = 0; i < result; i++){
+                       lua_pushnumber(L,(lua_Number)buf2[i]);
+                       lua_rawseti(L,-2,i+1); /* -1 is the number, -2 is the table */
+               }
+        SWIG_arg++;
+    }
+}
+
+/* for ssl_client_new() */
+%typemap(in) const unsigned char session_id[] {
+    if (lua_isnil(L,\$input))
+        \$1 = NULL;
+    else
+        \$1 = SWIG_get_uchar_num_array_fixed(L,\$input, ssl_get_session_id((SSL const *)\$1));
+}
+
+#endif
+
+END
+
+# Initialise loop variables
+$skip = 1;
+$splitLine = 0;
+
+parseFile(@raw_data);
+
+close(DATA_IN);
+close(DATA_OUT);
+
+#===============================================================
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl b/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl
new file mode 100755 (executable)
index 0000000..c24bff9
--- /dev/null
@@ -0,0 +1,322 @@
+#!/usr/bin/perl -w
+
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#===============================================================
+# This application transforms ssl.h into interfaces that can be used by 
+# other language bindings. It is "SWIG"-like in nature in that various 
+# files are generated based on the axTLS API.
+#
+# The file produced is axInterface.? (depending on the file extension).
+#
+#===============================================================
+
+use strict;
+
+my $CSHARP = 0;
+my $VBNET = 1;
+
+my $binding;
+my $skip = 0;
+my $signature_ret_type;
+
+# Transforms function signature into an Interface format
+sub transformSignature
+{
+    my $item;
+    my ($line) = @_;
+
+    foreach $item ($line)
+    { 
+        # our very basic preprocessor
+        if ($binding == $CSHARP)
+        {
+            $line =~ s/STDCALL //;
+            $line =~ s/EXP_FUNC/        [DllImport ("axtls")]\n        public static extern/;
+            $line =~ s/uint32_t/uint/g;
+            $line =~ s/uint8_t \*\*/ref IntPtr /g;
+            $line =~ s/const uint8_t \* /IntPtr /g;
+            $line =~ s/const uint8_t \*/byte[] /g;    # note: subtle diff 
+            $line =~ s/uint8_t \* ?/byte[] /g;
+            $line =~ s/uint8_t ?/byte /g;
+            $line =~ s/const char \* ?/string /g;
+            $line =~ s/const SSL_CTX \* ?/IntPtr /g;
+            $line =~ s/SSL_CTX \* ?/IntPtr /g;
+            $line =~ s/SSLObjLoader \* ?/IntPtr /g;
+            $line =~ s/const SSL \* ?/IntPtr /g;
+            $line =~ s/SSL \* ?/IntPtr /g;
+            $line =~ s/\(void\)/()/g;
+        }
+        elsif ($binding == $VBNET)
+        {
+            if ($line =~ /EXP_FUNC/)
+            {
+                # Procedure or function?
+                my $invariant = $line =~ /void /;
+
+                my $proc = $invariant ? "Sub" : "Function";
+                ($signature_ret_type) = $line =~ /EXP_FUNC (.*) STDCALL/;
+                $line =~ s/EXP_FUNC .* STDCALL /        <DllImport("axtls")> Public Shared $proc _\n            /;
+
+                $signature_ret_type =~ s/const uint8_t \*/As IntPtr/;
+                $signature_ret_type =~ s/const char \*/As String/;
+                $signature_ret_type =~ s/SSL_CTX \*/As IntPtr/;
+                $signature_ret_type =~ s/SSLObjLoader \*/As IntPtr/;
+                $signature_ret_type =~ s/SSL \*/As IntPtr/;
+                $signature_ret_type =~ s/uint8_t/As Byte/;
+                $signature_ret_type =~ s/int/As Integer/;
+                $signature_ret_type =~ s/void//;
+                $signature_ret_type .= "\n        End $proc\n\n";
+            }
+
+            $line =~ s/uint32_t (\w+)/ByVal $1 As Integer/g;
+            $line =~ s/int (\w+)/ByVal $1 As Integer/g;
+            $line =~ s/uint8_t \*\* ?(\w+)/ByRef $1 As IntPtr/g;
+            $line =~ s/const uint8_t \* ?(\w+)/ByVal $1() As Byte/g;
+            $line =~ s/uint8_t \* ?(\w+)/ByVal $1() As Byte/g;
+            $line =~ s/uint8_t ?(\w+)/ByVal $1 As Byte/g;
+            $line =~ s/const char \* ?(\w+)/ByVal $1 As String/g;
+            $line =~ s/const SSL_CTX \* ?(\w+)/ByVal $1 As IntPtr/g;
+            $line =~ s/SSL_CTX \* ?(\w+)/ByVal $1 As IntPtr/g;
+            $line =~ s/SSLObjLoader \* ?(\w+)/ByVal $1 As IntPtr/g;
+            $line =~ s/const SSL \* ?(\w+)/ByVal $1 As IntPtr/g;
+            $line =~ s/SSL \* ?(\w+)/ByVal $1 As IntPtr/g;
+            $line =~ s/void \* ?(\w+)/Byval $1 As IntPtr/g;
+            $line =~ s/\(void\)/()/g;
+            $line =~ s/void//g;
+            $line =~ s/;\n/ $signature_ret_type;/;
+        }
+    }
+
+    return $line;
+}
+
+# Parse input file
+sub parseFile
+{
+    my (@file) = @_;
+    my $line;
+    my $splitDefine = 0;
+    my $splitFunctionDeclaration;
+    my $vb_hack = " ";
+    my $vb_line_hack = 0;
+
+    $skip = 0;
+
+    foreach $line (@file)
+    {
+        next if $line =~ /sl_x509_create/;  # ignore for now
+
+        # test for a #define
+        if (!$skip && $line =~ m/^#define/)
+        {
+            $splitDefine = 1 if $line =~ m/\\$/;
+
+            if ($binding == $VBNET)
+            {
+                $line =~ s/\|/Or/g;
+                $line =~ s/ 0x/ &H/;
+            }
+
+            my ($name, $value) = $line =~ /#define (\w+) +([^\\]*)[\\]?\n/;
+
+            if (defined $name && defined $value)
+            {
+                # C# constant translation
+                if ($binding == $CSHARP)
+                {
+                    $line = "        public const int $name = $value";
+                }
+                # VB.NET constant translation
+                elsif ($binding == $VBNET)
+                {
+                    $line = "        Public Const $name As Integer = $value";
+                }
+            }
+
+            next if $line =~ /#define/;  # ignore any other defines
+               
+            print DATA_OUT $line;
+
+            # check line is not split
+            next if $splitDefine == 1;
+            print DATA_OUT ";" if $binding == $CSHARP;
+            print DATA_OUT "\n";
+        }
+
+        # pick up second line of #define statement
+        if ($splitDefine) 
+        {
+            if ($line !~ /\\$/)
+            {
+                $line =~ s/$/;/ if $binding == $CSHARP;        # add the ";"
+            }
+
+            $line =~ s/ ?\| ?/ Or /g 
+                                if ($binding == $VBNET);
+
+            # check line is not split
+            $splitDefine = ($line =~ m/\\$/);
+
+            # ignore trailing "\"
+            $line =~ s/\\$// if $binding == $CSHARP;
+            $line =~ s/\\$/_/ if $binding == $VBNET;
+            print DATA_OUT $line;
+            next;
+        } 
+
+        # test for function declaration
+        if (!$skip && $line =~ /EXP_FUNC/ && $line !~ /\/\*/)
+        {
+            $line = transformSignature($line);
+            $splitFunctionDeclaration = $line !~ /;/;
+            $line =~ s/;// if ($binding == $VBNET);
+            $line =~ s/\n$/ _\n/ if ($binding == $VBNET) && 
+                                                $splitFunctionDeclaration;
+            print DATA_OUT $line;
+            next;
+        }
+
+        if ($splitFunctionDeclaration) 
+        {
+            $line = transformSignature($line);
+            $splitFunctionDeclaration = $line !~ /;/;
+            $line =~ s/;// if ($binding == $VBNET);
+            $line =~ s/\n/ _\n/ if ($binding == $VBNET) && 
+                                                $splitFunctionDeclaration == 1;
+            print DATA_OUT $line;
+            next;
+        }
+    }
+}
+
+#===============================================================
+
+# Determine which module to build from command-line options
+use strict;
+use Getopt::Std;
+
+my $binding_prefix;
+my $binding_suffix;
+my $data_file;
+my @raw_data;
+
+if (not defined  $ARGV[0])
+{
+    goto ouch;
+}
+
+if ($ARGV[0] eq "-csharp")
+{
+    print "Generating C# interface file\n";
+    $binding_prefix = "csharp";
+    $binding_suffix = "cs";
+    $binding = $CSHARP;
+}
+elsif ($ARGV[0] eq "-vbnet")
+{
+    print "Generating VB.NET interface file\n";
+    $binding_prefix = "vbnet";
+    $binding_suffix = "vb";
+    $binding = $VBNET;
+}
+else
+{
+ouch:
+    die "Usage: $0 [-csharp | -vbnet]\n";
+}
+
+my $interfaceFile = "$binding_prefix/axInterface.$binding_suffix";
+
+# Input file required to generate interface file.
+$data_file = "../ssl/ssl.h";
+
+# Open input files
+open(DATA_IN, $data_file) || die("Could not open file ($data_file)!");
+@raw_data = <DATA_IN>;
+
+
+# Open output file
+if ($binding == $CSHARP || $binding == $VBNET)
+{
+    open(DATA_OUT, ">$interfaceFile") || die("Cannot Open File");
+}
+
+# SPEC interface file header
+if ($binding == $CSHARP)
+{
+    # generate the C#/C interface file
+    print DATA_OUT << "END";
+// The C# to C interface definition file for the axTLS project
+// Do not modify - this file is generated
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace axTLS
+{
+    public class axtls
+    {
+END
+}
+elsif ($binding == $VBNET)
+{
+    # generate the VB.NET/C interface file
+    print DATA_OUT << "END";
+' The VB.NET to C interface definition file for the axTLS project
+' Do not modify - this file is generated
+
+Imports System
+Imports System.Runtime.InteropServices
+
+Namespace axTLSvb
+    Public Class axtls
+END
+}
+
+parseFile(@raw_data);
+
+# finish up
+if ($binding == $CSHARP)
+{
+    print DATA_OUT "    };\n";
+    print DATA_OUT "};\n";
+}
+elsif ($binding == $VBNET)
+{
+    print DATA_OUT "    End Class\nEnd Namespace\n";
+}
+
+close(DATA_IN);
+close(DATA_OUT);
+
+#===============================================================
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile
new file mode 100644 (file)
index 0000000..8df1d0a
--- /dev/null
@@ -0,0 +1,94 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+AXTLS_HOME=../..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+include $(AXTLS_HOME)/config/makefile.java.conf
+
+all: lib jar
+
+JAR=$(AXTLS_HOME)/$(STAGE)/axtls.jar
+
+ifdef CONFIG_PLATFORM_WIN32
+TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsj.dll
+else
+TARGET=$(AXTLS_HOME)/$(STAGE)/libaxtlsj.so
+endif
+
+lib: $(TARGET)
+axTLSj_wrap.o : axTLSj_wrap.c
+
+JAVA_FILES= \
+       axtlsjJNI.java \
+       axtlsjConstants.java \
+       axtlsj.java \
+       SSLReadHolder.java \
+       SSL.java \
+       SSLUtil.java \
+       SSLCTX.java \
+       SSLServer.java \
+       SSLClient.java
+
+OBJ=axTLSj_wrap.o
+
+JAVA_CLASSES:=$(JAVA_FILES:%.java=classes/axTLSj/%.class)
+
+ifdef CONFIG_PLATFORM_WIN32
+LDFLAGS += axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)"
+
+include $(AXTLS_HOME)/config/makefile.post
+
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ)
+else    # Not Win32
+
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) -L $(AXTLS_HOME)/$(STAGE) $(LDSHARED) -o $@ $(OBJ) -laxtls 
+endif
+
+jar: $(OBJ) $(JAR)
+
+# if we are doing the samples then defer creating the jar until then
+$(JAR): $(JAVA_CLASSES)
+ifndef CONFIG_JAVA_SAMPLES
+       jar cvf $@ -C classes axTLSj
+else
+       @if [ ! -f $(JAR) ]; then touch $(JAR); fi
+endif
+
+classes/axTLSj/%.class : %.java
+       javac -d classes -classpath classes $^
+
+clean::
+       @rm -f $(JAR) $(TARGET) SWIG* axtls* *.i *.c 
+       @rm -fr classes/*
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java
new file mode 100644 (file)
index 0000000..b53a6da
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * @defgroup java_api Java API.
+ *
+ * Ensure that the appropriate dispose() methods are called when finished with
+ * various objects - otherwise memory leaks will result.
+ */
+
+/**
+ * @class SSL
+ * @ingroup java_api 
+ * @brief A representation of an SSL connection.
+ *
+ */
+public class SSL
+{
+    public int m_ssl;    /**< A pointer to the real SSL type */
+
+    /**
+     * @brief Store the reference to an SSL context.
+     * @param ip [in] A reference to an SSL object.
+     */
+    public SSL(int ip)
+    {
+        m_ssl = ip;
+    }
+
+    /**
+     * @brief Free any used resources on this connection. 
+     * 
+     * A "Close Notify" message is sent on this connection (if possible). It 
+     * is up to the application to close the socket.
+     */
+    public void dispose()
+    {
+        axtlsj.ssl_free(m_ssl);
+    }
+
+    /**
+     * @brief Return the result of a handshake.
+     * @return SSL_OK if the handshake is complete and ok.
+     * @see ssl.h for the error code list.
+     */
+    public int handshakeStatus()
+    {
+        return axtlsj.ssl_handshake_status(m_ssl);
+    }
+
+    /**
+     * @brief Return the SSL cipher id.
+     * @return The cipher id which is one of:
+     * - SSL_AES128_SHA (0x2f)
+     * - SSL_AES256_SHA (0x35)
+     * - SSL_RC4_128_SHA (0x05)
+     * - SSL_RC4_128_MD5 (0x04)
+     */
+    public byte getCipherId()
+    {
+        return axtlsj.ssl_get_cipher_id(m_ssl);
+    }
+
+    /**
+     * @brief Get the session id for a handshake. 
+     * 
+     * This will be a 32 byte sequence and is available after the first
+     * handshaking messages are sent.
+     * @return The session id as a 32 byte sequence.
+     * @note A SSLv23 handshake may have only 16 valid bytes.
+     */
+    public byte[] getSessionId()
+    {
+        return axtlsj.ssl_get_session_id(m_ssl);
+    }
+
+    /**
+     * @brief Retrieve an X.509 distinguished name component.
+     * 
+     * When a handshake is complete and a certificate has been exchanged, 
+     * then the details of the remote certificate can be retrieved.
+     *
+     * This will usually be used by a client to check that the server's common 
+     * name matches the URL.
+     *
+     * A full handshake needs to occur for this call to work.
+     *
+     * @param component [in] one of:
+     * - SSL_X509_CERT_COMMON_NAME
+     * - SSL_X509_CERT_ORGANIZATION
+     * - SSL_X509_CERT_ORGANIZATIONAL_NAME
+     * - SSL_X509_CA_CERT_COMMON_NAME
+     * - SSL_X509_CA_CERT_ORGANIZATION
+     * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME
+     * @return The appropriate string (or null if not defined)
+     */
+    public String getCertificateDN(int component)
+    {
+        return axtlsj.ssl_get_cert_dn(m_ssl, component);
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java
new file mode 100644 (file)
index 0000000..1cd3e03
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+import java.net.*;
+
+/**
+ * @class SSLCTX
+ * @ingroup java_api 
+ * @brief A base object for SSLServer/SSLClient.
+ */
+public class SSLCTX
+{
+    /**
+     * A reference to the real client/server context.
+     */
+    protected int m_ctx;
+
+    /**
+     * @brief Establish a new client/server context.
+     *
+     * This function is called before any client/server SSL connections are 
+     * made.  If multiple threads are used, then each thread will have its 
+     * own SSLCTX context. Any number of connections may be made with a single 
+     * context. 
+     *
+     * Each new connection will use the this context's private key and 
+     * certificate chain. If a different certificate chain is required, then a 
+     * different context needs to be be used.
+     *
+     * @param options [in]  Any particular options. At present the options
+     * supported are:
+     * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if the 
+     * server authentication fails. The certificate can be authenticated later 
+     * with a call to verifyCert().
+     * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client authentication
+     * i.e. each handshake will include a "certificate request" message from 
+     * the server.
+     * - SSL_DISPLAY_BYTES (full mode build only): Display the byte sequences
+     * during the handshake.
+     * - SSL_DISPLAY_STATES (full mode build only): Display the state changes
+     * during the handshake.
+     * - SSL_DISPLAY_CERTS (full mode build only): Display the certificates that
+     * are passed during a handshake.
+     * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key details 
+     * that are passed during a handshake.
+     *
+     * @param num_sessions [in] The number of sessions to be used for session
+     * caching. If this value is 0, then there is no session caching.
+     * 
+     * If this option is null, then the default internal private key/
+     * certificate pair is used (if CONFIG_SSL_USE_DEFAULT_KEY is set). 
+     * 
+     * The resources used by this object are automatically freed.  
+     * @return A client/server context.
+     */
+    protected SSLCTX(int options, int num_sessions)
+    {
+        m_ctx = axtlsj.ssl_ctx_new(options, num_sessions);
+    }
+
+    /**
+     * @brief Remove a client/server context.
+     *
+     * Frees any used resources used by this context. Each connection will be 
+     * sent a "Close Notify" alert (if possible).
+     */
+    public void dispose()
+    {
+        axtlsj.ssl_ctx_free(m_ctx);
+    }
+
+    /**
+     * @brief Read the SSL data stream.
+     * @param ssl [in] An SSL object reference.
+     * @param rh [out] After a successful read, the decrypted data can be 
+     * retrieved with rh.getData(). It will be null otherwise.
+     * @return The number of decrypted bytes:
+     * - if > 0, then the handshaking is complete and we are returning the 
+     * number of decrypted bytes. 
+     * - SSL_OK if the handshaking stage is successful (but not yet complete).  
+     * - < 0 if an error.
+     * @see ssl.h for the error code list.
+     * @note Use rh before doing any successive ssl calls.
+     */
+    public int read(SSL ssl, SSLReadHolder rh)
+    {
+        return axtlsj.ssl_read(ssl.m_ssl, rh);
+    }
+
+    /**
+     * @brief Write to the SSL data stream.
+     * @param ssl [in] An SSL obect reference.
+     * @param out_data [in] The data to be written
+     * @return The number of bytes sent, or if < 0 if an error.
+     * @see ssl.h for the error code list.
+     */
+    public int write(SSL ssl, byte[] out_data)
+    {
+        return axtlsj.ssl_write(ssl.m_ssl, out_data, out_data.length);
+    }
+
+    /**
+     * @brief Write to the SSL data stream.
+     * @param ssl [in] An SSL obect reference.
+     * @param out_data [in] The data to be written
+     * @param out_len [in] The number of bytes to be written
+     * @return The number of bytes sent, or if < 0 if an error.
+     * @see ssl.h for the error code list.
+     */
+    public int write(SSL ssl, byte[] out_data, int out_len)
+    {
+        return axtlsj.ssl_write(ssl.m_ssl, out_data, out_len);
+    }
+
+    /**
+     * @brief Find an ssl object based on a Socket reference.
+     *
+     * Goes through the list of SSL objects maintained in a client/server 
+     * context to look for a socket match.
+     * @param s [in] A reference to a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api">Socket</A> object.
+     * @return A reference to the SSL object. Returns null if the object 
+     * could not be found.
+     */
+    public SSL find(Socket s)
+    {
+        int client_fd = axtlsj.getFd(s);
+        return new SSL(axtlsj.ssl_find(m_ctx, client_fd));
+    }
+
+    /**
+     * @brief Authenticate a received certificate.
+     * 
+     * This call is usually made by a client after a handshake is complete 
+     * and the context is in SSL_SERVER_VERIFY_LATER mode.
+     * @param ssl [in] An SSL object reference.
+     * @return SSL_OK if the certificate is verified.
+     */
+    public int verifyCert(SSL ssl)
+    {
+        return axtlsj.ssl_verify_cert(ssl.m_ssl);
+    }
+
+    /**
+     * @brief Force the client to perform its handshake again.
+     *
+     * For a client this involves sending another "client hello" message.
+     * For the server is means sending a "hello request" message.
+     *
+     * This is a blocking call on the client (until the handshake completes).
+     * @param ssl [in] An SSL object reference.
+     * @return SSL_OK if renegotiation instantiation was ok
+     */
+    public int renegotiate(SSL ssl)
+    {
+        return axtlsj.ssl_renegotiate(ssl.m_ssl);
+    }
+
+    /**
+     * @brief Load a file into memory that is in binary DER or ASCII PEM format.
+     *
+     * These are temporary objects that are used to load private keys,
+     * certificates etc into memory.
+     * @param obj_type [in] The format of the file. Can be one of:
+     * - SSL_OBJ_X509_CERT (no password required)
+     * - SSL_OBJ_X509_CACERT (no password required)
+     * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported)
+     * - SSL_OBJ_P8 (RC4-128 encrypted data supported)
+     * - SSL_OBJ_P12 (RC4-128 encrypted data supported)
+     *
+     * PEM files are automatically detected (if supported).
+     * @param filename [in] The location of a file in DER/PEM format.
+     * @param password [in] The password used. Can be null if not required.
+     * @return SSL_OK if all ok
+     */
+    public int objLoad(int obj_type, String filename, String password)
+    {
+        return axtlsj.ssl_obj_load(m_ctx, obj_type, filename, password);
+    }
+
+    /**
+     * @brief Transfer binary data into the object loader.
+     *
+     * These are temporary objects that are used to load private keys,
+     * certificates etc into memory.
+     * @param obj_type [in] The format of the memory data.
+     * @param data [in] The binary data to be loaded.
+     * @param len [in] The amount of data to be loaded.
+     * @param password [in] The password used. Can be null if not required.
+     * @return SSL_OK if all ok
+     */
+
+    public int objLoad(int obj_type, byte[] data, int len, String password)
+    {
+        return axtlsj.ssl_obj_memory_load(m_ctx, obj_type, data, len, password);
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java
new file mode 100644 (file)
index 0000000..f65fe9c
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+import java.net.*;
+
+/**
+ * @class SSLClient
+ * @ingroup java_api 
+ * @brief The client context.
+ *
+ * All client connections are started within a client context.
+ */
+public class SSLClient extends SSLCTX
+{
+    /**
+     * @brief Start a new client context.
+     * 
+     * @see SSLCTX for details.
+     */
+    public SSLClient(int options, int num_sessions)
+    {
+        super(options, num_sessions);
+    }
+
+    /**
+     * @brief Establish a new SSL connection to an SSL server.
+     *
+     * It is up to the application to establish the initial socket connection.
+     *
+     * This is a blocking call - it will finish when the handshake is 
+     * complete (or has failed).
+     *
+     * Call dispose() when the connection is to be removed.
+     * @param s [in] A reference to a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api">Socket</A> object.
+     * @param session_id [in] A 32 byte session id for session resumption. This 
+     * can be null if no session resumption is not required.
+     * @return An SSL object reference. Use SSL.handshakeStatus() to check 
+     * if a handshake succeeded.
+     */
+    public SSL connect(Socket s, byte[] session_id)
+    {
+        int client_fd = axtlsj.getFd(s);
+        byte sess_id_size = (byte)(session_id != null ? 
+                                session_id.length : 0);
+        return new SSL(axtlsj.ssl_client_new(m_ctx, client_fd, session_id,
+                        sess_id_size));
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java
new file mode 100644 (file)
index 0000000..91fd76b
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+/**
+ * @class SSLReadHolder
+ * @ingroup java_api 
+ * @brief A holder for data read in an SSL read.
+ */
+public class SSLReadHolder
+{
+    /**
+     * @brief Contruct a new read holder object.
+     */
+    public SSLReadHolder()
+    {
+        m_buf = null;
+    }
+
+    /**
+     * @brief Retrieve the reference to the read data.
+     */
+    public byte[] getData()
+    {
+        return m_buf;
+    }
+
+    private byte[] m_buf;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java
new file mode 100644 (file)
index 0000000..514ccb0
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+import java.net.*;
+
+/**
+ * @class SSLServer
+ * @ingroup java_api 
+ * @brief The server context.
+ *
+ * All server connections are started within a server context.
+ */
+public class SSLServer extends SSLCTX
+{
+    /**
+     * @brief Start a new server context.
+     * 
+     * @see SSLCTX for details.
+     */
+    public SSLServer(int options, int num_sessions)
+    {
+        super(options, num_sessions);
+    }
+
+    /**
+     * @brief Establish a new SSL connection to an SSL client.
+     *
+     * It is up to the application to establish the initial socket connection.
+     *
+     * Call dispose() when the connection is to be removed.
+     * @param s [in] A reference to a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api">Socket</A> object.
+     * @return An SSL object reference.
+     */
+    public SSL connect(Socket s)
+    {
+        int client_fd = axtlsj.getFd(s);
+        return new SSL(axtlsj.ssl_server_new(m_ctx, client_fd));
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java
new file mode 100644 (file)
index 0000000..3d53de5
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A wrapper around the unmanaged interface to give a semi-decent Java API
+ */
+
+package axTLSj;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * @class SSLUtil
+ * @ingroup java_api 
+ * @brief Some global helper functions.
+ *
+ */
+public class SSLUtil
+{
+    /**
+     * @brief Load up the ddl/shared library 
+     */
+    static
+    {
+        System.loadLibrary("axtlsj");
+    }
+
+    /**
+     * @brief Return the build mode of the axTLS project.
+     * @return The build mode is one of:
+     * - SSL_BUILD_SERVER_ONLY
+     * - SSL_BUILD_ENABLE_VERIFICATION
+     * - SSL_BUILD_ENABLE_CLIENT
+     * - SSL_BUILD_FULL_MODE
+     */
+    public static int buildMode()
+    {
+        return axtlsj.ssl_get_config(axtlsj.SSL_BUILD_MODE);
+    }
+
+    /**
+     * @brief Return the number of chained certificates that the client/server 
+     * supports.
+     * @return The number of supported client/server certificates.
+     */
+    public static int maxCerts()
+    {
+        return axtlsj.ssl_get_config(axtlsj.SSL_MAX_CERT_CFG_OFFSET);
+    }
+
+    /**
+     * @brief Return the number of CA certificates that the client/server
+     * supports.
+     * @return The number of supported CA certificates.
+     */
+    public static int maxCACerts()
+    {
+        return axtlsj.ssl_get_config(axtlsj.SSL_MAX_CA_CERT_CFG_OFFSET);
+    }
+
+    /**
+     * @brief Indicate if PEM is supported.
+     * @return true if PEM supported.
+     */
+    public static boolean hasPEM()
+    {
+        return axtlsj.ssl_get_config(axtlsj.SSL_HAS_PEM) > 0 ? true : false;
+    }
+
+    /**
+     * @brief Display the text string of the error.
+     * @param error_code [in] The integer error code.
+     * @see ssl.h for the error code list.
+     */
+    public static void displayError(int error_code)
+    {
+        axtlsj.ssl_display_error(error_code);
+    }
+
+    /**
+     * @brief Return the version of the axTLS project.
+     */
+    public static String version()
+    {
+        return axtlsj.ssl_version();
+    }
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile
new file mode 100644 (file)
index 0000000..daacf92
--- /dev/null
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+AXTLS_HOME=../..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+all: lib
+
+
+ifdef CONFIG_PLATFORM_WIN32
+TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsl.dll
+else
+TARGET=$(CONFIG_LUA_CORE)/lib/lua/5.1/axtlsl.so
+endif
+
+ifneq ($(MAKECMDGOALS), clean)
+
+lib: $(TARGET)
+OBJ:=axTLSl_wrap.o
+include $(AXTLS_HOME)/config/makefile.post
+
+# there are a few static functions that aren't used
+CFLAGS += -funit-at-a-time
+
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) $(LDSHARED) -o $@ $^ -L$(AXTLS_HOME)/$(STAGE) -L$(CONFIG_LUA_CORE)/lib -laxtls -llua
+
+CFLAGS += -I $(CONFIG_LUA_CORE)/include
+else
+CFLAGS += /I"`cygpath -w $(CONFIG_LUA_CORE)/include`"
+LDFLAGS += axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)"
+
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ)
+endif # WIN32
+
+clean::
+       @rm -f $(TARGET) *.i axTLSl* .depend
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile
new file mode 100644 (file)
index 0000000..92fd3c5
--- /dev/null
@@ -0,0 +1,91 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+AXTLS_HOME=../..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+all: lib
+
+ifdef CONFIG_PLATFORM_WIN32
+TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsp.dll
+else
+TARGET=$(AXTLS_HOME)/$(STAGE)/libaxtlsp.so
+endif
+
+ifneq ($(MAKECMDGOALS), clean)
+
+ifdef CONFIG_PLATFORM_WIN32
+PERL5_CORE:=$(shell cygpath -w "$(CONFIG_PERL_CORE)")
+else
+PERL5_CORE= $(shell perl -e 'use Config; print $$Config{archlib};')/CORE
+endif
+
+all: test_perl
+
+test_perl:
+       @if ! [ -d "$(PERL5_CORE)" ]; then \
+               echo "*** Error: Perl not installed at $(CONFIG_PERL_CORE) - go to " \
+        "http://www.cpan.org/authors/id/G/GR/GRAHAMC/SiePerl-5.8.0-bin-1.0-Win32.INSTALL.exe" && exit 1; \
+       fi
+
+endif
+
+lib: $(TARGET)
+OBJ:=axTLSp_wrap.o
+include $(AXTLS_HOME)/config/makefile.post
+
+ifndef CONFIG_PLATFORM_WIN32        # Linux/Unix/Cygwin
+
+#
+# Could have used libperl.a, but it increases the library to over 1MB, so just
+# use libperl.so. But this needs to be in the shared library path for things to
+# work.
+#
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) -L$(AXTLS_HOME)/$(STAGE) -L$(PERL5_CORE) $(LDSHARED) -o $@ $(OBJ) -laxtls -lperl
+ifdef CONFIG_PLATFORM_CYGWIN
+       cd $(AXTLS_HOME)/$(STAGE); ln -sf $(notdir $@) axtlsp.dll
+endif
+       @install axtlsp.pm $(AXTLS_HOME)/$(STAGE)
+
+CFLAGS += -D_GNU_SOURCE -I$(PERL5_CORE)
+else
+CFLAGS += /I"$(PERL5_CORE)"
+LDFLAGS += $(CONFIG_PERL_LIB) /libpath:"$(PERL5_CORE)" axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)"
+
+$(TARGET) : $(OBJ)
+       $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ)
+       install axtlsp.pm $(AXTLS_HOME)/$(STAGE)
+endif # WIN32
+
+clean::
+       @rm -f $(TARGET) axtls* *.i axTLSp* *.c .depend $(AXTLS_HOME)/$(STAGE)/axtlsp.pm
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile
new file mode 100644 (file)
index 0000000..7da60d0
--- /dev/null
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+
+clean::
+       @rm -f axssl* axInterface.vb
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb b/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb
new file mode 100644 (file)
index 0000000..9388273
--- /dev/null
@@ -0,0 +1,200 @@
+'
+' Copyright (c) 2007, Cameron Rich
+'
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'
+' * Redistributions of source code must retain the above copyright notice,
+'   this list of conditions and the following disclaimer.
+' * Redistributions in binary form must reproduce the above copyright
+'   notice, this list of conditions and the following disclaimer in the
+'   documentation and/or other materials provided with the distribution.
+' * Neither the name of the axTLS project nor the names of its
+'   contributors may be used to endorse or promote products derived
+'   from this software without specific prior written permission.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+' "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+' LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+' A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+' TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+' DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+' OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+' NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+
+'
+' A wrapper around the unmanaged Integererface to give a semi-decent VB.NET API
+'
+
+Imports System
+Imports System.Runtime.InteropServices
+Imports System.Net.Sockets
+Imports axTLSvb
+
+Namespace axTLSvb
+    Public Class SSL
+        Public m_ssl As IntPtr
+
+        Public Sub New(ByRef ip As IntPtr)
+            m_ssl = ip
+        End Sub
+
+        Public Sub Dispose()
+            axtls.ssl_free(m_ssl)
+        End Sub
+
+        Public Function HandshakeStatus() As Integer
+            Return axtls.ssl_handshake_status(m_ssl)
+        End Function
+
+        Public Function GetCipherId() As Byte
+            Return axtls.ssl_get_cipher_id(m_ssl)
+        End Function
+
+        Public Function GetSessionId() As Byte()
+            Dim ptr As IntPtr = axtls.ssl_get_session_id(m_ssl)
+            Dim sess_id_size As Integer = axtls.ssl_get_session_id_size(m_ssl)
+            Dim result(sess_id_size-1) As Byte
+            Marshal.Copy(ptr, result, 0, sess_id_size)
+            Return result
+        End Function
+
+        Public Function GetCertificateDN(component As Integer) As String
+            Return axtls.ssl_get_cert_dn(m_ssl, component)
+        End Function
+    End Class
+
+    Public Class SSLUtil
+        Private dummy As Integer    ' need something here
+
+        Public Shared Function BuildMode() As Integer
+            Return axtls.ssl_get_config(axtls.SSL_BUILD_MODE)
+        End Function
+
+        Public Shared Function MaxCerts() As Integer
+            Return axtls.ssl_get_config(axtls.SSL_MAX_CERT_CFG_OFFSET)
+        End Function
+
+        Public Shared Function MaxCACerts() As Integer
+            Return axtls.ssl_get_config(axtls.SSL_MAX_CA_CERT_CFG_OFFSET)
+        End Function
+
+        Public Shared Function HasPEM() As Boolean
+            If axtls.ssl_get_config(axtls.SSL_HAS_PEM) > 0 Then
+                Return True
+            Else
+                Return False
+            End If
+        End Function
+        
+        Public Shared Sub DisplayError(ByVal error_code As Integer)
+            axtls.ssl_display_error(error_code)
+        End Sub
+
+        Public Shared Function Version() As String
+            Return axtls.ssl_version()
+        End Function
+    End Class
+
+    Public Class SSLCTX
+        Protected m_ctx As IntPtr
+
+        Protected Sub New(ByVal options As Integer, _
+                ByVal num_sessions As Integer)
+            m_ctx = axtls.ssl_ctx_new(options, num_sessions)
+        End Sub
+
+        Public Sub Dispose()
+            axtls.ssl_ctx_free(m_ctx)
+        End Sub
+
+        Public Function Read(ByVal ssl As SSL, ByRef in_data As Byte()) As Integer
+            Dim ptr As IntPtr = IntPtr.Zero
+            Dim ret as Integer = axtls.ssl_read(ssl.m_ssl, ptr)
+
+            If ret > axtls.SSL_OK Then
+                ReDim in_data(ret)
+                Marshal.Copy(ptr, in_data, 0, ret)
+            Else
+                in_data = Nothing
+            End If
+
+            Return ret
+        End Function
+
+        Public Function Write(ByVal ssl As SSL, _
+                ByVal data As Byte(), len As Integer) As Integer
+            Return axtls.ssl_write(ssl.m_ssl, data, len)
+        End Function
+
+        Public Function Find(ByVal s As Socket) As SSL
+            Dim client_fd As Integer = s.Handle.ToInt32()
+            Return New SSL(axtls.ssl_find(m_ctx, client_fd))
+        End Function
+
+        Public Function VerifyCert(ByVal ssl As SSL) As Integer
+            Return axtls.ssl_verify_cert(ssl.m_ssl)
+        End Function
+
+        Public Function Renegotiate(ByVal ssl As SSL) As Integer
+            Return axtls.ssl_renegotiate(ssl.m_ssl)
+        End Function
+
+        Public Function ObjLoad(ByVal obj_type As Integer, _
+                ByVal filename As String, _
+                password As String) As Integer
+            Return axtls.ssl_obj_load(m_ctx, obj_type, filename, password)
+        End Function
+
+        Public Function ObjLoad(ByVal obj_type As Integer, _
+                ByVal data As Byte(), ByVal len As Integer, _
+                password As String) As Integer
+            Return axtls.ssl_obj_memory_load( _
+                    m_ctx, obj_type, data, len, password)
+        End Function
+    End Class
+
+    Public Class SSLServer 
+            Inherits SSLCTX
+
+        Public Sub New(ByVal options As Integer, _
+                ByVal num_sessions As Integer)
+            MyBase.New(options, num_sessions)
+        End Sub
+
+        Public Function Connect(ByVal s As Socket) As SSL
+            Dim client_fd As Integer = s.Handle.ToInt32()
+            Return New SSL(axtls.ssl_server_new(m_ctx, client_fd))
+        End Function
+    End Class
+
+    Public Class SSLClient 
+            Inherits SSLCTX
+
+        Public Sub New(ByVal options As Integer, _
+                ByVal num_sessions As Integer)
+            MyBase.New(options, num_sessions)
+        End Sub
+
+        Public Function Connect(ByVal s As Socket, _
+                                ByVal session_id As Byte()) As SSL
+            Dim client_fd As Integer = s.Handle.ToInt32()
+            Dim sess_id_size As Byte
+            If session_id is Nothing Then
+                sess_id_size = 0
+            Else
+                sess_id_size = session_id.Length
+            End If
+
+            Return New SSL(axtls.ssl_client_new(m_ctx, client_fd, session_id, _
+                       sess_id_size))
+        End Function
+
+    End Class
+End Namespace
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/.config b/package/luci/libs/luci-lib-nixio/axTLS/config/.config
new file mode 100644 (file)
index 0000000..46cd061
--- /dev/null
@@ -0,0 +1,112 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+CONFIG_PLATFORM_LINUX=y
+# CONFIG_PLATFORM_CYGWIN is not set
+# CONFIG_PLATFORM_WIN32 is not set
+
+#
+# General Configuration
+#
+PREFIX="/usr"
+# CONFIG_DEBUG is not set
+CONFIG_STRIP_UNWANTED_SECTIONS=y
+# CONFIG_VISUAL_STUDIO_7_0 is not set
+# CONFIG_VISUAL_STUDIO_8_0 is not set
+CONFIG_VISUAL_STUDIO_7_0_BASE=""
+CONFIG_VISUAL_STUDIO_8_0_BASE=""
+CONFIG_EXTRA_CFLAGS_OPTIONS="-fpic"
+CONFIG_EXTRA_LDFLAGS_OPTIONS=""
+
+#
+# SSL Library
+#
+# CONFIG_SSL_SERVER_ONLY is not set
+# CONFIG_SSL_CERT_VERIFICATION is not set
+# CONFIG_SSL_ENABLE_CLIENT is not set
+CONFIG_SSL_FULL_MODE=y
+# CONFIG_SSL_SKELETON_MODE is not set
+# CONFIG_SSL_PROT_LOW is not set
+CONFIG_SSL_PROT_MEDIUM=y
+# CONFIG_SSL_PROT_HIGH is not set
+# CONFIG_SSL_USE_DEFAULT_KEY is not set
+CONFIG_SSL_PRIVATE_KEY_LOCATION="/etc/nixio/rsa_main.der"
+CONFIG_SSL_PRIVATE_KEY_PASSWORD=""
+CONFIG_SSL_X509_CERT_LOCATION=""
+# CONFIG_SSL_GENERATE_X509_CERT is not set
+CONFIG_SSL_X509_COMMON_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME=""
+# CONFIG_SSL_ENABLE_V23_HANDSHAKE is not set
+# CONFIG_SSL_HAS_PEM is not set
+# CONFIG_SSL_USE_PKCS12 is not set
+CONFIG_SSL_EXPIRY_TIME=24
+CONFIG_X509_MAX_CA_CERTS=4
+CONFIG_SSL_MAX_CERTS=2
+CONFIG_SSL_CTX_MUTEXING=y
+CONFIG_USE_DEV_URANDOM=y
+# CONFIG_WIN32_USE_CRYPTO_LIB is not set
+# CONFIG_OPENSSL_COMPATIBLE is not set
+# CONFIG_PERFORMANCE_TESTING is not set
+# CONFIG_SSL_TEST is not set
+# CONFIG_AXHTTPD is not set
+# CONFIG_HTTP_STATIC_BUILD is not set
+CONFIG_HTTP_PORT=0
+CONFIG_HTTP_HTTPS_PORT=0
+CONFIG_HTTP_SESSION_CACHE_SIZE=0
+CONFIG_HTTP_WEBROOT=""
+CONFIG_HTTP_TIMEOUT=0
+# CONFIG_HTTP_HAS_CGI is not set
+CONFIG_HTTP_CGI_EXTENSIONS=""
+# CONFIG_HTTP_ENABLE_LUA is not set
+CONFIG_HTTP_LUA_PREFIX=""
+CONFIG_HTTP_LUA_CGI_LAUNCHER=""
+# CONFIG_HTTP_BUILD_LUA is not set
+# CONFIG_HTTP_DIRECTORIES is not set
+# CONFIG_HTTP_HAS_AUTHORIZATION is not set
+# CONFIG_HTTP_HAS_IPV6 is not set
+# CONFIG_HTTP_ENABLE_DIFFERENT_USER is not set
+CONFIG_HTTP_USER=""
+# CONFIG_HTTP_VERBOSE is not set
+# CONFIG_HTTP_IS_DAEMON is not set
+
+#
+# Language Bindings
+#
+# CONFIG_BINDINGS is not set
+# CONFIG_CSHARP_BINDINGS is not set
+# CONFIG_VBNET_BINDINGS is not set
+CONFIG_DOT_NET_FRAMEWORK_BASE=""
+# CONFIG_JAVA_BINDINGS is not set
+CONFIG_JAVA_HOME=""
+# CONFIG_PERL_BINDINGS is not set
+CONFIG_PERL_CORE=""
+CONFIG_PERL_LIB=""
+# CONFIG_LUA_BINDINGS is not set
+CONFIG_LUA_CORE=""
+
+#
+# Samples
+#
+# CONFIG_SAMPLES is not set
+# CONFIG_C_SAMPLES is not set
+# CONFIG_CSHARP_SAMPLES is not set
+# CONFIG_VBNET_SAMPLES is not set
+# CONFIG_JAVA_SAMPLES is not set
+# CONFIG_PERL_SAMPLES is not set
+# CONFIG_LUA_SAMPLES is not set
+
+#
+# BigInt Options
+#
+# CONFIG_BIGINT_CLASSICAL is not set
+# CONFIG_BIGINT_MONTGOMERY is not set
+CONFIG_BIGINT_BARRETT=y
+CONFIG_BIGINT_CRT=y
+# CONFIG_BIGINT_KARATSUBA is not set
+MUL_KARATSUBA_THRESH=0
+SQU_KARATSUBA_THRESH=0
+CONFIG_BIGINT_SLIDING_WINDOW=y
+CONFIG_BIGINT_SQUARE=y
+# CONFIG_BIGINT_CHECK_ON is not set
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/config/Config.in
new file mode 100644 (file)
index 0000000..dc40756
--- /dev/null
@@ -0,0 +1,114 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+
+mainmenu "axTLS Configuration"
+
+config HAVE_DOT_CONFIG
+    bool
+    default y
+
+choice 
+    prompt "Platform"
+    default CONFIG_PLATFORM_LINUX
+
+config CONFIG_PLATFORM_LINUX
+    bool "Linux"
+
+config CONFIG_PLATFORM_CYGWIN
+    bool "Cygwin"
+
+config CONFIG_PLATFORM_WIN32
+    bool "Win32"
+
+endchoice 
+
+menu "General Configuration"
+
+config PREFIX
+    string "axTLS installation prefix"
+    depends on !CONFIG_PLATFORM_WIN32
+    default "/usr/local"
+    help
+      Define your directory to install axTLS files/subdirs in.
+
+config CONFIG_DEBUG
+    bool "Build axTLS with Debugging symbols"
+    default n
+    help
+      Say Y here if you wish to compile axTLS with debugging symbols.
+      This will allow you to use a debugger to examine axTLS internals.  
+      This increases the size of the binary considerably and should only be 
+      used when doing development.
+      If you are doing development and want to debug axTLS, answer Y.
+
+      Most people should answer N.
+
+config CONFIG_STRIP_UNWANTED_SECTIONS
+    depends on !CONFIG_PLATFORM_WIN32 && !CONFIG_DEBUG
+    bool "Strip unwanted sections from elf binaries"
+    default y
+    help
+        Strip unwanted sections from the resulting binaries
+
+menu "Microsoft Compiler Options"
+depends on CONFIG_PLATFORM_WIN32
+
+choice 
+    prompt "Compiler"
+    depends on CONFIG_PLATFORM_WIN32
+    default CONFIG_VISUAL_STUDIO_7_0
+
+config CONFIG_VISUAL_STUDIO_7_0
+    bool "Visual Studio 7.0 (2003)"
+    help 
+        Use Microsoft's Visual Studio 2003 platform.
+
+config CONFIG_VISUAL_STUDIO_8_0
+    bool "Visual Studio 8.0 (2005)"
+    help 
+        Use Microsoft's Visual Studio 2005 platform.
+
+endchoice
+
+config CONFIG_VISUAL_STUDIO_7_0_BASE
+    string "Base"
+    depends on CONFIG_VISUAL_STUDIO_7_0
+    default "c:\\Program Files\\Microsoft Visual Studio .NET 2003"
+
+config CONFIG_VISUAL_STUDIO_8_0_BASE
+    string "Base"
+    depends on CONFIG_VISUAL_STUDIO_8_0
+    default "c:\\Program Files\\Microsoft Visual Studio 8"
+
+endmenu
+
+config CONFIG_EXTRA_CFLAGS_OPTIONS
+    string "Any extra CFLAGS options for the compiler?"
+    help
+        Do you want to pass any extra CFLAGS options to the compiler as  
+        you build axTLS? If so, this is the option for you...  For
+        example, if you want to add some simple compiler switches (like
+        -march=i686), or check for warnings using -Werror, just those 
+        options here.
+
+config CONFIG_EXTRA_LDFLAGS_OPTIONS
+    string "Any extra LDFLAGS options for the compiler?"
+    help
+        Do you want to pass any extra LDFLAGS options to the compiler?
+
+endmenu
+
+source ssl/Config.in
+config CONFIG_AXHTTPD
+    bool "Enable HTTP/HTTPS Web Server"
+    default y
+    help
+        Build the AXHTTPD web server
+
+source httpd/Config.in
+source bindings/Config.in
+source samples/Config.in
+source ssl/BigIntConfig.in
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx b/package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx
new file mode 100755 (executable)
index 0000000..f62c03f
--- /dev/null
@@ -0,0 +1,247 @@
+<jmeterTestPlan version="1.2" properties="1.8">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="axhttpd Test Plan" enabled="true">
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <stringProp name="TestPlan.comments"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test 1" enabled="true">
+        <longProp name="ThreadGroup.start_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.num_threads">16</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <stringProp name="LoopController.loops">10</stringProp>
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+        </elementProp>
+        <longProp name="ThreadGroup.end_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Normal" enabled="true">
+          <stringProp name="HTTPSampler.path">/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <stringProp name="HTTPSampler.protocol"></stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <stringProp name="HTTPSampler.port">80</stringProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.mimetype"></stringProp>
+          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+          <stringProp name="HTTPSampler.monitor">false</stringProp>
+          <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
+          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        </HTTPSampler>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test 2" enabled="true">
+        <longProp name="ThreadGroup.start_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.num_threads">16</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <stringProp name="LoopController.loops">10</stringProp>
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+        </elementProp>
+        <longProp name="ThreadGroup.end_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="RC4" enabled="true">
+          <stringProp name="HTTPSampler.path">/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <stringProp name="HTTPSampler.protocol">HTTPS</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <stringProp name="HTTPSampler.port">443</stringProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.mimetype"></stringProp>
+          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+          <stringProp name="HTTPSampler.monitor">false</stringProp>
+          <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
+          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        </HTTPSampler>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test 3" enabled="true">
+        <longProp name="ThreadGroup.start_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.num_threads">16</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <stringProp name="LoopController.loops">10</stringProp>
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+        </elementProp>
+        <longProp name="ThreadGroup.end_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="AES128" enabled="true">
+          <stringProp name="HTTPSampler.path">/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <stringProp name="HTTPSampler.protocol">HTTPS</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <stringProp name="HTTPSampler.port">2443</stringProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.mimetype"></stringProp>
+          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+          <stringProp name="HTTPSampler.monitor">false</stringProp>
+          <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
+          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        </HTTPSampler>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test 4" enabled="true">
+        <longProp name="ThreadGroup.start_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.num_threads">16</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <stringProp name="LoopController.loops">10</stringProp>
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+        </elementProp>
+        <longProp name="ThreadGroup.end_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="AES256" enabled="true">
+          <stringProp name="HTTPSampler.path">/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <stringProp name="HTTPSampler.protocol">HTTPS</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <stringProp name="HTTPSampler.port">3443</stringProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.mimetype"></stringProp>
+          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+          <stringProp name="HTTPSampler.monitor">false</stringProp>
+          <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
+          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        </HTTPSampler>
+        <hashTree/>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test 5" enabled="true">
+        <longProp name="ThreadGroup.start_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.num_threads">16</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <stringProp name="LoopController.loops">10</stringProp>
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+        </elementProp>
+        <longProp name="ThreadGroup.end_time">1152004173000</longProp>
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Skeleton (RC4)" enabled="true">
+          <stringProp name="HTTPSampler.path">/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <stringProp name="HTTPSampler.protocol">HTTPS</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <stringProp name="HTTPSampler.port">1443</stringProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.mimetype"></stringProp>
+          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+          <stringProp name="HTTPSampler.monitor">false</stringProp>
+          <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
+          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        </HTTPSampler>
+        <hashTree/>
+      </hashTree>
+      <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+        <objProp>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>false</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+          </value>
+          <name>saveConfig</name>
+        </objProp>
+        <stringProp name="filename"></stringProp>
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+        <objProp>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>false</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+          </value>
+          <name>saveConfig</name>
+        </objProp>
+        <stringProp name="filename"></stringProp>
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak b/package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak
new file mode 100644 (file)
index 0000000..c0308da
--- /dev/null
@@ -0,0 +1,220 @@
+# Rules.make for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under GPLv2, see the file LICENSE in this tarball for details.
+#
+
+# Pull in the user's busybox configuration
+ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
+-include $(top_builddir)/.config
+endif
+
+#--------------------------------------------------------
+PROG      := busybox
+MAJOR_VERSION   :=1
+MINOR_VERSION   :=1
+SUBLEVEL_VERSION:=0
+EXTRAVERSION    :=
+VERSION   :=$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION)$(EXTRAVERSION)
+BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z")
+
+
+#--------------------------------------------------------
+# With a modern GNU make(1) (highly recommended, that's what all the
+# developers use), all of the following configuration values can be
+# overridden at the command line.  For example:
+#   make CROSS=powerpc-linux- top_srcdir="$HOME/busybox" PREFIX=/mnt/app
+#--------------------------------------------------------
+
+# If you are running a cross compiler, you will want to set 'CROSS'
+# to something more interesting...  Target architecture is determined
+# by asking the CC compiler what arch it compiles things for, so unless
+# your compiler is broken, you should not need to specify TARGET_ARCH
+CROSS           =$(subst ",, $(strip $(CROSS_COMPILER_PREFIX)))
+CC             = $(CROSS)gcc
+AR             = $(CROSS)ar
+AS             = $(CROSS)as
+LD             = $(CROSS)ld
+NM             = $(CROSS)nm
+STRIP          = $(CROSS)strip
+CPP            = $(CC) -E
+# MAKEFILES      = $(top_builddir)/.config
+RM             = rm
+RM_F           = $(RM) -f
+LN             = ln
+LN_S           = $(LN) -s
+MKDIR          = mkdir
+MKDIR_P        = $(MKDIR) -p
+MV             = mv
+CP             = cp
+
+
+# What OS are you compiling busybox for?  This allows you to include
+# OS specific things, syscall overrides, etc.
+TARGET_OS=linux
+
+# Select the compiler needed to build binaries for your development system
+HOSTCC    = gcc
+HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+
+# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
+LC_ALL:= C
+
+# If you want to add some simple compiler switches (like -march=i686),
+# especially from the command line, use this instead of CFLAGS directly.
+# For optimization overrides, it's better still to set OPTIMIZATION.
+CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
+
+# To compile vs some other alternative libc, you may need to use/adjust
+# the following lines to meet your needs...
+#
+# If you are using Red Hat 6.x with the compatible RPMs (for developing under
+# Red Hat 5.x and glibc 2.0) uncomment the following.  Be sure to read about
+# using the compatible RPMs (compat-*) at http://www.redhat.com !
+#LIBCDIR:=/usr/i386-glibc20-linux
+#
+# For other libraries, you are on your own.  But these may (or may not) help...
+#LDFLAGS+=-nostdlib
+#LIBRARIES:=$(LIBCDIR)/lib/libc.a -lgcc
+#CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR) -funsigned-char
+#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
+
+WARNINGS=-Wall -Wstrict-prototypes -Wshadow
+CFLAGS=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)
+ARFLAGS=cru
+
+
+# gcc centric. Perhaps fiddle with findstring gcc,$(CC) for the rest
+# get the CC MAJOR/MINOR version
+CC_MAJOR:=$(shell printf "%02d" $(shell echo __GNUC__ | $(CC) -E -xc - | tail -n 1))
+CC_MINOR:=$(shell printf "%02d" $(shell echo __GNUC_MINOR__ | $(CC) -E -xc - | tail -n 1))
+
+#--------------------------------------------------------
+export VERSION BUILDTIME HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP
+ifeq ($(strip $(TARGET_ARCH)),)
+TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \
+               -e 's/i.86/i386/' \
+               -e 's/sparc.*/sparc/' \
+               -e 's/arm.*/arm/g' \
+               -e 's/m68k.*/m68k/' \
+               -e 's/ppc/powerpc/g' \
+               -e 's/v850.*/v850/g' \
+               -e 's/sh[234]/sh/' \
+               -e 's/mips-.*/mips/' \
+               -e 's/mipsel-.*/mipsel/' \
+               -e 's/cris.*/cris/' \
+               )
+endif
+
+# A nifty macro to make testing gcc features easier
+check_gcc=$(shell \
+       if [ "$(1)" != "" ]; then \
+               if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
+               then echo "$(1)"; else echo "$(2)"; fi \
+       fi)
+
+# Setup some shortcuts so that silent mode is silent like it should be
+ifeq ($(subst s,,$(MAKEFLAGS)),$(MAKEFLAGS))
+export MAKE_IS_SILENT=n
+SECHO=@echo
+else
+export MAKE_IS_SILENT=y
+SECHO=-@false
+endif
+
+CFLAGS+=$(call check_gcc,-funsigned-char,)
+
+#--------------------------------------------------------
+# Arch specific compiler optimization stuff should go here.
+# Unless you want to override the defaults, do not set anything
+# for OPTIMIZATION...
+
+# use '-Os' optimization if available, else use -O2
+OPTIMIZATION:=$(call check_gcc,-Os,-O2)
+
+# Some nice architecture specific optimizations
+ifeq ($(strip $(TARGET_ARCH)),arm)
+       OPTIMIZATION+=-fstrict-aliasing
+endif
+ifeq ($(strip $(TARGET_ARCH)),i386)
+       OPTIMIZATION+=$(call check_gcc,-march=i386,)
+       OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
+       OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
+               -malign-functions=0 -malign-jumps=0 -malign-loops=0)
+endif
+OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
+
+#
+#--------------------------------------------------------
+# If you're going to do a lot of builds with a non-vanilla configuration,
+# it makes sense to adjust parameters above, so you can type "make"
+# by itself, instead of following it by the same half-dozen overrides
+# every time.  The stuff below, on the other hand, is probably less
+# prone to casual user adjustment.
+#
+
+ifeq ($(strip $(CONFIG_LFS)),y)
+    # For large file summit support
+    CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+ifeq ($(strip $(CONFIG_DMALLOC)),y)
+    # For testing mem leaks with dmalloc
+    CFLAGS+=-DDMALLOC
+    LIBRARIES:=-ldmalloc
+else
+    ifeq ($(strip $(CONFIG_EFENCE)),y)
+       LIBRARIES:=-lefence
+    endif
+endif
+ifeq ($(strip $(CONFIG_DEBUG)),y)
+    CFLAGS  +=$(WARNINGS) -g -D_GNU_SOURCE
+    LDFLAGS +=-Wl,-warn-common
+    STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
+else
+    CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG
+    LDFLAGS += -Wl,-warn-common
+    STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment
+endif
+ifeq ($(strip $(CONFIG_STATIC)),y)
+    LDFLAGS += --static
+endif
+
+ifeq ($(strip $(CONFIG_SELINUX)),y)
+    LIBRARIES += -lselinux
+endif
+
+ifeq ($(strip $(PREFIX)),)
+    PREFIX:=`pwd`/_install
+endif
+
+# Additional complications due to support for pristine source dir.
+# Include files in the build directory should take precedence over
+# the copy in top_srcdir, both during the compilation phase and the
+# shell script that finds the list of object files.
+# Work in progress by <ldoolitt@recycle.lbl.gov>.
+
+
+OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o
+CFLAGS    += $(CROSS_CFLAGS)
+ifdef BB_INIT_SCRIPT
+    CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
+endif
+
+# Put user-supplied flags at the end, where they
+# have a chance of winning.
+CFLAGS += $(CFLAGS_EXTRA)
+
+#------------------------------------------------------------
+# Installation options
+ifeq ($(strip $(CONFIG_INSTALL_APPLET_HARDLINKS)),y)
+INSTALL_OPTS=--hardlinks
+endif
+ifeq ($(strip $(CONFIG_INSTALL_APPLET_SYMLINKS)),y)
+INSTALL_OPTS=--symlinks
+endif
+ifeq ($(strip $(CONFIG_INSTALL_APPLET_DONT)),y)
+INSTALL_OPTS=
+endif
+
+.PHONY: dummy
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip b/package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip
new file mode 100755 (executable)
index 0000000..412fe3b
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<DOCUMENT type="Advanced Installer" CreateVersion="3.9" version="6.0.1" modules="freeware" RootPath="." Language="en">\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">\r
+    <ROW Property="ALLUSERS" Value="2"/>\r
+    <ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install &lt;product name&gt;." ValueLocId="*"/>\r
+    <ROW Property="ARPPRODUCTICON" Value="controlPanelIcon.exe"/>\r
+    <ROW Property="ARPURLINFOABOUT" Value="http://axtls.cerocclub.com.au"/>\r
+    <ROW Property="BannerBitmap" Value="default_banner.bmp" Type="1"/>\r
+    <ROW Property="DialogBitmap" Value="default_dialog.bmp" Type="1"/>\r
+    <ROW Property="Manufacturer" Value="axTLS" ValueLocId="*"/>\r
+    <ROW Property="ProductCode" Value="1033:{F49FFA19-C243-4627-BE13-7DEDA4E700D0} "/>\r
+    <ROW Property="ProductLanguage" Value="1033"/>\r
+    <ROW Property="ProductName" Value="Axhttpd" ValueLocId="*"/>\r
+    <ROW Property="ProductVersion" Value="1.1.8"/>\r
+    <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>\r
+    <ROW Property="UpgradeCode" Value="{93E5623E-740C-449C-9770-EDABD392868D}"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">\r
+    <ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>\r
+    <ROW Directory="New_Folder_DIR" Directory_Parent="APPDIR" DefaultDir="include"/>\r
+    <ROW Directory="SHORTCUTDIR" Directory_Parent="TARGETDIR" DefaultDir="SHORTC~1|SHORTCUTDIR" IsPseudoRoot="1"/>\r
+    <ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>\r
+    <ROW Directory="another_dir_DIR" Directory_Parent="test_dir_DIR" DefaultDir="anothe~1|another_dir"/>\r
+    <ROW Directory="bin_DIR" Directory_Parent="test_dir_DIR" DefaultDir="bin"/>\r
+    <ROW Directory="no_http_DIR" Directory_Parent="test_dir_DIR" DefaultDir="no_http"/>\r
+    <ROW Directory="no_ssl_DIR" Directory_Parent="test_dir_DIR" DefaultDir="no_ssl"/>\r
+    <ROW Directory="test_dir_DIR" Directory_Parent="www_DIR" DefaultDir="test_dir"/>\r
+    <ROW Directory="www_DIR" Directory_Parent="APPDIR" DefaultDir="www"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">\r
+    <ROW Component="another_dir" ComponentId="{3F073789-DB33-40BC-BF88-922C6DF252EC}" Directory_="another_dir_DIR" Attributes="0"/>\r
+    <ROW Component="axhttpd.exe" ComponentId="{0AEFFA20-29FA-4304-8227-F9ED0E6B8A0A}" Directory_="APPDIR" Attributes="0" KeyPath="axhttpd.exe" FullKeyPath="APPDIR\axhttpd.exe"/>\r
+    <ROW Component="axssl.exe" ComponentId="{E1E96774-7BFC-45B9-BA33-FC0C631921FD}" Directory_="APPDIR" Attributes="0" KeyPath="axssl.exe" FullKeyPath="APPDIR\axssl.exe"/>\r
+    <ROW Component="axtls.dll" ComponentId="{4C741E75-A18A-4FC9-972C-C1EF583713EB}" Directory_="APPDIR" Attributes="0" KeyPath="axtls.dll" FullKeyPath="APPDIR\axtls.dll"/>\r
+    <ROW Component="axtls.jar" ComponentId="{796CB0A9-6214-4531-A330-9B37420B7799}" Directory_="APPDIR" Attributes="0" KeyPath="axtls.static.lib" FullKeyPath="APPDIR"/>\r
+    <ROW Component="bigint.h" ComponentId="{FC3E492B-D4F0-41FB-A977-76F6E9FE9FFE}" Directory_="New_Folder_DIR" Attributes="0" KeyPath="bigint.h" FullKeyPath="APPDIR\include"/>\r
+    <ROW Component="favicon.ico" ComponentId="{9A1AB507-100A-470D-A002-CD8262CA4913}" Directory_="www_DIR" Attributes="0" KeyPath="favicon.ico" FullKeyPath="APPDIR\www"/>\r
+    <ROW Component="htaccess" ComponentId="{F53CB1D5-A3B9-4401-B0BA-B6AB1DA860B7}" Directory_="no_ssl_DIR" Attributes="0" KeyPath="htaccess" FullKeyPath="APPDIR\www\test_dir\no_ssl"/>\r
+    <ROW Component="htaccess_1" ComponentId="{953D1999-CC00-4F85-9B48-2CD83ACAE2F9}" Directory_="no_http_DIR" Attributes="0" KeyPath="htaccess_1" FullKeyPath="APPDIR\www\test_dir\no_http"/>\r
+    <ROW Component="htaccess_2" ComponentId="{6F181A8B-B313-47E2-AF79-AABFDBD353D8}" Directory_="bin_DIR" Attributes="0" KeyPath="htaccess_2" FullKeyPath="APPDIR\www\test_dir\bin"/>\r
+    <ROW Component="htpasswd.exe" ComponentId="{9FE1AAD2-4E35-443A-AAE5-3A7D03A52AAA}" Directory_="APPDIR" Attributes="0" KeyPath="htpasswd.exe" FullKeyPath="APPDIR\htpasswd.exe"/>\r
+    <ROW Component="test_dir" ComponentId="{832C9295-CF2A-402E-BB3C-65BCBCBB5971}" Directory_="test_dir_DIR" Attributes="0"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">\r
+    <ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0" Components="axhttpd.exe axssl.exe axtls.dll axtls.jar favicon.ico bigint.h htpasswd.exe another_dir htaccess htaccess_2 htaccess_1 test_dir"/>\r
+    <ATTRIBUTE name="CurrentFeature" value="MainFeature"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">\r
+    <ROW File="axhttpd.exe" Component_="axhttpd.exe" FileName="axhttpd.exe" Attributes="0" SourcePath="..\_stage\axhttpd.exe" SelfReg="false" Sequence="1"/>\r
+    <ROW File="axssl.exe" Component_="axssl.exe" FileName="axssl.exe" Attributes="0" SourcePath="..\_stage\axssl.exe" SelfReg="false" Sequence="2"/>\r
+    <ROW File="axtls.dll" Component_="axtls.dll" FileName="axtls.dll" Attributes="0" SourcePath="..\_stage\axtls.dll" SelfReg="false" Sequence="3"/>\r
+    <ROW File="axtls.lib" Component_="axtls.jar" FileName="axtls.lib" Attributes="0" SourcePath="..\_stage\axtls.lib" SelfReg="false" Sequence="4"/>\r
+    <ROW File="axtls.static.lib" Component_="axtls.jar" FileName="axtlss~1.lib|axtls.static.lib" Attributes="0" SourcePath="..\_stage\axtls.static.lib" SelfReg="false" Sequence="5"/>\r
+    <ROW File="bigint.h" Component_="bigint.h" FileName="bigint.h" Attributes="0" SourcePath="..\crypto\bigint.h" SelfReg="false" Sequence="12"/>\r
+    <ROW File="bigint_impl.h" Component_="bigint.h" FileName="bigint~1.h|bigint_impl.h" Attributes="0" SourcePath="..\crypto\bigint_impl.h" SelfReg="false" Sequence="9"/>\r
+    <ROW File="crypto.h" Component_="bigint.h" FileName="crypto.h" Attributes="0" SourcePath="..\crypto\crypto.h" SelfReg="false" Sequence="10"/>\r
+    <ROW File="crypto_misc.h" Component_="bigint.h" FileName="crypto~1.h|crypto_misc.h" Attributes="0" SourcePath="..\ssl\crypto_misc.h" SelfReg="false" Sequence="21"/>\r
+    <ROW File="favicon.ico" Component_="favicon.ico" FileName="favicon.ico" Attributes="0" SourcePath="..\www\favicon.ico" SelfReg="false" Sequence="6"/>\r
+    <ROW File="htaccess" Component_="htaccess" FileName="htacce~1|.htaccess" Attributes="0" SourcePath="..\www\test_dir\no_ssl\.htaccess" SelfReg="false" Sequence="15"/>\r
+    <ROW File="htaccess_1" Component_="htaccess_1" FileName="htacce~1|.htaccess" Attributes="0" SourcePath="..\www\test_dir\no_http\.htaccess" SelfReg="false" Sequence="18"/>\r
+    <ROW File="htaccess_2" Component_="htaccess_2" FileName="htacce~1|.htaccess" Attributes="0" SourcePath="..\www\test_dir\bin\.htaccess" SelfReg="false" Sequence="17"/>\r
+    <ROW File="htpasswd" Component_="htaccess_1" FileName="htpass~1|.htpasswd" Attributes="0" SourcePath="..\www\test_dir\no_http\.htpasswd" SelfReg="false" Sequence="19"/>\r
+    <ROW File="htpasswd.exe" Component_="htpasswd.exe" FileName="htpasswd.exe" Attributes="0" SourcePath="..\_stage\htpasswd.exe" SelfReg="false" Sequence="14"/>\r
+    <ROW File="index.html" Component_="favicon.ico" FileName="index~1.htm|index.html" Attributes="0" SourcePath="..\www\index.html" SelfReg="false" Sequence="7"/>\r
+    <ROW File="index.html_1" Component_="htaccess" FileName="index~1.htm|index.html" Attributes="0" SourcePath="..\www\test_dir\no_ssl\index.html" SelfReg="false" Sequence="16"/>\r
+    <ROW File="index.html_2" Component_="htaccess_1" FileName="index~1.htm|index.html" Attributes="0" SourcePath="..\www\test_dir\no_http\index.html" SelfReg="false" Sequence="20"/>\r
+    <ROW File="os_port.h" Component_="bigint.h" FileName="os_port.h" Attributes="0" SourcePath="..\ssl\os_port.h" SelfReg="false" Sequence="13"/>\r
+    <ROW File="ssl.h" Component_="bigint.h" FileName="ssl.h" Attributes="0" SourcePath="..\ssl\ssl.h" SelfReg="false" Sequence="8"/>\r
+    <ROW File="tls1.h" Component_="bigint.h" FileName="tls1.h" Attributes="0" SourcePath="..\ssl\tls1.h" SelfReg="false" Sequence="11"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">\r
+    <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" InstallationType="4"/>\r
+    <ATTRIBUTE name="CurrentBuild" value="DefaultBuild"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">\r
+    <ROW Path="&lt;ui.ail&gt;"/>\r
+    <ROW Path="&lt;ui_en.ail&gt;"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">\r
+    <ROW Fragment="FolderDlg.aip" Path="&lt;FolderDlg.aip&gt;"/>\r
+    <ROW Fragment="StaticUIStrings.aip" Path="&lt;StaticUIStrings.aip&gt;"/>\r
+    <ROW Fragment="UI.aip" Path="&lt;UI.aip&gt;"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">\r
+    <ROW Name="aicustact.dll" SourcePath="&lt;aicustact.dll&gt;"/>\r
+    <ROW Name="default_banner.bmp" SourcePath="&lt;default-banner.bmp&gt;"/>\r
+    <ROW Name="default_dialog.bmp" SourcePath="&lt;default-dialog.bmp&gt;"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">\r
+    <ATTRIBUTE name="FixedSizeBitmaps" value="0"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">\r
+    <ROW Dialog_="FolderDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>\r
+    <ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>\r
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>\r
+    <ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL" Ordering="3"/>\r
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceWelcomeDlg" Condition="AI_MAINT" Ordering="1"/>\r
+    <ROW Dialog_="MaintenanceWelcomeDlg" Control_="Next" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="2"/>\r
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="PatchWelcomeDlg" Condition="AI_PATCH" Ordering="1"/>\r
+    <ROW Dialog_="PatchWelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_PATCH" Ordering="2"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">\r
+    <ROW Directory_="another_dir_DIR" Component_="another_dir"/>\r
+    <ROW Directory_="test_dir_DIR" Component_="test_dir"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">\r
+    <ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>\r
+    <ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>\r
+    <ROW Action="AI_RESTORE_LOCATION" Type="65" Source="aicustact.dll" Target="RestoreLocation"/>\r
+    <ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>\r
+    <ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFilesFolder][ProductName]"/>\r
+    <ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>\r
+    <ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">\r
+    <ROW Name="controlPanelIcon.exe" SourcePath="..\..\axhttpd\www\favicon.ico" Index="0"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">\r
+    <ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel &lt;&gt; 5)" Sequence="210"/>\r
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="740"/>\r
+    <ROW Action="AI_STORE_LOCATION" Condition="Not Installed" Sequence="1545"/>\r
+    <ROW Action="AI_PREPARE_UPGRADE" Condition="AI_UPGRADE=&quot;No&quot; AND (Not Installed)" Sequence="1300"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">\r
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="740"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiShortsComponent">\r
+    <ROW Shortcut="axhttpd.exe" Directory_="SHORTCUTDIR" Name="axhttpd" Component_="axhttpd.exe" Target="[#axhttpd.exe]" Description="axhttpd.exe" Hotkey="0" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>\r
+    <ROW Shortcut="axssl_client" Directory_="SHORTCUTDIR" Name="axsslc~1|axssl client" Component_="axssl.exe" Target="[#axssl.exe]" Arguments="s_client" Hotkey="0" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>\r
+    <ROW Shortcut="axssl_server" Directory_="SHORTCUTDIR" Name="axssls~1|axssl server" Component_="axssl.exe" Target="[#axssl.exe]" Arguments="s_server" Hotkey="0" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>\r
+  </COMPONENT>\r
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiUpgradeComponent">\r
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMax="[|ProductVersion]" Attributes="1025" ActionProperty="OLDPRODUCTS"/>\r
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>\r
+  </COMPONENT>\r
+</DOCUMENT>\r
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES b/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES
new file mode 100644 (file)
index 0000000..2929b3b
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.rc b/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.rc
new file mode 100644 (file)
index 0000000..0f288aa
--- /dev/null
@@ -0,0 +1,32 @@
+//Microsoft Visual C++ generated resource script.\r
+//\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#define APSTUDIO_HIDDEN_SYMBOLS\r
+#undef APSTUDIO_HIDDEN_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
+LANGUAGE 9, 1\r
+#pragma code_page(1252)\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+\r
+IDI_AXTLS       ICON         "../www/favicon.ico"\r
+\r
+\r
+#endif\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+\r
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/config.h b/package/luci/libs/luci-lib-nixio/axTLS/config/config.h
new file mode 100644 (file)
index 0000000..0f861f3
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Automatically generated header file: don't edit
+ */
+
+#define HAVE_DOT_CONFIG 1
+#define CONFIG_PLATFORM_LINUX 1
+#undef CONFIG_PLATFORM_CYGWIN
+#undef CONFIG_PLATFORM_WIN32
+
+/*
+ * General Configuration
+ */
+#define PREFIX "/usr"
+#undef CONFIG_DEBUG
+#define CONFIG_STRIP_UNWANTED_SECTIONS 1
+#undef CONFIG_VISUAL_STUDIO_7_0
+#undef CONFIG_VISUAL_STUDIO_8_0
+#define CONFIG_VISUAL_STUDIO_7_0_BASE ""
+#define CONFIG_VISUAL_STUDIO_8_0_BASE ""
+#define CONFIG_EXTRA_CFLAGS_OPTIONS "-fpic"
+#define CONFIG_EXTRA_LDFLAGS_OPTIONS ""
+
+/*
+ * SSL Library
+ */
+#undef CONFIG_SSL_SERVER_ONLY
+#undef CONFIG_SSL_CERT_VERIFICATION
+#undef CONFIG_SSL_ENABLE_CLIENT
+#define CONFIG_SSL_FULL_MODE 1
+#undef CONFIG_SSL_SKELETON_MODE
+#undef CONFIG_SSL_PROT_LOW
+#define CONFIG_SSL_PROT_MEDIUM 1
+#undef CONFIG_SSL_PROT_HIGH
+#undef CONFIG_SSL_USE_DEFAULT_KEY
+#define CONFIG_SSL_PRIVATE_KEY_LOCATION "/etc/nixio/rsa_main.der"
+#define CONFIG_SSL_PRIVATE_KEY_PASSWORD ""
+#define CONFIG_SSL_X509_CERT_LOCATION ""
+#undef CONFIG_SSL_GENERATE_X509_CERT
+#define CONFIG_SSL_X509_COMMON_NAME ""
+#define CONFIG_SSL_X509_ORGANIZATION_NAME ""
+#define CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME ""
+#undef CONFIG_SSL_ENABLE_V23_HANDSHAKE
+#undef CONFIG_SSL_HAS_PEM
+#undef CONFIG_SSL_USE_PKCS12
+#define CONFIG_SSL_EXPIRY_TIME 24
+#define CONFIG_X509_MAX_CA_CERTS 4
+#define CONFIG_SSL_MAX_CERTS 2
+#define CONFIG_SSL_CTX_MUTEXING 1
+#define CONFIG_USE_DEV_URANDOM 1
+#undef CONFIG_WIN32_USE_CRYPTO_LIB
+#undef CONFIG_OPENSSL_COMPATIBLE
+#undef CONFIG_PERFORMANCE_TESTING
+#undef CONFIG_SSL_TEST
+#undef CONFIG_AXHTTPD
+#undef CONFIG_HTTP_STATIC_BUILD
+#define CONFIG_HTTP_PORT 
+#define CONFIG_HTTP_HTTPS_PORT 
+#define CONFIG_HTTP_SESSION_CACHE_SIZE 
+#define CONFIG_HTTP_WEBROOT ""
+#define CONFIG_HTTP_TIMEOUT 
+#undef CONFIG_HTTP_HAS_CGI
+#define CONFIG_HTTP_CGI_EXTENSIONS ""
+#undef CONFIG_HTTP_ENABLE_LUA
+#define CONFIG_HTTP_LUA_PREFIX ""
+#define CONFIG_HTTP_LUA_CGI_LAUNCHER ""
+#undef CONFIG_HTTP_BUILD_LUA
+#undef CONFIG_HTTP_DIRECTORIES
+#undef CONFIG_HTTP_HAS_AUTHORIZATION
+#undef CONFIG_HTTP_HAS_IPV6
+#undef CONFIG_HTTP_ENABLE_DIFFERENT_USER
+#define CONFIG_HTTP_USER ""
+#undef CONFIG_HTTP_VERBOSE
+#undef CONFIG_HTTP_IS_DAEMON
+
+/*
+ * Language Bindings
+ */
+#undef CONFIG_BINDINGS
+#undef CONFIG_CSHARP_BINDINGS
+#undef CONFIG_VBNET_BINDINGS
+#define CONFIG_DOT_NET_FRAMEWORK_BASE ""
+#undef CONFIG_JAVA_BINDINGS
+#define CONFIG_JAVA_HOME ""
+#undef CONFIG_PERL_BINDINGS
+#define CONFIG_PERL_CORE ""
+#define CONFIG_PERL_LIB ""
+#undef CONFIG_LUA_BINDINGS
+#define CONFIG_LUA_CORE ""
+
+/*
+ * Samples
+ */
+#undef CONFIG_SAMPLES
+#undef CONFIG_C_SAMPLES
+#undef CONFIG_CSHARP_SAMPLES
+#undef CONFIG_VBNET_SAMPLES
+#undef CONFIG_JAVA_SAMPLES
+#undef CONFIG_PERL_SAMPLES
+#undef CONFIG_LUA_SAMPLES
+
+/*
+ * BigInt Options
+ */
+#undef CONFIG_BIGINT_CLASSICAL
+#undef CONFIG_BIGINT_MONTGOMERY
+#define CONFIG_BIGINT_BARRETT 1
+#define CONFIG_BIGINT_CRT 1
+#undef CONFIG_BIGINT_KARATSUBA
+#define MUL_KARATSUBA_THRESH 
+#define SQU_KARATSUBA_THRESH 
+#define CONFIG_BIGINT_SLIDING_WINDOW 1
+#define CONFIG_BIGINT_SQUARE 1
+#undef CONFIG_BIGINT_CHECK_ON
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/linuxconfig b/package/luci/libs/luci-lib-nixio/axTLS/config/linuxconfig
new file mode 100644 (file)
index 0000000..614fdd8
--- /dev/null
@@ -0,0 +1,119 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+CONFIG_PLATFORM_LINUX=y
+# CONFIG_PLATFORM_CYGWIN is not set
+# CONFIG_PLATFORM_SOLARIS is not set
+# CONFIG_PLATFORM_WIN32 is not set
+
+#
+# General Configuration
+#
+PREFIX="/usr/local"
+# CONFIG_DEBUG is not set
+CONFIG_STRIP_UNWANTED_SECTIONS=y
+# CONFIG_VISUAL_STUDIO_7_0 is not set
+# CONFIG_VISUAL_STUDIO_8_0 is not set
+CONFIG_VISUAL_STUDIO_7_0_BASE=""
+CONFIG_VISUAL_STUDIO_8_0_BASE=""
+CONFIG_EXTRA_CFLAGS_OPTIONS=""
+CONFIG_EXTRA_LDFLAGS_OPTIONS=""
+
+#
+# SSL Library
+#
+# CONFIG_SSL_SERVER_ONLY is not set
+# CONFIG_SSL_CERT_VERIFICATION is not set
+# CONFIG_SSL_ENABLE_CLIENT is not set
+CONFIG_SSL_FULL_MODE=y
+# CONFIG_SSL_SKELETON_MODE is not set
+# CONFIG_SSL_PROT_LOW is not set
+CONFIG_SSL_PROT_MEDIUM=y
+# CONFIG_SSL_PROT_HIGH is not set
+CONFIG_SSL_USE_DEFAULT_KEY=y
+CONFIG_SSL_PRIVATE_KEY_LOCATION=""
+CONFIG_SSL_PRIVATE_KEY_PASSWORD=""
+CONFIG_SSL_X509_CERT_LOCATION=""
+CONFIG_SSL_GENERATE_X509_CERT=y
+CONFIG_SSL_X509_COMMON_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME=""
+CONFIG_SSL_ENABLE_V23_HANDSHAKE=y
+CONFIG_SSL_HAS_PEM=y
+CONFIG_SSL_USE_PKCS12=y
+CONFIG_SSL_EXPIRY_TIME=24
+CONFIG_X509_MAX_CA_CERTS=4
+CONFIG_SSL_MAX_CERTS=2
+# CONFIG_SSL_CTX_MUTEXING is not set
+CONFIG_USE_DEV_URANDOM=y
+# CONFIG_WIN32_USE_CRYPTO_LIB is not set
+CONFIG_OPENSSL_COMPATIBLE=y
+# CONFIG_PERFORMANCE_TESTING is not set
+# CONFIG_SSL_TEST is not set
+CONFIG_AXHTTPD=y
+
+#
+# Axhttpd Configuration
+#
+# CONFIG_HTTP_STATIC_BUILD is not set
+CONFIG_HTTP_PORT=80
+CONFIG_HTTP_HTTPS_PORT=443
+CONFIG_HTTP_SESSION_CACHE_SIZE=5
+CONFIG_HTTP_WEBROOT="../www"
+CONFIG_HTTP_TIMEOUT=300
+
+#
+# CGI
+#
+CONFIG_HTTP_HAS_CGI=y
+CONFIG_HTTP_CGI_EXTENSIONS=".lua,.lp"
+CONFIG_HTTP_ENABLE_LUA=y
+CONFIG_HTTP_LUA_PREFIX="/usr/local"
+CONFIG_HTTP_LUA_CGI_LAUNCHER="/bin/cgi"
+# CONFIG_HTTP_BUILD_LUA is not set
+CONFIG_HTTP_DIRECTORIES=y
+CONFIG_HTTP_HAS_AUTHORIZATION=y
+# CONFIG_HTTP_HAS_IPV6 is not set
+# CONFIG_HTTP_VERBOSE is not set
+# CONFIG_HTTP_IS_DAEMON is not set
+
+#
+# Language Bindings
+#
+CONFIG_BINDINGS=y
+# CONFIG_CSHARP_BINDINGS is not set
+# CONFIG_VBNET_BINDINGS is not set
+CONFIG_DOT_NET_FRAMEWORK_BASE=""
+# CONFIG_JAVA_BINDINGS is not set
+CONFIG_JAVA_HOME=""
+# CONFIG_PERL_BINDINGS is not set
+CONFIG_PERL_CORE=""
+CONFIG_PERL_LIB=""
+# CONFIG_LUA_BINDINGS is not set
+CONFIG_LUA_CORE=""
+
+#
+# Samples
+#
+CONFIG_SAMPLES=y
+CONFIG_C_SAMPLES=y
+# CONFIG_CSHARP_SAMPLES is not set
+# CONFIG_VBNET_SAMPLES is not set
+# CONFIG_JAVA_SAMPLES is not set
+# CONFIG_PERL_SAMPLES is not set
+# CONFIG_LUA_SAMPLES is not set
+
+#
+# BigInt Options
+#
+# CONFIG_BIGINT_CLASSICAL is not set
+# CONFIG_BIGINT_MONTGOMERY is not set
+CONFIG_BIGINT_BARRETT=y
+CONFIG_BIGINT_CRT=y
+# CONFIG_BIGINT_KARATSUBA is not set
+MUL_KARATSUBA_THRESH=0
+SQU_KARATSUBA_THRESH=0
+CONFIG_BIGINT_SLIDING_WINDOW=y
+CONFIG_BIGINT_SQUARE=y
+# CONFIG_BIGINT_CHECK_ON is not set
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.conf b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.conf
new file mode 100644 (file)
index 0000000..9f9db13
--- /dev/null
@@ -0,0 +1,127 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# A standard makefile for all makefiles
+#
+
+# All executables and libraries go here
+STAGE=./_stage
+
+ifneq ($(MAKECMDGOALS), clean)
+
+# Give an initial rule
+all: 
+
+# Win32 
+ifdef CONFIG_PLATFORM_WIN32
+
+ifdef CONFIG_VISUAL_STUDIO_7_0
+CONFIG_VISUAL_STUDIO_7_0_BASE_UNIX:=$(shell cygpath -u $(CONFIG_VISUAL_STUDIO_7_0_BASE))
+export INCLUDE=$(shell echo "$(CONFIG_VISUAL_STUDIO_7_0_BASE)\vc7\include;$(CONFIG_VISUAL_STUDIO_7_0_BASE)\vc7\platformsdk\include")
+export LIB=$(shell echo "$(CONFIG_VISUAL_STUDIO_7_0_BASE)\vc7\\platformsdk\lib;$(CONFIG_VISUAL_STUDIO_7_0_BASE)\vc7\lib")
+PATH:=$(CONFIG_VISUAL_STUDIO_7_0_BASE_UNIX)/vc7/bin:$(CONFIG_VISUAL_STUDIO_7_0_BASE_UNIX)/common7/ide:$(PATH)
+else 
+ifdef CONFIG_VISUAL_STUDIO_8_0
+CONFIG_VISUAL_STUDIO_8_0_BASE_UNIX:=$(shell cygpath -u $(CONFIG_VISUAL_STUDIO_8_0_BASE))
+export INCLUDE=$(shell echo "$(CONFIG_VISUAL_STUDIO_8_0_BASE)\vc\include;$(CONFIG_VISUAL_STUDIO_8_0_BASE)\vc\platformsdk\include")
+export LIB=$(shell echo "$(CONFIG_VISUAL_STUDIO_8_0_BASE)\vc\platformsdk\lib;$(CONFIG_VISUAL_STUDIO_8_0_BASE)\vc\lib")
+PATH:=$(CONFIG_VISUAL_STUDIO_8_0_BASE_UNIX)/vc/bin:$(CONFIG_VISUAL_STUDIO_8_0_BASE_UNIX)/common7/ide:$(PATH)
+stuff:
+       @echo $(INCLUDE)
+endif
+endif
+
+CC=cl.exe
+LD=link.exe
+AXTLS_INCLUDE=$(shell cygpath -w $(AXTLS_HOME))
+CFLAGS+=/nologo /W3 /D"WIN32" /D"_MBCS" /D"_CONSOLE" /D"_CRT_SECURE_NO_DEPRECATE" /FD /I"$(AXTLS_INCLUDE)crypto" /I"$(AXTLS_INCLUDE)ssl" /I"$(AXTLS_INCLUDE)config" /c 
+LDFLAGS=/nologo /subsystem:console /machine:I386
+LDSHARED = /dll
+AR=lib /nologo
+
+ifdef CONFIG_DEBUG
+       CFLAGS += /Gm /Zi /Od /D "_DEBUG"
+       LDFLAGS += /debug /incremental:yes 
+else
+       CFLAGS += /O2 /D "NDEBUG"
+       LDFLAGS += /incremental:no 
+endif
+
+else    # Not Win32
+
+-include .depend
+
+CFLAGS += -I$(AXTLS_HOME)/config -I$(AXTLS_HOME)/ssl -I$(AXTLS_HOME)/crypto
+LD=$(CC)
+STRIP=strip
+
+# Solaris
+ifdef CONFIG_PLATFORM_SOLARIS
+CFLAGS += -DCONFIG_PLATFORM_SOLARIS
+LDFLAGS += -lsocket -lnsl -lc
+LDSHARED = -G
+# Linux/Cygwin
+else 
+CFLAGS += -Wall -Wstrict-prototypes -Wshadow
+LDSHARED = -shared
+
+# Linux
+ifndef CONFIG_PLATFORM_CYGWIN
+# CFLAGS += -fPIC 
+
+# Cygwin
+else
+CFLAGS += -DCONFIG_PLATFORM_CYGWIN
+LDFLAGS += -enable-auto-import
+endif
+endif
+
+ifdef CONFIG_DEBUG
+CFLAGS += -g
+else
+LDFLAGS += -s
+ifdef CONFIG_PLATFORM_SOLARIS
+CFLAGS += -O 
+else
+CFLAGS += -O3
+endif
+
+endif  # CONFIG_DEBUG
+endif   # WIN32
+
+CFLAGS+=$(subst ",, $(strip $(CONFIG_EXTRA_CFLAGS_OPTIONS)))
+LDFLAGS+=$(subst ",, $(strip $(CONFIG_EXTRA_LDFLAGS_OPTIONS)))
+
+endif   # not 'clean'
+
+clean::
+       -@rm -f *.o *.obj core* *.out *~ \.depend vc*0* 
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.dotnet.conf b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.dotnet.conf
new file mode 100644 (file)
index 0000000..9cff4fd
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+ifneq ($(MAKECMDGOALS), clean)
+
+ifdef CONFIG_PLATFORM_WIN32
+GO_DOT_NET=y
+endif
+
+ifdef CONFIG_PLATFORM_CYGWIN
+GO_DOT_NET=y
+endif
+
+ifdef GO_DOT_NET
+all: test_dot_net_location
+
+# find out where the C# compiler is
+CONFIG_DOT_NET_FRAMEWORK_BASE:=$(shell cygpath -u $(CONFIG_DOT_NET_FRAMEWORK_BASE))
+
+test_dot_net_location:
+       @if ! [ -d "$(CONFIG_DOT_NET_FRAMEWORK_BASE)" ]; then \
+               echo "*** Error: .NET path of $(CONFIG_DOT_NET_FRAMEWORK_BASE) doesn't exist" && exit 1; \
+    fi
+
+PATH:=$(CONFIG_DOT_NET_FRAMEWORK_BASE):$(PATH)
+
+else        # Linux?
+all: test_mcs
+
+test_mcs:
+       @if ! mcs --about > /dev/null 2>&1; then \
+        echo "Mono not installed! - go " \
+        "to http://www.mono-project.com/Main_Page" && exit 1; \
+    fi 
+
+endif   # Linux
+
+endif   # not 'clean'
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf
new file mode 100644 (file)
index 0000000..9b22462
--- /dev/null
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+ifneq ($(MAKECMDGOALS), clean)
+
+ifdef CONFIG_PLATFORM_CYGWIN 
+CFLAGS += -I"$(CONFIG_JAVA_HOME)/include"
+CFLAGS += -I"$(CONFIG_JAVA_HOME)/include/win32"
+JAVA_BIN:=$(CONFIG_JAVA_HOME)/bin
+else
+
+ifdef CONFIG_PLATFORM_WIN32
+CFLAGS += /I"$(shell cygpath -w $(CONFIG_JAVA_HOME)/include)"
+CFLAGS += /I"$(shell cygpath -w $(CONFIG_JAVA_HOME)/include/win32)"
+JAVA_BIN:=$(shell cygpath -u $(CONFIG_JAVA_HOME)/bin)
+else # Linux
+CFLAGS += -I$(CONFIG_JAVA_HOME)/include
+
+ifdef CONFIG_PLATFORM_SOLARIS
+CFLAGS += -I$(CONFIG_JAVA_HOME)/include/solaris
+else
+CFLAGS += -I$(CONFIG_JAVA_HOME)/include/linux
+endif
+
+JAVA_BIN:=$(CONFIG_JAVA_HOME)/bin
+endif
+endif
+
+PATH:=$(JAVA_BIN):$(PATH)
+
+endif   # not 'clean'                    
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post
new file mode 100644 (file)
index 0000000..033981c
--- /dev/null
@@ -0,0 +1,19 @@
+
+ifneq ($(MAKECMDGOALS), clean)
+ifndef CONFIG_PLATFORM_WIN32
+ifndef CONFIG_PLATFORM_SOLARIS
+# do dependencies
+-include .depend
+all : .depend 
+.depend: $(wildcard *.c)
+       @$(CC) $(CFLAGS) -MM $^ > $@
+endif   # 'not' solaris
+endif   # 'not' win32
+
+ifdef CONFIG_PLATFORM_WIN32
+OBJ:=$(OBJ:.o=.obj)
+%.obj : %.c
+       $(CC) $(CFLAGS) $< 
+endif   # win32
+
+endif   # end of 'not' clean
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt
new file mode 100644 (file)
index 0000000..493749b
--- /dev/null
@@ -0,0 +1,255 @@
+Introduction
+------------
+
+The configuration database is collection of configuration options
+organized in a tree structure:
+
+       +- Code maturity level options
+       |  +- Prompt for development and/or incomplete code/drivers
+       +- General setup
+       |  +- Networking support
+       |  +- System V IPC
+       |  +- BSD Process Accounting
+       |  +- Sysctl support
+       +- Loadable module support
+       |  +- Enable loadable module support
+       |     +- Set version information on all module symbols
+       |     +- Kernel module loader
+       +- ...
+
+Every entry has its own dependencies. These dependencies are used
+to determine the visible of an entry. Any child entry is only
+visible if its parent entry is also visible.
+
+Menu entries
+------------
+
+Most entries define a config option, all other entries help to organize
+them. A single configuration option is defined like this:
+
+config MODVERSIONS
+       bool "Set version information on all module symbols"
+       depends MODULES
+       help
+         Usually, modules have to be recompiled whenever you switch to a new
+         kernel.  ...
+
+Every line starts with a key word and can be followed by multiple
+arguments.  "config" starts a new config entry. The following lines
+define attributes for this config option. Attributes can be the type of
+the config option, input prompt, dependencies, help text and default
+values. A config option can be defined multiple times with the same
+name, but every definition can have only a single input prompt and the
+type must not conflict.
+
+Menu attributes
+---------------
+
+A menu entry can have a number of attributes. Not all of them are
+applicable everywhere (see syntax).
+
+- type definition: "bool"/"tristate"/"string"/"hex"/"integer"
+  Every config option must have a type. There are only two basic types:
+  tristate and string, the other types base on these two. The type
+  definition optionally accepts an input prompt, so these two examples
+  are equivalent:
+
+       bool "Networking support"
+  and
+       bool
+       prompt "Networking support"
+
+- input prompt: "prompt" <prompt> ["if" <expr>]
+  Every menu entry can have at most one prompt, which is used to display
+  to the user. Optionally dependencies only for this prompt can be added
+  with "if".
+
+- default value: "default" <symbol> ["if" <expr>]
+  A config option can have any number of default values. If multiple
+  default values are visible, only the first defined one is active.
+  Default values are not limited to the menu entry, where they are
+  defined, this means the default can be defined somewhere else or be
+  overriden by an earlier definition.
+  The default value is only assigned to the config symbol if no other
+  value was set by the user (via the input prompt above). If an input
+  prompt is visible the default value is presented to the user and can
+  be overridden by him.
+  Optionally dependencies only for this default value can be added with
+  "if".
+
+- dependencies: "depends on"/"requires" <expr>
+  This defines a dependency for this menu entry. If multiple
+  dependencies are defined they are connected with '&&'. Dependencies
+  are applied to all other options within this menu entry (which also
+  accept "if" expression), so these two examples are equivalent:
+
+       bool "foo" if BAR
+       default y if BAR
+  and
+       depends on BAR
+       bool "foo"
+       default y
+
+- help text: "help"
+  This defines a help text. The end of the help text is determined by
+  the level indentation, this means it ends at the first line which has
+  a smaller indentation than the first line of the help text.
+
+
+Menu dependencies
+-----------------
+
+Dependencies define the visibility of a menu entry and can also reduce
+the input range of tristate symbols. The tristate logic used in the
+expressions uses one more state than normal boolean logic to express the
+module state. Dependency expressions have the following syntax:
+
+<expr> ::= <symbol>                             (1)
+           <symbol> '=' <symbol>                (2)
+           <symbol> '!=' <symbol>               (3)
+           '(' <expr> ')'                       (4)
+           '!' <expr>                           (5)
+           <expr> '||' <expr>                   (6)
+           <expr> '&&' <expr>                   (7)
+
+Expressions are listed in decreasing order of precedence.
+
+(1) Convert the symbol into an expression. Boolean and tristate symbols
+    are simply converted into the respective expression values. All
+    other symbol types result in 'n'.
+(2) If the values of both symbols are equal, it returns 'y',
+    otherwise 'n'.
+(3) If the values of both symbols are equal, it returns 'n',
+    otherwise 'y'.
+(4) Returns the value of the expression. Used to override precedence.
+(5) Returns the result of (2-/expr/).
+(6) Returns the result of min(/expr/, /expr/).
+(7) Returns the result of max(/expr/, /expr/).
+
+An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
+respectively for calculations). A menu entry becomes visible when it's
+expression evaluates to 'm' or 'y'.
+
+There are two type of symbols: constant and nonconstant symbols.
+Nonconstant symbols are the most common ones and are defined with the
+'config' statement. Nonconstant symbols consist entirely of alphanumeric
+characters or underscores.
+Constant symbols are only part of expressions. Constant symbols are
+always surrounded by single or double quotes. Within the quote any
+other character is allowed and the quotes can be escaped using '\'.
+
+Menu structure
+--------------
+
+The position of a menu entry in the tree is determined in two ways. First
+it can be specified explicitely:
+
+menu "Network device support"
+       depends NET
+
+config NETDEVICES
+       ...
+
+endmenu
+
+All entries within the "menu" ... "endmenu" block become a submenu of
+"Network device support". All subentries inherit the dependencies from
+the menu entry, e.g. this means the dependency "NET" is added to the
+dependency list of the config option NETDEVICES.
+
+The other way to generate the menu structure is done by analyzing the
+dependencies. If a menu entry somehow depends on the previous entry, it
+can be made a submenu of it. First the the previous (parent) symbol must
+be part of the dependency list and then one of these two condititions
+must be true:
+- the child entry must become invisible, if the parent is set to 'n'
+- the child entry must only be visible, if the parent is visible
+
+config MODULES
+       bool "Enable loadable module support"
+
+config MODVERSIONS
+       bool "Set version information on all module symbols"
+       depends MODULES
+
+comment "module support disabled"
+       depends !MODULES
+
+MODVERSIONS directly depends on MODULES, this means it's only visible if
+MODULES is different from 'n'. The comment on the other hand is always
+visible when MODULES it's visible (the (empty) dependency of MODULES is
+also part of the comment dependencies).
+
+
+Kconfig syntax
+--------------
+
+The configuration file describes a series of menu entries, where every
+line starts with a keyword (except help texts). The following keywords
+end a menu entry:
+- config
+- choice/endchoice
+- comment
+- menu/endmenu
+- if/endif
+- source
+The first four also start the definition of a menu entry.
+
+config:
+
+       "config" <symbol>
+       <config options>
+
+This defines a config symbol <symbol> and accepts any of above
+attributes as options.
+
+choices:
+
+       "choice"
+       <choice options>
+       <choice block>
+       "endchoice"
+
+This defines a choice group and accepts any of above attributes as
+options. A choice can only be of type bool or tristate, while a boolean
+choice only allows a single config entry to be selected, a tristate
+choice also allows any number of config entries to be set to 'm'. This
+can be used if multiple drivers for a single hardware exists and only a
+single driver can be compiled/loaded into the kernel, but all drivers
+can be compiled as modules.
+A choice accepts another option "optional", which allows to set the
+choice to 'n' and no entry needs to be selected.
+
+comment:
+
+       "comment" <prompt>
+       <comment options>
+
+This defines a comment which is displayed to the user during the
+configuration process and is also echoed to the output files. The only
+possible options are dependencies.
+
+menu:
+
+       "menu" <prompt>
+       <menu options>
+       <menu block>
+       "endmenu"
+
+This defines a menu block, see "Menu structure" above for more
+information. The only possible options are dependencies.
+
+if:
+
+       "if" <expr>
+       <if block>
+       "endif"
+
+This defines an if block. The dependency expression <expr> is appended
+to all enclosed menu entries.
+
+source:
+
+       "source" <prompt>
+
+This reads the specified configuration file. This file is always parsed.
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile
new file mode 100644 (file)
index 0000000..7399501
--- /dev/null
@@ -0,0 +1,121 @@
+# Makefile for axTLS
+#
+# Copyright (C) 2002 Erik Andersen <andersen@codepoet.org>
+
+top_srcdir=../..
+top_builddir=../..
+srcdir=$(top_srcdir)/scripts/config
+include $(top_srcdir)/Rules.mak
+
+all: ncurses conf mconf
+
+ifeq ($(shell uname),SunOS)
+LIBS = -lcurses
+else
+LIBS = -lncurses
+endif
+ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
+       HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
+else
+ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
+       HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
+else
+ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h))
+       HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses.h>"
+else
+ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h))
+       HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
+else
+ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
+       HOSTNCURSES += -DCURSES_LOC="<ncurses.h>"
+else
+       HOSTNCURSES += -DCURSES_LOC="<curses.h>"
+endif
+endif
+endif
+endif
+endif
+
+CONF_SRC     = conf.c
+MCONF_SRC    = mconf.c
+LXD_SRC      = lxdialog/checklist.c lxdialog/menubox.c lxdialog/textbox.c \
+               lxdialog/yesno.c lxdialog/inputbox.c lxdialog/util.c \
+               lxdialog/msgbox.c
+
+SHARED_SRC   = zconf.tab.c
+SHARED_DEPS := $(srcdir)/lkc.h $(srcdir)/lkc_proto.h \
+               lkc_defs.h $(srcdir)/expr.h zconf.tab.h
+CONF_OBJS    = $(patsubst %.c,%.o, $(CONF_SRC))
+MCONF_OBJS   = $(patsubst %.c,%.o, $(MCONF_SRC) $(LXD_SRC))
+SHARED_OBJS  = $(patsubst %.c,%.o, $(SHARED_SRC))
+
+conf: $(CONF_OBJS) $(SHARED_OBJS)
+       $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@
+
+mconf: $(MCONF_OBJS) $(SHARED_OBJS)
+       $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS)
+
+$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
+       $(HOSTCC) $(HOSTCFLAGS) -I. -c $< -o $@
+
+$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
+       @[ -d $(@D) ] || mkdir -v $(@D)
+       $(HOSTCC) $(HOSTCFLAGS) $(HOSTNCURSES) -I. -c $< -o $@
+
+lkc_defs.h: $(srcdir)/lkc_proto.h
+       @sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
+
+###
+# The following requires flex/bison
+# By default we use the _shipped versions, uncomment the
+# following line if you are modifying the flex/bison src.
+#LKC_GENPARSER := 1
+
+ifdef LKC_GENPARSER
+
+%.tab.c %.tab.h: $(srcdir)/%.y
+       bison -t -d -v -b $* -p $(notdir $*) $<
+
+lex.%.c: $(srcdir)/%.l
+       flex -P$(notdir $*) -o$@ $<
+else
+
+lex.zconf.o: lex.zconf.c $(SHARED_DEPS)
+       $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -c $< -o $@
+
+lex.zconf.c: $(srcdir)/lex.zconf.c_shipped
+       cp $< $@
+
+zconf.tab.c: $(srcdir)/zconf.tab.c_shipped
+       cp $< $@
+
+zconf.tab.h: $(srcdir)/zconf.tab.h_shipped
+       cp $< $@
+endif
+
+zconf.tab.o: zconf.tab.c lex.zconf.c $(srcdir)/confdata.c $(srcdir)/expr.c \
+             $(srcdir)/symbol.c $(srcdir)/menu.c $(SHARED_DEPS)
+       $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -I. -c $< -o $@
+
+.PHONY: ncurses
+
+ncurses:
+       @echo "main() {}" > lxtemp.c
+       @if $(HOSTCC) lxtemp.c $(LIBS) ; then \
+               rm -f lxtemp.c a.out; \
+       else \
+               rm -f lxtemp.c; \
+               echo -e "\007" ;\
+               echo ">> Unable to find the Ncurses libraries." ;\
+               echo ">>" ;\
+               echo ">> You must have Ncurses installed in order" ;\
+               echo ">> to use 'make menuconfig'" ;\
+               echo ;\
+               exit 1 ;\
+       fi
+
+clean:
+       rm -f *.o *~ ../../*~ core *.exe $(TARGETS) $(MCONF_OBJS) $(CONF_OBJS)
+       rm -f conf conf.exe mconf mconf.exe zconf.tab.c zconf.tab.h lex.zconf.c lkc_defs.h
+       rm -f ../..config.h
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c
new file mode 100644 (file)
index 0000000..1524467
--- /dev/null
@@ -0,0 +1,583 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/stat.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+static void conf(struct menu *menu);
+static void check_conf(struct menu *menu);
+
+enum {
+       ask_all,
+       ask_new,
+       ask_silent,
+       set_default,
+       set_yes,
+       set_mod,
+       set_no,
+       set_random
+} input_mode = ask_all;
+char *defconfig_file;
+
+static int indent = 1;
+static int valid_stdin = 1;
+static int conf_cnt;
+static char line[128];
+static struct menu *rootEntry;
+
+static char nohelp_text[] = "Sorry, no help available for this option yet.\n";
+
+static void strip(char *str)
+{
+       char *p = str;
+       int l;
+
+       while ((isspace(*p)))
+               p++;
+       l = strlen(p);
+       if (p != str)
+               memmove(str, p, l + 1);
+       if (!l)
+               return;
+       p = str + l - 1;
+       while ((isspace(*p)))
+               *p-- = 0;
+}
+
+static void check_stdin(void)
+{
+       if (!valid_stdin && input_mode == ask_silent) {
+               printf("aborted!\n\n");
+               printf("Console input/output is redirected. ");
+               printf("Run 'make oldconfig' to update configuration.\n\n");
+               exit(1);
+       }
+}
+
+static void conf_askvalue(struct symbol *sym, const char *def)
+{
+       enum symbol_type type = sym_get_type(sym);
+       tristate val;
+
+       if (!sym_has_value(sym))
+               printf("(NEW) ");
+
+       line[0] = '\n';
+       line[1] = 0;
+
+       if (!sym_is_changable(sym)) {
+               printf("%s\n", def);
+               line[0] = '\n';
+               line[1] = 0;
+               return;
+       }
+
+       switch (input_mode) {
+       case ask_new:
+       case ask_silent:
+               if (sym_has_value(sym)) {
+                       printf("%s\n", def);
+                       return;
+               }
+               check_stdin();
+       case ask_all:
+               fflush(stdout);
+               fgets(line, 128, stdin);
+               return;
+       case set_default:
+               printf("%s\n", def);
+               return;
+       default:
+               break;
+       }
+
+       switch (type) {
+       case S_INT:
+       case S_HEX:
+       case S_STRING:
+               printf("%s\n", def);
+               return;
+       default:
+               ;
+       }
+       switch (input_mode) {
+       case set_yes:
+               if (sym_tristate_within_range(sym, yes)) {
+                       line[0] = 'y';
+                       line[1] = '\n';
+                       line[2] = 0;
+                       break;
+               }
+       case set_mod:
+               if (type == S_TRISTATE) {
+                       if (sym_tristate_within_range(sym, mod)) {
+                               line[0] = 'm';
+                               line[1] = '\n';
+                               line[2] = 0;
+                               break;
+                       }
+               } else {
+                       if (sym_tristate_within_range(sym, yes)) {
+                               line[0] = 'y';
+                               line[1] = '\n';
+                               line[2] = 0;
+                               break;
+                       }
+               }
+       case set_no:
+               if (sym_tristate_within_range(sym, no)) {
+                       line[0] = 'n';
+                       line[1] = '\n';
+                       line[2] = 0;
+                       break;
+               }
+       case set_random:
+               do {
+                       val = (tristate)(random() % 3);
+               } while (!sym_tristate_within_range(sym, val));
+               switch (val) {
+               case no: line[0] = 'n'; break;
+               case mod: line[0] = 'm'; break;
+               case yes: line[0] = 'y'; break;
+               }
+               line[1] = '\n';
+               line[2] = 0;
+               break;
+       default:
+               break;
+       }
+       printf("%s", line);
+}
+
+int conf_string(struct menu *menu)
+{
+       struct symbol *sym = menu->sym;
+       const char *def, *help;
+
+       while (1) {
+               printf("%*s%s ", indent - 1, "", menu->prompt->text);
+               printf("(%s) ", sym->name);
+               def = sym_get_string_value(sym);
+               if (sym_get_string_value(sym))
+                       printf("[%s] ", def);
+               conf_askvalue(sym, def);
+               switch (line[0]) {
+               case '\n':
+                       break;
+               case '?':
+                       /* print help */
+                       if (line[1] == '\n') {
+                               help = nohelp_text;
+                               if (menu->sym->help)
+                                       help = menu->sym->help;
+                               printf("\n%s\n", menu->sym->help);
+                               def = NULL;
+                               break;
+                       }
+               default:
+                       line[strlen(line)-1] = 0;
+                       def = line;
+               }
+               if (def && sym_set_string_value(sym, def))
+                       return 0;
+       }
+}
+
+static int conf_sym(struct menu *menu)
+{
+       struct symbol *sym = menu->sym;
+       int type;
+       tristate oldval, newval;
+       const char *help;
+
+       while (1) {
+               printf("%*s%s ", indent - 1, "", menu->prompt->text);
+               if (sym->name)
+                       printf("(%s) ", sym->name);
+               type = sym_get_type(sym);
+               putchar('[');
+               oldval = sym_get_tristate_value(sym);
+               switch (oldval) {
+               case no:
+                       putchar('N');
+                       break;
+               case mod:
+                       putchar('M');
+                       break;
+               case yes:
+                       putchar('Y');
+                       break;
+               }
+               if (oldval != no && sym_tristate_within_range(sym, no))
+                       printf("/n");
+               if (oldval != mod && sym_tristate_within_range(sym, mod))
+                       printf("/m");
+               if (oldval != yes && sym_tristate_within_range(sym, yes))
+                       printf("/y");
+               if (sym->help)
+                       printf("/?");
+               printf("] ");
+               conf_askvalue(sym, sym_get_string_value(sym));
+               strip(line);
+
+               switch (line[0]) {
+               case 'n':
+               case 'N':
+                       newval = no;
+                       if (!line[1] || !strcmp(&line[1], "o"))
+                               break;
+                       continue;
+               case 'm':
+               case 'M':
+                       newval = mod;
+                       if (!line[1])
+                               break;
+                       continue;
+               case 'y':
+               case 'Y':
+                       newval = yes;
+                       if (!line[1] || !strcmp(&line[1], "es"))
+                               break;
+                       continue;
+               case 0:
+                       newval = oldval;
+                       break;
+               case '?':
+                       goto help;
+               default:
+                       continue;
+               }
+               if (sym_set_tristate_value(sym, newval))
+                       return 0;
+help:
+               help = nohelp_text;
+               if (sym->help)
+                       help = sym->help;
+               printf("\n%s\n", help);
+       }
+}
+
+static int conf_choice(struct menu *menu)
+{
+       struct symbol *sym, *def_sym;
+       struct menu *child;
+       int type;
+       bool is_new;
+
+       sym = menu->sym;
+       type = sym_get_type(sym);
+       is_new = !sym_has_value(sym);
+       if (sym_is_changable(sym)) {
+               conf_sym(menu);
+               sym_calc_value(sym);
+               switch (sym_get_tristate_value(sym)) {
+               case no:
+                       return 1;
+               case mod:
+                       return 0;
+               case yes:
+                       break;
+               }
+       } else {
+               switch (sym_get_tristate_value(sym)) {
+               case no:
+                       return 1;
+               case mod:
+                       printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
+                       return 0;
+               case yes:
+                       break;
+               }
+       }
+
+       while (1) {
+               int cnt, def;
+
+               printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
+               def_sym = sym_get_choice_value(sym);
+               cnt = def = 0;
+               line[0] = '0';
+               line[1] = 0;
+               for (child = menu->list; child; child = child->next) {
+                       if (!menu_is_visible(child))
+                               continue;
+                       if (!child->sym) {
+                               printf("%*c %s\n", indent, '*', menu_get_prompt(child));
+                               continue;
+                       }
+                       cnt++;
+                       if (child->sym == def_sym) {
+                               def = cnt;
+                               printf("%*c", indent, '>');
+                       } else
+                               printf("%*c", indent, ' ');
+                       printf(" %d. %s", cnt, menu_get_prompt(child));
+                       if (child->sym->name)
+                               printf(" (%s)", child->sym->name);
+                       if (!sym_has_value(child->sym))
+                               printf(" (NEW)");
+                       printf("\n");
+               }
+               printf("%*schoice", indent - 1, "");
+               if (cnt == 1) {
+                       printf("[1]: 1\n");
+                       goto conf_childs;
+               }
+               printf("[1-%d", cnt);
+               if (sym->help)
+                       printf("?");
+               printf("]: ");
+               switch (input_mode) {
+               case ask_new:
+               case ask_silent:
+                       if (!is_new) {
+                               cnt = def;
+                               printf("%d\n", cnt);
+                               break;
+                       }
+                       check_stdin();
+               case ask_all:
+                       fflush(stdout);
+                       fgets(line, 128, stdin);
+                       strip(line);
+                       if (line[0] == '?') {
+                               printf("\n%s\n", menu->sym->help ?
+                                       menu->sym->help : nohelp_text);
+                               continue;
+                       }
+                       if (!line[0])
+                               cnt = def;
+                       else if (isdigit(line[0]))
+                               cnt = atoi(line);
+                       else
+                               continue;
+                       break;
+               case set_random:
+                       def = (random() % cnt) + 1;
+               case set_default:
+               case set_yes:
+               case set_mod:
+               case set_no:
+                       cnt = def;
+                       printf("%d\n", cnt);
+                       break;
+               }
+
+       conf_childs:
+               for (child = menu->list; child; child = child->next) {
+                       if (!child->sym || !menu_is_visible(child))
+                               continue;
+                       if (!--cnt)
+                               break;
+               }
+               if (!child)
+                       continue;
+               if (line[strlen(line) - 1] == '?') {
+                       printf("\n%s\n", child->sym->help ?
+                               child->sym->help : nohelp_text);
+                       continue;
+               }
+               sym_set_choice_value(sym, child->sym);
+               if (child->list) {
+                       indent += 2;
+                       conf(child->list);
+                       indent -= 2;
+               }
+               return 1;
+       }
+}
+
+static void conf(struct menu *menu)
+{
+       struct symbol *sym;
+       struct property *prop;
+       struct menu *child;
+
+       if (!menu_is_visible(menu))
+               return;
+
+       sym = menu->sym;
+       prop = menu->prompt;
+       if (prop) {
+               const char *prompt;
+
+               switch (prop->type) {
+               case P_MENU:
+                       if (input_mode == ask_silent && rootEntry != menu) {
+                               check_conf(menu);
+                               return;
+                       }
+               case P_COMMENT:
+                       prompt = menu_get_prompt(menu);
+                       if (prompt)
+                               printf("%*c\n%*c %s\n%*c\n",
+                                       indent, '*',
+                                       indent, '*', prompt,
+                                       indent, '*');
+               default:
+                       ;
+               }
+       }
+
+       if (!sym)
+               goto conf_childs;
+
+       if (sym_is_choice(sym)) {
+               conf_choice(menu);
+               if (sym->curr.tri != mod)
+                       return;
+               goto conf_childs;
+       }
+
+       switch (sym->type) {
+       case S_INT:
+       case S_HEX:
+       case S_STRING:
+               conf_string(menu);
+               break;
+       default:
+               conf_sym(menu);
+               break;
+       }
+
+conf_childs:
+       if (sym)
+               indent += 2;
+       for (child = menu->list; child; child = child->next)
+               conf(child);
+       if (sym)
+               indent -= 2;
+}
+
+static void check_conf(struct menu *menu)
+{
+       struct symbol *sym;
+       struct menu *child;
+
+       if (!menu_is_visible(menu))
+               return;
+
+       sym = menu->sym;
+       if (sym) {
+               if (sym_is_changable(sym) && !sym_has_value(sym)) {
+                       if (!conf_cnt++)
+                               printf("*\n* Restart config...\n*\n");
+                       rootEntry = menu_get_parent_menu(menu);
+                       conf(rootEntry);
+               }
+               if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod)
+                       return;
+       }
+
+       for (child = menu->list; child; child = child->next)
+               check_conf(child);
+}
+
+int main(int ac, char **av)
+{
+       int i = 1;
+       const char *name;
+       struct stat tmpstat;
+
+       if (ac > i && av[i][0] == '-') {
+               switch (av[i++][1]) {
+               case 'o':
+                       input_mode = ask_new;
+                       break;
+               case 's':
+                       input_mode = ask_silent;
+                       valid_stdin = isatty(0) && isatty(1) && isatty(2);
+                       break;
+               case 'd':
+                       input_mode = set_default;
+                       break;
+               case 'D':
+                       input_mode = set_default;
+                       defconfig_file = av[i++];
+                       if (!defconfig_file) {
+                               printf("%s: No default config file specified\n",
+                                       av[0]);
+                               exit(1);
+                       }
+                       break;
+               case 'n':
+                       input_mode = set_no;
+                       break;
+               case 'm':
+                       input_mode = set_mod;
+                       break;
+               case 'y':
+                       input_mode = set_yes;
+                       break;
+               case 'r':
+                       input_mode = set_random;
+                       srandom(time(NULL));
+                       break;
+               case 'h':
+               case '?':
+                       printf("%s [-o|-s] config\n", av[0]);
+                       exit(0);
+               }
+       }
+       name = av[i];
+       if (!name) {
+               printf("%s: configuration file missing\n", av[0]);
+       }
+       conf_parse(name);
+       //zconfdump(stdout);
+       switch (input_mode) {
+       case set_default:
+               if (!defconfig_file)
+                       defconfig_file = conf_get_default_confname();
+               if (conf_read(defconfig_file)) {
+                       printf("***\n"
+                               "*** Can't find default configuration \"%s\"!\n"
+                               "***\n", defconfig_file);
+                       exit(1);
+               }
+               break;
+       case ask_silent:
+               if (stat(".config", &tmpstat)) {
+                       printf("***\n"
+                               "*** You have not yet configured axTLS!\n"
+                               "***\n"
+                               "*** Please run some configurator (e.g. \"make oldconfig\" or\n"
+                               "*** \"make menuconfig\" or \"make config\").\n"
+                               "***\n");
+                       exit(1);
+               }
+       case ask_all:
+       case ask_new:
+               conf_read(NULL);
+               break;
+       default:
+               break;
+       }
+
+       if (input_mode != ask_silent) {
+               rootEntry = &rootmenu;
+               conf(&rootmenu);
+               if (input_mode == ask_all) {
+                       input_mode = ask_silent;
+                       valid_stdin = 1;
+               }
+       }
+       do {
+               conf_cnt = 0;
+               check_conf(&rootmenu);
+       } while (conf_cnt);
+       if (conf_write(NULL)) {
+               fprintf(stderr, "\n*** Error during writing of the axTLS configuration.\n\n");
+               return 1;
+       }
+       return 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c
new file mode 100644 (file)
index 0000000..a59e245
--- /dev/null
@@ -0,0 +1,458 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <sys/stat.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+const char conf_def_filename[] = "config/.config";
+
+const char conf_defname[] = "config/defconfig";
+
+const char *conf_confnames[] = {
+       "config/.config",
+       conf_defname,
+       NULL,
+};
+
+static char *conf_expand_value(const char *in)
+{
+       struct symbol *sym;
+       const char *src;
+       static char res_value[SYMBOL_MAXLENGTH];
+       char *dst, name[SYMBOL_MAXLENGTH];
+
+       res_value[0] = 0;
+       dst = name;
+       while ((src = strchr(in, '$'))) {
+               strncat(res_value, in, src - in);
+               src++;
+               dst = name;
+               while (isalnum(*src) || *src == '_')
+                       *dst++ = *src++;
+               *dst = 0;
+               sym = sym_lookup(name, 0);
+               sym_calc_value(sym);
+               strcat(res_value, sym_get_string_value(sym));
+               in = src;
+       }
+       strcat(res_value, in);
+
+       return res_value;
+}
+
+char *conf_get_default_confname(void)
+{
+       struct stat buf;
+       static char fullname[PATH_MAX+1];
+       char *env, *name;
+
+       name = conf_expand_value(conf_defname);
+       env = getenv(SRCTREE);
+       if (env) {
+               sprintf(fullname, "%s/%s", env, name);
+               if (!stat(fullname, &buf))
+                       return fullname;
+       }
+       return name;
+}
+
+int conf_read(const char *name)
+{
+       FILE *in = NULL;
+       char line[1024];
+       char *p, *p2;
+       int lineno = 0;
+       struct symbol *sym;
+       struct property *prop;
+       struct expr *e;
+       int i;
+
+       if (name) {
+               in = zconf_fopen(name);
+       } else {
+               const char **names = conf_confnames;
+               while ((name = *names++)) {
+                       name = conf_expand_value(name);
+                       in = zconf_fopen(name);
+                       if (in) {
+                               printf("#\n"
+                                      "# using defaults found in %s\n"
+                                      "#\n", name);
+                               break;
+                       }
+               }
+       }
+
+       if (!in)
+               return 1;
+
+       for_all_symbols(i, sym) {
+               sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED;
+               sym->flags &= ~SYMBOL_VALID;
+               switch (sym->type) {
+               case S_INT:
+               case S_HEX:
+               case S_STRING:
+                       if (sym->user.val)
+                               free(sym->user.val);
+               default:
+                       sym->user.val = NULL;
+                       sym->user.tri = no;
+               }
+       }
+
+       while (fgets(line, sizeof(line), in)) {
+               lineno++;
+               sym = NULL;
+               switch (line[0]) {
+               case '#':
+                       if (line[1]!=' ')
+                               continue;
+                       p = strchr(line + 2, ' ');
+                       if (!p)
+                               continue;
+                       *p++ = 0;
+                       if (strncmp(p, "is not set", 10))
+                               continue;
+                       sym = sym_find(line + 2);
+                       if (!sym) {
+                               fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 2);
+                               break;
+                       }
+                       switch (sym->type) {
+                       case S_BOOLEAN:
+                       case S_TRISTATE:
+                               sym->user.tri = no;
+                               sym->flags &= ~SYMBOL_NEW;
+                               break;
+                       default:
+                               ;
+                       }
+                       break;
+
+               case 'A' ... 'Z':
+                       p = strchr(line, '=');
+                       if (!p)
+                               continue;
+                       *p++ = 0;
+                       p2 = strchr(p, '\n');
+                       if (p2)
+                               *p2 = 0;
+                       sym = sym_find(line);
+                       if (!sym) {
+                               fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line);
+                               break;
+                       }
+                       switch (sym->type) {
+                       case S_TRISTATE:
+                               if (p[0] == 'm') {
+                                       sym->user.tri = mod;
+                                       sym->flags &= ~SYMBOL_NEW;
+                                       break;
+                               }
+                       case S_BOOLEAN:
+                               if (p[0] == 'y') {
+                                       sym->user.tri = yes;
+                                       sym->flags &= ~SYMBOL_NEW;
+                                       break;
+                               }
+                               if (p[0] == 'n') {
+                                       sym->user.tri = no;
+                                       sym->flags &= ~SYMBOL_NEW;
+                                       break;
+                               }
+                               break;
+                       case S_STRING:
+                               if (*p++ != '"')
+                                       break;
+                               for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
+                                       if (*p2 == '"') {
+                                               *p2 = 0;
+                                               break;
+                                       }
+                                       memmove(p2, p2 + 1, strlen(p2));
+                               }
+                               if (!p2) {
+                                       fprintf(stderr, "%s:%d: invalid string found\n", name, lineno);
+                                       exit(1);
+                               }
+                       case S_INT:
+                       case S_HEX:
+                               if (sym_string_valid(sym, p)) {
+                                       sym->user.val = strdup(p);
+                                       sym->flags &= ~SYMBOL_NEW;
+                               } else {
+                                       fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name);
+                                       exit(1);
+                               }
+                               break;
+                       default:
+                               ;
+                       }
+                       break;
+               case '\n':
+                       break;
+               default:
+                       continue;
+               }
+               if (sym && sym_is_choice_value(sym)) {
+                       struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+                       switch (sym->user.tri) {
+                       case no:
+                               break;
+                       case mod:
+                               if (cs->user.tri == yes)
+                                       /* warn? */;
+                               break;
+                       case yes:
+                               if (cs->user.tri != no)
+                                       /* warn? */;
+                               cs->user.val = sym;
+                               break;
+                       }
+                       cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
+                       cs->flags &= ~SYMBOL_NEW;
+               }
+       }
+       fclose(in);
+
+       if (modules_sym)
+               sym_calc_value(modules_sym);
+       for_all_symbols(i, sym) {
+               sym_calc_value(sym);
+               if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
+                       if (sym->visible == no)
+                               sym->flags |= SYMBOL_NEW;
+                       switch (sym->type) {
+                       case S_STRING:
+                       case S_INT:
+                       case S_HEX:
+                               if (!sym_string_within_range(sym, sym->user.val))
+                                       sym->flags |= SYMBOL_NEW;
+                       default:
+                               break;
+                       }
+               }
+               if (!sym_is_choice(sym))
+                       continue;
+               prop = sym_get_choice_prop(sym);
+               for (e = prop->expr; e; e = e->left.expr)
+                       if (e->right.sym->visible != no)
+                               sym->flags |= e->right.sym->flags & SYMBOL_NEW;
+       }
+
+       sym_change_count = 1;
+
+       return 0;
+}
+
+struct menu *next_menu(struct menu *menu)
+{
+       if (menu->list) return menu->list;
+       do {
+               if (menu->next) {
+                       menu = menu->next;
+                       break;
+               }
+       } while ((menu = menu->parent));
+       
+       return menu;
+}
+
+#define SYMBOL_FORCEWRITE (1<<31)
+
+int conf_write(const char *name)
+{
+       FILE *out, *out_h;
+       struct symbol *sym;
+       struct menu *menu;
+       const char *basename;
+       char dirname[128], tmpname[128], newname[128];
+       int type, l;
+       const char *str;
+
+       dirname[0] = 0;
+       if (name && name[0]) {
+               struct stat st;
+               char *slash;
+
+               if (!stat(name, &st) && S_ISDIR(st.st_mode)) {
+                       strcpy(dirname, name);
+                       strcat(dirname, "/");
+                       basename = conf_def_filename;
+               } else if ((slash = strrchr(name, '/'))) {
+                       int size = slash - name + 1;
+                       memcpy(dirname, name, size);
+                       dirname[size] = 0;
+                       if (slash[1])
+                               basename = slash + 1;
+                       else
+                               basename = conf_def_filename;
+               } else
+                       basename = name;
+       } else
+               basename = conf_def_filename;
+
+       sprintf(newname, "config/%s.tmpconfig.%d", dirname, (int)getpid());
+       out = fopen(newname, "w");
+       if (!out)
+               return 1;
+       out_h = NULL;
+       if (!name) {
+               out_h = fopen("config/.tmpconfig.h", "w");
+               if (!out_h)
+                       return 1;
+       }
+       fprintf(out, "#\n"
+                    "# Automatically generated make config: don't edit\n"
+                    "#\n");
+       if (out_h) {
+               fprintf(out_h, "/*\n"
+                            " * Automatically generated header file: don't edit\n"
+                            " */\n\n");
+#if 0
+                            "/* Version Number */\n"
+                            "#define BB_VER \"%s\"\n"
+                            "#define BB_BT \"%s\"\n",
+                            getenv("VERSION"),
+                            getenv("BUILDTIME"));
+               if (getenv("EXTRA_VERSION"))
+                       fprintf(out_h, "#define BB_EXTRA_VERSION \"%s\"\n",
+                                    getenv("EXTRA_VERSION"));
+               fprintf(out_h, "\n");
+#endif
+       }
+
+       if (!sym_change_count)
+               sym_clear_all_valid();
+
+       /* Force write of all non-duplicate symbols. */
+
+       /* Write out everything by default. */
+       for(menu = rootmenu.list; menu; menu = next_menu(menu))
+               if (menu->sym) menu->sym->flags |= SYMBOL_FORCEWRITE;
+
+       menu = rootmenu.list;
+       while (menu) {
+               sym = menu->sym;
+               if (!sym) {
+                       if (!menu_is_visible(menu))
+                               goto next;
+                       str = menu_get_prompt(menu);
+                       fprintf(out, "\n"
+                                    "#\n"
+                                    "# %s\n"
+                                    "#\n", str);
+                       if (out_h)
+                               fprintf(out_h, "\n"
+                                              "/*\n"
+                                              " * %s\n"
+                                              " */\n", str);
+               } else if (!(sym->flags & SYMBOL_CHOICE)) {
+                       sym_calc_value(sym);
+                       if (!(sym->flags & SYMBOL_FORCEWRITE))
+                               goto next;
+
+                       sym->flags &= ~SYMBOL_FORCEWRITE;
+                       type = sym->type;
+                       if (type == S_TRISTATE) {
+                               sym_calc_value(modules_sym);
+                               if (modules_sym->curr.tri == no)
+                                       type = S_BOOLEAN;
+                       }
+                       switch (type) {
+                       case S_BOOLEAN:
+                       case S_TRISTATE:
+                               switch (sym_get_tristate_value(sym)) {
+                               case no:
+                                       fprintf(out, "# %s is not set\n", sym->name);
+                                       if (out_h)
+                                               fprintf(out_h, "#undef %s\n", sym->name);
+                                       break;
+                               case mod:
+#if 0
+                                       fprintf(out, "%s=m\n", sym->name);
+                                       if (out_h)
+                                               fprintf(out_h, "#define %s_MODULE 1\n", sym->name);
+#endif
+                                       break;
+                               case yes:
+                                       fprintf(out, "%s=y\n", sym->name);
+                                       if (out_h)
+                                               fprintf(out_h, "#define %s 1\n", sym->name);
+                                       break;
+                               }
+                               break;
+                       case S_STRING:
+                               // fix me
+                               str = sym_get_string_value(sym);
+                               fprintf(out, "%s=\"", sym->name);
+                               if (out_h)
+                                       fprintf(out_h, "#define %s \"", sym->name);
+                               do {
+                                       l = strcspn(str, "\"\\");
+                                       if (l) {
+                                               fwrite(str, l, 1, out);
+                                               if (out_h)
+                                                       fwrite(str, l, 1, out_h);
+                                       }
+                                       str += l;
+                                       while (*str == '\\' || *str == '"') {
+                                               fprintf(out, "\\%c", *str);
+                                               if (out_h)
+                                                       fprintf(out_h, "\\%c", *str);
+                                               str++;
+                                       }
+                               } while (*str);
+                               fputs("\"\n", out);
+                               if (out_h)
+                                       fputs("\"\n", out_h);
+                               break;
+                       case S_HEX:
+                               str = sym_get_string_value(sym);
+                               if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
+                                       fprintf(out, "%s=%s\n", sym->name, *str ? str : "0");
+                                       if (out_h)
+                                               fprintf(out_h, "#define %s 0x%s\n", sym->name, str);
+                                       break;
+                               }
+                       case S_INT:
+                               str = sym_get_string_value(sym);
+                               fprintf(out, "%s=%s\n", sym->name, *str ? str : "0");
+                               if (out_h)
+                                       fprintf(out_h, "#define %s %s\n", sym->name, str);
+                               break;
+                       }
+               }
+next:
+               menu = next_menu(menu);
+       }
+       fclose(out);
+       if (out_h) {
+               fclose(out_h);
+               rename("config/.tmpconfig.h", "config/config.h");
+               file_write_dep(NULL);
+       }
+       if (!name || basename != conf_def_filename) {
+               if (!name)
+                       name = conf_def_filename;
+               sprintf(tmpname, "%s.old", name);
+               rename(name, tmpname);
+       }
+       sprintf(tmpname, "%s%s", dirname, basename);
+       if (rename(newname, tmpname))
+               return 1;
+
+       sym_change_count = 0;
+
+       return 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c
new file mode 100644 (file)
index 0000000..30e4f9d
--- /dev/null
@@ -0,0 +1,1099 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define DEBUG_EXPR     0
+
+struct expr *expr_alloc_symbol(struct symbol *sym)
+{
+       struct expr *e = malloc(sizeof(*e));
+       memset(e, 0, sizeof(*e));
+       e->type = E_SYMBOL;
+       e->left.sym = sym;
+       return e;
+}
+
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
+{
+       struct expr *e = malloc(sizeof(*e));
+       memset(e, 0, sizeof(*e));
+       e->type = type;
+       e->left.expr = ce;
+       return e;
+}
+
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
+{
+       struct expr *e = malloc(sizeof(*e));
+       memset(e, 0, sizeof(*e));
+       e->type = type;
+       e->left.expr = e1;
+       e->right.expr = e2;
+       return e;
+}
+
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
+{
+       struct expr *e = malloc(sizeof(*e));
+       memset(e, 0, sizeof(*e));
+       e->type = type;
+       e->left.sym = s1;
+       e->right.sym = s2;
+       return e;
+}
+
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
+{
+       if (!e1)
+               return e2;
+       return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
+}
+
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
+{
+       if (!e1)
+               return e2;
+       return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
+}
+
+struct expr *expr_copy(struct expr *org)
+{
+       struct expr *e;
+
+       if (!org)
+               return NULL;
+
+       e = malloc(sizeof(*org));
+       memcpy(e, org, sizeof(*org));
+       switch (org->type) {
+       case E_SYMBOL:
+               e->left = org->left;
+               break;
+       case E_NOT:
+               e->left.expr = expr_copy(org->left.expr);
+               break;
+       case E_EQUAL:
+       case E_UNEQUAL:
+               e->left.sym = org->left.sym;
+               e->right.sym = org->right.sym;
+               break;
+       case E_AND:
+       case E_OR:
+       case E_CHOICE:
+               e->left.expr = expr_copy(org->left.expr);
+               e->right.expr = expr_copy(org->right.expr);
+               break;
+       default:
+               printf("can't copy type %d\n", e->type);
+               free(e);
+               e = NULL;
+               break;
+       }
+
+       return e;
+}
+
+void expr_free(struct expr *e)
+{
+       if (!e)
+               return;
+
+       switch (e->type) {
+       case E_SYMBOL:
+               break;
+       case E_NOT:
+               expr_free(e->left.expr);
+               return;
+       case E_EQUAL:
+       case E_UNEQUAL:
+               break;
+       case E_OR:
+       case E_AND:
+               expr_free(e->left.expr);
+               expr_free(e->right.expr);
+               break;
+       default:
+               printf("how to free type %d?\n", e->type);
+               break;
+       }
+       free(e);
+}
+
+static int trans_count;
+
+#define e1 (*ep1)
+#define e2 (*ep2)
+
+static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+       if (e1->type == type) {
+               __expr_eliminate_eq(type, &e1->left.expr, &e2);
+               __expr_eliminate_eq(type, &e1->right.expr, &e2);
+               return;
+       }
+       if (e2->type == type) {
+               __expr_eliminate_eq(type, &e1, &e2->left.expr);
+               __expr_eliminate_eq(type, &e1, &e2->right.expr);
+               return;
+       }
+       if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+           e1->left.sym == e2->left.sym && (e1->left.sym->flags & (SYMBOL_YES|SYMBOL_NO)))
+               return;
+       if (!expr_eq(e1, e2))
+               return;
+       trans_count++;
+       expr_free(e1); expr_free(e2);
+       switch (type) {
+       case E_OR:
+               e1 = expr_alloc_symbol(&symbol_no);
+               e2 = expr_alloc_symbol(&symbol_no);
+               break;
+       case E_AND:
+               e1 = expr_alloc_symbol(&symbol_yes);
+               e2 = expr_alloc_symbol(&symbol_yes);
+               break;
+       default:
+               ;
+       }
+}
+
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
+{
+       if (!e1 || !e2)
+               return;
+       switch (e1->type) {
+       case E_OR:
+       case E_AND:
+               __expr_eliminate_eq(e1->type, ep1, ep2);
+       default:
+               ;
+       }
+       if (e1->type != e2->type) switch (e2->type) {
+       case E_OR:
+       case E_AND:
+               __expr_eliminate_eq(e2->type, ep1, ep2);
+       default:
+               ;
+       }
+       e1 = expr_eliminate_yn(e1);
+       e2 = expr_eliminate_yn(e2);
+}
+
+#undef e1
+#undef e2
+
+int expr_eq(struct expr *e1, struct expr *e2)
+{
+       int res, old_count;
+
+       if (e1->type != e2->type)
+               return 0;
+       switch (e1->type) {
+       case E_EQUAL:
+       case E_UNEQUAL:
+               return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;
+       case E_SYMBOL:
+               return e1->left.sym == e2->left.sym;
+       case E_NOT:
+               return expr_eq(e1->left.expr, e2->left.expr);
+       case E_AND:
+       case E_OR:
+               e1 = expr_copy(e1);
+               e2 = expr_copy(e2);
+               old_count = trans_count;
+               expr_eliminate_eq(&e1, &e2);
+               res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+                      e1->left.sym == e2->left.sym);
+               expr_free(e1);
+               expr_free(e2);
+               trans_count = old_count;
+               return res;
+       case E_CHOICE:
+       case E_RANGE:
+       case E_NONE:
+               /* panic */;
+       }
+
+       if (DEBUG_EXPR) {
+               expr_fprint(e1, stdout);
+               printf(" = ");
+               expr_fprint(e2, stdout);
+               printf(" ?\n");
+       }
+
+       return 0;
+}
+
+struct expr *expr_eliminate_yn(struct expr *e)
+{
+       struct expr *tmp;
+
+       if (e) switch (e->type) {
+       case E_AND:
+               e->left.expr = expr_eliminate_yn(e->left.expr);
+               e->right.expr = expr_eliminate_yn(e->right.expr);
+               if (e->left.expr->type == E_SYMBOL) {
+                       if (e->left.expr->left.sym == &symbol_no) {
+                               expr_free(e->left.expr);
+                               expr_free(e->right.expr);
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_no;
+                               e->right.expr = NULL;
+                               return e;
+                       } else if (e->left.expr->left.sym == &symbol_yes) {
+                               free(e->left.expr);
+                               tmp = e->right.expr;
+                               *e = *(e->right.expr);
+                               free(tmp);
+                               return e;
+                       }
+               }
+               if (e->right.expr->type == E_SYMBOL) {
+                       if (e->right.expr->left.sym == &symbol_no) {
+                               expr_free(e->left.expr);
+                               expr_free(e->right.expr);
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_no;
+                               e->right.expr = NULL;
+                               return e;
+                       } else if (e->right.expr->left.sym == &symbol_yes) {
+                               free(e->right.expr);
+                               tmp = e->left.expr;
+                               *e = *(e->left.expr);
+                               free(tmp);
+                               return e;
+                       }
+               }
+               break;
+       case E_OR:
+               e->left.expr = expr_eliminate_yn(e->left.expr);
+               e->right.expr = expr_eliminate_yn(e->right.expr);
+               if (e->left.expr->type == E_SYMBOL) {
+                       if (e->left.expr->left.sym == &symbol_no) {
+                               free(e->left.expr);
+                               tmp = e->right.expr;
+                               *e = *(e->right.expr);
+                               free(tmp);
+                               return e;
+                       } else if (e->left.expr->left.sym == &symbol_yes) {
+                               expr_free(e->left.expr);
+                               expr_free(e->right.expr);
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_yes;
+                               e->right.expr = NULL;
+                               return e;
+                       }
+               }
+               if (e->right.expr->type == E_SYMBOL) {
+                       if (e->right.expr->left.sym == &symbol_no) {
+                               free(e->right.expr);
+                               tmp = e->left.expr;
+                               *e = *(e->left.expr);
+                               free(tmp);
+                               return e;
+                       } else if (e->right.expr->left.sym == &symbol_yes) {
+                               expr_free(e->left.expr);
+                               expr_free(e->right.expr);
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_yes;
+                               e->right.expr = NULL;
+                               return e;
+                       }
+               }
+               break;
+       default:
+               ;
+       }
+       return e;
+}
+
+/*
+ * bool FOO!=n => FOO
+ */
+struct expr *expr_trans_bool(struct expr *e)
+{
+       if (!e)
+               return NULL;
+       switch (e->type) {
+       case E_AND:
+       case E_OR:
+       case E_NOT:
+               e->left.expr = expr_trans_bool(e->left.expr);
+               e->right.expr = expr_trans_bool(e->right.expr);
+               break;
+       case E_UNEQUAL:
+               // FOO!=n -> FOO
+               if (e->left.sym->type == S_TRISTATE) {
+                       if (e->right.sym == &symbol_no) {
+                               e->type = E_SYMBOL;
+                               e->right.sym = NULL;
+                       }
+               }
+               break;
+       default:
+               ;
+       }
+       return e;
+}
+
+/*
+ * e1 || e2 -> ?
+ */
+struct expr *expr_join_or(struct expr *e1, struct expr *e2)
+{
+       struct expr *tmp;
+       struct symbol *sym1, *sym2;
+
+       if (expr_eq(e1, e2))
+               return expr_copy(e1);
+       if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+               return NULL;
+       if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+               return NULL;
+       if (e1->type == E_NOT) {
+               tmp = e1->left.expr;
+               if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+                       return NULL;
+               sym1 = tmp->left.sym;
+       } else
+               sym1 = e1->left.sym;
+       if (e2->type == E_NOT) {
+               if (e2->left.expr->type != E_SYMBOL)
+                       return NULL;
+               sym2 = e2->left.expr->left.sym;
+       } else
+               sym2 = e2->left.sym;
+       if (sym1 != sym2)
+               return NULL;
+       if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+               return NULL;
+       if (sym1->type == S_TRISTATE) {
+               if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+                   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+                    (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
+                       // (a='y') || (a='m') -> (a!='n')
+                       return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);
+               }
+               if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+                   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+                    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
+                       // (a='y') || (a='n') -> (a!='m')
+                       return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);
+               }
+               if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+                   ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+                    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
+                       // (a='m') || (a='n') -> (a!='y')
+                       return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);
+               }
+       }
+       if (sym1->type == S_BOOLEAN && sym1 == sym2) {
+               if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
+                   (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
+                       return expr_alloc_symbol(&symbol_yes);
+       }
+
+       if (DEBUG_EXPR) {
+               printf("optimize (");
+               expr_fprint(e1, stdout);
+               printf(") || (");
+               expr_fprint(e2, stdout);
+               printf(")?\n");
+       }
+       return NULL;
+}
+
+struct expr *expr_join_and(struct expr *e1, struct expr *e2)
+{
+       struct expr *tmp;
+       struct symbol *sym1, *sym2;
+
+       if (expr_eq(e1, e2))
+               return expr_copy(e1);
+       if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+               return NULL;
+       if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+               return NULL;
+       if (e1->type == E_NOT) {
+               tmp = e1->left.expr;
+               if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+                       return NULL;
+               sym1 = tmp->left.sym;
+       } else
+               sym1 = e1->left.sym;
+       if (e2->type == E_NOT) {
+               if (e2->left.expr->type != E_SYMBOL)
+                       return NULL;
+               sym2 = e2->left.expr->left.sym;
+       } else
+               sym2 = e2->left.sym;
+       if (sym1 != sym2)
+               return NULL;
+       if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+               return NULL;
+
+       if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
+           (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
+               // (a) && (a='y') -> (a='y')
+               return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+       if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
+           (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
+               // (a) && (a!='n') -> (a)
+               return expr_alloc_symbol(sym1);
+
+       if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
+           (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
+               // (a) && (a!='m') -> (a='y')
+               return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+       if (sym1->type == S_TRISTATE) {
+               if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
+                       // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+                       sym2 = e1->right.sym;
+                       if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+                               return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+                                                            : expr_alloc_symbol(&symbol_no);
+               }
+               if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
+                       // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+                       sym2 = e2->right.sym;
+                       if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+                               return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+                                                            : expr_alloc_symbol(&symbol_no);
+               }
+               if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+                          ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+                           (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
+                       // (a!='y') && (a!='n') -> (a='m')
+                       return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);
+
+               if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+                          ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+                           (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
+                       // (a!='y') && (a!='m') -> (a='n')
+                       return expr_alloc_comp(E_EQUAL, sym1, &symbol_no);
+
+               if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+                          ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+                           (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
+                       // (a!='m') && (a!='n') -> (a='m')
+                       return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+               if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
+                   (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||
+                   (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||
+                   (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))
+                       return NULL;
+       }
+
+       if (DEBUG_EXPR) {
+               printf("optimize (");
+               expr_fprint(e1, stdout);
+               printf(") && (");
+               expr_fprint(e2, stdout);
+               printf(")?\n");
+       }
+       return NULL;
+}
+
+static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+       struct expr *tmp;
+
+       if (e1->type == type) {
+               expr_eliminate_dups1(type, &e1->left.expr, &e2);
+               expr_eliminate_dups1(type, &e1->right.expr, &e2);
+               return;
+       }
+       if (e2->type == type) {
+               expr_eliminate_dups1(type, &e1, &e2->left.expr);
+               expr_eliminate_dups1(type, &e1, &e2->right.expr);
+               return;
+       }
+       if (e1 == e2)
+               return;
+
+       switch (e1->type) {
+       case E_OR: case E_AND:
+               expr_eliminate_dups1(e1->type, &e1, &e1);
+       default:
+               ;
+       }
+
+       switch (type) {
+       case E_OR:
+               tmp = expr_join_or(e1, e2);
+               if (tmp) {
+                       expr_free(e1); expr_free(e2);
+                       e1 = expr_alloc_symbol(&symbol_no);
+                       e2 = tmp;
+                       trans_count++;
+               }
+               break;
+       case E_AND:
+               tmp = expr_join_and(e1, e2);
+               if (tmp) {
+                       expr_free(e1); expr_free(e2);
+                       e1 = expr_alloc_symbol(&symbol_yes);
+                       e2 = tmp;
+                       trans_count++;
+               }
+               break;
+       default:
+               ;
+       }
+#undef e1
+#undef e2
+}
+
+static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+       struct expr *tmp, *tmp1, *tmp2;
+
+       if (e1->type == type) {
+               expr_eliminate_dups2(type, &e1->left.expr, &e2);
+               expr_eliminate_dups2(type, &e1->right.expr, &e2);
+               return;
+       }
+       if (e2->type == type) {
+               expr_eliminate_dups2(type, &e1, &e2->left.expr);
+               expr_eliminate_dups2(type, &e1, &e2->right.expr);
+       }
+       if (e1 == e2)
+               return;
+
+       switch (e1->type) {
+       case E_OR:
+               expr_eliminate_dups2(e1->type, &e1, &e1);
+               // (FOO || BAR) && (!FOO && !BAR) -> n
+               tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+               tmp2 = expr_copy(e2);
+               tmp = expr_extract_eq_and(&tmp1, &tmp2);
+               if (expr_is_yes(tmp1)) {
+                       expr_free(e1);
+                       e1 = expr_alloc_symbol(&symbol_no);
+                       trans_count++;
+               }
+               expr_free(tmp2);
+               expr_free(tmp1);
+               expr_free(tmp);
+               break;
+       case E_AND:
+               expr_eliminate_dups2(e1->type, &e1, &e1);
+               // (FOO && BAR) || (!FOO || !BAR) -> y
+               tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+               tmp2 = expr_copy(e2);
+               tmp = expr_extract_eq_or(&tmp1, &tmp2);
+               if (expr_is_no(tmp1)) {
+                       expr_free(e1);
+                       e1 = expr_alloc_symbol(&symbol_yes);
+                       trans_count++;
+               }
+               expr_free(tmp2);
+               expr_free(tmp1);
+               expr_free(tmp);
+               break;
+       default:
+               ;
+       }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_eliminate_dups(struct expr *e)
+{
+       int oldcount;
+       if (!e)
+               return e;
+
+       oldcount = trans_count;
+       while (1) {
+               trans_count = 0;
+               switch (e->type) {
+               case E_OR: case E_AND:
+                       expr_eliminate_dups1(e->type, &e, &e);
+                       expr_eliminate_dups2(e->type, &e, &e);
+               default:
+                       ;
+               }
+               if (!trans_count)
+                       break;
+               e = expr_eliminate_yn(e);
+       }
+       trans_count = oldcount;
+       return e;
+}
+
+struct expr *expr_transform(struct expr *e)
+{
+       struct expr *tmp;
+
+       if (!e)
+               return NULL;
+       switch (e->type) {
+       case E_EQUAL:
+       case E_UNEQUAL:
+       case E_SYMBOL:
+       case E_CHOICE:
+               break;
+       default:
+               e->left.expr = expr_transform(e->left.expr);
+               e->right.expr = expr_transform(e->right.expr);
+       }
+
+       switch (e->type) {
+       case E_EQUAL:
+               if (e->left.sym->type != S_BOOLEAN)
+                       break;
+               if (e->right.sym == &symbol_no) {
+                       e->type = E_NOT;
+                       e->left.expr = expr_alloc_symbol(e->left.sym);
+                       e->right.sym = NULL;
+                       break;
+               }
+               if (e->right.sym == &symbol_mod) {
+                       printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name);
+                       e->type = E_SYMBOL;
+                       e->left.sym = &symbol_no;
+                       e->right.sym = NULL;
+                       break;
+               }
+               if (e->right.sym == &symbol_yes) {
+                       e->type = E_SYMBOL;
+                       e->right.sym = NULL;
+                       break;
+               }
+               break;
+       case E_UNEQUAL:
+               if (e->left.sym->type != S_BOOLEAN)
+                       break;
+               if (e->right.sym == &symbol_no) {
+                       e->type = E_SYMBOL;
+                       e->right.sym = NULL;
+                       break;
+               }
+               if (e->right.sym == &symbol_mod) {
+                       printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name);
+                       e->type = E_SYMBOL;
+                       e->left.sym = &symbol_yes;
+                       e->right.sym = NULL;
+                       break;
+               }
+               if (e->right.sym == &symbol_yes) {
+                       e->type = E_NOT;
+                       e->left.expr = expr_alloc_symbol(e->left.sym);
+                       e->right.sym = NULL;
+                       break;
+               }
+               break;
+       case E_NOT:
+               switch (e->left.expr->type) {
+               case E_NOT:
+                       // !!a -> a
+                       tmp = e->left.expr->left.expr;
+                       free(e->left.expr);
+                       free(e);
+                       e = tmp;
+                       e = expr_transform(e);
+                       break;
+               case E_EQUAL:
+               case E_UNEQUAL:
+                       // !a='x' -> a!='x'
+                       tmp = e->left.expr;
+                       free(e);
+                       e = tmp;
+                       e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL;
+                       break;
+               case E_OR:
+                       // !(a || b) -> !a && !b
+                       tmp = e->left.expr;
+                       e->type = E_AND;
+                       e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+                       tmp->type = E_NOT;
+                       tmp->right.expr = NULL;
+                       e = expr_transform(e);
+                       break;
+               case E_AND:
+                       // !(a && b) -> !a || !b
+                       tmp = e->left.expr;
+                       e->type = E_OR;
+                       e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+                       tmp->type = E_NOT;
+                       tmp->right.expr = NULL;
+                       e = expr_transform(e);
+                       break;
+               case E_SYMBOL:
+                       if (e->left.expr->left.sym == &symbol_yes) {
+                               // !'y' -> 'n'
+                               tmp = e->left.expr;
+                               free(e);
+                               e = tmp;
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_no;
+                               break;
+                       }
+                       if (e->left.expr->left.sym == &symbol_mod) {
+                               // !'m' -> 'm'
+                               tmp = e->left.expr;
+                               free(e);
+                               e = tmp;
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_mod;
+                               break;
+                       }
+                       if (e->left.expr->left.sym == &symbol_no) {
+                               // !'n' -> 'y'
+                               tmp = e->left.expr;
+                               free(e);
+                               e = tmp;
+                               e->type = E_SYMBOL;
+                               e->left.sym = &symbol_yes;
+                               break;
+                       }
+                       break;
+               default:
+                       ;
+               }
+               break;
+       default:
+               ;
+       }
+       return e;
+}
+
+int expr_contains_symbol(struct expr *dep, struct symbol *sym)
+{
+       if (!dep)
+               return 0;
+
+       switch (dep->type) {
+       case E_AND:
+       case E_OR:
+               return expr_contains_symbol(dep->left.expr, sym) ||
+                      expr_contains_symbol(dep->right.expr, sym);
+       case E_SYMBOL:
+               return dep->left.sym == sym;
+       case E_EQUAL:
+       case E_UNEQUAL:
+               return dep->left.sym == sym ||
+                      dep->right.sym == sym;
+       case E_NOT:
+               return expr_contains_symbol(dep->left.expr, sym);
+       default:
+               ;
+       }
+       return 0;
+}
+
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym)
+{
+       if (!dep)
+               return false;
+
+       switch (dep->type) {
+       case E_AND:
+               return expr_depends_symbol(dep->left.expr, sym) ||
+                      expr_depends_symbol(dep->right.expr, sym);
+       case E_SYMBOL:
+               return dep->left.sym == sym;
+       case E_EQUAL:
+               if (dep->left.sym == sym) {
+                       if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod)
+                               return true;
+               }
+               break;
+       case E_UNEQUAL:
+               if (dep->left.sym == sym) {
+                       if (dep->right.sym == &symbol_no)
+                               return true;
+               }
+               break;
+       default:
+               ;
+       }
+       return false;
+}
+
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2)
+{
+       struct expr *tmp = NULL;
+       expr_extract_eq(E_AND, &tmp, ep1, ep2);
+       if (tmp) {
+               *ep1 = expr_eliminate_yn(*ep1);
+               *ep2 = expr_eliminate_yn(*ep2);
+       }
+       return tmp;
+}
+
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2)
+{
+       struct expr *tmp = NULL;
+       expr_extract_eq(E_OR, &tmp, ep1, ep2);
+       if (tmp) {
+               *ep1 = expr_eliminate_yn(*ep1);
+               *ep2 = expr_eliminate_yn(*ep2);
+       }
+       return tmp;
+}
+
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+       if (e1->type == type) {
+               expr_extract_eq(type, ep, &e1->left.expr, &e2);
+               expr_extract_eq(type, ep, &e1->right.expr, &e2);
+               return;
+       }
+       if (e2->type == type) {
+               expr_extract_eq(type, ep, ep1, &e2->left.expr);
+               expr_extract_eq(type, ep, ep1, &e2->right.expr);
+               return;
+       }
+       if (expr_eq(e1, e2)) {
+               *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1;
+               expr_free(e2);
+               if (type == E_AND) {
+                       e1 = expr_alloc_symbol(&symbol_yes);
+                       e2 = expr_alloc_symbol(&symbol_yes);
+               } else if (type == E_OR) {
+                       e1 = expr_alloc_symbol(&symbol_no);
+                       e2 = expr_alloc_symbol(&symbol_no);
+               }
+       }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)
+{
+       struct expr *e1, *e2;
+
+       if (!e) {
+               e = expr_alloc_symbol(sym);
+               if (type == E_UNEQUAL)
+                       e = expr_alloc_one(E_NOT, e);
+               return e;
+       }
+       switch (e->type) {
+       case E_AND:
+               e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+               e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+               if (sym == &symbol_yes)
+                       e = expr_alloc_two(E_AND, e1, e2);
+               if (sym == &symbol_no)
+                       e = expr_alloc_two(E_OR, e1, e2);
+               if (type == E_UNEQUAL)
+                       e = expr_alloc_one(E_NOT, e);
+               return e;
+       case E_OR:
+               e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+               e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+               if (sym == &symbol_yes)
+                       e = expr_alloc_two(E_OR, e1, e2);
+               if (sym == &symbol_no)
+                       e = expr_alloc_two(E_AND, e1, e2);
+               if (type == E_UNEQUAL)
+                       e = expr_alloc_one(E_NOT, e);
+               return e;
+       case E_NOT:
+               return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);
+       case E_UNEQUAL:
+       case E_EQUAL:
+               if (type == E_EQUAL) {
+                       if (sym == &symbol_yes)
+                               return expr_copy(e);
+                       if (sym == &symbol_mod)
+                               return expr_alloc_symbol(&symbol_no);
+                       if (sym == &symbol_no)
+                               return expr_alloc_one(E_NOT, expr_copy(e));
+               } else {
+                       if (sym == &symbol_yes)
+                               return expr_alloc_one(E_NOT, expr_copy(e));
+                       if (sym == &symbol_mod)
+                               return expr_alloc_symbol(&symbol_yes);
+                       if (sym == &symbol_no)
+                               return expr_copy(e);
+               }
+               break;
+       case E_SYMBOL:
+               return expr_alloc_comp(type, e->left.sym, sym);
+       case E_CHOICE:
+       case E_RANGE:
+       case E_NONE:
+               /* panic */;
+       }
+       return NULL;
+}
+
+tristate expr_calc_value(struct expr *e)
+{
+       tristate val1, val2;
+       const char *str1, *str2;
+
+       if (!e)
+               return yes;
+
+       switch (e->type) {
+       case E_SYMBOL:
+               sym_calc_value(e->left.sym);
+               return e->left.sym->curr.tri;
+       case E_AND:
+               val1 = expr_calc_value(e->left.expr);
+               val2 = expr_calc_value(e->right.expr);
+               return E_AND(val1, val2);
+       case E_OR:
+               val1 = expr_calc_value(e->left.expr);
+               val2 = expr_calc_value(e->right.expr);
+               return E_OR(val1, val2);
+       case E_NOT:
+               val1 = expr_calc_value(e->left.expr);
+               return E_NOT(val1);
+       case E_EQUAL:
+               sym_calc_value(e->left.sym);
+               sym_calc_value(e->right.sym);
+               str1 = sym_get_string_value(e->left.sym);
+               str2 = sym_get_string_value(e->right.sym);
+               return !strcmp(str1, str2) ? yes : no;
+       case E_UNEQUAL:
+               sym_calc_value(e->left.sym);
+               sym_calc_value(e->right.sym);
+               str1 = sym_get_string_value(e->left.sym);
+               str2 = sym_get_string_value(e->right.sym);
+               return !strcmp(str1, str2) ? no : yes;
+       default:
+               printf("expr_calc_value: %d?\n", e->type);
+               return no;
+       }
+}
+
+int expr_compare_type(enum expr_type t1, enum expr_type t2)
+{
+#if 0
+       return 1;
+#else
+       if (t1 == t2)
+               return 0;
+       switch (t1) {
+       case E_EQUAL:
+       case E_UNEQUAL:
+               if (t2 == E_NOT)
+                       return 1;
+       case E_NOT:
+               if (t2 == E_AND)
+                       return 1;
+       case E_AND:
+               if (t2 == E_OR)
+                       return 1;
+       case E_OR:
+               if (t2 == E_CHOICE)
+                       return 1;
+       case E_CHOICE:
+               if (t2 == 0)
+                       return 1;
+       default:
+               return -1;
+       }
+       printf("[%dgt%d?]", t1, t2);
+       return 0;
+#endif
+}
+
+void expr_print(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken)
+{
+       if (!e) {
+               fn(data, "y");
+               return;
+       }
+
+       if (expr_compare_type(prevtoken, e->type) > 0)
+               fn(data, "(");
+       switch (e->type) {
+       case E_SYMBOL:
+               if (e->left.sym->name)
+                       fn(data, e->left.sym->name);
+               else
+                       fn(data, "<choice>");
+               break;
+       case E_NOT:
+               fn(data, "!");
+               expr_print(e->left.expr, fn, data, E_NOT);
+               break;
+       case E_EQUAL:
+               fn(data, e->left.sym->name);
+               fn(data, "=");
+               fn(data, e->right.sym->name);
+               break;
+       case E_UNEQUAL:
+               fn(data, e->left.sym->name);
+               fn(data, "!=");
+               fn(data, e->right.sym->name);
+               break;
+       case E_OR:
+               expr_print(e->left.expr, fn, data, E_OR);
+               fn(data, " || ");
+               expr_print(e->right.expr, fn, data, E_OR);
+               break;
+       case E_AND:
+               expr_print(e->left.expr, fn, data, E_AND);
+               fn(data, " && ");
+               expr_print(e->right.expr, fn, data, E_AND);
+               break;
+       case E_CHOICE:
+               fn(data, e->right.sym->name);
+               if (e->left.expr) {
+                       fn(data, " ^ ");
+                       expr_print(e->left.expr, fn, data, E_CHOICE);
+               }
+               break;
+       case E_RANGE:
+               fn(data, "[");
+               fn(data, e->left.sym->name);
+               fn(data, " ");
+               fn(data, e->right.sym->name);
+               fn(data, "]");
+               break;
+       default:
+         {
+               char buf[32];
+               sprintf(buf, "<unknown type %d>", e->type);
+               fn(data, buf);
+               break;
+         }
+       }
+       if (expr_compare_type(prevtoken, e->type) > 0)
+               fn(data, ")");
+}
+
+static void expr_print_file_helper(void *data, const char *str)
+{
+       fwrite(str, strlen(str), 1, data);
+}
+
+void expr_fprint(struct expr *e, FILE *out)
+{
+       expr_print(e, expr_print_file_helper, out, E_NONE);
+}
+
+static void expr_print_gstr_helper(void *data, const char *str)
+{
+       str_append((struct gstr*)data, str);
+}
+
+void expr_gstr_print(struct expr *e, struct gstr *gs)
+{
+       expr_print(e, expr_print_gstr_helper, gs, E_NONE);
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h
new file mode 100644 (file)
index 0000000..7d39ff4
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef EXPR_H
+#define EXPR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#ifndef __cplusplus
+#include <stdbool.h>
+#endif
+
+struct file {
+       struct file *next;
+       struct file *parent;
+       char *name;
+       int lineno;
+       int flags;
+};
+
+#define FILE_BUSY              0x0001
+#define FILE_SCANNED           0x0002
+#define FILE_PRINTED           0x0004
+
+typedef enum tristate {
+       no, mod, yes
+} tristate;
+
+enum expr_type {
+       E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
+};
+
+union expr_data {
+       struct expr *expr;
+       struct symbol *sym;
+};
+
+struct expr {
+       enum expr_type type;
+       union expr_data left, right;
+};
+
+#define E_OR(dep1, dep2)       (((dep1)>(dep2))?(dep1):(dep2))
+#define E_AND(dep1, dep2)      (((dep1)<(dep2))?(dep1):(dep2))
+#define E_NOT(dep)             (2-(dep))
+
+struct expr_value {
+       struct expr *expr;
+       tristate tri;
+};
+
+struct symbol_value {
+       void *val;
+       tristate tri;
+};
+
+enum symbol_type {
+       S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
+};
+
+struct symbol {
+       struct symbol *next;
+       char *name;
+       char *help;
+       enum symbol_type type;
+       struct symbol_value curr, user;
+       tristate visible;
+       int flags;
+       struct property *prop;
+       struct expr *dep, *dep2;
+       struct expr_value rev_dep;
+};
+
+#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
+
+#define SYMBOL_YES             0x0001
+#define SYMBOL_MOD             0x0002
+#define SYMBOL_NO              0x0004
+#define SYMBOL_CONST           0x0007
+#define SYMBOL_CHECK           0x0008
+#define SYMBOL_CHOICE          0x0010
+#define SYMBOL_CHOICEVAL       0x0020
+#define SYMBOL_PRINTED         0x0040
+#define SYMBOL_VALID           0x0080
+#define SYMBOL_OPTIONAL                0x0100
+#define SYMBOL_WRITE           0x0200
+#define SYMBOL_CHANGED         0x0400
+#define SYMBOL_NEW             0x0800
+#define SYMBOL_AUTO            0x1000
+#define SYMBOL_CHECKED         0x2000
+#define SYMBOL_CHECK_DONE      0x4000
+#define SYMBOL_WARNED          0x8000
+
+#define SYMBOL_MAXLENGTH       256
+#define SYMBOL_HASHSIZE                257
+#define SYMBOL_HASHMASK                0xff
+
+enum prop_type {
+       P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
+};
+
+struct property {
+       struct property *next;
+       struct symbol *sym;
+       enum prop_type type;
+       const char *text;
+       struct expr_value visible;
+       struct expr *expr;
+       struct menu *menu;
+       struct file *file;
+       int lineno;
+};
+
+#define for_all_properties(sym, st, tok) \
+       for (st = sym->prop; st; st = st->next) \
+               if (st->type == (tok))
+#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
+#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)
+#define for_all_prompts(sym, st) \
+       for (st = sym->prop; st; st = st->next) \
+               if (st->text)
+
+struct menu {
+       struct menu *next;
+       struct menu *parent;
+       struct menu *list;
+       struct symbol *sym;
+       struct property *prompt;
+       struct expr *dep;
+       unsigned int flags;
+       //char *help;
+       struct file *file;
+       int lineno;
+       void *data;
+};
+
+#define MENU_CHANGED           0x0001
+#define MENU_ROOT              0x0002
+
+#ifndef SWIG
+
+extern struct file *file_list;
+extern struct file *current_file;
+struct file *lookup_file(const char *name);
+
+extern struct symbol symbol_yes, symbol_no, symbol_mod;
+extern struct symbol *modules_sym;
+extern int cdebug;
+struct expr *expr_alloc_symbol(struct symbol *sym);
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
+struct expr *expr_copy(struct expr *org);
+void expr_free(struct expr *e);
+int expr_eq(struct expr *e1, struct expr *e2);
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);
+tristate expr_calc_value(struct expr *e);
+struct expr *expr_eliminate_yn(struct expr *e);
+struct expr *expr_trans_bool(struct expr *e);
+struct expr *expr_eliminate_dups(struct expr *e);
+struct expr *expr_transform(struct expr *e);
+int expr_contains_symbol(struct expr *dep, struct symbol *sym);
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym);
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);
+
+void expr_fprint(struct expr *e, FILE *out);
+struct gstr; /* forward */
+void expr_gstr_print(struct expr *e, struct gstr *gs);
+
+static inline int expr_is_yes(struct expr *e)
+{
+       return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
+}
+
+static inline int expr_is_no(struct expr *e)
+{
+       return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EXPR_H */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped
new file mode 100644 (file)
index 0000000..b877bb6
--- /dev/null
@@ -0,0 +1,3688 @@
+
+#line 3 "lex.zconf.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 31
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE zconfrestart(zconfin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up zconftext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               *yy_cp = (yy_hold_char); \
+               YY_RESTORE_YY_MORE_OFFSET \
+               (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef unsigned int yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via zconfrestart()), so that the user can continue scanning by
+        * just pointing zconfin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+
+       };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when zconftext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+int zconfleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void zconfrestart (FILE *input_file  );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size  );
+void zconf_delete_buffer (YY_BUFFER_STATE b  );
+void zconf_flush_buffer (YY_BUFFER_STATE b  );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len  );
+
+void *zconfalloc (yy_size_t  );
+void *zconfrealloc (void *,yy_size_t  );
+void zconffree (void *  );
+
+#define yy_new_buffer zconf_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){ \
+        zconfensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){\
+        zconfensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define zconfwrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][38] =
+    {
+    {
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0
+    },
+
+    {
+       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12
+    },
+
+    {
+       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12
+    },
+
+    {
+       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   18,   16,   16,   18,   18,   19,   20,
+       21,   22,   18,   18,   23,   24,   18,   25,   18,   26,
+       27,   18,   28,   29,   30,   18,   18,   16
+    },
+
+    {
+       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   18,   16,   16,   18,   18,   19,   20,
+       21,   22,   18,   18,   23,   24,   18,   25,   18,   26,
+       27,   18,   28,   29,   30,   18,   18,   16
+
+    },
+
+    {
+       11,   31,   32,   33,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31
+    },
+
+    {
+       11,   31,   32,   33,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31
+    },
+
+    {
+       11,   34,   34,   35,   34,   36,   34,   34,   36,   34,
+       34,   34,   34,   34,   34,   37,   34,   34,   34,   34,
+
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34
+    },
+
+    {
+       11,   34,   34,   35,   34,   36,   34,   34,   36,   34,
+       34,   34,   34,   34,   34,   37,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34
+    },
+
+    {
+       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
+       45,   46,   47,   47,   48,   49,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   50,   47,   47,   47,   51,
+       47,   47,   47,   47,   47,   47,   47,   52
+
+    },
+
+    {
+       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
+       45,   46,   47,   47,   48,   49,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   50,   47,   47,   47,   51,
+       47,   47,   47,   47,   47,   47,   47,   52
+    },
+
+    {
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
+    },
+
+    {
+       11,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
+      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
+
+      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
+      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12
+    },
+
+    {
+       11,  -13,   53,   54,  -13,  -13,   55,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13
+    },
+
+    {
+       11,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14
+
+    },
+
+    {
+       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56
+    },
+
+    {
+       11,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
+    },
+
+    {
+       11,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
+    },
+
+    {
+       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,   58,  -18,  -18,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -18
+    },
+
+    {
+       11,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,   58,  -19,  -19,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   59,
+       58,   58,   58,   58,   58,   58,   58,  -19
+
+    },
+
+    {
+       11,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,   58,  -20,  -20,   58,   58,   58,   58,
+       58,   58,   58,   58,   60,   58,   58,   58,   58,   61,
+       58,   58,   58,   58,   58,   58,   58,  -20
+    },
+
+    {
+       11,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,   58,  -21,  -21,   58,   58,   58,   58,
+       58,   62,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -21
+    },
+
+    {
+       11,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,   58,  -22,  -22,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   63,   58,
+       58,   58,   58,   58,   58,   58,   58,  -22
+    },
+
+    {
+       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,   58,  -23,  -23,   58,   58,   58,   58,
+       58,   64,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -23
+    },
+
+    {
+       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,   58,  -24,  -24,   58,   58,   58,   58,
+       58,   58,   65,   58,   58,   58,   58,   58,   66,   58,
+       58,   58,   58,   58,   58,   58,   58,  -24
+
+    },
+
+    {
+       11,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,   58,  -25,  -25,   58,   67,   58,   58,
+       58,   68,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -25
+    },
+
+    {
+       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,   58,  -26,  -26,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       69,   58,   58,   58,   58,   58,   58,  -26
+    },
+
+    {
+       11,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,   58,  -27,  -27,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   70,   58,   58,   58,   58,  -27
+    },
+
+    {
+       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,   58,  -28,  -28,   58,   71,   58,   58,
+       58,   72,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -28
+    },
+
+    {
+       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,   58,  -29,  -29,   58,   58,   58,   58,
+       58,   73,   58,   58,   58,   58,   58,   58,   58,   74,
+       58,   58,   58,   58,   75,   58,   58,  -29
+
+    },
+
+    {
+       11,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,   58,  -30,  -30,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   76,   58,   58,   58,   58,  -30
+    },
+
+    {
+       11,   77,   77,  -31,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77
+    },
+
+    {
+       11,  -32,   78,   79,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
+    },
+
+    {
+       11,   80,  -33,  -33,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80
+    },
+
+    {
+       11,   81,   81,   82,   81,  -34,   81,   81,  -34,   81,
+       81,   81,   81,   81,   81,  -34,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81
+
+    },
+
+    {
+       11,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35
+    },
+
+    {
+       11,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
+    },
+
+    {
+       11,   83,   83,   84,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83
+    },
+
+    {
+       11,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
+    },
+
+    {
+       11,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39
+
+    },
+
+    {
+       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,   85,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
+    },
+
+    {
+       11,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
+    },
+
+    {
+       11,   86,   86,  -42,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86
+    },
+
+    {
+       11,  -43,  -43,  -43,  -43,  -43,  -43,   87,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
+    },
+
+    {
+       11,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
+
+    },
+
+    {
+       11,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
+    },
+
+    {
+       11,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,   88,   89,   89,  -46,  -46,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -46
+    },
+
+    {
+       11,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,   89,   89,   89,  -47,  -47,   89,   89,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -47
+    },
+
+    {
+       11,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
+    },
+
+    {
+       11,  -49,  -49,   90,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49
+
+    },
+
+    {
+       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,   89,   89,   89,  -50,  -50,   89,   89,   89,   89,
+       89,   89,   91,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -50
+    },
+
+    {
+       11,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,   89,   89,   89,  -51,  -51,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   92,   89,
+       89,   89,   89,   89,   89,   89,   89,  -51
+    },
+
+    {
+       11,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,   93
+    },
+
+    {
+       11,  -53,   53,   54,  -53,  -53,   55,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
+    },
+
+    {
+       11,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
+      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54
+
+    },
+
+    {
+       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56
+    },
+
+    {
+       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56
+    },
+
+    {
+       11,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
+
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57
+    },
+
+    {
+       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,   58,  -58,  -58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -58
+    },
+
+    {
+       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+      -59,  -59,  -59,   58,  -59,  -59,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   94,
+       58,   58,   58,   58,   58,   58,   58,  -59
+
+    },
+
+    {
+       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+      -60,  -60,  -60,   58,  -60,  -60,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   95,
+       58,   58,   58,   58,   58,   58,   58,  -60
+    },
+
+    {
+       11,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
+      -61,  -61,  -61,   58,  -61,  -61,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   96,   97,   58,
+       58,   58,   58,   58,   58,   58,   58,  -61
+    },
+
+    {
+       11,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+      -62,  -62,  -62,   58,  -62,  -62,   58,   58,   58,   58,
+
+       58,   58,   98,   58,   58,   58,   58,   58,   58,   58,
+       99,   58,   58,   58,   58,   58,   58,  -62
+    },
+
+    {
+       11,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
+      -63,  -63,  -63,   58,  -63,  -63,   58,  100,   58,   58,
+      101,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -63
+    },
+
+    {
+       11,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
+      -64,  -64,  -64,   58,  -64,  -64,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  102,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  103,  -64
+
+    },
+
+    {
+       11,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,
+      -65,  -65,  -65,   58,  -65,  -65,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -65
+    },
+
+    {
+       11,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+      -66,  -66,  -66,   58,  -66,  -66,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  104,   58,   58,  -66
+    },
+
+    {
+       11,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
+      -67,  -67,  -67,   58,  -67,  -67,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,  105,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -67
+    },
+
+    {
+       11,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,
+      -68,  -68,  -68,   58,  -68,  -68,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  106,   58,
+       58,   58,   58,   58,   58,   58,   58,  -68
+    },
+
+    {
+       11,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
+      -69,  -69,  -69,   58,  -69,  -69,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  107,   58,   58,  -69
+
+    },
+
+    {
+       11,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
+      -70,  -70,  -70,   58,  -70,  -70,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  108,
+       58,   58,   58,   58,   58,   58,   58,  -70
+    },
+
+    {
+       11,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
+      -71,  -71,  -71,   58,  -71,  -71,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  109,   58,
+       58,   58,   58,   58,   58,   58,   58,  -71
+    },
+
+    {
+       11,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,
+      -72,  -72,  -72,   58,  -72,  -72,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,  110,   58,   58,   58,   58,   58,  -72
+    },
+
+    {
+       11,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
+      -73,  -73,  -73,   58,  -73,  -73,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  111,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -73
+    },
+
+    {
+       11,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,
+      -74,  -74,  -74,   58,  -74,  -74,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  112,   58,  -74
+
+    },
+
+    {
+       11,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,
+      -75,  -75,  -75,   58,  -75,  -75,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  113,   58,   58,   58,   58,  -75
+    },
+
+    {
+       11,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,
+      -76,  -76,  -76,   58,  -76,  -76,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  114,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -76
+    },
+
+    {
+       11,   77,   77,  -77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77
+    },
+
+    {
+       11,  -78,   78,   79,  -78,  -78,  -78,  -78,  -78,  -78,
+      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,
+      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,
+      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78
+    },
+
+    {
+       11,   80,  -79,  -79,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80
+
+    },
+
+    {
+       11,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
+      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
+      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
+      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80
+    },
+
+    {
+       11,   81,   81,   82,   81,  -81,   81,   81,  -81,   81,
+       81,   81,   81,   81,   81,  -81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81
+    },
+
+    {
+       11,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
+      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
+
+      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
+      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82
+    },
+
+    {
+       11,  -83,  -83,   84,  -83,  -83,  -83,  -83,  -83,  -83,
+      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
+      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
+      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83
+    },
+
+    {
+       11,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
+      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
+      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
+      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84
+
+    },
+
+    {
+       11,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85
+    },
+
+    {
+       11,   86,   86,  -86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86
+    },
+
+    {
+       11,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
+      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
+
+      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
+      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87
+    },
+
+    {
+       11,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
+      -88,  115,   89,   89,  -88,  -88,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -88
+    },
+
+    {
+       11,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
+      -89,   89,   89,   89,  -89,  -89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -89
+
+    },
+
+    {
+       11,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
+      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
+      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
+      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90
+    },
+
+    {
+       11,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
+      -91,   89,   89,   89,  -91,  -91,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -91
+    },
+
+    {
+       11,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
+      -92,   89,   89,   89,  -92,  -92,   89,   89,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,  -92
+    },
+
+    {
+       11,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
+      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
+      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
+      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93
+    },
+
+    {
+       11,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
+      -94,  -94,  -94,   58,  -94,  -94,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  116,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -94
+
+    },
+
+    {
+       11,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
+      -95,  -95,  -95,   58,  -95,  -95,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  117,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -95
+    },
+
+    {
+       11,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,
+      -96,  -96,  -96,   58,  -96,  -96,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  118,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -96
+    },
+
+    {
+       11,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
+      -97,  -97,  -97,   58,  -97,  -97,   58,   58,   58,   58,
+
+       58,   58,  119,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -97
+    },
+
+    {
+       11,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
+      -98,  -98,  -98,   58,  -98,  -98,  120,  121,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -98
+    },
+
+    {
+       11,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,
+      -99,  -99,  -99,   58,  -99,  -99,   58,   58,   58,   58,
+       58,  122,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  -99
+
+    },
+
+    {
+       11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+     -100, -100, -100,   58, -100, -100,   58,   58,  123,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -100
+    },
+
+    {
+       11, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+     -101, -101, -101,   58, -101, -101,   58,   58,   58,  124,
+       58,   58,   58,   58,   58,  125,   58,  126,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -101
+    },
+
+    {
+       11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+     -102, -102, -102,   58, -102, -102,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+      127,   58,   58,   58,   58,   58,   58, -102
+    },
+
+    {
+       11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+     -103, -103, -103,   58, -103, -103,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -103
+    },
+
+    {
+       11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+     -104, -104, -104,   58, -104, -104,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -104
+
+    },
+
+    {
+       11, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+     -105, -105, -105,   58, -105, -105,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  128,   58,
+       58,   58,   58,   58,   58,   58,   58, -105
+    },
+
+    {
+       11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+     -106, -106, -106,   58, -106, -106,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  129,   58, -106
+    },
+
+    {
+       11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+     -107, -107, -107,   58, -107, -107,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,  130,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -107
+    },
+
+    {
+       11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+     -108, -108, -108,   58, -108, -108,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  131,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -108
+    },
+
+    {
+       11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+     -109, -109, -109,   58, -109, -109,   58,   58,   58,   58,
+       58,   58,   58,  132,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -109
+
+    },
+
+    {
+       11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+     -110, -110, -110,   58, -110, -110,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  133,   58, -110
+    },
+
+    {
+       11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+     -111, -111, -111,   58, -111, -111,   58,   58,   58,   58,
+       58,  134,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -111
+    },
+
+    {
+       11, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+     -112, -112, -112,   58, -112, -112,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  135,   58,   58,   58,   58, -112
+    },
+
+    {
+       11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+     -113, -113, -113,   58, -113, -113,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  136,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -113
+    },
+
+    {
+       11, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+     -114, -114, -114,   58, -114, -114,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  137,   58,   58,   58, -114
+
+    },
+
+    {
+       11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+     -115,   89,   89,   89, -115, -115,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89, -115
+    },
+
+    {
+       11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+     -116, -116, -116,   58, -116, -116,   58,   58,   58,   58,
+       58,  138,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -116
+    },
+
+    {
+       11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+     -117, -117, -117,   58, -117, -117,   58,   58,   58,  139,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -117
+    },
+
+    {
+       11, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+     -118, -118, -118,   58, -118, -118,   58,   58,   58,   58,
+       58,  140,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -118
+    },
+
+    {
+       11, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+     -119, -119, -119,   58, -119, -119,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  141,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -119
+
+    },
+
+    {
+       11, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+     -120, -120, -120,   58, -120, -120,   58,   58,  142,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  143,   58,   58, -120
+    },
+
+    {
+       11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+     -121, -121, -121,   58, -121, -121,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  144,   58, -121
+    },
+
+    {
+       11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+     -122, -122, -122,   58, -122, -122,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,  145,   58,
+       58,   58,   58,   58,   58,   58,   58, -122
+    },
+
+    {
+       11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+     -123, -123, -123,   58, -123, -123,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  146,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -123
+    },
+
+    {
+       11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
+     -124, -124, -124,   58, -124, -124,   58,   58,   58,   58,
+       58,   58,   58,   58,  147,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -124
+
+    },
+
+    {
+       11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
+     -125, -125, -125,   58, -125, -125,   58,   58,   58,   58,
+       58,   58,  148,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -125
+    },
+
+    {
+       11, -126, -126, -126, -126, -126, -126, -126, -126, -126,
+     -126, -126, -126,   58, -126, -126,   58,   58,   58,   58,
+       58,  149,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -126
+    },
+
+    {
+       11, -127, -127, -127, -127, -127, -127, -127, -127, -127,
+     -127, -127, -127,   58, -127, -127,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -127
+    },
+
+    {
+       11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
+     -128, -128, -128,   58, -128, -128,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  150,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -128
+    },
+
+    {
+       11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
+     -129, -129, -129,   58, -129, -129,   58,   58,   58,  151,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -129
+
+    },
+
+    {
+       11, -130, -130, -130, -130, -130, -130, -130, -130, -130,
+     -130, -130, -130,   58, -130, -130,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  152,
+       58,   58,   58,   58,   58,   58,   58, -130
+    },
+
+    {
+       11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+     -131, -131, -131,   58, -131, -131,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+      153,   58,   58,   58,   58,   58,   58, -131
+    },
+
+    {
+       11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
+     -132, -132, -132,   58, -132, -132,   58,   58,   58,   58,
+
+       58,  154,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -132
+    },
+
+    {
+       11, -133, -133, -133, -133, -133, -133, -133, -133, -133,
+     -133, -133, -133,   58, -133, -133,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  155,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -133
+    },
+
+    {
+       11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
+     -134, -134, -134,   58, -134, -134,   58,   58,   58,  156,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -134
+
+    },
+
+    {
+       11, -135, -135, -135, -135, -135, -135, -135, -135, -135,
+     -135, -135, -135,   58, -135, -135,   58,   58,   58,  157,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -135
+    },
+
+    {
+       11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+     -136, -136, -136,   58, -136, -136,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  158,   58,
+       58,   58,   58,   58,   58,   58,   58, -136
+    },
+
+    {
+       11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+     -137, -137, -137,   58, -137, -137,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  159,   58,   58, -137
+    },
+
+    {
+       11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+     -138, -138, -138,   58, -138, -138,   58,  160,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -138
+    },
+
+    {
+       11, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+     -139, -139, -139,   58, -139, -139,   58,   58,   58,   58,
+       58,  161,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -139
+
+    },
+
+    {
+       11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+     -140, -140, -140,   58, -140, -140,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  162,   58,
+       58,   58,   58,   58,   58,   58,   58, -140
+    },
+
+    {
+       11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+     -141, -141, -141,   58, -141, -141,   58,   58,   58,   58,
+       58,   58,   58,  163,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -141
+    },
+
+    {
+       11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+     -142, -142, -142,   58, -142, -142,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  164,
+       58,   58,   58,   58,   58,   58,   58, -142
+    },
+
+    {
+       11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+     -143, -143, -143,   58, -143, -143,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  165,   58,   58,   58,   58, -143
+    },
+
+    {
+       11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+     -144, -144, -144,   58, -144, -144,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  166,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -144
+
+    },
+
+    {
+       11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+     -145, -145, -145,   58, -145, -145,   58,   58,   58,   58,
+      167,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -145
+    },
+
+    {
+       11, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+     -146, -146, -146,   58, -146, -146,   58,   58,   58,   58,
+       58,  168,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -146
+    },
+
+    {
+       11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+     -147, -147, -147,   58, -147, -147,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  169,
+       58,   58,   58,   58,   58,   58,   58, -147
+    },
+
+    {
+       11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+     -148, -148, -148,   58, -148, -148,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -148
+    },
+
+    {
+       11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+     -149, -149, -149,   58, -149, -149,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  170,   58,
+       58,   58,   58,   58,   58,   58,   58, -149
+
+    },
+
+    {
+       11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+     -150, -150, -150,   58, -150, -150,   58,   58,   58,   58,
+       58,  171,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -150
+    },
+
+    {
+       11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+     -151, -151, -151,   58, -151, -151,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  172,
+       58,   58,   58,   58,   58,   58,   58, -151
+    },
+
+    {
+       11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+     -152, -152, -152,   58, -152, -152,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,  173,   58,
+       58,   58,   58,   58,   58,   58,   58, -152
+    },
+
+    {
+       11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+     -153, -153, -153,   58, -153, -153,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  174,   58,   58, -153
+    },
+
+    {
+       11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+     -154, -154, -154,   58, -154, -154,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -154
+
+    },
+
+    {
+       11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+     -155, -155, -155,   58, -155, -155,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  175,   58,   58,   58,   58, -155
+    },
+
+    {
+       11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+     -156, -156, -156,   58, -156, -156,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  176,   58,   58, -156
+    },
+
+    {
+       11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+     -157, -157, -157,   58, -157, -157,   58,   58,   58,   58,
+
+       58,  177,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -157
+    },
+
+    {
+       11, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+     -158, -158, -158,   58, -158, -158,   58,   58,   58,   58,
+       58,   58,   58,  178,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -158
+    },
+
+    {
+       11, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+     -159, -159, -159,   58, -159, -159,   58,  179,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -159
+
+    },
+
+    {
+       11, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+     -160, -160, -160,   58, -160, -160,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  180,   58,
+       58,   58,   58,   58,   58,   58,   58, -160
+    },
+
+    {
+       11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+     -161, -161, -161,   58, -161, -161,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -161
+    },
+
+    {
+       11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+     -162, -162, -162,   58, -162, -162,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  181,   58,   58, -162
+    },
+
+    {
+       11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+     -163, -163, -163,   58, -163, -163,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -163
+    },
+
+    {
+       11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+     -164, -164, -164,   58, -164, -164,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  182,
+       58,   58,   58,   58,   58,   58,   58, -164
+
+    },
+
+    {
+       11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+     -165, -165, -165,   58, -165, -165,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  183,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -165
+    },
+
+    {
+       11, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+     -166, -166, -166,   58, -166, -166,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  184,   58,   58, -166
+    },
+
+    {
+       11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+     -167, -167, -167,   58, -167, -167,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  185,   58,   58,   58, -167
+    },
+
+    {
+       11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+     -168, -168, -168,   58, -168, -168,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -168
+    },
+
+    {
+       11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+     -169, -169, -169,   58, -169, -169,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  186,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -169
+
+    },
+
+    {
+       11, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+     -170, -170, -170,   58, -170, -170,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  187,   58, -170
+    },
+
+    {
+       11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+     -171, -171, -171,   58, -171, -171,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  188,   58,
+       58,   58,   58,   58,   58,   58,   58, -171
+    },
+
+    {
+       11, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+     -172, -172, -172,   58, -172, -172,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,  189,   58,
+       58,   58,   58,   58,   58,   58,   58, -172
+    },
+
+    {
+       11, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+     -173, -173, -173,   58, -173, -173,   58,  190,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -173
+    },
+
+    {
+       11, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+     -174, -174, -174,   58, -174, -174,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -174
+
+    },
+
+    {
+       11, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175,   58, -175, -175,   58,   58,   58,   58,
+       58,  191,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -175
+    },
+
+    {
+       11, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+     -176, -176, -176,   58, -176, -176,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -176
+    },
+
+    {
+       11, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+     -177, -177, -177,   58, -177, -177,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -177
+    },
+
+    {
+       11, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+     -178, -178, -178,   58, -178, -178,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -178
+    },
+
+    {
+       11, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+     -179, -179, -179,   58, -179, -179,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  192,   58,   58, -179
+
+    },
+
+    {
+       11, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+     -180, -180, -180,   58, -180, -180,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -180
+    },
+
+    {
+       11, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+     -181, -181, -181,   58, -181, -181,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -181
+    },
+
+    {
+       11, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+     -182, -182, -182,   58, -182, -182,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,  193,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -182
+    },
+
+    {
+       11, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+     -183, -183, -183,   58, -183, -183,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  194,   58,   58,   58, -183
+    },
+
+    {
+       11, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+     -184, -184, -184,   58, -184, -184,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -184
+
+    },
+
+    {
+       11, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+     -185, -185, -185,   58, -185, -185,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -185
+    },
+
+    {
+       11, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+     -186, -186, -186,   58, -186, -186,   58,   58,   58,  195,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -186
+    },
+
+    {
+       11, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+     -187, -187, -187,   58, -187, -187,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -187
+    },
+
+    {
+       11, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+     -188, -188, -188,   58, -188, -188,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  196,   58, -188
+    },
+
+    {
+       11, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+     -189, -189, -189,   58, -189, -189,   58,   58,   58,   58,
+       58,   58,  197,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -189
+
+    },
+
+    {
+       11, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+     -190, -190, -190,   58, -190, -190,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  198,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -190
+    },
+
+    {
+       11, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+     -191, -191, -191,   58, -191, -191,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  199,   58,   58,   58, -191
+    },
+
+    {
+       11, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+     -192, -192, -192,   58, -192, -192,   58,   58,   58,   58,
+
+       58,  200,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -192
+    },
+
+    {
+       11, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+     -193, -193, -193,   58, -193, -193,   58,   58,   58,   58,
+       58,  201,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -193
+    },
+
+    {
+       11, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+     -194, -194, -194,   58, -194, -194,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  202,   58,   58, -194
+
+    },
+
+    {
+       11, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+     -195, -195, -195,   58, -195, -195,   58,   58,   58,   58,
+       58,  203,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -195
+    },
+
+    {
+       11, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+     -196, -196, -196,   58, -196, -196,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -196
+    },
+
+    {
+       11, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+     -197, -197, -197,   58, -197, -197,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,  204,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -197
+    },
+
+    {
+       11, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+     -198, -198, -198,   58, -198, -198,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -198
+    },
+
+    {
+       11, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+     -199, -199, -199,   58, -199, -199,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -199
+
+    },
+
+    {
+       11, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+     -200, -200, -200,   58, -200, -200,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -200
+    },
+
+    {
+       11, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+     -201, -201, -201,   58, -201, -201,   58,  205,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -201
+    },
+
+    {
+       11, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+     -202, -202, -202,   58, -202, -202,   58,  206,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -202
+    },
+
+    {
+       11, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+     -203, -203, -203,   58, -203, -203,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -203
+    },
+
+    {
+       11, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+     -204, -204, -204,   58, -204, -204,   58,   58,   58,   58,
+       58,   58,   58,  207,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -204
+
+    },
+
+    {
+       11, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+     -205, -205, -205,   58, -205, -205,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  208,   58,
+       58,   58,   58,   58,   58,   58,   58, -205
+    },
+
+    {
+       11, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+     -206, -206, -206,   58, -206, -206,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  209,   58,   58, -206
+    },
+
+    {
+       11, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+     -207, -207, -207,   58, -207, -207,   58,   58,   58,   58,
+
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -207
+    },
+
+    {
+       11, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+     -208, -208, -208,   58, -208, -208,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -208
+    },
+
+    {
+       11, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+     -209, -209, -209,   58, -209, -209,   58,   58,   58,   58,
+       58,  210,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -209
+
+    },
+
+    {
+       11, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+     -210, -210, -210,   58, -210, -210,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58, -210
+    },
+
+    } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up zconftext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       (yytext_ptr) = yy_bp; \
+       zconfleng = (size_t) (yy_cp - yy_bp); \
+       (yy_hold_char) = *yy_cp; \
+       *yy_cp = '\0'; \
+       (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 64
+#define YY_END_OF_BUFFER 65
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+       {
+       flex_int32_t yy_verify;
+       flex_int32_t yy_nxt;
+       };
+static yyconst flex_int16_t yy_accept[211] =
+    {   0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       65,    5,    4,    3,    2,   36,   37,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       63,   60,   62,   55,   59,   58,   57,   53,   48,   42,
+       47,   51,   53,   40,   41,   50,   50,   43,   53,   50,
+       50,   53,    4,    3,    2,    2,    1,   35,   35,   35,
+       35,   35,   35,   35,   16,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   63,   60,   62,   61,
+       55,   54,   57,   56,   44,   51,   38,   50,   50,   52,
+       45,   46,   39,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   30,   29,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   49,   25,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   15,   35,    7,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   17,   35,   35,
+       35,   35,   35,   34,   35,   35,   35,   35,   35,   35,
+       10,   35,   13,   35,   35,   35,   35,   33,   35,   35,
+       35,   35,   35,   22,   35,   32,    9,   31,   35,   26,
+       12,   35,   35,   21,   18,   35,    8,   35,   35,   35,
+       35,   35,   27,   35,   35,    6,   35,   20,   19,   23,
+
+       35,   35,   11,   35,   35,   35,   14,   28,   35,   24
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,
+       10,    1,    1,    1,   11,   12,   12,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,    1,    1,    1,
+       14,    1,    1,    1,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+        1,   15,    1,    1,   16,    1,   17,   18,   19,   20,
+
+       21,   22,   23,   24,   25,   13,   13,   26,   27,   28,
+       29,   30,   31,   32,   33,   34,   35,   13,   13,   36,
+       13,   13,    1,   37,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *zconftext;
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE  16
+
+char *text;
+static char *text_ptr;
+static int text_size, text_asize;
+
+struct buffer {
+        struct buffer *parent;
+        YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static struct buffer *zconf_endfile(void);
+
+void new_string(void)
+{
+       text = malloc(START_STRSIZE);
+       text_asize = START_STRSIZE;
+       text_ptr = text;
+       text_size = 0;
+       *text_ptr = 0;
+}
+
+void append_string(const char *str, int size)
+{
+       int new_size = text_size + size + 1;
+       if (new_size > text_asize) {
+               text = realloc(text, new_size);
+               text_asize = new_size;
+               text_ptr = text + text_size;
+       }
+       memcpy(text_ptr, str, size);
+       text_ptr += size;
+       text_size += size;
+       *text_ptr = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+       text = malloc(size + 1);
+       memcpy(text, str, size);
+       text[size] = 0;
+}
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int zconfwrap (void );
+#else
+extern int zconfwrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       errno=0; \
+       while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
+       { \
+               if( errno != EINTR) \
+               { \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+                       break; \
+               } \
+               errno=0; \
+               clearerr(zconfin); \
+       }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
+
+       int str = 0;
+       int ts, i;
+
+       if ( (yy_init) )
+               {
+               (yy_init) = 0;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! (yy_start) )
+                       (yy_start) = 1; /* first start state */
+
+               if ( ! zconfin )
+                       zconfin = stdin;
+
+               if ( ! zconfout )
+                       zconfout = stdout;
+
+               if ( ! YY_CURRENT_BUFFER ) {
+                       zconfensure_buffer_stack ();
+                       YY_CURRENT_BUFFER_LVALUE =
+                               zconf_create_buffer(zconfin,YY_BUF_SIZE );
+               }
+
+               zconf_load_buffer_state( );
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = (yy_c_buf_p);
+
+               /* Support of zconftext. */
+               *yy_cp = (yy_hold_char);
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = (yy_start);
+yy_match:
+               while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
+                       ++yy_cp;
+
+               yy_current_state = -yy_current_state;
+
+yy_find_action:
+               yy_act = yy_accept[yy_current_state];
+
+               YY_DO_BEFORE_ACTION;
+
+do_action:     /* This label is used only to access EOF actions. */
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+
+       YY_BREAK
+case 3:
+/* rule 3 can match eol */
+YY_RULE_SETUP
+current_file->lineno++; return T_EOL;
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+       BEGIN(COMMAND);
+}
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+       unput(zconftext[0]);
+       BEGIN(COMMAND);
+}
+       YY_BREAK
+
+case 6:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_MAINMENU;
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_MENU;
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_ENDMENU;
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_SOURCE;
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_CHOICE;
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_ENDCHOICE;
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_COMMENT;
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_CONFIG;
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_MENUCONFIG;
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_HELP;
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_IF;
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_ENDIF;
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_DEPENDS;
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_REQUIRES;
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_OPTIONAL;
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_DEFAULT;
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_PROMPT;
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_TRISTATE;
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_DEF_TRISTATE;
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_BOOLEAN;
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_BOOLEAN;
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_DEF_BOOLEAN;
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_DEF_BOOLEAN;
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_INT;
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_HEX;
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_STRING;
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_SELECT;
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_SELECT;
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_RANGE;
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+{
+               alloc_string(zconftext, zconfleng);
+               zconflval.string = text;
+               return T_WORD;
+       }
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+
+       YY_BREAK
+case 37:
+/* rule 37 can match eol */
+YY_RULE_SETUP
+current_file->lineno++; BEGIN(INITIAL);
+       YY_BREAK
+
+case 38:
+YY_RULE_SETUP
+return T_AND;
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+return T_OR;
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+return T_OPEN_PAREN;
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+return T_CLOSE_PAREN;
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+return T_NOT;
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+return T_EQUAL;
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+return T_UNEQUAL;
+       YY_BREAK
+case 45:
+YY_RULE_SETUP
+return T_IF;
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+return T_ON;
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+{
+               str = zconftext[0];
+               new_string();
+               BEGIN(STRING);
+       }
+       YY_BREAK
+case 48:
+/* rule 48 can match eol */
+YY_RULE_SETUP
+BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+/* ignore */
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+{
+               alloc_string(zconftext, zconfleng);
+               zconflval.string = text;
+               return T_WORD;
+       }
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+/* comment */
+       YY_BREAK
+case 52:
+/* rule 52 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+
+       YY_BREAK
+case YY_STATE_EOF(PARAM):
+{
+               BEGIN(INITIAL);
+       }
+       YY_BREAK
+
+case 54:
+/* rule 54 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+               append_string(zconftext, zconfleng);
+               zconflval.string = text;
+               return T_WORD_QUOTE;
+       }
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+{
+               append_string(zconftext, zconfleng);
+       }
+       YY_BREAK
+case 56:
+/* rule 56 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+               append_string(zconftext + 1, zconfleng - 1);
+               zconflval.string = text;
+               return T_WORD_QUOTE;
+       }
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+{
+               append_string(zconftext + 1, zconfleng - 1);
+       }
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+{
+               if (str == zconftext[0]) {
+                       BEGIN(PARAM);
+                       zconflval.string = text;
+                       return T_WORD_QUOTE;
+               } else
+                       append_string(zconftext, 1);
+       }
+       YY_BREAK
+case 59:
+/* rule 59 can match eol */
+YY_RULE_SETUP
+{
+               printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+               current_file->lineno++;
+               BEGIN(INITIAL);
+               return T_EOL;
+       }
+       YY_BREAK
+case YY_STATE_EOF(STRING):
+{
+               BEGIN(INITIAL);
+       }
+       YY_BREAK
+
+case 60:
+YY_RULE_SETUP
+{
+               ts = 0;
+               for (i = 0; i < zconfleng; i++) {
+                       if (zconftext[i] == '\t')
+                               ts = (ts & ~7) + 8;
+                       else
+                               ts++;
+               }
+               last_ts = ts;
+               if (first_ts) {
+                       if (ts < first_ts) {
+                               zconf_endhelp();
+                               return T_HELPTEXT;
+                       }
+                       ts -= first_ts;
+                       while (ts > 8) {
+                               append_string("        ", 8);
+                               ts -= 8;
+                       }
+                       append_string("        ", ts);
+               }
+       }
+       YY_BREAK
+case 61:
+/* rule 61 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+               current_file->lineno++;
+               zconf_endhelp();
+               return T_HELPTEXT;
+       }
+       YY_BREAK
+case 62:
+/* rule 62 can match eol */
+YY_RULE_SETUP
+{
+               current_file->lineno++;
+               append_string("\n", 1);
+       }
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+{
+               append_string(zconftext, zconfleng);
+               if (!first_ts)
+                       first_ts = last_ts;
+       }
+       YY_BREAK
+case YY_STATE_EOF(HELP):
+{
+               zconf_endhelp();
+               return T_HELPTEXT;
+       }
+       YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMAND):
+{
+       if (current_buf) {
+               zconf_endfile();
+               return T_EOF;
+       }
+       fclose(zconfin);
+       yyterminate();
+}
+       YY_BREAK
+case 64:
+YY_RULE_SETUP
+YY_FATAL_ERROR( "flex scanner jammed" );
+       YY_BREAK
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = (yy_hold_char);
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed zconfin at a new source and called
+                        * zconflex().  If so, then we have to assure
+                        * consistency between YY_CURRENT_BUFFER and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state(  );
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++(yy_c_buf_p);
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = (yy_c_buf_p);
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer(  ) )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               (yy_did_buffer_switch_on_eof) = 0;
+
+                               if ( zconfwrap( ) )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * zconftext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               (yy_c_buf_p) =
+                                       (yytext_ptr) + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               (yy_c_buf_p) =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+} /* end of zconflex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       register char *source = (yytext_ptr);
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+       else
+               {
+                       size_t num_to_read =
+                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+                       int yy_c_buf_p_offset =
+                               (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+                                               number_to_move - 1;
+
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+                       (yy_n_chars), num_to_read );
+
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       if ( (yy_n_chars) == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       zconfrestart(zconfin  );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       (yy_n_chars) += number_to_move;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+       (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+       return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+
+       yy_current_state = (yy_start);
+
+       for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+               {
+               yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+               }
+
+       return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+       register int yy_is_jam;
+
+       yy_current_state = yy_nxt[yy_current_state][1];
+       yy_is_jam = (yy_current_state <= 0);
+
+       return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+       register char *yy_cp;
+
+    yy_cp = (yy_c_buf_p);
+
+       /* undo effects of setting up zconftext */
+       *yy_cp = (yy_hold_char);
+
+       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = (yy_n_chars) + 2;
+               register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+                                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+               register char *source =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+               while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+               if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+       (yytext_ptr) = yy_bp;
+       (yy_hold_char) = *yy_cp;
+       (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+       int c;
+
+       *(yy_c_buf_p) = (yy_hold_char);
+
+       if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       /* This was really a NUL. */
+                       *(yy_c_buf_p) = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       ++(yy_c_buf_p);
+
+                       switch ( yy_get_next_buffer(  ) )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       zconfrestart(zconfin );
+
+                                       /*FALLTHROUGH*/
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( zconfwrap( ) )
+                                               return EOF;
+
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       (yy_c_buf_p) = (yytext_ptr) + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
+       *(yy_c_buf_p) = '\0';   /* preserve zconftext */
+       (yy_hold_char) = *++(yy_c_buf_p);
+
+       return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void zconfrestart  (FILE * input_file )
+{
+
+       if ( ! YY_CURRENT_BUFFER ){
+        zconfensure_buffer_stack ();
+               YY_CURRENT_BUFFER_LVALUE =
+            zconf_create_buffer(zconfin,YY_BUF_SIZE );
+       }
+
+       zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+       zconf_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+    void zconf_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+
+       /* TODO. We should be able to replace this entire function body
+        * with
+        *              zconfpop_buffer_state();
+        *              zconfpush_buffer_state(new_buffer);
+     */
+       zconfensure_buffer_stack ();
+       if ( YY_CURRENT_BUFFER == new_buffer )
+               return;
+
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+       zconf_load_buffer_state( );
+
+       /* We don't actually know whether we did this switch during
+        * EOF (zconfwrap()) processing, but the only time this flag
+        * is looked at is after zconfwrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void zconf_load_buffer_state  (void)
+{
+       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+       (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+       zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE zconf_create_buffer  (FILE * file, int  size )
+{
+       YY_BUFFER_STATE b;
+
+       b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2  );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       zconf_init_buffer(b,file );
+
+       return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+    void zconf_delete_buffer (YY_BUFFER_STATE  b )
+{
+
+       if ( ! b )
+               return;
+
+       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               zconffree((void *) b->yy_ch_buf  );
+
+       zconffree((void *) b  );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+    static void zconf_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+       int oerrno = errno;
+
+       zconf_flush_buffer(b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then zconf_init_buffer was _probably_
+     * called from zconfrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = 0;
+
+       errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+    void zconf_flush_buffer (YY_BUFFER_STATE  b )
+{
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == YY_CURRENT_BUFFER )
+               zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+       if (new_buffer == NULL)
+               return;
+
+       zconfensure_buffer_stack();
+
+       /* This block is copied from zconf_switch_to_buffer. */
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       /* Only push if top exists. Otherwise, replace top. */
+       if (YY_CURRENT_BUFFER)
+               (yy_buffer_stack_top)++;
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+       /* copied from zconf_switch_to_buffer. */
+       zconf_load_buffer_state( );
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+       if (!YY_CURRENT_BUFFER)
+               return;
+
+       zconf_delete_buffer(YY_CURRENT_BUFFER );
+       YY_CURRENT_BUFFER_LVALUE = NULL;
+       if ((yy_buffer_stack_top) > 0)
+               --(yy_buffer_stack_top);
+
+       if (YY_CURRENT_BUFFER) {
+               zconf_load_buffer_state( );
+               (yy_did_buffer_switch_on_eof) = 1;
+       }
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+       int num_to_alloc;
+
+       if (!(yy_buffer_stack)) {
+
+               /* First allocation is just for 2 elements, since we don't know if this
+                * scanner will even need a stack. We use 2 instead of 1 to avoid an
+                * immediate realloc on the next call.
+         */
+               num_to_alloc = 1;
+               (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+
+               memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+               (yy_buffer_stack_max) = num_to_alloc;
+               (yy_buffer_stack_top) = 0;
+               return;
+       }
+
+       if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+               /* Increase the buffer to prepare for a possible push. */
+               int grow_size = 8 /* arbitrary grow size */;
+
+               num_to_alloc = (yy_buffer_stack_max) + grow_size;
+               (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+                                                               ((yy_buffer_stack),
+                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+
+               /* zero only the new slots.*/
+               memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+               (yy_buffer_stack_max) = num_to_alloc;
+       }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer  (char * base, yy_size_t  size )
+{
+       YY_BUFFER_STATE b;
+
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       zconf_switch_to_buffer(b  );
+
+       return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param str a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * str )
+{
+
+       return zconf_scan_bytes(str,strlen(str) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes  (yyconst char * bytes, int  len )
+{
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) zconfalloc(n  );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = zconf_scan_buffer(buf,n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up zconftext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               zconftext[zconfleng] = (yy_hold_char); \
+               (yy_c_buf_p) = zconftext + yyless_macro_arg; \
+               (yy_hold_char) = *(yy_c_buf_p); \
+               *(yy_c_buf_p) = '\0'; \
+               zconfleng = yyless_macro_arg; \
+               } \
+       while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno  (void)
+{
+
+    return zconflineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in  (void)
+{
+        return zconfin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out  (void)
+{
+        return zconfout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng  (void)
+{
+        return zconfleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *zconfget_text  (void)
+{
+        return zconftext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int  line_number )
+{
+
+    zconflineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE *  in_str )
+{
+        zconfin = in_str ;
+}
+
+void zconfset_out (FILE *  out_str )
+{
+        zconfout = out_str ;
+}
+
+int zconfget_debug  (void)
+{
+        return zconf_flex_debug;
+}
+
+void zconfset_debug (int  bdebug )
+{
+        zconf_flex_debug = bdebug ;
+}
+
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy  (void)
+{
+
+    /* Pop the buffer stack, destroying each element. */
+       while(YY_CURRENT_BUFFER){
+               zconf_delete_buffer(YY_CURRENT_BUFFER  );
+               YY_CURRENT_BUFFER_LVALUE = NULL;
+               zconfpop_buffer_state();
+       }
+
+       /* Destroy the stack itself. */
+       zconffree((yy_buffer_stack) );
+       (yy_buffer_stack) = NULL;
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+}
+#endif
+
+void *zconfalloc (yy_size_t  size )
+{
+       return (void *) malloc( size );
+}
+
+void *zconfrealloc  (void * ptr, yy_size_t  size )
+{
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+}
+
+void zconffree (void * ptr )
+{
+       free( (char *) ptr );   /* see zconfrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef yytext_ptr
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+void zconf_starthelp(void)
+{
+       new_string();
+       last_ts = first_ts = 0;
+       BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+       zconflval.string = text;
+       BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+       char *env, fullname[PATH_MAX+1];
+       FILE *f;
+
+       f = fopen(name, "r");
+       if (!f && name[0] != '/') {
+               env = getenv(SRCTREE);
+               if (env) {
+                       sprintf(fullname, "%s/%s", env, name);
+                       f = fopen(fullname, "r");
+               }
+       }
+       return f;
+}
+
+void zconf_initscan(const char *name)
+{
+       zconfin = zconf_fopen(name);
+       if (!zconfin) {
+               printf("can't find file %s\n", name);
+               exit(1);
+       }
+
+       current_buf = malloc(sizeof(*current_buf));
+       memset(current_buf, 0, sizeof(*current_buf));
+
+       current_file = file_lookup(name);
+       current_file->lineno = 1;
+       current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+       struct file *file = file_lookup(name);
+       struct buffer *buf = malloc(sizeof(*buf));
+       memset(buf, 0, sizeof(*buf));
+
+       current_buf->state = YY_CURRENT_BUFFER;
+       zconfin = zconf_fopen(name);
+       if (!zconfin) {
+               printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+               exit(1);
+       }
+       zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
+       buf->parent = current_buf;
+       current_buf = buf;
+
+       if (file->flags & FILE_BUSY) {
+               printf("recursive scan (%s)?\n", name);
+               exit(1);
+       }
+       if (file->flags & FILE_SCANNED) {
+               printf("file %s already scanned?\n", name);
+               exit(1);
+       }
+       file->flags |= FILE_BUSY;
+       file->lineno = 1;
+       file->parent = current_file;
+       current_file = file;
+}
+
+static struct buffer *zconf_endfile(void)
+{
+       struct buffer *parent;
+
+       current_file->flags |= FILE_SCANNED;
+       current_file->flags &= ~FILE_BUSY;
+       current_file = current_file->parent;
+
+       parent = current_buf->parent;
+       if (parent) {
+               fclose(zconfin);
+               zconf_delete_buffer(YY_CURRENT_BUFFER);
+               zconf_switch_to_buffer(parent->state);
+       }
+       free(current_buf);
+       current_buf = parent;
+
+       return parent;
+}
+
+int zconf_lineno(void)
+{
+       if (current_buf)
+               return current_file->lineno - 1;
+       else
+               return 0;
+}
+
+char *zconf_curname(void)
+{
+       if (current_buf)
+               return current_file->name;
+       else
+               return "<none>";
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h
new file mode 100644 (file)
index 0000000..b8a67fc
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef LKC_H
+#define LKC_H
+
+#include "expr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LKC_DIRECT_LINK
+#define P(name,type,arg)       extern type name arg
+#else
+#include "lkc_defs.h"
+#define P(name,type,arg)       extern type (*name ## _p) arg
+#endif
+#include "lkc_proto.h"
+#undef P
+
+#define SRCTREE "srctree"
+
+int zconfparse(void);
+void zconfdump(FILE *out);
+
+extern int zconfdebug;
+void zconf_starthelp(void);
+FILE *zconf_fopen(const char *name);
+void zconf_initscan(const char *name);
+void zconf_nextfile(const char *name);
+int zconf_lineno(void);
+char *zconf_curname(void);
+
+/* confdata.c */
+extern const char conf_def_filename[];
+extern char conf_filename[];
+
+char *conf_get_default_confname(void);
+
+/* kconfig_load.c */
+void kconfig_load(void);
+
+/* menu.c */
+void menu_init(void);
+void menu_add_menu(void);
+void menu_end_menu(void);
+void menu_add_entry(struct symbol *sym);
+void menu_end_entry(void);
+void menu_add_dep(struct expr *dep);
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
+void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
+void menu_finalize(struct menu *parent);
+void menu_set_type(int type);
+
+/* util.c */
+struct file *file_lookup(const char *name);
+int file_write_dep(const char *name);
+
+struct gstr {
+       size_t len;
+       char  *s;
+};
+struct gstr str_new(void);
+struct gstr str_assign(const char *s);
+void str_free(struct gstr *gs);
+void str_append(struct gstr *gs, const char *s);
+void str_printf(struct gstr *gs, const char *fmt, ...);
+const char *str_get(struct gstr *gs);
+
+/* symbol.c */
+void sym_init(void);
+void sym_clear_all_valid(void);
+void sym_set_changed(struct symbol *sym);
+struct symbol *sym_check_deps(struct symbol *sym);
+struct property *prop_alloc(enum prop_type type, struct symbol *sym);
+struct symbol *prop_get_symbol(struct property *prop);
+
+static inline tristate sym_get_tristate_value(struct symbol *sym)
+{
+       return sym->curr.tri;
+}
+
+
+static inline struct symbol *sym_get_choice_value(struct symbol *sym)
+{
+       return (struct symbol *)sym->curr.val;
+}
+
+static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
+{
+       return sym_set_tristate_value(chval, yes);
+}
+
+static inline bool sym_is_choice(struct symbol *sym)
+{
+       return sym->flags & SYMBOL_CHOICE ? true : false;
+}
+
+static inline bool sym_is_choice_value(struct symbol *sym)
+{
+       return sym->flags & SYMBOL_CHOICEVAL ? true : false;
+}
+
+static inline bool sym_is_optional(struct symbol *sym)
+{
+       return sym->flags & SYMBOL_OPTIONAL ? true : false;
+}
+
+static inline bool sym_has_value(struct symbol *sym)
+{
+       return sym->flags & SYMBOL_NEW ? false : true;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LKC_H */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h
new file mode 100644 (file)
index 0000000..6dc6d0c
--- /dev/null
@@ -0,0 +1,40 @@
+
+/* confdata.c */
+P(conf_parse,void,(const char *name));
+P(conf_read,int,(const char *name));
+P(conf_write,int,(const char *name));
+
+/* menu.c */
+P(rootmenu,struct menu,);
+
+P(menu_is_visible,bool,(struct menu *menu));
+P(menu_get_prompt,const char *,(struct menu *menu));
+P(menu_get_root_menu,struct menu *,(struct menu *menu));
+P(menu_get_parent_menu,struct menu *,(struct menu *menu));
+
+/* symbol.c */
+P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
+P(sym_change_count,int,);
+
+P(sym_lookup,struct symbol *,(const char *name, int isconst));
+P(sym_find,struct symbol *,(const char *name));
+P(sym_re_search,struct symbol **,(const char *pattern));
+P(sym_type_name,const char *,(enum symbol_type type));
+P(sym_calc_value,void,(struct symbol *sym));
+P(sym_get_type,enum symbol_type,(struct symbol *sym));
+P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
+P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
+P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
+P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
+P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
+P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
+P(sym_is_changable,bool,(struct symbol *sym));
+P(sym_get_choice_prop,struct property *,(struct symbol *sym));
+P(sym_get_default_prop,struct property *,(struct symbol *sym));
+P(sym_get_string_value,const char *,(struct symbol *sym));
+
+P(prop_get_type_name,const char *,(enum prop_type type));
+
+/* expr.c */
+P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
+P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken));
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING
new file mode 100644 (file)
index 0000000..a8999d8
--- /dev/null
@@ -0,0 +1,4 @@
+This is NOT the official version of dialog.  This version has been
+significantly modified from the original.  It is for use by the Linux
+kernel configuration script.  Please do not bother Savio Lam with 
+questions about this program.
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c
new file mode 100644 (file)
index 0000000..71de4a1
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ *  checklist.c -- implements the checklist box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *     Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension
+ *     Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static int list_width, check_x, item_x, checkflag;
+
+/*
+ * Print list item
+ */
+static void
+print_item (WINDOW * win, const char *item, int status,
+           int choice, int selected)
+{
+    int i;
+
+    /* Clear 'residue' of last item */
+    wattrset (win, menubox_attr);
+    wmove (win, choice, 0);
+    for (i = 0; i < list_width; i++)
+       waddch (win, ' ');
+
+    wmove (win, choice, check_x);
+    wattrset (win, selected ? check_selected_attr : check_attr);
+    if (checkflag == FLAG_CHECK)
+       wprintw (win, "[%c]", status ? 'X' : ' ');
+    else
+       wprintw (win, "(%c)", status ? 'X' : ' ');
+
+    wattrset (win, selected ? tag_selected_attr : tag_attr);
+    mvwaddch(win, choice, item_x, item[0]);
+    wattrset (win, selected ? item_selected_attr : item_attr);
+    waddstr (win, (char *)item+1);
+    if (selected) {
+       wmove (win, choice, check_x+1);
+       wrefresh (win);
+    }
+}
+
+/*
+ * Print the scroll indicators.
+ */
+static void
+print_arrows (WINDOW * win, int choice, int item_no, int scroll,
+               int y, int x, int height)
+{
+    wmove(win, y, x);
+
+    if (scroll > 0) {
+       wattrset (win, uarrow_attr);
+       waddch (win, ACS_UARROW);
+       waddstr (win, "(-)");
+    }
+    else {
+       wattrset (win, menubox_attr);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+    }
+
+   y = y + height + 1;
+   wmove(win, y, x);
+
+   if ((height < item_no) && (scroll + choice < item_no - 1)) {
+       wattrset (win, darrow_attr);
+       waddch (win, ACS_DARROW);
+       waddstr (win, "(+)");
+    }
+    else {
+       wattrset (win, menubox_border_attr);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+   }
+}
+
+/*
+ *  Display the termination buttons
+ */
+static void
+print_buttons( WINDOW *dialog, int height, int width, int selected)
+{
+    int x = width / 2 - 11;
+    int y = height - 2;
+
+    print_button (dialog, "Select", y, x, selected == 0);
+    print_button (dialog, " Help ", y, x + 14, selected == 1);
+
+    wmove(dialog, y, x+1 + 14*selected);
+    wrefresh (dialog);
+}
+
+/*
+ * Display a dialog box with a list of options that can be turned on or off
+ * The `flag' parameter is used to select between radiolist and checklist.
+ */
+int
+dialog_checklist (const char *title, const char *prompt, int height, int width,
+       int list_height, int item_no, struct dialog_list_item ** items,
+       int flag)
+       
+{
+    int i, x, y, box_x, box_y;
+    int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status;
+    WINDOW *dialog, *list;
+
+    checkflag = flag;
+
+    /* Allocate space for storing item on/off status */
+    if ((status = malloc (sizeof (int) * item_no)) == NULL) {
+       endwin ();
+       fprintf (stderr,
+                "\nCan't allocate memory in dialog_checklist().\n");
+       exit (-1);
+    }
+
+    /* Initializes status */
+    for (i = 0; i < item_no; i++) {
+       status[i] = (items[i]->selected == 1); /* ON */
+       if ((!choice && status[i]) || items[i]->selected == 2) /* SELECTED */
+            choice = i + 1;
+    }
+    if (choice)
+           choice--;
+
+    max_choice = MIN (list_height, item_no);
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+    wattrset (dialog, border_attr);
+    mvwaddch (dialog, height-3, 0, ACS_LTEE);
+    for (i = 0; i < width - 2; i++)
+       waddch (dialog, ACS_HLINE);
+    wattrset (dialog, dialog_attr);
+    waddch (dialog, ACS_RTEE);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+
+    wattrset (dialog, dialog_attr);
+    print_autowrap (dialog, prompt, width - 2, 1, 3);
+
+    list_width = width - 6;
+    box_y = height - list_height - 5;
+    box_x = (width - list_width) / 2 - 1;
+
+    /* create new window for the list */
+    list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1);
+
+    keypad (list, TRUE);
+
+    /* draw a box around the list items */
+    draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2,
+             menubox_border_attr, menubox_attr);
+
+    /* Find length of longest item in order to center checklist */
+    check_x = 0;
+    for (i = 0; i < item_no; i++) 
+       check_x = MAX (check_x, + strlen (items[i]->name) + 4);
+
+    check_x = (list_width - check_x) / 2;
+    item_x = check_x + 4;
+
+    if (choice >= list_height) {
+       scroll = choice - list_height + 1;
+       choice -= scroll;
+    }
+
+    /* Print the list */
+    for (i = 0; i < max_choice; i++) {
+       print_item (list, items[scroll + i]->name,
+                   status[i+scroll], i, i == choice);
+    }
+
+    print_arrows(dialog, choice, item_no, scroll,
+                       box_y, box_x + check_x + 5, list_height);
+
+    print_buttons(dialog, height, width, 0);
+
+    wnoutrefresh (list);
+    wnoutrefresh (dialog);
+    doupdate ();
+
+    while (key != ESC) {
+       key = wgetch (dialog);
+
+       for (i = 0; i < max_choice; i++)
+            if (toupper(key) == toupper(items[scroll + i]->name[0]))
+                break;
+
+
+       if ( i < max_choice || key == KEY_UP || key == KEY_DOWN || 
+           key == '+' || key == '-' ) {
+           if (key == KEY_UP || key == '-') {
+               if (!choice) {
+                   if (!scroll)
+                       continue;
+                   /* Scroll list down */
+                   if (list_height > 1) {
+                       /* De-highlight current first item */
+                       print_item (list, items[scroll]->name,
+                                       status[scroll], 0, FALSE);
+                       scrollok (list, TRUE);
+                       wscrl (list, -1);
+                       scrollok (list, FALSE);
+                   }
+                   scroll--;
+                   print_item (list, items[scroll]->name,
+                               status[scroll], 0, TRUE);
+                   wnoutrefresh (list);
+
+                   print_arrows(dialog, choice, item_no, scroll,
+                               box_y, box_x + check_x + 5, list_height);
+
+                   wrefresh (dialog);
+
+                   continue;   /* wait for another key press */
+               } else
+                   i = choice - 1;
+           } else if (key == KEY_DOWN || key == '+') {
+               if (choice == max_choice - 1) {
+                   if (scroll + choice >= item_no - 1)
+                       continue;
+                   /* Scroll list up */
+                   if (list_height > 1) {
+                       /* De-highlight current last item before scrolling up */
+                       print_item (list, items[scroll + max_choice - 1]->name,
+                                   status[scroll + max_choice - 1],
+                                   max_choice - 1, FALSE);
+                       scrollok (list, TRUE);
+                       scroll (list);
+                       scrollok (list, FALSE);
+                   }
+                   scroll++;
+                   print_item (list, items[scroll + max_choice - 1]->name,
+                               status[scroll + max_choice - 1],
+                               max_choice - 1, TRUE);
+                   wnoutrefresh (list);
+
+                   print_arrows(dialog, choice, item_no, scroll,
+                               box_y, box_x + check_x + 5, list_height);
+
+                   wrefresh (dialog);
+
+                   continue;   /* wait for another key press */
+               } else
+                   i = choice + 1;
+           }
+           if (i != choice) {
+               /* De-highlight current item */
+               print_item (list, items[scroll + choice]->name,
+                           status[scroll + choice], choice, FALSE);
+               /* Highlight new item */
+               choice = i;
+               print_item (list, items[scroll + choice]->name,
+                           status[scroll + choice], choice, TRUE);
+               wnoutrefresh (list);
+               wrefresh (dialog);
+           }
+           continue;           /* wait for another key press */
+       }
+       switch (key) {
+       case 'H':
+       case 'h':
+       case '?':
+           for (i = 0; i < item_no; i++)
+               items[i]->selected = 0;
+           items[scroll + choice]->selected = 1;
+           delwin (dialog);
+           free (status);
+           return 1;
+       case TAB:
+       case KEY_LEFT:
+       case KEY_RIGHT:
+           button = ((key == KEY_LEFT ? --button : ++button) < 0)
+                       ? 1 : (button > 1 ? 0 : button);
+
+           print_buttons(dialog, height, width, button);
+           wrefresh (dialog);
+           break;
+       case 'S':
+       case 's':
+       case ' ':
+       case '\n':
+           if (!button) {
+               if (flag == FLAG_CHECK) {
+                   status[scroll + choice] = !status[scroll + choice];
+                   wmove (list, choice, check_x);
+                   wattrset (list, check_selected_attr);
+                   wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' ');
+               } else {
+                   if (!status[scroll + choice]) {
+                       for (i = 0; i < item_no; i++)
+                           status[i] = 0;
+                       status[scroll + choice] = 1;
+                       for (i = 0; i < max_choice; i++)
+                           print_item (list, items[scroll + i]->name,
+                                       status[scroll + i], i, i == choice);
+                   }
+               }
+               wnoutrefresh (list);
+               wrefresh (dialog);
+            
+               for (i = 0; i < item_no; i++) {
+                       items[i]->selected = status[i];
+               }
+            } else {
+                   for (i = 0; i < item_no; i++)
+                           items[i]->selected = 0;
+                   items[scroll + choice]->selected = 1;
+           }
+           delwin (dialog);
+           free (status);
+           return button;
+       case 'X':
+       case 'x':
+           key = ESC;
+       case ESC:
+           break;
+       }
+
+       /* Now, update everything... */
+       doupdate ();
+    }
+    
+
+    delwin (dialog);
+    free (status);
+    return -1;                 /* ESC pressed */
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h
new file mode 100644 (file)
index 0000000..d34dd37
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ *  colors.h -- color attribute definitions
+ *
+ *  AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+/*
+ *   Default color definitions
+ *
+ *   *_FG = foreground
+ *   *_BG = background
+ *   *_HL = highlight?
+ */
+#define SCREEN_FG                    COLOR_CYAN
+#define SCREEN_BG                    COLOR_BLUE
+#define SCREEN_HL                    TRUE
+
+#define SHADOW_FG                    COLOR_BLACK
+#define SHADOW_BG                    COLOR_BLACK
+#define SHADOW_HL                    TRUE
+
+#define DIALOG_FG                    COLOR_BLACK
+#define DIALOG_BG                    COLOR_WHITE
+#define DIALOG_HL                    FALSE
+
+#define TITLE_FG                     COLOR_YELLOW
+#define TITLE_BG                     COLOR_WHITE
+#define TITLE_HL                     TRUE
+
+#define BORDER_FG                    COLOR_WHITE
+#define BORDER_BG                    COLOR_WHITE
+#define BORDER_HL                    TRUE
+
+#define BUTTON_ACTIVE_FG             COLOR_WHITE
+#define BUTTON_ACTIVE_BG             COLOR_BLUE
+#define BUTTON_ACTIVE_HL             TRUE
+
+#define BUTTON_INACTIVE_FG           COLOR_BLACK
+#define BUTTON_INACTIVE_BG           COLOR_WHITE
+#define BUTTON_INACTIVE_HL           FALSE
+
+#define BUTTON_KEY_ACTIVE_FG         COLOR_WHITE
+#define BUTTON_KEY_ACTIVE_BG         COLOR_BLUE
+#define BUTTON_KEY_ACTIVE_HL         TRUE
+
+#define BUTTON_KEY_INACTIVE_FG       COLOR_RED
+#define BUTTON_KEY_INACTIVE_BG       COLOR_WHITE
+#define BUTTON_KEY_INACTIVE_HL       FALSE
+
+#define BUTTON_LABEL_ACTIVE_FG       COLOR_YELLOW
+#define BUTTON_LABEL_ACTIVE_BG       COLOR_BLUE
+#define BUTTON_LABEL_ACTIVE_HL       TRUE
+
+#define BUTTON_LABEL_INACTIVE_FG     COLOR_BLACK
+#define BUTTON_LABEL_INACTIVE_BG     COLOR_WHITE
+#define BUTTON_LABEL_INACTIVE_HL     TRUE
+
+#define INPUTBOX_FG                  COLOR_BLACK
+#define INPUTBOX_BG                  COLOR_WHITE
+#define INPUTBOX_HL                  FALSE
+
+#define INPUTBOX_BORDER_FG           COLOR_BLACK
+#define INPUTBOX_BORDER_BG           COLOR_WHITE
+#define INPUTBOX_BORDER_HL           FALSE
+
+#define SEARCHBOX_FG                 COLOR_BLACK
+#define SEARCHBOX_BG                 COLOR_WHITE
+#define SEARCHBOX_HL                 FALSE
+
+#define SEARCHBOX_TITLE_FG           COLOR_YELLOW
+#define SEARCHBOX_TITLE_BG           COLOR_WHITE
+#define SEARCHBOX_TITLE_HL           TRUE
+
+#define SEARCHBOX_BORDER_FG          COLOR_WHITE
+#define SEARCHBOX_BORDER_BG          COLOR_WHITE
+#define SEARCHBOX_BORDER_HL          TRUE
+
+#define POSITION_INDICATOR_FG        COLOR_YELLOW
+#define POSITION_INDICATOR_BG        COLOR_WHITE
+#define POSITION_INDICATOR_HL        TRUE
+
+#define MENUBOX_FG                   COLOR_BLACK
+#define MENUBOX_BG                   COLOR_WHITE
+#define MENUBOX_HL                   FALSE
+
+#define MENUBOX_BORDER_FG            COLOR_WHITE
+#define MENUBOX_BORDER_BG            COLOR_WHITE
+#define MENUBOX_BORDER_HL            TRUE
+
+#define ITEM_FG                      COLOR_BLACK
+#define ITEM_BG                      COLOR_WHITE
+#define ITEM_HL                      FALSE
+
+#define ITEM_SELECTED_FG             COLOR_WHITE
+#define ITEM_SELECTED_BG             COLOR_BLUE
+#define ITEM_SELECTED_HL             TRUE
+
+#define TAG_FG                       COLOR_YELLOW
+#define TAG_BG                       COLOR_WHITE
+#define TAG_HL                       TRUE
+
+#define TAG_SELECTED_FG              COLOR_YELLOW
+#define TAG_SELECTED_BG              COLOR_BLUE
+#define TAG_SELECTED_HL              TRUE
+
+#define TAG_KEY_FG                   COLOR_YELLOW
+#define TAG_KEY_BG                   COLOR_WHITE
+#define TAG_KEY_HL                   TRUE
+
+#define TAG_KEY_SELECTED_FG          COLOR_YELLOW
+#define TAG_KEY_SELECTED_BG          COLOR_BLUE
+#define TAG_KEY_SELECTED_HL          TRUE
+
+#define CHECK_FG                     COLOR_BLACK
+#define CHECK_BG                     COLOR_WHITE
+#define CHECK_HL                     FALSE
+
+#define CHECK_SELECTED_FG            COLOR_WHITE
+#define CHECK_SELECTED_BG            COLOR_BLUE
+#define CHECK_SELECTED_HL            TRUE
+
+#define UARROW_FG                    COLOR_GREEN
+#define UARROW_BG                    COLOR_WHITE
+#define UARROW_HL                    TRUE
+
+#define DARROW_FG                    COLOR_GREEN
+#define DARROW_BG                    COLOR_WHITE
+#define DARROW_HL                    TRUE
+
+/* End of default color definitions */
+
+#define C_ATTR(x,y)                  ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
+#define COLOR_NAME_LEN               10
+#define COLOR_COUNT                  8
+
+/*
+ * Global variables
+ */
+
+typedef struct {
+    char name[COLOR_NAME_LEN];
+    int value;
+} color_names_st;
+
+extern color_names_st color_names[];
+extern int color_table[][3];
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h
new file mode 100644 (file)
index 0000000..7bab3ad
--- /dev/null
@@ -0,0 +1,199 @@
+
+/*
+ *  dialog.h -- common declarations for all dialog modules
+ *
+ *  AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef CURSES_LOC
+#ifdef __sun__
+#define CURS_MACROS
+#endif
+#include CURSES_LOC
+
+/*
+ * Colors in ncurses 1.9.9e do not work properly since foreground and
+ * background colors are OR'd rather than separately masked.  This version
+ * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
+ * with standard curses.  The simplest fix (to make this work with standard
+ * curses) uses the wbkgdset() function, not used in the original hack.
+ * Turn it off if we're building with 1.9.9e, since it just confuses things.
+ */
+#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
+#define OLD_NCURSES 1
+#undef  wbkgdset
+#define wbkgdset(w,p) /*nothing*/
+#else
+#define OLD_NCURSES 0
+#endif
+
+#define TR(params) _tracef params
+
+#define ESC 27
+#define TAB 9
+#define MAX_LEN 2048
+#define BUF_SIZE (10*1024)
+#define MIN(x,y) (x < y ? x : y)
+#define MAX(x,y) (x > y ? x : y)
+
+
+#ifndef ACS_ULCORNER
+#define ACS_ULCORNER '+'
+#endif
+#ifndef ACS_LLCORNER
+#define ACS_LLCORNER '+'
+#endif
+#ifndef ACS_URCORNER
+#define ACS_URCORNER '+'
+#endif
+#ifndef ACS_LRCORNER
+#define ACS_LRCORNER '+'
+#endif
+#ifndef ACS_HLINE
+#define ACS_HLINE '-'
+#endif
+#ifndef ACS_VLINE
+#define ACS_VLINE '|'
+#endif
+#ifndef ACS_LTEE
+#define ACS_LTEE '+'
+#endif
+#ifndef ACS_RTEE
+#define ACS_RTEE '+'
+#endif
+#ifndef ACS_UARROW
+#define ACS_UARROW '^'
+#endif
+#ifndef ACS_DARROW
+#define ACS_DARROW 'v'
+#endif
+
+/* 
+ * Attribute names
+ */
+#define screen_attr                   attributes[0]
+#define shadow_attr                   attributes[1]
+#define dialog_attr                   attributes[2]
+#define title_attr                    attributes[3]
+#define border_attr                   attributes[4]
+#define button_active_attr            attributes[5]
+#define button_inactive_attr          attributes[6]
+#define button_key_active_attr        attributes[7]
+#define button_key_inactive_attr      attributes[8]
+#define button_label_active_attr      attributes[9]
+#define button_label_inactive_attr    attributes[10]
+#define inputbox_attr                 attributes[11]
+#define inputbox_border_attr          attributes[12]
+#define searchbox_attr                attributes[13]
+#define searchbox_title_attr          attributes[14]
+#define searchbox_border_attr         attributes[15]
+#define position_indicator_attr       attributes[16]
+#define menubox_attr                  attributes[17]
+#define menubox_border_attr           attributes[18]
+#define item_attr                     attributes[19]
+#define item_selected_attr            attributes[20]
+#define tag_attr                      attributes[21]
+#define tag_selected_attr             attributes[22]
+#define tag_key_attr                  attributes[23]
+#define tag_key_selected_attr         attributes[24]
+#define check_attr                    attributes[25]
+#define check_selected_attr           attributes[26]
+#define uarrow_attr                   attributes[27]
+#define darrow_attr                   attributes[28]
+
+/* number of attributes */
+#define ATTRIBUTE_COUNT               29
+
+/*
+ * Global variables
+ */
+extern bool use_colors;
+
+extern chtype attributes[];
+#endif
+
+extern const char *backtitle;
+
+struct dialog_list_item {
+       char *name;
+       int namelen;
+       char *tag;
+       int selected; /* Set to 1 by dialog_*() function. */
+};
+
+/*
+ * Function prototypes
+ */
+
+void init_dialog (void);
+void end_dialog (void);
+void dialog_clear (void);
+#ifdef CURSES_LOC
+void attr_clear (WINDOW * win, int height, int width, chtype attr);
+void color_setup (void);
+void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x);
+void print_button (WINDOW * win, const char *label, int y, int x, int selected);
+void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box,
+               chtype border);
+void draw_shadow (WINDOW * win, int y, int x, int height, int width);
+#endif
+
+int first_alpha (const char *string, const char *exempt);
+int dialog_yesno (const char *title, const char *prompt, int height, int width);
+int dialog_msgbox (const char *title, const char *prompt, int height,
+               int width, int pause);
+int dialog_textbox (const char *title, const char *file, int height, int width);
+int dialog_menu (const char *title, const char *prompt, int height, int width,
+               int menu_height, const char *choice, int item_no, 
+               struct dialog_list_item ** items);
+int dialog_checklist (const char *title, const char *prompt, int height,
+               int width, int list_height, int item_no,
+               struct dialog_list_item ** items, int flag);
+extern unsigned char dialog_input_result[];
+int dialog_inputbox (const char *title, const char *prompt, int height,
+               int width, const char *init);
+
+struct dialog_list_item *first_sel_item(int item_no,
+               struct dialog_list_item ** items);
+
+/*
+ * This is the base for fictitious keys, which activate
+ * the buttons.
+ *
+ * Mouse-generated keys are the following:
+ *   -- the first 32 are used as numbers, in addition to '0'-'9'
+ *   -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
+ *   -- uppercase chars are used to invoke the button (M_EVENT + 'O')
+ */
+#ifdef CURSES_LOC
+#define M_EVENT (KEY_MAX+1)
+#endif
+
+
+/*
+ * The `flag' parameter in checklist is used to select between
+ * radiolist and checklist
+ */
+#define FLAG_CHECK 1
+#define FLAG_RADIO 0
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c
new file mode 100644 (file)
index 0000000..fa7bebc
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ *  inputbox.c -- implements the input box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+unsigned char dialog_input_result[MAX_LEN + 1];
+
+/*
+ *  Print the termination buttons
+ */
+static void
+print_buttons(WINDOW *dialog, int height, int width, int selected)
+{
+    int x = width / 2 - 11;
+    int y = height - 2;
+
+    print_button (dialog, "  Ok  ", y, x, selected==0);
+    print_button (dialog, " Help ", y, x + 14, selected==1);
+
+    wmove(dialog, y, x+1+14*selected);
+    wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box for inputing a string
+ */
+int
+dialog_inputbox (const char *title, const char *prompt, int height, int width,
+                const char *init)
+{
+    int i, x, y, box_y, box_x, box_width;
+    int input_x = 0, scroll = 0, key = 0, button = -1;
+    unsigned char *instr = dialog_input_result;
+    WINDOW *dialog;
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+    wattrset (dialog, border_attr);
+    mvwaddch (dialog, height-3, 0, ACS_LTEE);
+    for (i = 0; i < width - 2; i++)
+       waddch (dialog, ACS_HLINE);
+    wattrset (dialog, dialog_attr);
+    waddch (dialog, ACS_RTEE);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+
+    wattrset (dialog, dialog_attr);
+    print_autowrap (dialog, prompt, width - 2, 1, 3);
+
+    /* Draw the input field box */
+    box_width = width - 6;
+    getyx (dialog, y, x);
+    box_y = y + 2;
+    box_x = (width - box_width) / 2;
+    draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2,
+             border_attr, dialog_attr);
+
+    print_buttons(dialog, height, width, 0);
+
+    /* Set up the initial value */
+    wmove (dialog, box_y, box_x);
+    wattrset (dialog, inputbox_attr);
+
+    if (!init)
+       instr[0] = '\0';
+    else
+       strcpy (instr, init);
+
+    input_x = strlen (instr);
+
+    if (input_x >= box_width) {
+       scroll = input_x - box_width + 1;
+       input_x = box_width - 1;
+       for (i = 0; i < box_width - 1; i++)
+           waddch (dialog, instr[scroll + i]);
+    } else
+       waddstr (dialog, instr);
+
+    wmove (dialog, box_y, box_x + input_x);
+
+    wrefresh (dialog);
+
+    while (key != ESC) {
+       key = wgetch (dialog);
+
+       if (button == -1) {     /* Input box selected */
+           switch (key) {
+           case TAB:
+           case KEY_UP:
+           case KEY_DOWN:
+               break;
+           case KEY_LEFT:
+               continue;
+           case KEY_RIGHT:
+               continue;
+           case KEY_BACKSPACE:
+           case 127:
+               if (input_x || scroll) {
+                   wattrset (dialog, inputbox_attr);
+                   if (!input_x) {
+                       scroll = scroll < box_width - 1 ?
+                           0 : scroll - (box_width - 1);
+                       wmove (dialog, box_y, box_x);
+                       for (i = 0; i < box_width; i++)
+                           waddch (dialog, instr[scroll + input_x + i] ?
+                                   instr[scroll + input_x + i] : ' ');
+                       input_x = strlen (instr) - scroll;
+                   } else
+                       input_x--;
+                   instr[scroll + input_x] = '\0';
+                   mvwaddch (dialog, box_y, input_x + box_x, ' ');
+                   wmove (dialog, box_y, input_x + box_x);
+                   wrefresh (dialog);
+               }
+               continue;
+           default:
+               if (key < 0x100 && isprint (key)) {
+                   if (scroll + input_x < MAX_LEN) {
+                       wattrset (dialog, inputbox_attr);
+                       instr[scroll + input_x] = key;
+                       instr[scroll + input_x + 1] = '\0';
+                       if (input_x == box_width - 1) {
+                           scroll++;
+                           wmove (dialog, box_y, box_x);
+                           for (i = 0; i < box_width - 1; i++)
+                               waddch (dialog, instr[scroll + i]);
+                       } else {
+                           wmove (dialog, box_y, input_x++ + box_x);
+                           waddch (dialog, key);
+                       }
+                       wrefresh (dialog);
+                   } else
+                       flash ();       /* Alarm user about overflow */
+                   continue;
+               }
+           }
+       }
+       switch (key) {
+       case 'O':
+       case 'o':
+           delwin (dialog);
+           return 0;
+       case 'H':
+       case 'h':
+           delwin (dialog);
+           return 1;
+       case KEY_UP:
+       case KEY_LEFT:
+           switch (button) {
+           case -1:
+               button = 1;     /* Indicates "Cancel" button is selected */
+               print_buttons(dialog, height, width, 1);
+               break;
+           case 0:
+               button = -1;    /* Indicates input box is selected */
+               print_buttons(dialog, height, width, 0);
+               wmove (dialog, box_y, box_x + input_x);
+               wrefresh (dialog);
+               break;
+           case 1:
+               button = 0;     /* Indicates "OK" button is selected */
+               print_buttons(dialog, height, width, 0);
+               break;
+           }
+           break;
+       case TAB:
+       case KEY_DOWN:
+       case KEY_RIGHT:
+           switch (button) {
+           case -1:
+               button = 0;     /* Indicates "OK" button is selected */
+               print_buttons(dialog, height, width, 0);
+               break;
+           case 0:
+               button = 1;     /* Indicates "Cancel" button is selected */
+               print_buttons(dialog, height, width, 1);
+               break;
+           case 1:
+               button = -1;    /* Indicates input box is selected */
+               print_buttons(dialog, height, width, 0);
+               wmove (dialog, box_y, box_x + input_x);
+               wrefresh (dialog);
+               break;
+           }
+           break;
+       case ' ':
+       case '\n':
+           delwin (dialog);
+           return (button == -1 ? 0 : button);
+       case 'X':
+       case 'x':
+           key = ESC;
+       case ESC:
+           break;
+       }
+    }
+
+    delwin (dialog);
+    return -1;                 /* ESC pressed */
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c
new file mode 100644 (file)
index 0000000..873dc58
--- /dev/null
@@ -0,0 +1,438 @@
+/*
+ *  menubox.c -- implements the menu box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ *  Changes by Clifford Wolf (god@clifford.at)
+ *
+ *  [ 1998-06-13 ]
+ *
+ *    *)  A bugfix for the Page-Down problem
+ *
+ *    *)  Formerly when I used Page Down and Page Up, the cursor would be set 
+ *        to the first position in the menu box.  Now lxdialog is a bit
+ *        smarter and works more like other menu systems (just have a look at
+ *        it).
+ *
+ *    *)  Formerly if I selected something my scrolling would be broken because
+ *        lxdialog is re-invoked by the Menuconfig shell script, can't
+ *        remember the last scrolling position, and just sets it so that the
+ *        cursor is at the bottom of the box.  Now it writes the temporary file
+ *        lxdialog.scrltmp which contains this information. The file is
+ *        deleted by lxdialog if the user leaves a submenu or enters a new
+ *        one, but it would be nice if Menuconfig could make another "rm -f"
+ *        just to be sure.  Just try it out - you will recognise a difference!
+ *
+ *  [ 1998-06-14 ]
+ *
+ *    *)  Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
+ *        and menus change their size on the fly.
+ *
+ *    *)  If for some reason the last scrolling position is not saved by
+ *        lxdialog, it sets the scrolling so that the selected item is in the
+ *        middle of the menu box, not at the bottom.
+ *
+ * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
+ * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
+ * This fixes a bug in Menuconfig where using ' ' to descend into menus
+ * would leave mis-synchronized lxdialog.scrltmp files lying around,
+ * fscanf would read in 'scroll', and eventually that value would get used.
+ */
+
+#include "dialog.h"
+
+static int menu_width, item_x;
+
+/*
+ * Print menu item
+ */
+static void
+print_item (WINDOW * win, const char *item, int choice, int selected, int hotkey)
+{
+    int j;
+    char menu_item[menu_width+1];
+
+    strncpy(menu_item, item, menu_width);
+    menu_item[menu_width] = 0;
+    j = first_alpha(menu_item, "YyNnMmHh");
+
+    /* Clear 'residue' of last item */
+    wattrset (win, menubox_attr);
+    wmove (win, choice, 0);
+#if OLD_NCURSES
+    {
+        int i;
+        for (i = 0; i < menu_width; i++)
+           waddch (win, ' ');
+    }
+#else
+    wclrtoeol(win);
+#endif
+    wattrset (win, selected ? item_selected_attr : item_attr);
+    mvwaddstr (win, choice, item_x, menu_item);
+    if (hotkey) {
+       wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
+       mvwaddch(win, choice, item_x+j, menu_item[j]);
+    }
+    if (selected) {
+       wmove (win, choice, item_x+1);
+       wrefresh (win);
+    }
+}
+
+/*
+ * Print the scroll indicators.
+ */
+static void
+print_arrows (WINDOW * win, int item_no, int scroll,
+               int y, int x, int height)
+{
+    int cur_y, cur_x;
+
+    getyx(win, cur_y, cur_x);
+
+    wmove(win, y, x);
+
+    if (scroll > 0) {
+       wattrset (win, uarrow_attr);
+       waddch (win, ACS_UARROW);
+       waddstr (win, "(-)");
+    }
+    else {
+       wattrset (win, menubox_attr);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+    }
+
+   y = y + height + 1;
+   wmove(win, y, x);
+
+   if ((height < item_no) && (scroll + height < item_no)) {
+       wattrset (win, darrow_attr);
+       waddch (win, ACS_DARROW);
+       waddstr (win, "(+)");
+    }
+    else {
+       wattrset (win, menubox_border_attr);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+       waddch (win, ACS_HLINE);
+   }
+
+   wmove(win, cur_y, cur_x);
+}
+
+/*
+ * Display the termination buttons.
+ */
+static void
+print_buttons (WINDOW *win, int height, int width, int selected)
+{
+    int x = width / 2 - 16;
+    int y = height - 2;
+
+    print_button (win, "Select", y, x, selected == 0);
+    print_button (win, " Exit ", y, x + 12, selected == 1);
+    print_button (win, " Help ", y, x + 24, selected == 2);
+
+    wmove(win, y, x+1+12*selected);
+    wrefresh (win);
+}
+
+/*
+ * Display a menu for choosing among a number of options
+ */
+int
+dialog_menu (const char *title, const char *prompt, int height, int width,
+               int menu_height, const char *current, int item_no,
+               struct dialog_list_item ** items)
+{
+    int i, j, x, y, box_x, box_y;
+    int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice;
+    WINDOW *dialog, *menu;
+    FILE *f;
+
+    max_choice = MIN (menu_height, item_no);
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+    wattrset (dialog, border_attr);
+    mvwaddch (dialog, height - 3, 0, ACS_LTEE);
+    for (i = 0; i < width - 2; i++)
+       waddch (dialog, ACS_HLINE);
+    wattrset (dialog, dialog_attr);
+    wbkgdset (dialog, dialog_attr & A_COLOR);
+    waddch (dialog, ACS_RTEE);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+
+    wattrset (dialog, dialog_attr);
+    print_autowrap (dialog, prompt, width - 2, 1, 3);
+
+    menu_width = width - 6;
+    box_y = height - menu_height - 5;
+    box_x = (width - menu_width) / 2 - 1;
+
+    /* create new window for the menu */
+    menu = subwin (dialog, menu_height, menu_width,
+               y + box_y + 1, x + box_x + 1);
+    keypad (menu, TRUE);
+
+    /* draw a box around the menu items */
+    draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2,
+             menubox_border_attr, menubox_attr);
+
+    /*
+     * Find length of longest item in order to center menu.
+     * Set 'choice' to default item. 
+     */
+    item_x = 0;
+    for (i = 0; i < item_no; i++) {
+       item_x = MAX (item_x, MIN(menu_width, strlen (items[i]->name) + 2));
+       if (strcmp(current, items[i]->tag) == 0) choice = i;
+    }
+
+    item_x = (menu_width - item_x) / 2;
+
+    /* get the scroll info from the temp file */
+    if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) {
+       if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) &&
+            (scroll+max_choice > choice) && (scroll >= 0) &&
+            (scroll+max_choice <= item_no) ) {
+           first_item = scroll;
+           choice = choice - scroll;
+           fclose(f);
+       } else {
+           scroll=0;
+           remove("lxdialog.scrltmp");
+           fclose(f);
+           f=NULL;
+       }
+    }
+    if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) {
+       if (choice >= item_no-max_choice/2)
+           scroll = first_item = item_no-max_choice;
+       else
+           scroll = first_item = choice - max_choice/2;
+       choice = choice - scroll;
+    }
+
+    /* Print the menu */
+    for (i=0; i < max_choice; i++) {
+       print_item (menu, items[first_item + i]->name, i, i == choice,
+                    (items[first_item + i]->tag[0] != ':'));
+    }
+
+    wnoutrefresh (menu);
+
+    print_arrows(dialog, item_no, scroll,
+                box_y, box_x+item_x+1, menu_height);
+
+    print_buttons (dialog, height, width, 0);
+    wmove (menu, choice, item_x+1);
+    wrefresh (menu);
+
+    while (key != ESC) {
+       key = wgetch(menu);
+
+       if (key < 256 && isalpha(key)) key = tolower(key);
+
+       if (strchr("ynmh", key))
+               i = max_choice;
+       else {
+        for (i = choice+1; i < max_choice; i++) {
+               j = first_alpha(items[scroll + i]->name, "YyNnMmHh");
+               if (key == tolower(items[scroll + i]->name[j]))
+                       break;
+       }
+       if (i == max_choice)
+                       for (i = 0; i < max_choice; i++) {
+                       j = first_alpha(items[scroll + i]->name, "YyNnMmHh");
+                       if (key == tolower(items[scroll + i]->name[j]))
+                               break;
+               }
+       }
+
+       if (i < max_choice || 
+            key == KEY_UP || key == KEY_DOWN ||
+            key == '-' || key == '+' ||
+            key == KEY_PPAGE || key == KEY_NPAGE) {
+
+            print_item (menu, items[scroll + choice]->name, choice, FALSE,
+                       (items[scroll + choice]->tag[0] != ':'));
+
+           if (key == KEY_UP || key == '-') {
+                if (choice < 2 && scroll) {
+                   /* Scroll menu down */
+                    scrollok (menu, TRUE);
+                    wscrl (menu, -1);
+                    scrollok (menu, FALSE);
+
+                    scroll--;
+
+                    print_item (menu, items[scroll]->name, 0, FALSE,
+                               (items[scroll]->tag[0] != ':'));
+               } else
+                   choice = MAX(choice - 1, 0);
+
+           } else if (key == KEY_DOWN || key == '+')  {
+
+               print_item (menu, items[scroll + choice]->name, choice, FALSE,
+                                (items[scroll + choice]->tag[0] != ':'));
+
+                if ((choice > max_choice-3) &&
+                    (scroll + max_choice < item_no)
+                   ) {
+                   /* Scroll menu up */
+                   scrollok (menu, TRUE);
+                    scroll (menu);
+                    scrollok (menu, FALSE);
+
+                    scroll++;
+
+                    print_item (menu, items[scroll + max_choice - 1]->name,
+                               max_choice-1, FALSE,
+                               (items[scroll + max_choice - 1]->tag[0] != ':'));
+                } else
+                    choice = MIN(choice+1, max_choice-1);
+
+           } else if (key == KEY_PPAGE) {
+               scrollok (menu, TRUE);
+                for (i=0; (i < max_choice); i++) {
+                    if (scroll > 0) {
+                       wscrl (menu, -1);
+                       scroll--;
+                       print_item (menu, items[scroll]->name, 0, FALSE,
+                       (items[scroll]->tag[0] != ':'));
+                    } else {
+                        if (choice > 0)
+                            choice--;
+                    }
+                }
+                scrollok (menu, FALSE);
+
+            } else if (key == KEY_NPAGE) {
+                for (i=0; (i < max_choice); i++) {
+                    if (scroll+max_choice < item_no) {
+                       scrollok (menu, TRUE);
+                       scroll(menu);
+                       scrollok (menu, FALSE);
+                       scroll++;
+                       print_item (menu, items[scroll + max_choice - 1]->name,
+                                   max_choice-1, FALSE,
+                                   (items[scroll + max_choice - 1]->tag[0] != ':'));
+                   } else {
+                       if (choice+1 < max_choice)
+                           choice++;
+                   }
+                }
+
+            } else
+                choice = i;
+
+            print_item (menu, items[scroll + choice]->name, choice, TRUE,
+                       (items[scroll + choice]->tag[0] != ':'));
+
+            print_arrows(dialog, item_no, scroll,
+                         box_y, box_x+item_x+1, menu_height);
+
+            wnoutrefresh (dialog);
+            wrefresh (menu);
+
+           continue;           /* wait for another key press */
+        }
+
+       switch (key) {
+       case KEY_LEFT:
+       case TAB:
+       case KEY_RIGHT:
+           button = ((key == KEY_LEFT ? --button : ++button) < 0)
+                       ? 2 : (button > 2 ? 0 : button);
+
+           print_buttons(dialog, height, width, button);
+           wrefresh (menu);
+           break;
+       case ' ':
+       case 's':
+       case 'y':
+       case 'n':
+       case 'm':
+       case '/':
+           /* save scroll info */
+           if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) {
+               fprintf(f,"%d\n",scroll);
+               fclose(f);
+           }
+           delwin (dialog);
+            items[scroll + choice]->selected = 1;
+            switch (key) {
+            case 's': return 3;
+            case 'y': return 3;
+            case 'n': return 4;
+            case 'm': return 5;
+            case ' ': return 6;
+            case '/': return 7;
+            }
+           return 0;
+       case 'h':
+       case '?':
+           button = 2;
+       case '\n':
+           delwin (dialog);
+           items[scroll + choice]->selected = 1;
+
+           remove("lxdialog.scrltmp");
+           return button;
+       case 'e':
+       case 'x':
+           key = ESC;
+       case ESC:
+           break;
+       }
+    }
+
+    delwin (dialog);
+    remove("lxdialog.scrltmp");
+    return -1;                 /* ESC pressed */
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c
new file mode 100644 (file)
index 0000000..93692e1
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ *  msgbox.c -- implements the message box and info box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+/*
+ * Display a message box. Program will pause and display an "OK" button
+ * if the parameter 'pause' is non-zero.
+ */
+int
+dialog_msgbox (const char *title, const char *prompt, int height, int width,
+               int pause)
+{
+    int i, x, y, key = 0;
+    WINDOW *dialog;
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+    wattrset (dialog, dialog_attr);
+    print_autowrap (dialog, prompt, width - 2, 1, 2);
+
+    if (pause) {
+       wattrset (dialog, border_attr);
+       mvwaddch (dialog, height - 3, 0, ACS_LTEE);
+       for (i = 0; i < width - 2; i++)
+           waddch (dialog, ACS_HLINE);
+       wattrset (dialog, dialog_attr);
+       waddch (dialog, ACS_RTEE);
+
+       print_button (dialog, "  Ok  ",
+                     height - 2, width / 2 - 4, TRUE);
+
+       wrefresh (dialog);
+       while (key != ESC && key != '\n' && key != ' ' &&
+               key != 'O' && key != 'o' && key != 'X' && key != 'x')
+           key = wgetch (dialog);
+    } else {
+       key = '\n';
+       wrefresh (dialog);
+    }
+
+    delwin (dialog);
+    return key == ESC ? -1 : 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c
new file mode 100644 (file)
index 0000000..a5a460b
--- /dev/null
@@ -0,0 +1,556 @@
+/*
+ *  textbox.c -- implements the text box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static void back_lines (int n);
+static void print_page (WINDOW * win, int height, int width);
+static void print_line (WINDOW * win, int row, int width);
+static char *get_line (void);
+static void print_position (WINDOW * win, int height, int width);
+
+static int hscroll, fd, file_size, bytes_read;
+static int begin_reached = 1, end_reached, page_length;
+static char *buf, *page;
+
+/*
+ * Display text from a file in a dialog box.
+ */
+int
+dialog_textbox (const char *title, const char *file, int height, int width)
+{
+    int i, x, y, cur_x, cur_y, fpos, key = 0;
+    int passed_end;
+    char search_term[MAX_LEN + 1];
+    WINDOW *dialog, *text;
+
+    search_term[0] = '\0';     /* no search term entered yet */
+
+    /* Open input file for reading */
+    if ((fd = open (file, O_RDONLY)) == -1) {
+       endwin ();
+       fprintf (stderr,
+                "\nCan't open input file in dialog_textbox().\n");
+       exit (-1);
+    }
+    /* Get file size. Actually, 'file_size' is the real file size - 1,
+       since it's only the last byte offset from the beginning */
+    if ((file_size = lseek (fd, 0, SEEK_END)) == -1) {
+       endwin ();
+       fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
+       exit (-1);
+    }
+    /* Restore file pointer to beginning of file after getting file size */
+    if (lseek (fd, 0, SEEK_SET) == -1) {
+       endwin ();
+       fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
+       exit (-1);
+    }
+    /* Allocate space for read buffer */
+    if ((buf = malloc (BUF_SIZE + 1)) == NULL) {
+       endwin ();
+       fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
+       exit (-1);
+    }
+    if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+       endwin ();
+       fprintf (stderr, "\nError reading file in dialog_textbox().\n");
+       exit (-1);
+    }
+    buf[bytes_read] = '\0';    /* mark end of valid data */
+    page = buf;                        /* page is pointer to start of page to be displayed */
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    /* Create window for text region, used for scrolling text */
+    text = subwin (dialog, height - 4, width - 2, y + 1, x + 1);
+    wattrset (text, dialog_attr);
+    wbkgdset (text, dialog_attr & A_COLOR);
+
+    keypad (text, TRUE);
+
+    /* register the new window, along with its borders */
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+
+    wattrset (dialog, border_attr);
+    mvwaddch (dialog, height-3, 0, ACS_LTEE);
+    for (i = 0; i < width - 2; i++)
+       waddch (dialog, ACS_HLINE);
+    wattrset (dialog, dialog_attr);
+    wbkgdset (dialog, dialog_attr & A_COLOR);
+    waddch (dialog, ACS_RTEE);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+    print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
+    wnoutrefresh (dialog);
+    getyx (dialog, cur_y, cur_x);      /* Save cursor position */
+
+    /* Print first page of text */
+    attr_clear (text, height - 4, width - 2, dialog_attr);
+    print_page (text, height - 4, width - 2);
+    print_position (dialog, height, width);
+    wmove (dialog, cur_y, cur_x);      /* Restore cursor position */
+    wrefresh (dialog);
+
+    while ((key != ESC) && (key != '\n')) {
+       key = wgetch (dialog);
+       switch (key) {
+       case 'E':               /* Exit */
+       case 'e':
+       case 'X':
+       case 'x':
+           delwin (dialog);
+           free (buf);
+           close (fd);
+           return 0;
+       case 'g':               /* First page */
+       case KEY_HOME:
+           if (!begin_reached) {
+               begin_reached = 1;
+               /* First page not in buffer? */
+               if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+                   endwin ();
+                   fprintf (stderr,
+                     "\nError moving file pointer in dialog_textbox().\n");
+                   exit (-1);
+               }
+               if (fpos > bytes_read) {        /* Yes, we have to read it in */
+                   if (lseek (fd, 0, SEEK_SET) == -1) {
+                       endwin ();
+                       fprintf (stderr, "\nError moving file pointer in "
+                                "dialog_textbox().\n");
+                       exit (-1);
+                   }
+                   if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+                       endwin ();
+                       fprintf (stderr,
+                            "\nError reading file in dialog_textbox().\n");
+                       exit (-1);
+                   }
+                   buf[bytes_read] = '\0';
+               }
+               page = buf;
+               print_page (text, height - 4, width - 2);
+               print_position (dialog, height, width);
+               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
+               wrefresh (dialog);
+           }
+           break;
+       case 'G':               /* Last page */
+       case KEY_END:
+
+           end_reached = 1;
+           /* Last page not in buffer? */
+           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+               endwin ();
+               fprintf (stderr,
+                     "\nError moving file pointer in dialog_textbox().\n");
+               exit (-1);
+           }
+           if (fpos < file_size) {     /* Yes, we have to read it in */
+               if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
+                   endwin ();
+                   fprintf (stderr,
+                     "\nError moving file pointer in dialog_textbox().\n");
+                   exit (-1);
+               }
+               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+                   endwin ();
+                   fprintf (stderr,
+                            "\nError reading file in dialog_textbox().\n");
+                   exit (-1);
+               }
+               buf[bytes_read] = '\0';
+           }
+           page = buf + bytes_read;
+           back_lines (height - 4);
+           print_page (text, height - 4, width - 2);
+           print_position (dialog, height, width);
+           wmove (dialog, cur_y, cur_x);       /* Restore cursor position */
+           wrefresh (dialog);
+           break;
+       case 'K':               /* Previous line */
+       case 'k':
+       case KEY_UP:
+           if (!begin_reached) {
+               back_lines (page_length + 1);
+
+               /* We don't call print_page() here but use scrolling to ensure
+                  faster screen update. However, 'end_reached' and
+                  'page_length' should still be updated, and 'page' should
+                  point to start of next page. This is done by calling
+                  get_line() in the following 'for' loop. */
+               scrollok (text, TRUE);
+               wscrl (text, -1);       /* Scroll text region down one line */
+               scrollok (text, FALSE);
+               page_length = 0;
+               passed_end = 0;
+               for (i = 0; i < height - 4; i++) {
+                   if (!i) {
+                       /* print first line of page */
+                       print_line (text, 0, width - 2);
+                       wnoutrefresh (text);
+                   } else
+                       /* Called to update 'end_reached' and 'page' */
+                       get_line ();
+                   if (!passed_end)
+                       page_length++;
+                   if (end_reached && !passed_end)
+                       passed_end = 1;
+               }
+
+               print_position (dialog, height, width);
+               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
+               wrefresh (dialog);
+           }
+           break;
+       case 'B':               /* Previous page */
+       case 'b':
+       case KEY_PPAGE:
+           if (begin_reached)
+               break;
+           back_lines (page_length + height - 4);
+           print_page (text, height - 4, width - 2);
+           print_position (dialog, height, width);
+           wmove (dialog, cur_y, cur_x);
+           wrefresh (dialog);
+           break;
+       case 'J':               /* Next line */
+       case 'j':
+       case KEY_DOWN:
+           if (!end_reached) {
+               begin_reached = 0;
+               scrollok (text, TRUE);
+               scroll (text);  /* Scroll text region up one line */
+               scrollok (text, FALSE);
+               print_line (text, height - 5, width - 2);
+               wnoutrefresh (text);
+               print_position (dialog, height, width);
+               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
+               wrefresh (dialog);
+           }
+           break;
+       case KEY_NPAGE:         /* Next page */
+       case ' ':
+           if (end_reached)
+               break;
+
+           begin_reached = 0;
+           print_page (text, height - 4, width - 2);
+           print_position (dialog, height, width);
+           wmove (dialog, cur_y, cur_x);
+           wrefresh (dialog);
+           break;
+       case '0':               /* Beginning of line */
+       case 'H':               /* Scroll left */
+       case 'h':
+       case KEY_LEFT:
+           if (hscroll <= 0)
+               break;
+
+           if (key == '0')
+               hscroll = 0;
+           else
+               hscroll--;
+           /* Reprint current page to scroll horizontally */
+           back_lines (page_length);
+           print_page (text, height - 4, width - 2);
+           wmove (dialog, cur_y, cur_x);
+           wrefresh (dialog);
+           break;
+       case 'L':               /* Scroll right */
+       case 'l':
+       case KEY_RIGHT:
+           if (hscroll >= MAX_LEN)
+               break;
+           hscroll++;
+           /* Reprint current page to scroll horizontally */
+           back_lines (page_length);
+           print_page (text, height - 4, width - 2);
+           wmove (dialog, cur_y, cur_x);
+           wrefresh (dialog);
+           break;
+       case ESC:
+           break;
+       }
+    }
+
+    delwin (dialog);
+    free (buf);
+    close (fd);
+    return 1;                  /* ESC pressed */
+}
+
+/*
+ * Go back 'n' lines in text file. Called by dialog_textbox().
+ * 'page' will be updated to point to the desired line in 'buf'.
+ */
+static void
+back_lines (int n)
+{
+    int i, fpos;
+
+    begin_reached = 0;
+    /* We have to distinguish between end_reached and !end_reached
+       since at end of file, the line is not ended by a '\n'.
+       The code inside 'if' basically does a '--page' to move one
+       character backward so as to skip '\n' of the previous line */
+    if (!end_reached) {
+       /* Either beginning of buffer or beginning of file reached? */
+       if (page == buf) {
+           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+               endwin ();
+               fprintf (stderr, "\nError moving file pointer in "
+                        "back_lines().\n");
+               exit (-1);
+           }
+           if (fpos > bytes_read) {    /* Not beginning of file yet */
+               /* We've reached beginning of buffer, but not beginning of
+                  file yet, so read previous part of file into buffer.
+                  Note that we only move backward for BUF_SIZE/2 bytes,
+                  but not BUF_SIZE bytes to avoid re-reading again in
+                  print_page() later */
+               /* Really possible to move backward BUF_SIZE/2 bytes? */
+               if (fpos < BUF_SIZE / 2 + bytes_read) {
+                   /* No, move less then */
+                   if (lseek (fd, 0, SEEK_SET) == -1) {
+                       endwin ();
+                       fprintf (stderr, "\nError moving file pointer in "
+                                "back_lines().\n");
+                       exit (-1);
+                   }
+                   page = buf + fpos - bytes_read;
+               } else {        /* Move backward BUF_SIZE/2 bytes */
+                   if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
+                       == -1) {
+                       endwin ();
+                       fprintf (stderr, "\nError moving file pointer "
+                                "in back_lines().\n");
+                       exit (-1);
+                   }
+                   page = buf + BUF_SIZE / 2;
+               }
+               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+                   endwin ();
+                   fprintf (stderr, "\nError reading file in back_lines().\n");
+                   exit (-1);
+               }
+               buf[bytes_read] = '\0';
+           } else {            /* Beginning of file reached */
+               begin_reached = 1;
+               return;
+           }
+       }
+       if (*(--page) != '\n') {        /* '--page' here */
+           /* Something's wrong... */
+           endwin ();
+           fprintf (stderr, "\nInternal error in back_lines().\n");
+           exit (-1);
+       }
+    }
+    /* Go back 'n' lines */
+    for (i = 0; i < n; i++)
+       do {
+           if (page == buf) {
+               if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+                   endwin ();
+                   fprintf (stderr,
+                         "\nError moving file pointer in back_lines().\n");
+                   exit (-1);
+               }
+               if (fpos > bytes_read) {
+                   /* Really possible to move backward BUF_SIZE/2 bytes? */
+                   if (fpos < BUF_SIZE / 2 + bytes_read) {
+                       /* No, move less then */
+                       if (lseek (fd, 0, SEEK_SET) == -1) {
+                           endwin ();
+                           fprintf (stderr, "\nError moving file pointer "
+                                    "in back_lines().\n");
+                           exit (-1);
+                       }
+                       page = buf + fpos - bytes_read;
+                   } else {    /* Move backward BUF_SIZE/2 bytes */
+                       if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
+                                  SEEK_CUR) == -1) {
+                           endwin ();
+                           fprintf (stderr, "\nError moving file pointer"
+                                    " in back_lines().\n");
+                           exit (-1);
+                       }
+                       page = buf + BUF_SIZE / 2;
+                   }
+                   if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+                       endwin ();
+                       fprintf (stderr, "\nError reading file in "
+                                "back_lines().\n");
+                       exit (-1);
+                   }
+                   buf[bytes_read] = '\0';
+               } else {        /* Beginning of file reached */
+                   begin_reached = 1;
+                   return;
+               }
+           }
+       } while (*(--page) != '\n');
+    page++;
+}
+
+/*
+ * Print a new page of text. Called by dialog_textbox().
+ */
+static void
+print_page (WINDOW * win, int height, int width)
+{
+    int i, passed_end = 0;
+
+    page_length = 0;
+    for (i = 0; i < height; i++) {
+       print_line (win, i, width);
+       if (!passed_end)
+           page_length++;
+       if (end_reached && !passed_end)
+           passed_end = 1;
+    }
+    wnoutrefresh (win);
+}
+
+/*
+ * Print a new line of text. Called by dialog_textbox() and print_page().
+ */
+static void
+print_line (WINDOW * win, int row, int width)
+{
+    int y, x;
+    char *line;
+
+    line = get_line ();
+    line += MIN (strlen (line), hscroll);      /* Scroll horizontally */
+    wmove (win, row, 0);       /* move cursor to correct line */
+    waddch (win, ' ');
+    waddnstr (win, line, MIN (strlen (line), width - 2));
+
+    getyx (win, y, x);
+    /* Clear 'residue' of previous line */
+#if OLD_NCURSES
+    {
+        int i;
+        for (i = 0; i < width - x; i++)
+           waddch (win, ' ');
+    }
+#else
+    wclrtoeol(win);
+#endif
+}
+
+/*
+ * Return current line of text. Called by dialog_textbox() and print_line().
+ * 'page' should point to start of current line before calling, and will be
+ * updated to point to start of next line.
+ */
+static char *
+get_line (void)
+{
+    int i = 0, fpos;
+    static char line[MAX_LEN + 1];
+
+    end_reached = 0;
+    while (*page != '\n') {
+       if (*page == '\0') {
+           /* Either end of file or end of buffer reached */
+           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+               endwin ();
+               fprintf (stderr, "\nError moving file pointer in "
+                        "get_line().\n");
+               exit (-1);
+           }
+           if (fpos < file_size) {     /* Not end of file yet */
+               /* We've reached end of buffer, but not end of file yet,
+                  so read next part of file into buffer */
+               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
+                   endwin ();
+                   fprintf (stderr, "\nError reading file in get_line().\n");
+                   exit (-1);
+               }
+               buf[bytes_read] = '\0';
+               page = buf;
+           } else {
+               if (!end_reached)
+                   end_reached = 1;
+               break;
+           }
+       } else if (i < MAX_LEN)
+           line[i++] = *(page++);
+       else {
+           /* Truncate lines longer than MAX_LEN characters */
+           if (i == MAX_LEN)
+               line[i++] = '\0';
+           page++;
+       }
+    }
+    if (i <= MAX_LEN)
+       line[i] = '\0';
+    if (!end_reached)
+       page++;                 /* move pass '\n' */
+
+    return line;
+}
+
+/*
+ * Print current position
+ */
+static void
+print_position (WINDOW * win, int height, int width)
+{
+    int fpos, percent;
+
+    if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
+       endwin ();
+       fprintf (stderr, "\nError moving file pointer in print_position().\n");
+       exit (-1);
+    }
+    wattrset (win, position_indicator_attr);
+    wbkgdset (win, position_indicator_attr & A_COLOR);
+    percent = !file_size ?
+       100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
+    wmove (win, height - 3, width - 9);
+    wprintw (win, "(%3d%%)", percent);
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c
new file mode 100644 (file)
index 0000000..6f83951
--- /dev/null
@@ -0,0 +1,375 @@
+/*
+ *  util.c
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+
+/* use colors by default? */
+bool use_colors = 1;
+
+const char *backtitle = NULL;
+
+const char *dialog_result;
+
+/* 
+ * Attribute values, default is for mono display
+ */
+chtype attributes[] =
+{
+    A_NORMAL,                  /* screen_attr */
+    A_NORMAL,                  /* shadow_attr */
+    A_NORMAL,                  /* dialog_attr */
+    A_BOLD,                    /* title_attr */
+    A_NORMAL,                  /* border_attr */
+    A_REVERSE,                 /* button_active_attr */
+    A_DIM,                     /* button_inactive_attr */
+    A_REVERSE,                 /* button_key_active_attr */
+    A_BOLD,                    /* button_key_inactive_attr */
+    A_REVERSE,                 /* button_label_active_attr */
+    A_NORMAL,                  /* button_label_inactive_attr */
+    A_NORMAL,                  /* inputbox_attr */
+    A_NORMAL,                  /* inputbox_border_attr */
+    A_NORMAL,                  /* searchbox_attr */
+    A_BOLD,                    /* searchbox_title_attr */
+    A_NORMAL,                  /* searchbox_border_attr */
+    A_BOLD,                    /* position_indicator_attr */
+    A_NORMAL,                  /* menubox_attr */
+    A_NORMAL,                  /* menubox_border_attr */
+    A_NORMAL,                  /* item_attr */
+    A_REVERSE,                 /* item_selected_attr */
+    A_BOLD,                    /* tag_attr */
+    A_REVERSE,                 /* tag_selected_attr */
+    A_BOLD,                    /* tag_key_attr */
+    A_REVERSE,                 /* tag_key_selected_attr */
+    A_BOLD,                    /* check_attr */
+    A_REVERSE,                 /* check_selected_attr */
+    A_BOLD,                    /* uarrow_attr */
+    A_BOLD                     /* darrow_attr */
+};
+
+
+#include "colors.h"
+
+/*
+ * Table of color values
+ */
+int color_table[][3] =
+{
+    {SCREEN_FG, SCREEN_BG, SCREEN_HL},
+    {SHADOW_FG, SHADOW_BG, SHADOW_HL},
+    {DIALOG_FG, DIALOG_BG, DIALOG_HL},
+    {TITLE_FG, TITLE_BG, TITLE_HL},
+    {BORDER_FG, BORDER_BG, BORDER_HL},
+    {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
+    {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
+    {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
+    {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL},
+    {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL},
+    {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
+     BUTTON_LABEL_INACTIVE_HL},
+    {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
+    {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
+    {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
+    {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
+    {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
+    {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
+    {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
+    {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
+    {ITEM_FG, ITEM_BG, ITEM_HL},
+    {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
+    {TAG_FG, TAG_BG, TAG_HL},
+    {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
+    {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
+    {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
+    {CHECK_FG, CHECK_BG, CHECK_HL},
+    {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
+    {UARROW_FG, UARROW_BG, UARROW_HL},
+    {DARROW_FG, DARROW_BG, DARROW_HL},
+};                             /* color_table */
+
+/*
+ * Set window to attribute 'attr'
+ */
+void
+attr_clear (WINDOW * win, int height, int width, chtype attr)
+{
+    int i, j;
+
+    wattrset (win, attr);
+    for (i = 0; i < height; i++) {
+       wmove (win, i, 0);
+       for (j = 0; j < width; j++)
+           waddch (win, ' ');
+    }
+    touchwin (win);
+}
+
+void dialog_clear (void)
+{
+    attr_clear (stdscr, LINES, COLS, screen_attr);
+    /* Display background title if it exists ... - SLH */
+    if (backtitle != NULL) {
+        int i;
+
+        wattrset (stdscr, screen_attr);
+        mvwaddstr (stdscr, 0, 1, (char *)backtitle);
+        wmove (stdscr, 1, 1);
+        for (i = 1; i < COLS - 1; i++)
+            waddch (stdscr, ACS_HLINE);
+    }
+    wnoutrefresh (stdscr);
+}
+
+/*
+ * Do some initialization for dialog
+ */
+void
+init_dialog (void)
+{
+    initscr ();                        /* Init curses */
+    keypad (stdscr, TRUE);
+    cbreak ();
+    noecho ();
+
+
+    if (use_colors)    /* Set up colors */
+       color_setup ();
+
+
+    dialog_clear ();
+}
+
+/*
+ * Setup for color display
+ */
+void
+color_setup (void)
+{
+    int i;
+
+    if (has_colors ()) {       /* Terminal supports color? */
+       start_color ();
+
+       /* Initialize color pairs */
+       for (i = 0; i < ATTRIBUTE_COUNT; i++)
+           init_pair (i + 1, color_table[i][0], color_table[i][1]);
+
+       /* Setup color attributes */
+       for (i = 0; i < ATTRIBUTE_COUNT; i++)
+           attributes[i] = C_ATTR (color_table[i][2], i + 1);
+    }
+}
+
+/*
+ * End using dialog functions.
+ */
+void
+end_dialog (void)
+{
+    endwin ();
+}
+
+
+/*
+ * Print a string of text in a window, automatically wrap around to the
+ * next line if the string is too long to fit on one line. Newline
+ * characters '\n' are replaced by spaces.  We start on a new line
+ * if there is no room for at least 4 nonblanks following a double-space.
+ */
+void
+print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
+{
+    int newl, cur_x, cur_y;
+    int i, prompt_len, room, wlen;
+    char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
+
+    strcpy (tempstr, prompt);
+
+    prompt_len = strlen(tempstr);
+       
+    /*
+     * Remove newlines
+     */
+    for(i=0; i<prompt_len; i++) {
+       if(tempstr[i] == '\n') tempstr[i] = ' ';
+    }
+
+    if (prompt_len <= width - x * 2) { /* If prompt is short */
+       wmove (win, y, (width - prompt_len) / 2);
+       waddstr (win, tempstr);
+    } else {
+       cur_x = x;
+       cur_y = y;
+       newl = 1;
+       word = tempstr;
+       while (word && *word) {
+           sp = index(word, ' ');
+           if (sp)
+               *sp++ = 0;
+
+           /* Wrap to next line if either the word does not fit,
+              or it is the first word of a new sentence, and it is
+              short, and the next word does not fit. */
+           room = width - cur_x;
+           wlen = strlen(word);
+           if (wlen > room ||
+              (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
+                    && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
+               cur_y++;
+               cur_x = x;
+           }
+           wmove (win, cur_y, cur_x);
+           waddstr (win, word);
+           getyx (win, cur_y, cur_x);
+           cur_x++;
+           if (sp && *sp == ' ') {
+               cur_x++;        /* double space */
+               while (*++sp == ' ');
+               newl = 1;
+           } else
+               newl = 0;
+           word = sp;
+       }
+    }
+}
+
+/*
+ * Print a button
+ */
+void
+print_button (WINDOW * win, const char *label, int y, int x, int selected)
+{
+    int i, temp;
+
+    wmove (win, y, x);
+    wattrset (win, selected ? button_active_attr : button_inactive_attr);
+    waddstr (win, "<");
+    temp = strspn (label, " ");
+    label += temp;
+    wattrset (win, selected ? button_label_active_attr
+             : button_label_inactive_attr);
+    for (i = 0; i < temp; i++)
+       waddch (win, ' ');
+    wattrset (win, selected ? button_key_active_attr
+             : button_key_inactive_attr);
+    waddch (win, label[0]);
+    wattrset (win, selected ? button_label_active_attr
+             : button_label_inactive_attr);
+    waddstr (win, (char *)label + 1);
+    wattrset (win, selected ? button_active_attr : button_inactive_attr);
+    waddstr (win, ">");
+    wmove (win, y, x + temp + 1);
+}
+
+/*
+ * Draw a rectangular box with line drawing characters
+ */
+void
+draw_box (WINDOW * win, int y, int x, int height, int width,
+         chtype box, chtype border)
+{
+    int i, j;
+
+    wattrset (win, 0);
+    for (i = 0; i < height; i++) {
+       wmove (win, y + i, x);
+       for (j = 0; j < width; j++)
+           if (!i && !j)
+               waddch (win, border | ACS_ULCORNER);
+           else if (i == height - 1 && !j)
+               waddch (win, border | ACS_LLCORNER);
+           else if (!i && j == width - 1)
+               waddch (win, box | ACS_URCORNER);
+           else if (i == height - 1 && j == width - 1)
+               waddch (win, box | ACS_LRCORNER);
+           else if (!i)
+               waddch (win, border | ACS_HLINE);
+           else if (i == height - 1)
+               waddch (win, box | ACS_HLINE);
+           else if (!j)
+               waddch (win, border | ACS_VLINE);
+           else if (j == width - 1)
+               waddch (win, box | ACS_VLINE);
+           else
+               waddch (win, box | ' ');
+    }
+}
+
+/*
+ * Draw shadows along the right and bottom edge to give a more 3D look
+ * to the boxes
+ */
+void
+draw_shadow (WINDOW * win, int y, int x, int height, int width)
+{
+    int i;
+
+    if (has_colors ()) {       /* Whether terminal supports color? */
+       wattrset (win, shadow_attr);
+       wmove (win, y + height, x + 2);
+       for (i = 0; i < width; i++)
+           waddch (win, winch (win) & A_CHARTEXT);
+       for (i = y + 1; i < y + height + 1; i++) {
+           wmove (win, i, x + width);
+           waddch (win, winch (win) & A_CHARTEXT);
+           waddch (win, winch (win) & A_CHARTEXT);
+       }
+       wnoutrefresh (win);
+    }
+}
+
+/*
+ *  Return the position of the first alphabetic character in a string.
+ */
+int
+first_alpha(const char *string, const char *exempt)
+{
+       int i, in_paren=0, c;
+
+       for (i = 0; i < strlen(string); i++) {
+               c = tolower(string[i]);
+
+               if (strchr("<[(", c)) ++in_paren;
+               if (strchr(">])", c) && in_paren > 0) --in_paren;
+
+               if ((! in_paren) && isalpha(c) && 
+                    strchr(exempt, c) == 0)
+                       return i;
+       }
+
+       return 0;
+}
+
+/*
+ * Get the first selected item in the dialog_list_item list.
+ */
+struct dialog_list_item *
+first_sel_item(int item_no, struct dialog_list_item ** items)
+{
+       int i;
+
+       for (i = 0; i < item_no; i++) {
+               if (items[i]->selected)
+                       return items[i];
+       }
+
+       return NULL;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c
new file mode 100644 (file)
index 0000000..11fcc25
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ *  yesno.c -- implements the yes/no box
+ *
+ *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+/*
+ * Display termination buttons
+ */
+static void
+print_buttons(WINDOW *dialog, int height, int width, int selected)
+{
+    int x = width / 2 - 10;
+    int y = height - 2;
+
+    print_button (dialog, " Yes ", y, x, selected == 0);
+    print_button (dialog, "  No  ", y, x + 13, selected == 1);
+
+    wmove(dialog, y, x+1 + 13*selected );
+    wrefresh (dialog);
+}
+
+/*
+ * Display a dialog box with two buttons - Yes and No
+ */
+int
+dialog_yesno (const char *title, const char *prompt, int height, int width)
+{
+    int i, x, y, key = 0, button = 0;
+    WINDOW *dialog;
+
+    /* center dialog box on screen */
+    x = (COLS - width) / 2;
+    y = (LINES - height) / 2;
+
+    draw_shadow (stdscr, y, x, height, width);
+
+    dialog = newwin (height, width, y, x);
+    keypad (dialog, TRUE);
+
+    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
+    wattrset (dialog, border_attr);
+    mvwaddch (dialog, height-3, 0, ACS_LTEE);
+    for (i = 0; i < width - 2; i++)
+       waddch (dialog, ACS_HLINE);
+    wattrset (dialog, dialog_attr);
+    waddch (dialog, ACS_RTEE);
+
+    if (title != NULL && strlen(title) >= width-2 ) {
+       /* truncate long title -- mec */
+       char * title2 = malloc(width-2+1);
+       memcpy( title2, title, width-2 );
+       title2[width-2] = '\0';
+       title = title2;
+    }
+
+    if (title != NULL) {
+       wattrset (dialog, title_attr);
+       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
+       waddstr (dialog, (char *)title);
+       waddch (dialog, ' ');
+    }
+
+    wattrset (dialog, dialog_attr);
+    print_autowrap (dialog, prompt, width - 2, 1, 3);
+
+    print_buttons(dialog, height, width, 0);
+
+    while (key != ESC) {
+       key = wgetch (dialog);
+       switch (key) {
+       case 'Y':
+       case 'y':
+           delwin (dialog);
+           return 0;
+       case 'N':
+       case 'n':
+           delwin (dialog);
+           return 1;
+
+       case TAB:
+       case KEY_LEFT:
+       case KEY_RIGHT:
+           button = ((key == KEY_LEFT ? --button : ++button) < 0)
+                       ? 1 : (button > 1 ? 0 : button);
+
+           print_buttons(dialog, height, width, button);
+           wrefresh (dialog);
+           break;
+       case ' ':
+       case '\n':
+           delwin (dialog);
+           return button;
+       case ESC:
+           break;
+       }
+    }
+
+    delwin (dialog);
+    return -1;                 /* ESC pressed */
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c
new file mode 100644 (file)
index 0000000..406eb29
--- /dev/null
@@ -0,0 +1,977 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Introduced single menu mode (show all sub-menus in one large tree).
+ * 2002-11-06 Petr Baudis <pasky@ucw.cz>
+ *
+ * Directly use liblxdialog library routines.
+ * 2002-11-14 Petr Baudis <pasky@ucw.cz>
+ */
+
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <sys/termios.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include "lxdialog/dialog.h"
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+static char menu_backtitle[128];
+static const char mconf_readme[] =
+"Overview\n"
+"--------\n"
+"Some features may be built directly into axTLS.  Some features\n"
+"may be completely removed altogether.  There are also certain\n"
+"parameters which are not really features, but must be\n"
+"entered in as decimal or hexadecimal numbers or possibly text.\n"
+"\n"
+"Menu items beginning with [*] or [ ] represent features\n"
+"configured to be built in or removed respectively.\n"
+"\n"
+"To change any of these features, highlight it with the cursor\n"
+"keys and press <Y> to build it in or <N> to removed it.\n"
+"You may also press the <Space Bar> to cycle\n"
+"through the available options (ie. Y->N->Y).\n"
+"\n"
+"Some additional keyboard hints:\n"
+"\n"
+"Menus\n"
+"----------\n"
+"o  Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
+"   you wish to change or submenu wish to select and press <Enter>.\n"
+"   Submenus are designated by \"--->\".\n"
+"\n"
+"   Shortcut: Press the option's highlighted letter (hotkey).\n"
+"             Pressing a hotkey more than once will sequence\n"
+"             through all visible items which use that hotkey.\n"
+"\n"
+"   You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\n"
+"   unseen options into view.\n"
+"\n"
+"o  To exit a menu use the cursor keys to highlight the <Exit> button\n"
+"   and press <ENTER>.\n"
+"\n"
+"   Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey\n"
+"             using those letters.  You may press a single <ESC>, but\n"
+"             there is a delayed response which you may find annoying.\n"
+"\n"
+"   Also, the <TAB> and cursor keys will cycle between <Select>,\n"
+"   <Exit> and <Help>\n"
+"\n"
+"o  To get help with an item, use the cursor keys to highlight <Help>\n"
+"   and Press <ENTER>.\n"
+"\n"
+"   Shortcut: Press <H> or <?>.\n"
+"\n"
+"\n"
+"Radiolists  (Choice lists)\n"
+"-----------\n"
+"o  Use the cursor keys to select the option you wish to set and press\n"
+"   <S> or the <SPACE BAR>.\n"
+"\n"
+"   Shortcut: Press the first letter of the option you wish to set then\n"
+"             press <S> or <SPACE BAR>.\n"
+"\n"
+"o  To see available help for the item, use the cursor keys to highlight\n"
+"   <Help> and Press <ENTER>.\n"
+"\n"
+"   Shortcut: Press <H> or <?>.\n"
+"\n"
+"   Also, the <TAB> and cursor keys will cycle between <Select> and\n"
+"   <Help>\n"
+"\n"
+"\n"
+"Data Entry\n"
+"-----------\n"
+"o  Enter the requested information and press <ENTER>\n"
+"   If you are entering hexadecimal values, it is not necessary to\n"
+"   add the '0x' prefix to the entry.\n"
+"\n"
+"o  For help, use the <TAB> or cursor keys to highlight the help option\n"
+"   and press <ENTER>.  You can try <TAB><H> as well.\n"
+"\n"
+"\n"
+"Text Box    (Help Window)\n"
+"--------\n"
+"o  Use the cursor keys to scroll up/down/left/right.  The VI editor\n"
+"   keys h,j,k,l function here as do <SPACE BAR> and <B> for those\n"
+"   who are familiar with less and lynx.\n"
+"\n"
+"o  Press <E>, <X>, <Enter> or <Esc><Esc> to exit.\n"
+"\n"
+"\n"
+"Alternate Configuration Files\n"
+"-----------------------------\n"
+"Menuconfig supports the use of alternate configuration files for\n"
+"those who, for various reasons, find it necessary to switch\n"
+"between different configurations.\n"
+"\n"
+"At the end of the main menu you will find two options.  One is\n"
+"for saving the current configuration to a file of your choosing.\n"
+"The other option is for loading a previously saved alternate\n"
+"configuration.\n"
+"\n"
+"Even if you don't use alternate configuration files, but you\n"
+"find during a Menuconfig session that you have completely messed\n"
+"up your settings, you may use the \"Load Alternate...\" option to\n"
+"restore your previously saved settings from \".config\" without\n"
+"restarting Menuconfig.\n"
+"\n"
+"Other information\n"
+"-----------------\n"
+"If you use Menuconfig in an XTERM window make sure you have your\n"
+"$TERM variable set to point to a xterm definition which supports color.\n"
+"Otherwise, Menuconfig will look rather bad.  Menuconfig will not\n"
+"display correctly in a RXVT window because rxvt displays only one\n"
+"intensity of color, bright.\n"
+"\n"
+"Menuconfig will display larger menus on screens or xterms which are\n"
+"set to display more than the standard 25 row by 80 column geometry.\n"
+"In order for this to work, the \"stty size\" command must be able to\n"
+"display the screen's current row and column geometry.  I STRONGLY\n"
+"RECOMMEND that you make sure you do NOT have the shell variables\n"
+"LINES and COLUMNS exported into your environment.  Some distributions\n"
+"export those variables via /etc/profile.  Some ncurses programs can\n"
+"become confused when those variables (LINES & COLUMNS) don't reflect\n"
+"the true screen size.\n"
+"\n"
+"Optional personality available\n"
+"------------------------------\n"
+"If you prefer to have all of the options listed in a single\n"
+"menu, rather than the default multimenu hierarchy, run the menuconfig\n"
+"with MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
+"\n"
+"make MENUCONFIG_MODE=single_menu menuconfig\n"
+"\n"
+"<Enter> will then unroll the appropriate category, or enfold it if it\n"
+"is already unrolled.\n"
+"\n"
+"Note that this mode can eventually be a little more CPU expensive\n"
+"(especially with a larger number of unrolled categories) than the\n"
+"default mode.\n",
+menu_instructions[] =
+       "Arrow keys navigate the menu.  "
+       "<Enter> selects submenus --->.  "
+       "Highlighted letters are hotkeys.  "
+       "Pressing <Y> selectes a feature, while <N> will exclude a feature.  "
+       "Press <Esc><Esc> to exit, <?> for Help, </> for Search.  "
+       "Legend: [*] feature is selected  [ ] feature is excluded",
+radiolist_instructions[] =
+       "Use the arrow keys to navigate this window or "
+       "press the hotkey of the item you wish to select "
+       "followed by the <SPACE BAR>. "
+       "Press <?> for additional information about this option.",
+inputbox_instructions_int[] =
+       "Please enter a decimal value. "
+       "Fractions will not be accepted.  "
+       "Use the <TAB> key to move from the input field to the buttons below it.",
+inputbox_instructions_hex[] =
+       "Please enter a hexadecimal value. "
+       "Use the <TAB> key to move from the input field to the buttons below it.",
+inputbox_instructions_string[] =
+       "Please enter a string value. "
+       "Use the <TAB> key to move from the input field to the buttons below it.",
+setmod_text[] =
+       "This feature depends on another which has been configured as a module.\n"
+       "As a result, this feature will be built as a module.",
+nohelp_text[] =
+       "There is no help available for this option.\n",
+load_config_text[] =
+       "Enter the name of the configuration file you wish to load.  "
+       "Accept the name shown to restore the configuration you "
+       "last retrieved.  Leave blank to abort.",
+load_config_help[] =
+       "\n"
+       "For various reasons, one may wish to keep several different axTLS\n"
+       "configurations available on a single machine.\n"
+       "\n"
+       "If you have saved a previous configuration in a file other than the\n"
+       "axTLS's default, entering the name of the file here will allow you\n"
+       "to modify that configuration.\n"
+       "\n"
+       "If you are uncertain, then you have probably never used alternate\n"
+       "configuration files.  You should therefor leave this blank to abort.\n",
+save_config_text[] =
+       "Enter a filename to which this configuration should be saved "
+       "as an alternate.  Leave blank to abort.",
+save_config_help[] =
+       "\n"
+       "For various reasons, one may wish to keep different axTLS\n"
+       "configurations available on a single machine.\n"
+       "\n"
+       "Entering a file name here will allow you to later retrieve, modify\n"
+       "and use the current configuration as an alternate to whatever\n"
+       "configuration options you have selected at that time.\n"
+       "\n"
+       "If you are uncertain what all this means then you should probably\n"
+       "leave this blank.\n",
+search_help[] =
+       "\n"
+       "Search for CONFIG_ symbols and display their relations.\n"
+       "Example: search for \"^FOO\"\n"
+       "Result:\n"
+       "-----------------------------------------------------------------\n"
+       "Symbol: FOO [=m]\n"
+       "Prompt: Foo bus is used to drive the bar HW\n"
+       "Defined at drivers/pci/Kconfig:47\n"
+       "Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
+       "Location:\n"
+       "  -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)\n"
+       "    -> PCI support (PCI [=y])\n"
+       "      -> PCI access mode (<choice> [=y])\n"
+       "Selects: LIBCRC32\n"
+       "Selected by: BAR\n"
+       "-----------------------------------------------------------------\n"
+       "o The line 'Prompt:' shows the text used in the menu structure for\n"
+       "  this CONFIG_ symbol\n"
+       "o The 'Defined at' line tell at what file / line number the symbol\n"
+       "  is defined\n"
+       "o The 'Depends on:' line tell what symbols needs to be defined for\n"
+       "  this symbol to be visible in the menu (selectable)\n"
+       "o The 'Location:' lines tell where in the menu structure this symbol\n"
+       "  is located\n"
+       "    A location followed by a [=y] indicate that this is a selectable\n"
+       "    menu item - and current value is displayed inside brackets.\n"
+       "o The 'Selects:' line tell what symbol will be automatically\n"
+       "  selected if this symbol is selected (y or m)\n"
+       "o The 'Selected by' line tell what symbol has selected this symbol\n"
+       "\n"
+       "Only relevant lines are shown.\n"
+       "\n\n"
+       "Search examples:\n"
+       "Examples: USB  => find all CONFIG_ symbols containing USB\n"
+       "          ^USB => find all CONFIG_ symbols starting with USB\n"
+       "          USB$ => find all CONFIG_ symbols ending with USB\n"
+       "\n";
+
+static char filename[PATH_MAX+1] = ".config";
+static int indent;
+static struct termios ios_org;
+static int rows = 0, cols = 0;
+static struct menu *current_menu;
+static int child_count;
+static int single_menu_mode;
+
+static struct dialog_list_item *items[16384]; /* FIXME: This ought to be dynamic. */
+static int item_no;
+
+static void conf(struct menu *menu);
+static void conf_choice(struct menu *menu);
+static void conf_string(struct menu *menu);
+static void conf_load(void);
+static void conf_save(void);
+static void show_textbox(const char *title, const char *text, int r, int c);
+static void show_helptext(const char *title, const char *text);
+static void show_help(struct menu *menu);
+static void show_file(const char *filename, const char *title, int r, int c);
+
+static void init_wsize(void)
+{
+       struct winsize ws;
+       char *env;
+
+       if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &ws)) {
+               rows = ws.ws_row;
+               cols = ws.ws_col;
+       }
+
+       if (!rows) {
+               env = getenv("LINES");
+               if (env)
+                       rows = atoi(env);
+               if (!rows)
+                       rows = 24;
+       }
+       if (!cols) {
+               env = getenv("COLUMNS");
+               if (env)
+                       cols = atoi(env);
+               if (!cols)
+                       cols = 80;
+       }
+
+       if (rows < 19 || cols < 80) {
+               fprintf(stderr, "Your display is too small to run Menuconfig!\n");
+               fprintf(stderr, "It must be at least 19 lines by 80 columns.\n");
+               exit(1);
+       }
+
+       rows -= 4;
+       cols -= 5;
+}
+
+static void cinit(void)
+{
+       item_no = 0;
+}
+
+static void cmake(void)
+{
+       items[item_no] = malloc(sizeof(struct dialog_list_item));
+       memset(items[item_no], 0, sizeof(struct dialog_list_item));
+       items[item_no]->tag = malloc(32); items[item_no]->tag[0] = 0;
+       items[item_no]->name = malloc(512); items[item_no]->name[0] = 0;
+       items[item_no]->namelen = 0;
+       item_no++;
+}
+
+static int cprint_name(const char *fmt, ...)
+{
+       va_list ap;
+       int res;
+
+       if (!item_no)
+               cmake();
+       va_start(ap, fmt);
+       res = vsnprintf(items[item_no - 1]->name + items[item_no - 1]->namelen,
+                       512 - items[item_no - 1]->namelen, fmt, ap);
+       if (res > 0)
+               items[item_no - 1]->namelen += res;
+       va_end(ap);
+
+       return res;
+}
+
+static int cprint_tag(const char *fmt, ...)
+{
+       va_list ap;
+       int res;
+
+       if (!item_no)
+               cmake();
+       va_start(ap, fmt);
+       res = vsnprintf(items[item_no - 1]->tag, 32, fmt, ap);
+       va_end(ap);
+
+       return res;
+}
+
+static void cdone(void)
+{
+       int i;
+
+       for (i = 0; i < item_no; i++) {
+               free(items[i]->tag);
+               free(items[i]->name);
+               free(items[i]);
+       }
+
+       item_no = 0;
+}
+
+static void get_prompt_str(struct gstr *r, struct property *prop)
+{
+       int i, j;
+       struct menu *submenu[8], *menu;
+
+       str_printf(r, "Prompt: %s\n", prop->text);
+       str_printf(r, "  Defined at %s:%d\n", prop->menu->file->name,
+               prop->menu->lineno);
+       if (!expr_is_yes(prop->visible.expr)) {
+               str_append(r, "  Depends on: ");
+               expr_gstr_print(prop->visible.expr, r);
+               str_append(r, "\n");
+       }
+       menu = prop->menu->parent;
+       for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent)
+               submenu[i++] = menu;
+       if (i > 0) {
+               str_printf(r, "  Location:\n");
+               for (j = 4; --i >= 0; j += 2) {
+                       menu = submenu[i];
+                       str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
+                       if (menu->sym) {
+                               str_printf(r, " (%s [=%s])", menu->sym->name ?
+                                       menu->sym->name : "<choice>",
+                                       sym_get_string_value(menu->sym));
+                       }
+                       str_append(r, "\n");
+               }
+       }
+}
+
+static void get_symbol_str(struct gstr *r, struct symbol *sym)
+{
+       bool hit;
+       struct property *prop;
+
+       str_printf(r, "Symbol: %s [=%s]\n", sym->name,
+                                      sym_get_string_value(sym));
+       for_all_prompts(sym, prop)
+               get_prompt_str(r, prop);
+       hit = false;
+       for_all_properties(sym, prop, P_SELECT) {
+               if (!hit) {
+                       str_append(r, "  Selects: ");
+                       hit = true;
+               } else
+                       str_printf(r, " && ");
+               expr_gstr_print(prop->expr, r);
+       }
+       if (hit)
+               str_append(r, "\n");
+       if (sym->rev_dep.expr) {
+               str_append(r, "  Selected by: ");
+               expr_gstr_print(sym->rev_dep.expr, r);
+               str_append(r, "\n");
+       }
+       str_append(r, "\n\n");
+}
+
+static struct gstr get_relations_str(struct symbol **sym_arr)
+{
+       struct symbol *sym;
+       struct gstr res = str_new();
+       int i;
+
+       for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
+               get_symbol_str(&res, sym);
+       if (!i)
+               str_append(&res, "No matches found.\n");
+       return res;
+}
+
+static void search_conf(void)
+{
+       struct symbol **sym_arr;
+       struct gstr res;
+
+again:
+       switch (dialog_inputbox("Search Configuration Parameter",
+                               "Enter Keyword", 10, 75,
+                               NULL)) {
+       case 0:
+               break;
+       case 1:
+               show_helptext("Search Configuration", search_help);
+               goto again;
+       default:
+               return;
+       }
+
+       sym_arr = sym_re_search(dialog_input_result);
+       res = get_relations_str(sym_arr);
+       free(sym_arr);
+       show_textbox("Search Results", str_get(&res), 0, 0);
+       str_free(&res);
+}
+
+static void build_conf(struct menu *menu)
+{
+       struct symbol *sym;
+       struct property *prop;
+       struct menu *child;
+       int type, tmp, doint = 2;
+       tristate val;
+       char ch;
+
+       if (!menu_is_visible(menu))
+               return;
+
+       sym = menu->sym;
+       prop = menu->prompt;
+       if (!sym) {
+               if (prop && menu != current_menu) {
+                       const char *prompt = menu_get_prompt(menu);
+                       switch (prop->type) {
+                       case P_MENU:
+                               child_count++;
+                               cmake();
+                               cprint_tag("m%p", menu);
+
+                               if (single_menu_mode) {
+                                       cprint_name("%s%*c%s",
+                                               menu->data ? "-->" : "++>",
+                                               indent + 1, ' ', prompt);
+                               } else {
+                                       cprint_name("   %*c%s  --->", indent + 1, ' ', prompt);
+                               }
+
+                               if (single_menu_mode && menu->data)
+                                       goto conf_childs;
+                               return;
+                       default:
+                               if (prompt) {
+                                       child_count++;
+                                       cmake();
+                                       cprint_tag(":%p", menu);
+                                       cprint_name("---%*c%s", indent + 1, ' ', prompt);
+                               }
+                       }
+               } else
+                       doint = 0;
+               goto conf_childs;
+       }
+
+       cmake();
+       type = sym_get_type(sym);
+       if (sym_is_choice(sym)) {
+               struct symbol *def_sym = sym_get_choice_value(sym);
+               struct menu *def_menu = NULL;
+
+               child_count++;
+               for (child = menu->list; child; child = child->next) {
+                       if (menu_is_visible(child) && child->sym == def_sym)
+                               def_menu = child;
+               }
+
+               val = sym_get_tristate_value(sym);
+               if (sym_is_changable(sym)) {
+                       cprint_tag("t%p", menu);
+                       switch (type) {
+                       case S_BOOLEAN:
+                               cprint_name("[%c]", val == no ? ' ' : '*');
+                               break;
+                       case S_TRISTATE:
+                               switch (val) {
+                               case yes: ch = '*'; break;
+                               case mod: ch = 'M'; break;
+                               default:  ch = ' '; break;
+                               }
+                               cprint_name("<%c>", ch);
+                               break;
+                       }
+               } else {
+                       cprint_tag("%c%p", def_menu ? 't' : ':', menu);
+                       cprint_name("   ");
+               }
+
+               cprint_name("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
+               if (val == yes) {
+                       if (def_menu) {
+                               cprint_name(" (%s)", menu_get_prompt(def_menu));
+                               cprint_name("  --->");
+                               if (def_menu->list) {
+                                       indent += 2;
+                                       build_conf(def_menu);
+                                       indent -= 2;
+                               }
+                       }
+                       return;
+               }
+       } else {
+               if (menu == current_menu) {
+                       cprint_tag(":%p", menu);
+                       cprint_name("---%*c%s", indent + 1, ' ', menu_get_prompt(menu));
+                       goto conf_childs;
+               }
+               child_count++;
+               val = sym_get_tristate_value(sym);
+               if (sym_is_choice_value(sym) && val == yes) {
+                       cprint_tag(":%p", menu);
+                       cprint_name("   ");
+               } else {
+                       switch (type) {
+                       case S_BOOLEAN:
+                               cprint_tag("t%p", menu);
+                               if (sym_is_changable(sym))
+                                       cprint_name("[%c]", val == no ? ' ' : '*');
+                               else
+                                       cprint_name("---");
+                               break;
+                       case S_TRISTATE:
+                               cprint_tag("t%p", menu);
+                               switch (val) {
+                               case yes: ch = '*'; break;
+                               case mod: ch = 'M'; break;
+                               default:  ch = ' '; break;
+                               }
+                               if (sym_is_changable(sym))
+                                       cprint_name("<%c>", ch);
+                               else
+                                       cprint_name("---");
+                               break;
+                       default:
+                               cprint_tag("s%p", menu);
+                               tmp = cprint_name("(%s)", sym_get_string_value(sym));
+                               tmp = indent - tmp + 4;
+                               if (tmp < 0)
+                                       tmp = 0;
+                               cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
+                                       (sym_has_value(sym) || !sym_is_changable(sym)) ?
+                                       "" : " (NEW)");
+                               goto conf_childs;
+                       }
+               }
+               cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
+                       (sym_has_value(sym) || !sym_is_changable(sym)) ?
+                       "" : " (NEW)");
+               if (menu->prompt->type == P_MENU) {
+                       cprint_name("  --->");
+                       return;
+               }
+       }
+
+conf_childs:
+       indent += doint;
+       for (child = menu->list; child; child = child->next)
+               build_conf(child);
+       indent -= doint;
+}
+
+static void conf(struct menu *menu)
+{
+       struct dialog_list_item *active_item = NULL;
+       struct menu *submenu;
+       const char *prompt = menu_get_prompt(menu);
+       struct symbol *sym;
+       char active_entry[40];
+       int stat, type;
+
+       unlink("lxdialog.scrltmp");
+       active_entry[0] = 0;
+       while (1) {
+               indent = 0;
+               child_count = 0;
+               current_menu = menu;
+               cdone(); cinit();
+               build_conf(menu);
+               if (!child_count)
+                       break;
+               if (menu == &rootmenu) {
+                       cmake(); cprint_tag(":"); cprint_name("--- ");
+                       cmake(); cprint_tag("L"); cprint_name("Load an Alternate Configuration File");
+                       cmake(); cprint_tag("S"); cprint_name("Save Configuration to an Alternate File");
+               }
+               dialog_clear();
+               stat = dialog_menu(prompt ? prompt : "Main Menu",
+                               menu_instructions, rows, cols, rows - 10,
+                               active_entry, item_no, items);
+               if (stat < 0)
+                       return;
+
+               if (stat == 1 || stat == 255)
+                       break;
+
+               active_item = first_sel_item(item_no, items);
+               if (!active_item)
+                       continue;
+               active_item->selected = 0;
+               strncpy(active_entry, active_item->tag, sizeof(active_entry));
+               active_entry[sizeof(active_entry)-1] = 0;
+               type = active_entry[0];
+               if (!type)
+                       continue;
+
+               sym = NULL;
+               submenu = NULL;
+               if (sscanf(active_entry + 1, "%p", &submenu) == 1)
+                       sym = submenu->sym;
+
+               switch (stat) {
+               case 0:
+                       switch (type) {
+                       case 'm':
+                               if (single_menu_mode)
+                                       submenu->data = (void *) (long) !submenu->data;
+                               else
+                                       conf(submenu);
+                               break;
+                       case 't':
+                               if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
+                                       conf_choice(submenu);
+                               else if (submenu->prompt->type == P_MENU)
+                                       conf(submenu);
+                               break;
+                       case 's':
+                               conf_string(submenu);
+                               break;
+                       case 'L':
+                               conf_load();
+                               break;
+                       case 'S':
+                               conf_save();
+                               break;
+                       }
+                       break;
+               case 2:
+                       if (sym)
+                               show_help(submenu);
+                       else
+                               show_helptext("README", mconf_readme);
+                       break;
+               case 3:
+                       if (type == 't') {
+                               if (sym_set_tristate_value(sym, yes))
+                                       break;
+                               if (sym_set_tristate_value(sym, mod))
+                                       show_textbox(NULL, setmod_text, 6, 74);
+                       }
+                       break;
+               case 4:
+                       if (type == 't')
+                               sym_set_tristate_value(sym, no);
+                       break;
+               case 5:
+                       if (type == 't')
+                               sym_set_tristate_value(sym, mod);
+                       break;
+               case 6:
+                       if (type == 't')
+                               sym_toggle_tristate_value(sym);
+                       else if (type == 'm')
+                               conf(submenu);
+                       break;
+               case 7:
+                       search_conf();
+                       break;
+               }
+       }
+}
+
+static void show_textbox(const char *title, const char *text, int r, int c)
+{
+       int fd;
+
+       fd = creat(".help.tmp", 0777);
+       write(fd, text, strlen(text));
+       close(fd);
+       show_file(".help.tmp", title, r, c);
+       unlink(".help.tmp");
+}
+
+static void show_helptext(const char *title, const char *text)
+{
+       show_textbox(title, text, 0, 0);
+}
+
+static void show_help(struct menu *menu)
+{
+       struct gstr help = str_new();
+       struct symbol *sym = menu->sym;
+
+       if (sym->help)
+       {
+               if (sym->name) {
+                       str_printf(&help, "%s:\n\n", sym->name);
+                       str_append(&help, sym->help);
+                       str_append(&help, "\n");
+               }
+       } else {
+               str_append(&help, nohelp_text);
+       }
+       get_symbol_str(&help, sym);
+       show_helptext(menu_get_prompt(menu), str_get(&help));
+       str_free(&help);
+}
+
+static void show_file(const char *filename, const char *title, int r, int c)
+{
+       while (dialog_textbox(title, filename, r ? r : rows, c ? c : cols) < 0)
+               ;
+}
+
+static void conf_choice(struct menu *menu)
+{
+       const char *prompt = menu_get_prompt(menu);
+       struct menu *child;
+       struct symbol *active;
+
+       active = sym_get_choice_value(menu->sym);
+       while (1) {
+               current_menu = menu;
+               cdone(); cinit();
+               for (child = menu->list; child; child = child->next) {
+                       if (!menu_is_visible(child))
+                               continue;
+                       cmake();
+                       cprint_tag("%p", child);
+                       cprint_name("%s", menu_get_prompt(child));
+                       if (child->sym == sym_get_choice_value(menu->sym))
+                               items[item_no - 1]->selected = 1; /* ON */
+                       else if (child->sym == active)
+                               items[item_no - 1]->selected = 2; /* SELECTED */
+                       else
+                               items[item_no - 1]->selected = 0; /* OFF */
+               }
+
+               switch (dialog_checklist(prompt ? prompt : "Main Menu",
+                                       radiolist_instructions, 15, 70, 6,
+                                       item_no, items, FLAG_RADIO)) {
+               case 0:
+                       if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) != 1)
+                               break;
+                       sym_set_tristate_value(child->sym, yes);
+                       return;
+               case 1:
+                       if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) == 1) {
+                               show_help(child);
+                               active = child->sym;
+                       } else
+                               show_help(menu);
+                       break;
+               case 255:
+                       return;
+               }
+       }
+}
+
+static void conf_string(struct menu *menu)
+{
+       const char *prompt = menu_get_prompt(menu);
+
+       while (1) {
+               char *heading;
+
+               switch (sym_get_type(menu->sym)) {
+               case S_INT:
+                       heading = (char *) inputbox_instructions_int;
+                       break;
+               case S_HEX:
+                       heading = (char *) inputbox_instructions_hex;
+                       break;
+               case S_STRING:
+                       heading = (char *) inputbox_instructions_string;
+                       break;
+               default:
+                       heading = "Internal mconf error!";
+                       /* panic? */;
+               }
+
+               switch (dialog_inputbox(prompt ? prompt : "Main Menu",
+                                       heading, 10, 75,
+                                       sym_get_string_value(menu->sym))) {
+               case 0:
+                       if (sym_set_string_value(menu->sym, dialog_input_result))
+                               return;
+                       show_textbox(NULL, "You have made an invalid entry.", 5, 43);
+                       break;
+               case 1:
+                       show_help(menu);
+                       break;
+               case 255:
+                       return;
+               }
+       }
+}
+
+static void conf_load(void)
+{
+       while (1) {
+               switch (dialog_inputbox(NULL, load_config_text, 11, 55,
+                                       filename)) {
+               case 0:
+                       if (!dialog_input_result[0])
+                               return;
+                       if (!conf_read(dialog_input_result))
+                               return;
+                       show_textbox(NULL, "File does not exist!", 5, 38);
+                       break;
+               case 1:
+                       show_helptext("Load Alternate Configuration", load_config_help);
+                       break;
+               case 255:
+                       return;
+               }
+       }
+}
+
+static void conf_save(void)
+{
+       while (1) {
+               switch (dialog_inputbox(NULL, save_config_text, 11, 55,
+                                       filename)) {
+               case 0:
+                       if (!dialog_input_result[0])
+                               return;
+                       if (!conf_write(dialog_input_result))
+                               return;
+                       show_textbox(NULL, "Can't create file!  Probably a nonexistent directory.", 5, 60);
+                       break;
+               case 1:
+                       show_helptext("Save Alternate Configuration", save_config_help);
+                       break;
+               case 255:
+                       return;
+               }
+       }
+}
+
+static void conf_cleanup(void)
+{
+       tcsetattr(1, TCSAFLUSH, &ios_org);
+       unlink(".help.tmp");
+}
+
+static void winch_handler(int sig)
+{
+       struct winsize ws;
+
+       if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
+               rows = 24;
+               cols = 80;
+       } else {
+               rows = ws.ws_row;
+               cols = ws.ws_col;
+       }
+
+       if (rows < 19 || cols < 80) {
+               end_dialog();
+               fprintf(stderr, "Your display is too small to run Menuconfig!\n");
+               fprintf(stderr, "It must be at least 19 lines by 80 columns.\n");
+               exit(1);
+       }
+
+       rows -= 4;
+       cols -= 5;
+
+}
+
+int main(int ac, char **av)
+{
+       struct symbol *sym;
+       char *mode;
+       int stat;
+
+       conf_parse(av[1]);
+       conf_read(NULL);
+
+       sym = sym_lookup("VERSION", 0);
+       sym_calc_value(sym);
+       snprintf(menu_backtitle, 128, "axTLS v%s Configuration",
+               sym_get_string_value(sym));
+
+       mode = getenv("MENUCONFIG_MODE");
+       if (mode) {
+               if (!strcasecmp(mode, "single_menu"))
+                       single_menu_mode = 1;
+       }
+
+       tcgetattr(1, &ios_org);
+       atexit(conf_cleanup);
+       init_wsize();
+       init_dialog();
+       signal(SIGWINCH, winch_handler);
+       conf(&rootmenu);
+       end_dialog();
+
+       /* Restart dialog to act more like when lxdialog was still separate */
+       init_dialog();
+       do {
+               stat = dialog_yesno(NULL,
+                                   "Do you wish to save your new axTLS configuration?", 5, 60);
+       } while (stat < 0);
+       end_dialog();
+
+       if (stat == 0) {
+               conf_write(NULL);
+               printf("\n\n"
+                       "*** End of axTLS configuration.\n"
+                       "*** Check the top-level Makefile for additional configuration options.\n\n");
+       } else
+               printf("\n\nYour axTLS configuration changes were NOT saved.\n\n");
+
+       return 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c
new file mode 100644 (file)
index 0000000..0c13156
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+struct menu rootmenu;
+static struct menu **last_entry_ptr;
+
+struct file *file_list;
+struct file *current_file;
+
+static void menu_warn(struct menu *menu, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno);
+       vfprintf(stderr, fmt, ap);
+       fprintf(stderr, "\n");
+       va_end(ap);
+}
+
+static void prop_warn(struct property *prop, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno);
+       vfprintf(stderr, fmt, ap);
+       fprintf(stderr, "\n");
+       va_end(ap);
+}
+
+void menu_init(void)
+{
+       current_entry = current_menu = &rootmenu;
+       last_entry_ptr = &rootmenu.list;
+}
+
+void menu_add_entry(struct symbol *sym)
+{
+       struct menu *menu;
+
+       menu = malloc(sizeof(*menu));
+       memset(menu, 0, sizeof(*menu));
+       menu->sym = sym;
+       menu->parent = current_menu;
+       menu->file = current_file;
+       menu->lineno = zconf_lineno();
+
+       *last_entry_ptr = menu;
+       last_entry_ptr = &menu->next;
+       current_entry = menu;
+}
+
+void menu_end_entry(void)
+{
+}
+
+void menu_add_menu(void)
+{
+       current_menu = current_entry;
+       last_entry_ptr = &current_entry->list;
+}
+
+void menu_end_menu(void)
+{
+       last_entry_ptr = &current_menu->next;
+       current_menu = current_menu->parent;
+}
+
+struct expr *menu_check_dep(struct expr *e)
+{
+       if (!e)
+               return e;
+
+       switch (e->type) {
+       case E_NOT:
+               e->left.expr = menu_check_dep(e->left.expr);
+               break;
+       case E_OR:
+       case E_AND:
+               e->left.expr = menu_check_dep(e->left.expr);
+               e->right.expr = menu_check_dep(e->right.expr);
+               break;
+       case E_SYMBOL:
+               /* change 'm' into 'm' && MODULES */
+               if (e->left.sym == &symbol_mod)
+                       return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
+               break;
+       default:
+               break;
+       }
+       return e;
+}
+
+void menu_add_dep(struct expr *dep)
+{
+       current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
+}
+
+void menu_set_type(int type)
+{
+       struct symbol *sym = current_entry->sym;
+
+       if (sym->type == type)
+               return;
+       if (sym->type == S_UNKNOWN) {
+               sym->type = type;
+               return;
+       }
+       menu_warn(current_entry, "type of '%s' redefined from '%s' to '%s'\n",
+           sym->name ? sym->name : "<choice>",
+           sym_type_name(sym->type), sym_type_name(type));
+}
+
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
+{
+       struct property *prop = prop_alloc(type, current_entry->sym);
+
+       prop->menu = current_entry;
+       prop->text = prompt;
+       prop->expr = expr;
+       prop->visible.expr = menu_check_dep(dep);
+
+       if (prompt) {
+               if (current_entry->prompt)
+                       menu_warn(current_entry, "prompt redefined\n");
+               current_entry->prompt = prop;
+       }
+
+       return prop;
+}
+
+void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
+{
+       menu_add_prop(type, prompt, NULL, dep);
+}
+
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
+{
+       menu_add_prop(type, NULL, expr, dep);
+}
+
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
+{
+       menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
+}
+
+void sym_check_prop(struct symbol *sym)
+{
+       struct property *prop;
+       struct symbol *sym2;
+       for (prop = sym->prop; prop; prop = prop->next) {
+               switch (prop->type) {
+               case P_DEFAULT:
+                       if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
+                           prop->expr->type != E_SYMBOL)
+                               prop_warn(prop,
+                                   "default for config symbol '%'"
+                                   " must be a single symbol", sym->name);
+                       break;
+               case P_SELECT:
+                       sym2 = prop_get_symbol(prop);
+                       if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
+                               prop_warn(prop,
+                                   "config symbol '%s' uses select, but is "
+                                   "not boolean or tristate", sym->name);
+                       else if (sym2->type == S_UNKNOWN)
+                               prop_warn(prop,
+                                   "'select' used by config symbol '%s' "
+                                   "refer to undefined symbol '%s'",
+                                   sym->name, sym2->name);
+                       else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
+                               prop_warn(prop,
+                                   "'%s' has wrong type. 'select' only "
+                                   "accept arguments of boolean and "
+                                   "tristate type", sym2->name);
+                       break;
+               case P_RANGE:
+                       if (sym->type != S_INT && sym->type != S_HEX)
+                               prop_warn(prop, "range is only allowed "
+                                               "for int or hex symbols");
+                       if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
+                           !sym_string_valid(sym, prop->expr->right.sym->name))
+                               prop_warn(prop, "range is invalid");
+                       break;
+               default:
+                       ;
+               }
+       }
+}
+
+void menu_finalize(struct menu *parent)
+{
+       struct menu *menu, *last_menu;
+       struct symbol *sym;
+       struct property *prop;
+       struct expr *parentdep, *basedep, *dep, *dep2, **ep;
+
+       sym = parent->sym;
+       if (parent->list) {
+               if (sym && sym_is_choice(sym)) {
+                       /* find the first choice value and find out choice type */
+                       for (menu = parent->list; menu; menu = menu->next) {
+                               if (menu->sym) {
+                                       current_entry = parent;
+                                       menu_set_type(menu->sym->type);
+                                       current_entry = menu;
+                                       menu_set_type(sym->type);
+                                       break;
+                               }
+                       }
+                       parentdep = expr_alloc_symbol(sym);
+               } else if (parent->prompt)
+                       parentdep = parent->prompt->visible.expr;
+               else
+                       parentdep = parent->dep;
+
+               for (menu = parent->list; menu; menu = menu->next) {
+                       basedep = expr_transform(menu->dep);
+                       basedep = expr_alloc_and(expr_copy(parentdep), basedep);
+                       basedep = expr_eliminate_dups(basedep);
+                       menu->dep = basedep;
+                       if (menu->sym)
+                               prop = menu->sym->prop;
+                       else
+                               prop = menu->prompt;
+                       for (; prop; prop = prop->next) {
+                               if (prop->menu != menu)
+                                       continue;
+                               dep = expr_transform(prop->visible.expr);
+                               dep = expr_alloc_and(expr_copy(basedep), dep);
+                               dep = expr_eliminate_dups(dep);
+                               if (menu->sym && menu->sym->type != S_TRISTATE)
+                                       dep = expr_trans_bool(dep);
+                               prop->visible.expr = dep;
+                               if (prop->type == P_SELECT) {
+                                       struct symbol *es = prop_get_symbol(prop);
+                                       es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
+                                                       expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+                               }
+                       }
+               }
+               for (menu = parent->list; menu; menu = menu->next)
+                       menu_finalize(menu);
+       } else if (sym) {
+               basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
+               basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
+               basedep = expr_eliminate_dups(expr_transform(basedep));
+               last_menu = NULL;
+               for (menu = parent->next; menu; menu = menu->next) {
+                       dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
+                       if (!expr_contains_symbol(dep, sym))
+                               break;
+                       if (expr_depends_symbol(dep, sym))
+                               goto next;
+                       dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);
+                       dep = expr_eliminate_dups(expr_transform(dep));
+                       dep2 = expr_copy(basedep);
+                       expr_eliminate_eq(&dep, &dep2);
+                       expr_free(dep);
+                       if (!expr_is_yes(dep2)) {
+                               expr_free(dep2);
+                               break;
+                       }
+                       expr_free(dep2);
+               next:
+                       menu_finalize(menu);
+                       menu->parent = parent;
+                       last_menu = menu;
+               }
+               if (last_menu) {
+                       parent->list = parent->next;
+                       parent->next = last_menu->next;
+                       last_menu->next = NULL;
+               }
+       }
+       for (menu = parent->list; menu; menu = menu->next) {
+               if (sym && sym_is_choice(sym) && menu->sym) {
+                       menu->sym->flags |= SYMBOL_CHOICEVAL;
+                       if (!menu->prompt)
+                               menu_warn(menu, "choice value must have a prompt");
+                       for (prop = menu->sym->prop; prop; prop = prop->next) {
+                               if (prop->type == P_PROMPT && prop->menu != menu) {
+                                       prop_warn(prop, "choice values "
+                                           "currently only support a "
+                                           "single prompt");
+                               }
+                               if (prop->type == P_DEFAULT)
+                                       prop_warn(prop, "defaults for choice "
+                                           "values not supported");
+                       }
+                       current_entry = menu;
+                       menu_set_type(sym->type);
+                       menu_add_symbol(P_CHOICE, sym, NULL);
+                       prop = sym_get_choice_prop(sym);
+                       for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
+                               ;
+                       *ep = expr_alloc_one(E_CHOICE, NULL);
+                       (*ep)->right.sym = menu->sym;
+               }
+               if (menu->list && (!menu->prompt || !menu->prompt->text)) {
+                       for (last_menu = menu->list; ; last_menu = last_menu->next) {
+                               last_menu->parent = parent;
+                               if (!last_menu->next)
+                                       break;
+                       }
+                       last_menu->next = menu->next;
+                       menu->next = menu->list;
+                       menu->list = NULL;
+               }
+       }
+
+       if (sym && !(sym->flags & SYMBOL_WARNED)) {
+               if (sym->type == S_UNKNOWN)
+                       menu_warn(parent, "config symbol defined "
+                           "without type\n");
+
+               if (sym_is_choice(sym) && !parent->prompt)
+                       menu_warn(parent, "choice must have a prompt\n");
+
+               /* Check properties connected to this symbol */
+               sym_check_prop(sym);
+               sym->flags |= SYMBOL_WARNED;
+       }
+
+       if (sym && !sym_is_optional(sym) && parent->prompt) {
+               sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
+                               expr_alloc_and(parent->prompt->visible.expr,
+                                       expr_alloc_symbol(&symbol_mod)));
+       }
+}
+
+bool menu_is_visible(struct menu *menu)
+{
+       struct menu *child;
+       struct symbol *sym;
+       tristate visible;
+
+       if (!menu->prompt)
+               return false;
+       sym = menu->sym;
+       if (sym) {
+               sym_calc_value(sym);
+               visible = menu->prompt->visible.tri;
+       } else
+               visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
+
+       if (visible != no)
+               return true;
+       if (!sym || sym_get_tristate_value(menu->sym) == no)
+               return false;
+
+       for (child = menu->list; child; child = child->next)
+               if (menu_is_visible(child))
+                       return true;
+       return false;
+}
+
+const char *menu_get_prompt(struct menu *menu)
+{
+       if (menu->prompt)
+               return menu->prompt->text;
+       else if (menu->sym)
+               return menu->sym->name;
+       return NULL;
+}
+
+struct menu *menu_get_root_menu(struct menu *menu)
+{
+       return &rootmenu;
+}
+
+struct menu *menu_get_parent_menu(struct menu *menu)
+{
+       enum prop_type type;
+
+       for (; menu != &rootmenu; menu = menu->parent) {
+               type = menu->prompt ? menu->prompt->type : 0;
+               if (type == P_MENU)
+                       break;
+       }
+       return menu;
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs
new file mode 100755 (executable)
index 0000000..3cb7bb1
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Copyright (C) 2002 Khalid Aziz <khalid_aziz at hp.com>
+# Copyright (C) 2002 Randy Dunlap <rddunlap at osdl.org>
+# Copyright (C) 2002 Al Stone <ahs3 at fc.hp.com>
+# Copyright (C) 2002 Hewlett-Packard Company
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#   Busybox version by Matteo Croce <3297627799 at wind.it>
+#
+# Rules to generate bbconfig.h from .config:
+#      - Retain lines that begin with "CONFIG_"
+#      - Retain lines that begin with "# CONFIG_"
+#      - lines that use double-quotes must \\-escape-quote them
+
+if [ $# -lt 1 ]
+then
+       config=.config
+else   config=$1
+fi
+
+echo "#ifndef _BBCONFIG_H"
+echo "#define _BBCONFIG_H"
+echo \
+"/*
+ * busybox configuration options.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
+ * NON INFRINGEMENT.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ *
+ * This file is generated automatically by scripts/config/mkconfigs.
+ * Do not edit.
+ *
+ */"
+
+echo "static char const bbconfig_config[] ="
+echo "\"CONFIG_BEGIN=n\\n\\"
+echo "`sed 's/\"/\\\\\"/g' $config | grep "^#\? \?CONFIG_" | awk '{ print $0 "\\\\n\\\\" }' `"
+echo "CONFIG_END=n\\n\";"
+echo "#endif /* _BBCONFIG_H */"
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c
new file mode 100644 (file)
index 0000000..ea62972
--- /dev/null
@@ -0,0 +1,809 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+#include <sys/utsname.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+struct symbol symbol_yes = {
+       .name = "y",
+       .curr = { "y", yes },
+       .flags = SYMBOL_YES|SYMBOL_VALID,
+}, symbol_mod = {
+       .name = "m",
+       .curr = { "m", mod },
+       .flags = SYMBOL_MOD|SYMBOL_VALID,
+}, symbol_no = {
+       .name = "n",
+       .curr = { "n", no },
+       .flags = SYMBOL_NO|SYMBOL_VALID,
+}, symbol_empty = {
+       .name = "",
+       .curr = { "", no },
+       .flags = SYMBOL_VALID,
+};
+
+int sym_change_count;
+struct symbol *modules_sym;
+tristate modules_val;
+
+void sym_add_default(struct symbol *sym, const char *def)
+{
+       struct property *prop = prop_alloc(P_DEFAULT, sym);
+
+       prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
+}
+
+void sym_init(void)
+{
+       struct symbol *sym;
+       char *p;
+       static bool inited = false;
+
+       if (inited)
+               return;
+       inited = true;
+
+       sym = sym_lookup("VERSION", 0);
+       sym->type = S_STRING;
+       sym->flags |= SYMBOL_AUTO;
+       p = getenv("VERSION");
+       if (p)
+               sym_add_default(sym, p);
+
+       sym = sym_lookup("TARGET_ARCH", 0);
+       sym->type = S_STRING;
+       sym->flags |= SYMBOL_AUTO;
+       p = getenv("TARGET_ARCH");
+       if (p)
+               sym_add_default(sym, p);
+
+}
+
+enum symbol_type sym_get_type(struct symbol *sym)
+{
+       enum symbol_type type = sym->type;
+
+       if (type == S_TRISTATE) {
+               if (sym_is_choice_value(sym) && sym->visible == yes)
+                       type = S_BOOLEAN;
+               else if (modules_val == no)
+                       type = S_BOOLEAN;
+       }
+       return type;
+}
+
+const char *sym_type_name(enum symbol_type type)
+{
+       switch (type) {
+       case S_BOOLEAN:
+               return "boolean";
+       case S_TRISTATE:
+               return "tristate";
+       case S_INT:
+               return "integer";
+       case S_HEX:
+               return "hex";
+       case S_STRING:
+               return "string";
+       case S_UNKNOWN:
+               return "unknown";
+       case S_OTHER:
+               break;
+       }
+       return "???";
+}
+
+struct property *sym_get_choice_prop(struct symbol *sym)
+{
+       struct property *prop;
+
+       for_all_choices(sym, prop)
+               return prop;
+       return NULL;
+}
+
+struct property *sym_get_default_prop(struct symbol *sym)
+{
+       struct property *prop;
+
+       for_all_defaults(sym, prop) {
+               prop->visible.tri = expr_calc_value(prop->visible.expr);
+               if (prop->visible.tri != no)
+                       return prop;
+       }
+       return NULL;
+}
+
+struct property *sym_get_range_prop(struct symbol *sym)
+{
+       struct property *prop;
+
+       for_all_properties(sym, prop, P_RANGE) {
+               prop->visible.tri = expr_calc_value(prop->visible.expr);
+               if (prop->visible.tri != no)
+                       return prop;
+       }
+       return NULL;
+}
+
+static void sym_calc_visibility(struct symbol *sym)
+{
+       struct property *prop;
+       tristate tri;
+
+       /* any prompt visible? */
+       tri = no;
+       for_all_prompts(sym, prop) {
+               prop->visible.tri = expr_calc_value(prop->visible.expr);
+               tri = E_OR(tri, prop->visible.tri);
+       }
+       if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
+               tri = yes;
+       if (sym->visible != tri) {
+               sym->visible = tri;
+               sym_set_changed(sym);
+       }
+       if (sym_is_choice_value(sym))
+               return;
+       tri = no;
+       if (sym->rev_dep.expr)
+               tri = expr_calc_value(sym->rev_dep.expr);
+       if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
+               tri = yes;
+       if (sym->rev_dep.tri != tri) {
+               sym->rev_dep.tri = tri;
+               sym_set_changed(sym);
+       }
+}
+
+static struct symbol *sym_calc_choice(struct symbol *sym)
+{
+       struct symbol *def_sym;
+       struct property *prop;
+       struct expr *e;
+
+       /* is the user choice visible? */
+       def_sym = sym->user.val;
+       if (def_sym) {
+               sym_calc_visibility(def_sym);
+               if (def_sym->visible != no)
+                       return def_sym;
+       }
+
+       /* any of the defaults visible? */
+       for_all_defaults(sym, prop) {
+               prop->visible.tri = expr_calc_value(prop->visible.expr);
+               if (prop->visible.tri == no)
+                       continue;
+               def_sym = prop_get_symbol(prop);
+               sym_calc_visibility(def_sym);
+               if (def_sym->visible != no)
+                       return def_sym;
+       }
+
+       /* just get the first visible value */
+       prop = sym_get_choice_prop(sym);
+       for (e = prop->expr; e; e = e->left.expr) {
+               def_sym = e->right.sym;
+               sym_calc_visibility(def_sym);
+               if (def_sym->visible != no)
+                       return def_sym;
+       }
+
+       /* no choice? reset tristate value */
+       sym->curr.tri = no;
+       return NULL;
+}
+
+void sym_calc_value(struct symbol *sym)
+{
+       struct symbol_value newval, oldval;
+       struct property *prop;
+       struct expr *e;
+
+       if (!sym)
+               return;
+
+       if (sym->flags & SYMBOL_VALID)
+               return;
+       sym->flags |= SYMBOL_VALID;
+
+       oldval = sym->curr;
+
+       switch (sym->type) {
+       case S_INT:
+       case S_HEX:
+       case S_STRING:
+               newval = symbol_empty.curr;
+               break;
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               newval = symbol_no.curr;
+               break;
+       default:
+               sym->curr.val = sym->name;
+               sym->curr.tri = no;
+               return;
+       }
+       if (!sym_is_choice_value(sym))
+               sym->flags &= ~SYMBOL_WRITE;
+
+       sym_calc_visibility(sym);
+
+       /* set default if recursively called */
+       sym->curr = newval;
+
+       switch (sym_get_type(sym)) {
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               if (sym_is_choice_value(sym) && sym->visible == yes) {
+                       prop = sym_get_choice_prop(sym);
+                       newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
+               } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
+                       sym->flags |= SYMBOL_WRITE;
+                       if (sym_has_value(sym))
+                               newval.tri = sym->user.tri;
+                       else if (!sym_is_choice(sym)) {
+                               prop = sym_get_default_prop(sym);
+                               if (prop)
+                                       newval.tri = expr_calc_value(prop->expr);
+                       }
+                       newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
+               } else if (!sym_is_choice(sym)) {
+                       prop = sym_get_default_prop(sym);
+                       if (prop) {
+                               sym->flags |= SYMBOL_WRITE;
+                               newval.tri = expr_calc_value(prop->expr);
+                       }
+               }
+               if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
+                       newval.tri = yes;
+               break;
+       case S_STRING:
+       case S_HEX:
+       case S_INT:
+               if (sym->visible != no) {
+                       sym->flags |= SYMBOL_WRITE;
+                       if (sym_has_value(sym)) {
+                               newval.val = sym->user.val;
+                               break;
+                       }
+               }
+               prop = sym_get_default_prop(sym);
+               if (prop) {
+                       struct symbol *ds = prop_get_symbol(prop);
+                       if (ds) {
+                               sym->flags |= SYMBOL_WRITE;
+                               sym_calc_value(ds);
+                               newval.val = ds->curr.val;
+                       }
+               }
+               break;
+       default:
+               ;
+       }
+
+       sym->curr = newval;
+       if (sym_is_choice(sym) && newval.tri == yes)
+               sym->curr.val = sym_calc_choice(sym);
+
+       if (memcmp(&oldval, &sym->curr, sizeof(oldval)))
+               sym_set_changed(sym);
+       if (modules_sym == sym)
+               modules_val = modules_sym->curr.tri;
+
+       if (sym_is_choice(sym)) {
+               int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
+               prop = sym_get_choice_prop(sym);
+               for (e = prop->expr; e; e = e->left.expr) {
+                       e->right.sym->flags |= flags;
+                       if (flags & SYMBOL_CHANGED)
+                               sym_set_changed(e->right.sym);
+               }
+       }
+}
+
+void sym_clear_all_valid(void)
+{
+       struct symbol *sym;
+       int i;
+
+       for_all_symbols(i, sym)
+               sym->flags &= ~SYMBOL_VALID;
+       sym_change_count++;
+       if (modules_sym)
+               sym_calc_value(modules_sym);
+}
+
+void sym_set_changed(struct symbol *sym)
+{
+       struct property *prop;
+
+       sym->flags |= SYMBOL_CHANGED;
+       for (prop = sym->prop; prop; prop = prop->next) {
+               if (prop->menu)
+                       prop->menu->flags |= MENU_CHANGED;
+       }
+}
+
+void sym_set_all_changed(void)
+{
+       struct symbol *sym;
+       int i;
+
+       for_all_symbols(i, sym)
+               sym_set_changed(sym);
+}
+
+bool sym_tristate_within_range(struct symbol *sym, tristate val)
+{
+       int type = sym_get_type(sym);
+
+       if (sym->visible == no)
+               return false;
+
+       if (type != S_BOOLEAN && type != S_TRISTATE)
+               return false;
+
+       if (type == S_BOOLEAN && val == mod)
+               return false;
+       if (sym->visible <= sym->rev_dep.tri)
+               return false;
+       if (sym_is_choice_value(sym) && sym->visible == yes)
+               return val == yes;
+       return val >= sym->rev_dep.tri && val <= sym->visible;
+}
+
+bool sym_set_tristate_value(struct symbol *sym, tristate val)
+{
+       tristate oldval = sym_get_tristate_value(sym);
+
+       if (oldval != val && !sym_tristate_within_range(sym, val))
+               return false;
+
+       if (sym->flags & SYMBOL_NEW) {
+               sym->flags &= ~SYMBOL_NEW;
+               sym_set_changed(sym);
+       }
+       if (sym_is_choice_value(sym) && val == yes) {
+               struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+
+               cs->user.val = sym;
+               cs->flags &= ~SYMBOL_NEW;
+       }
+
+       sym->user.tri = val;
+       if (oldval != val) {
+               sym_clear_all_valid();
+               if (sym == modules_sym)
+                       sym_set_all_changed();
+       }
+
+       return true;
+}
+
+tristate sym_toggle_tristate_value(struct symbol *sym)
+{
+       tristate oldval, newval;
+
+       oldval = newval = sym_get_tristate_value(sym);
+       do {
+               switch (newval) {
+               case no:
+                       newval = mod;
+                       break;
+               case mod:
+                       newval = yes;
+                       break;
+               case yes:
+                       newval = no;
+                       break;
+               }
+               if (sym_set_tristate_value(sym, newval))
+                       break;
+       } while (oldval != newval);
+       return newval;
+}
+
+bool sym_string_valid(struct symbol *sym, const char *str)
+{
+       signed char ch;
+
+       switch (sym->type) {
+       case S_STRING:
+               return true;
+       case S_INT:
+               ch = *str++;
+               if (ch == '-')
+                       ch = *str++;
+               if (!isdigit(ch))
+                       return false;
+               if (ch == '0' && *str != 0)
+                       return false;
+               while ((ch = *str++)) {
+                       if (!isdigit(ch))
+                               return false;
+               }
+               return true;
+       case S_HEX:
+               if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
+                       str += 2;
+               ch = *str++;
+               do {
+                       if (!isxdigit(ch))
+                               return false;
+               } while ((ch = *str++));
+               return true;
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               switch (str[0]) {
+               case 'y': case 'Y':
+               case 'm': case 'M':
+               case 'n': case 'N':
+                       return true;
+               }
+               return false;
+       default:
+               return false;
+       }
+}
+
+bool sym_string_within_range(struct symbol *sym, const char *str)
+{
+       struct property *prop;
+       int val;
+
+       switch (sym->type) {
+       case S_STRING:
+               return sym_string_valid(sym, str);
+       case S_INT:
+               if (!sym_string_valid(sym, str))
+                       return false;
+               prop = sym_get_range_prop(sym);
+               if (!prop)
+                       return true;
+               val = strtol(str, NULL, 10);
+               return val >= strtol(prop->expr->left.sym->name, NULL, 10) &&
+                      val <= strtol(prop->expr->right.sym->name, NULL, 10);
+       case S_HEX:
+               if (!sym_string_valid(sym, str))
+                       return false;
+               prop = sym_get_range_prop(sym);
+               if (!prop)
+                       return true;
+               val = strtol(str, NULL, 16);
+               return val >= strtol(prop->expr->left.sym->name, NULL, 16) &&
+                      val <= strtol(prop->expr->right.sym->name, NULL, 16);
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               switch (str[0]) {
+               case 'y': case 'Y':
+                       return sym_tristate_within_range(sym, yes);
+               case 'm': case 'M':
+                       return sym_tristate_within_range(sym, mod);
+               case 'n': case 'N':
+                       return sym_tristate_within_range(sym, no);
+               }
+               return false;
+       default:
+               return false;
+       }
+}
+
+bool sym_set_string_value(struct symbol *sym, const char *newval)
+{
+       const char *oldval;
+       char *val;
+       int size;
+
+       switch (sym->type) {
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               switch (newval[0]) {
+               case 'y': case 'Y':
+                       return sym_set_tristate_value(sym, yes);
+               case 'm': case 'M':
+                       return sym_set_tristate_value(sym, mod);
+               case 'n': case 'N':
+                       return sym_set_tristate_value(sym, no);
+               }
+               return false;
+       default:
+               ;
+       }
+
+       if (!sym_string_within_range(sym, newval))
+               return false;
+
+       if (sym->flags & SYMBOL_NEW) {
+               sym->flags &= ~SYMBOL_NEW;
+               sym_set_changed(sym);
+       }
+
+       oldval = sym->user.val;
+       size = strlen(newval) + 1;
+       if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
+               size += 2;
+               sym->user.val = val = malloc(size);
+               *val++ = '0';
+               *val++ = 'x';
+       } else if (!oldval || strcmp(oldval, newval))
+               sym->user.val = val = malloc(size);
+       else
+               return true;
+
+       strcpy(val, newval);
+       free((void *)oldval);
+       sym_clear_all_valid();
+
+       return true;
+}
+
+const char *sym_get_string_value(struct symbol *sym)
+{
+       tristate val;
+
+       switch (sym->type) {
+       case S_BOOLEAN:
+       case S_TRISTATE:
+               val = sym_get_tristate_value(sym);
+               switch (val) {
+               case no:
+                       return "n";
+               case mod:
+                       return "m";
+               case yes:
+                       return "y";
+               }
+               break;
+       default:
+               ;
+       }
+       return (const char *)sym->curr.val;
+}
+
+bool sym_is_changable(struct symbol *sym)
+{
+       return sym->visible > sym->rev_dep.tri;
+}
+
+struct symbol *sym_lookup(const char *name, int isconst)
+{
+       struct symbol *symbol;
+       const char *ptr;
+       char *new_name;
+       int hash = 0;
+
+       if (name) {
+               if (name[0] && !name[1]) {
+                       switch (name[0]) {
+                       case 'y': return &symbol_yes;
+                       case 'm': return &symbol_mod;
+                       case 'n': return &symbol_no;
+                       }
+               }
+               for (ptr = name; *ptr; ptr++)
+                       hash += *ptr;
+               hash &= 0xff;
+
+               for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+                       if (!strcmp(symbol->name, name)) {
+                               if ((isconst && symbol->flags & SYMBOL_CONST) ||
+                                   (!isconst && !(symbol->flags & SYMBOL_CONST)))
+                                       return symbol;
+                       }
+               }
+               new_name = strdup(name);
+       } else {
+               new_name = NULL;
+               hash = 256;
+       }
+
+       symbol = malloc(sizeof(*symbol));
+       memset(symbol, 0, sizeof(*symbol));
+       symbol->name = new_name;
+       symbol->type = S_UNKNOWN;
+       symbol->flags = SYMBOL_NEW;
+       if (isconst)
+               symbol->flags |= SYMBOL_CONST;
+
+       symbol->next = symbol_hash[hash];
+       symbol_hash[hash] = symbol;
+
+       return symbol;
+}
+
+struct symbol *sym_find(const char *name)
+{
+       struct symbol *symbol = NULL;
+       const char *ptr;
+       int hash = 0;
+
+       if (!name)
+               return NULL;
+
+       if (name[0] && !name[1]) {
+               switch (name[0]) {
+               case 'y': return &symbol_yes;
+               case 'm': return &symbol_mod;
+               case 'n': return &symbol_no;
+               }
+       }
+       for (ptr = name; *ptr; ptr++)
+               hash += *ptr;
+       hash &= 0xff;
+
+       for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+               if (!strcmp(symbol->name, name) &&
+                   !(symbol->flags & SYMBOL_CONST))
+                               break;
+       }
+
+       return symbol;
+}
+
+struct symbol **sym_re_search(const char *pattern)
+{
+       struct symbol *sym, **sym_arr = NULL;
+       int i, cnt, size;
+       regex_t re;
+
+       cnt = size = 0;
+       /* Skip if empty */
+       if (strlen(pattern) == 0)
+               return NULL;
+       if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB|REG_ICASE))
+               return NULL;
+
+       for_all_symbols(i, sym) {
+               if (sym->flags & SYMBOL_CONST || !sym->name)
+                       continue;
+               if (regexec(&re, sym->name, 0, NULL, 0))
+                       continue;
+               if (cnt + 1 >= size) {
+                       void *tmp = sym_arr;
+                       size += 16;
+                       sym_arr = realloc(sym_arr, size * sizeof(struct symbol *));
+                       if (!sym_arr) {
+                               free(tmp);
+                               return NULL;
+                       }
+               }
+               sym_arr[cnt++] = sym;
+       }
+       if (sym_arr)
+               sym_arr[cnt] = NULL;
+       regfree(&re);
+
+       return sym_arr;
+}
+
+
+struct symbol *sym_check_deps(struct symbol *sym);
+
+static struct symbol *sym_check_expr_deps(struct expr *e)
+{
+       struct symbol *sym;
+
+       if (!e)
+               return NULL;
+       switch (e->type) {
+       case E_OR:
+       case E_AND:
+               sym = sym_check_expr_deps(e->left.expr);
+               if (sym)
+                       return sym;
+               return sym_check_expr_deps(e->right.expr);
+       case E_NOT:
+               return sym_check_expr_deps(e->left.expr);
+       case E_EQUAL:
+       case E_UNEQUAL:
+               sym = sym_check_deps(e->left.sym);
+               if (sym)
+                       return sym;
+               return sym_check_deps(e->right.sym);
+       case E_SYMBOL:
+               return sym_check_deps(e->left.sym);
+       default:
+               break;
+       }
+       printf("Oops! How to check %d?\n", e->type);
+       return NULL;
+}
+
+struct symbol *sym_check_deps(struct symbol *sym)
+{
+       struct symbol *sym2;
+       struct property *prop;
+
+       if (sym->flags & SYMBOL_CHECK_DONE)
+               return NULL;
+       if (sym->flags & SYMBOL_CHECK) {
+               printf("Warning! Found recursive dependency: %s", sym->name);
+               return sym;
+       }
+
+       sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+       sym2 = sym_check_expr_deps(sym->rev_dep.expr);
+       if (sym2)
+               goto out;
+
+       for (prop = sym->prop; prop; prop = prop->next) {
+               if (prop->type == P_CHOICE || prop->type == P_SELECT)
+                       continue;
+               sym2 = sym_check_expr_deps(prop->visible.expr);
+               if (sym2)
+                       goto out;
+               if (prop->type != P_DEFAULT || sym_is_choice(sym))
+                       continue;
+               sym2 = sym_check_expr_deps(prop->expr);
+               if (sym2)
+                       goto out;
+       }
+out:
+       if (sym2)
+               printf(" %s", sym->name);
+       sym->flags &= ~SYMBOL_CHECK;
+       return sym2;
+}
+
+struct property *prop_alloc(enum prop_type type, struct symbol *sym)
+{
+       struct property *prop;
+       struct property **propp;
+
+       prop = malloc(sizeof(*prop));
+       memset(prop, 0, sizeof(*prop));
+       prop->type = type;
+       prop->sym = sym;
+       prop->file = current_file;
+       prop->lineno = zconf_lineno();
+
+       /* append property to the prop list of symbol */
+       if (sym) {
+               for (propp = &sym->prop; *propp; propp = &(*propp)->next)
+                       ;
+               *propp = prop;
+       }
+
+       return prop;
+}
+
+struct symbol *prop_get_symbol(struct property *prop)
+{
+       if (prop->expr && (prop->expr->type == E_SYMBOL ||
+                          prop->expr->type == E_CHOICE))
+               return prop->expr->left.sym;
+       return NULL;
+}
+
+const char *prop_get_type_name(enum prop_type type)
+{
+       switch (type) {
+       case P_PROMPT:
+               return "prompt";
+       case P_COMMENT:
+               return "comment";
+       case P_MENU:
+               return "menu";
+       case P_DEFAULT:
+               return "default";
+       case P_CHOICE:
+               return "choice";
+       case P_SELECT:
+               return "select";
+       case P_RANGE:
+               return "range";
+       case P_UNKNOWN:
+               break;
+       }
+       return "unknown";
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c
new file mode 100644 (file)
index 0000000..8fc95a2
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>
+ * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>
+ *
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <string.h>
+#include "lkc.h"
+
+/* file already present in list? If not add it */
+struct file *file_lookup(const char *name)
+{
+       struct file *file;
+
+       for (file = file_list; file; file = file->next) {
+               if (!strcmp(name, file->name))
+                       return file;
+       }
+
+       file = malloc(sizeof(*file));
+       memset(file, 0, sizeof(*file));
+       file->name = strdup(name);
+       file->next = file_list;
+       file_list = file;
+       return file;
+}
+
+/* write a dependency file as used by kbuild to track dependencies */
+int file_write_dep(const char *name)
+{
+       struct file *file;
+       FILE *out;
+
+       if (!name)
+               name = "config/.config.cmd";
+       out = fopen("config/.config.tmp", "w");
+       if (!out)
+               return 1;
+       fprintf(out, "deps_config := \\\n");
+       for (file = file_list; file; file = file->next) {
+               if (file->next)
+                       fprintf(out, "\t%s \\\n", file->name);
+               else
+                       fprintf(out, "\t%s\n", file->name);
+       }
+       fprintf(out, "\n.config include/config.h: $(deps_config)\n\n$(deps_config):\n");
+       fclose(out);
+       rename(".config.tmp", name);
+       return 0;
+}
+
+
+/* Allocate initial growable sting */
+struct gstr str_new(void)
+{
+       struct gstr gs;
+       gs.s = malloc(sizeof(char) * 64);
+       gs.len = 16;
+       strcpy(gs.s, "\0");
+       return gs;
+}
+
+/* Allocate and assign growable string */
+struct gstr str_assign(const char *s)
+{
+       struct gstr gs;
+       gs.s = strdup(s);
+       gs.len = strlen(s) + 1;
+       return gs;
+}
+
+/* Free storage for growable string */
+void str_free(struct gstr *gs)
+{
+       if (gs->s)
+               free(gs->s);
+       gs->s = NULL;
+       gs->len = 0;
+}
+
+/* Append to growable string */
+void str_append(struct gstr *gs, const char *s)
+{
+       size_t l = strlen(gs->s) + strlen(s) + 1;
+       if (l > gs->len) {
+               gs->s   = realloc(gs->s, l);
+               gs->len = l;
+       }
+       strcat(gs->s, s);
+}
+
+/* Append printf formatted string to growable string */
+void str_printf(struct gstr *gs, const char *fmt, ...)
+{
+       va_list ap;
+       char s[10000]; /* big enough... */
+       va_start(ap, fmt);
+       vsnprintf(s, sizeof(s), fmt, ap);
+       str_append(gs, s);
+       va_end(ap);
+}
+
+/* Retreive value of growable string */
+const char *str_get(struct gstr *gs)
+{
+       return gs->s;
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l
new file mode 100644 (file)
index 0000000..55517b2
--- /dev/null
@@ -0,0 +1,366 @@
+%option backup nostdinit noyywrap never-interactive full ecs
+%option 8bit backup nodefault perf-report perf-report
+%x COMMAND HELP STRING PARAM
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE  16
+
+char *text;
+static char *text_ptr;
+static int text_size, text_asize;
+
+struct buffer {
+        struct buffer *parent;
+        YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static struct buffer *zconf_endfile(void);
+
+void new_string(void)
+{
+       text = malloc(START_STRSIZE);
+       text_asize = START_STRSIZE;
+       text_ptr = text;
+       text_size = 0;
+       *text_ptr = 0;
+}
+
+void append_string(const char *str, int size)
+{
+       int new_size = text_size + size + 1;
+       if (new_size > text_asize) {
+               text = realloc(text, new_size);
+               text_asize = new_size;
+               text_ptr = text + text_size;
+       }
+       memcpy(text_ptr, str, size);
+       text_ptr += size;
+       text_size += size;
+       *text_ptr = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+       text = malloc(size + 1);
+       memcpy(text, str, size);
+       text[size] = 0;
+}
+%}
+
+ws     [ \n\t]
+n      [A-Za-z0-9_]
+
+%%
+       int str = 0;
+       int ts, i;
+
+[ \t]*#.*\n    current_file->lineno++;
+[ \t]*#.*
+
+[ \t]*\n       current_file->lineno++; return T_EOL;
+
+[ \t]+ {
+       BEGIN(COMMAND);
+}
+
+.      {
+       unput(yytext[0]);
+       BEGIN(COMMAND);
+}
+
+
+<COMMAND>{
+       "mainmenu"              BEGIN(PARAM); return T_MAINMENU;
+       "menu"                  BEGIN(PARAM); return T_MENU;
+       "endmenu"               BEGIN(PARAM); return T_ENDMENU;
+       "source"                BEGIN(PARAM); return T_SOURCE;
+       "choice"                BEGIN(PARAM); return T_CHOICE;
+       "endchoice"             BEGIN(PARAM); return T_ENDCHOICE;
+       "comment"               BEGIN(PARAM); return T_COMMENT;
+       "config"                BEGIN(PARAM); return T_CONFIG;
+       "menuconfig"            BEGIN(PARAM); return T_MENUCONFIG;
+       "help"                  BEGIN(PARAM); return T_HELP;
+       "if"                    BEGIN(PARAM); return T_IF;
+       "endif"                 BEGIN(PARAM); return T_ENDIF;
+       "depends"               BEGIN(PARAM); return T_DEPENDS;
+       "requires"              BEGIN(PARAM); return T_REQUIRES;
+       "optional"              BEGIN(PARAM); return T_OPTIONAL;
+       "default"               BEGIN(PARAM); return T_DEFAULT;
+       "prompt"                BEGIN(PARAM); return T_PROMPT;
+       "tristate"              BEGIN(PARAM); return T_TRISTATE;
+       "def_tristate"          BEGIN(PARAM); return T_DEF_TRISTATE;
+       "bool"                  BEGIN(PARAM); return T_BOOLEAN;
+       "boolean"               BEGIN(PARAM); return T_BOOLEAN;
+       "def_bool"              BEGIN(PARAM); return T_DEF_BOOLEAN;
+       "def_boolean"           BEGIN(PARAM); return T_DEF_BOOLEAN;
+       "int"                   BEGIN(PARAM); return T_INT;
+       "hex"                   BEGIN(PARAM); return T_HEX;
+       "string"                BEGIN(PARAM); return T_STRING;
+       "select"                BEGIN(PARAM); return T_SELECT;
+       "enable"                BEGIN(PARAM); return T_SELECT;
+       "range"                 BEGIN(PARAM); return T_RANGE;
+       {n}+    {
+               alloc_string(yytext, yyleng);
+               zconflval.string = text;
+               return T_WORD;
+       }
+       .
+       \n      current_file->lineno++; BEGIN(INITIAL);
+}
+
+<PARAM>{
+       "&&"    return T_AND;
+       "||"    return T_OR;
+       "("     return T_OPEN_PAREN;
+       ")"     return T_CLOSE_PAREN;
+       "!"     return T_NOT;
+       "="     return T_EQUAL;
+       "!="    return T_UNEQUAL;
+       "if"    return T_IF;
+       "on"    return T_ON;
+       \"|\'   {
+               str = yytext[0];
+               new_string();
+               BEGIN(STRING);
+       }
+       \n      BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+       ---     /* ignore */
+       ({n}|[-/.])+    {
+               alloc_string(yytext, yyleng);
+               zconflval.string = text;
+               return T_WORD;
+       }
+       #.*     /* comment */
+       \\\n    current_file->lineno++;
+       .
+       <<EOF>> {
+               BEGIN(INITIAL);
+       }
+}
+
+<STRING>{
+       [^'"\\\n]+/\n   {
+               append_string(yytext, yyleng);
+               zconflval.string = text;
+               return T_WORD_QUOTE;
+       }
+       [^'"\\\n]+      {
+               append_string(yytext, yyleng);
+       }
+       \\.?/\n {
+               append_string(yytext + 1, yyleng - 1);
+               zconflval.string = text;
+               return T_WORD_QUOTE;
+       }
+       \\.?    {
+               append_string(yytext + 1, yyleng - 1);
+       }
+       \'|\"   {
+               if (str == yytext[0]) {
+                       BEGIN(PARAM);
+                       zconflval.string = text;
+                       return T_WORD_QUOTE;
+               } else
+                       append_string(yytext, 1);
+       }
+       \n      {
+               printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+               current_file->lineno++;
+               BEGIN(INITIAL);
+               return T_EOL;
+       }
+       <<EOF>> {
+               BEGIN(INITIAL);
+       }
+}
+
+<HELP>{
+       [ \t]+  {
+               ts = 0;
+               for (i = 0; i < yyleng; i++) {
+                       if (yytext[i] == '\t')
+                               ts = (ts & ~7) + 8;
+                       else
+                               ts++;
+               }
+               last_ts = ts;
+               if (first_ts) {
+                       if (ts < first_ts) {
+                               zconf_endhelp();
+                               return T_HELPTEXT;
+                       }
+                       ts -= first_ts;
+                       while (ts > 8) {
+                               append_string("        ", 8);
+                               ts -= 8;
+                       }
+                       append_string("        ", ts);
+               }
+       }
+       [ \t]*\n/[^ \t\n] {
+               current_file->lineno++;
+               zconf_endhelp();
+               return T_HELPTEXT;
+       }
+       [ \t]*\n        {
+               current_file->lineno++;
+               append_string("\n", 1);
+       }
+       [^ \t\n].* {
+               append_string(yytext, yyleng);
+               if (!first_ts)
+                       first_ts = last_ts;
+       }
+       <<EOF>> {
+               zconf_endhelp();
+               return T_HELPTEXT;
+       }
+}
+
+<<EOF>>        {
+       if (current_buf) {
+               zconf_endfile();
+               return T_EOF;
+       }
+       fclose(yyin);
+       yyterminate();
+}
+
+%%
+void zconf_starthelp(void)
+{
+       new_string();
+       last_ts = first_ts = 0;
+       BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+       zconflval.string = text;
+       BEGIN(INITIAL);
+}
+
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+       char *env, fullname[PATH_MAX+1];
+       FILE *f;
+
+       f = fopen(name, "r");
+       if (!f && name[0] != '/') {
+               env = getenv(SRCTREE);
+               if (env) {
+                       sprintf(fullname, "%s/%s", env, name);
+                       f = fopen(fullname, "r");
+               }
+       }
+       return f;
+}
+
+void zconf_initscan(const char *name)
+{
+       yyin = zconf_fopen(name);
+       if (!yyin) {
+               printf("can't find file %s\n", name);
+               exit(1);
+       }
+
+       current_buf = malloc(sizeof(*current_buf));
+       memset(current_buf, 0, sizeof(*current_buf));
+
+       current_file = file_lookup(name);
+       current_file->lineno = 1;
+       current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+       struct file *file = file_lookup(name);
+       struct buffer *buf = malloc(sizeof(*buf));
+       memset(buf, 0, sizeof(*buf));
+
+       current_buf->state = YY_CURRENT_BUFFER;
+       yyin = zconf_fopen(name);
+       if (!yyin) {
+               printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+               exit(1);
+       }
+       yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
+       buf->parent = current_buf;
+       current_buf = buf;
+
+       if (file->flags & FILE_BUSY) {
+               printf("recursive scan (%s)?\n", name);
+               exit(1);
+       }
+       if (file->flags & FILE_SCANNED) {
+               printf("file %s already scanned?\n", name);
+               exit(1);
+       }
+       file->flags |= FILE_BUSY;
+       file->lineno = 1;
+       file->parent = current_file;
+       current_file = file;
+}
+
+static struct buffer *zconf_endfile(void)
+{
+       struct buffer *parent;
+
+       current_file->flags |= FILE_SCANNED;
+       current_file->flags &= ~FILE_BUSY;
+       current_file = current_file->parent;
+
+       parent = current_buf->parent;
+       if (parent) {
+               fclose(yyin);
+               yy_delete_buffer(YY_CURRENT_BUFFER);
+               yy_switch_to_buffer(parent->state);
+       }
+       free(current_buf);
+       current_buf = parent;
+
+       return parent;
+}
+
+int zconf_lineno(void)
+{
+       if (current_buf)
+               return current_file->lineno - 1;
+       else
+               return 0;
+}
+
+char *zconf_curname(void)
+{
+       if (current_buf)
+               return current_file->name;
+       else
+               return "<none>";
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped
new file mode 100644 (file)
index 0000000..cc68dcb
--- /dev/null
@@ -0,0 +1,2130 @@
+/* A Bison parser, made by GNU Bison 1.875a.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* If NAME_PREFIX is specified substitute the variables and functions
+   names.  */
+#define yyparse zconfparse
+#define yylex   zconflex
+#define yyerror zconferror
+#define yylval  zconflval
+#define yychar  zconfchar
+#define yydebug zconfdebug
+#define yynerrs zconfnerrs
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     T_MAINMENU = 258,
+     T_MENU = 259,
+     T_ENDMENU = 260,
+     T_SOURCE = 261,
+     T_CHOICE = 262,
+     T_ENDCHOICE = 263,
+     T_COMMENT = 264,
+     T_CONFIG = 265,
+     T_MENUCONFIG = 266,
+     T_HELP = 267,
+     T_HELPTEXT = 268,
+     T_IF = 269,
+     T_ENDIF = 270,
+     T_DEPENDS = 271,
+     T_REQUIRES = 272,
+     T_OPTIONAL = 273,
+     T_PROMPT = 274,
+     T_DEFAULT = 275,
+     T_TRISTATE = 276,
+     T_DEF_TRISTATE = 277,
+     T_BOOLEAN = 278,
+     T_DEF_BOOLEAN = 279,
+     T_STRING = 280,
+     T_INT = 281,
+     T_HEX = 282,
+     T_WORD = 283,
+     T_WORD_QUOTE = 284,
+     T_UNEQUAL = 285,
+     T_EOF = 286,
+     T_EOL = 287,
+     T_CLOSE_PAREN = 288,
+     T_OPEN_PAREN = 289,
+     T_ON = 290,
+     T_SELECT = 291,
+     T_RANGE = 292,
+     T_OR = 293,
+     T_AND = 294,
+     T_EQUAL = 295,
+     T_NOT = 296
+   };
+#endif
+#define T_MAINMENU 258
+#define T_MENU 259
+#define T_ENDMENU 260
+#define T_SOURCE 261
+#define T_CHOICE 262
+#define T_ENDCHOICE 263
+#define T_COMMENT 264
+#define T_CONFIG 265
+#define T_MENUCONFIG 266
+#define T_HELP 267
+#define T_HELPTEXT 268
+#define T_IF 269
+#define T_ENDIF 270
+#define T_DEPENDS 271
+#define T_REQUIRES 272
+#define T_OPTIONAL 273
+#define T_PROMPT 274
+#define T_DEFAULT 275
+#define T_TRISTATE 276
+#define T_DEF_TRISTATE 277
+#define T_BOOLEAN 278
+#define T_DEF_BOOLEAN 279
+#define T_STRING 280
+#define T_INT 281
+#define T_HEX 282
+#define T_WORD 283
+#define T_WORD_QUOTE 284
+#define T_UNEQUAL 285
+#define T_EOF 286
+#define T_EOL 287
+#define T_CLOSE_PAREN 288
+#define T_OPEN_PAREN 289
+#define T_ON 290
+#define T_SELECT 291
+#define T_RANGE 292
+#define T_OR 293
+#define T_AND 294
+#define T_EQUAL 295
+#define T_NOT 296
+
+
+
+
+/* Copy the first part of user declarations.  */
+
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD         0x0001
+#define DEBUG_PARSE    0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(int token, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYERROR_VERBOSE
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+
+typedef union YYSTYPE {
+       int token;
+       char *string;
+       struct symbol *symbol;
+       struct expr *expr;
+       struct menu *menu;
+} YYSTYPE;
+/* Line 191 of yacc.c.  */
+
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+
+/* Line 214 of yacc.c.  */
+
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || (defined (_ALLOCA_H) && defined (__GNUC__))
+#    define YYSTACK_ALLOC alloca
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC malloc
+#  define YYSTACK_FREE free
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+        || (YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))                                \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         register YYSIZE_T yyi;                \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        \
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        \
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  2
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   201
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  42
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  41
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  104
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  182
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   296
+
+#define YYTRANSLATE(YYX)                                               \
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short yyprhs[] =
+{
+       0,     0,     3,     4,     7,     9,    11,    13,    17,    19,
+      21,    23,    26,    28,    30,    32,    34,    36,    38,    42,
+      45,    49,    52,    53,    56,    59,    62,    65,    69,    74,
+      78,    83,    87,    91,    95,   100,   105,   110,   116,   119,
+     122,   124,   128,   131,   132,   135,   138,   141,   144,   149,
+     153,   157,   160,   165,   166,   169,   173,   175,   179,   182,
+     183,   186,   189,   192,   196,   199,   201,   205,   208,   209,
+     212,   215,   218,   222,   226,   228,   232,   235,   238,   241,
+     242,   245,   248,   253,   257,   261,   262,   265,   267,   269,
+     272,   275,   278,   280,   282,   283,   286,   288,   292,   296,
+     300,   303,   307,   311,   313
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      43,     0,    -1,    -1,    43,    44,    -1,    45,    -1,    55,
+      -1,    66,    -1,     3,    77,    79,    -1,     5,    -1,    15,
+      -1,     8,    -1,     1,    79,    -1,    61,    -1,    71,    -1,
+      47,    -1,    49,    -1,    69,    -1,    79,    -1,    10,    28,
+      32,    -1,    46,    50,    -1,    11,    28,    32,    -1,    48,
+      50,    -1,    -1,    50,    51,    -1,    50,    75,    -1,    50,
+      73,    -1,    50,    32,    -1,    21,    76,    32,    -1,    22,
+      81,    80,    32,    -1,    23,    76,    32,    -1,    24,    81,
+      80,    32,    -1,    26,    76,    32,    -1,    27,    76,    32,
+      -1,    25,    76,    32,    -1,    19,    77,    80,    32,    -1,
+      20,    81,    80,    32,    -1,    36,    28,    80,    32,    -1,
+      37,    82,    82,    80,    32,    -1,     7,    32,    -1,    52,
+      56,    -1,    78,    -1,    53,    58,    54,    -1,    53,    58,
+      -1,    -1,    56,    57,    -1,    56,    75,    -1,    56,    73,
+      -1,    56,    32,    -1,    19,    77,    80,    32,    -1,    21,
+      76,    32,    -1,    23,    76,    32,    -1,    18,    32,    -1,
+      20,    28,    80,    32,    -1,    -1,    58,    45,    -1,    14,
+      81,    32,    -1,    78,    -1,    59,    62,    60,    -1,    59,
+      62,    -1,    -1,    62,    45,    -1,    62,    66,    -1,    62,
+      55,    -1,     4,    77,    32,    -1,    63,    74,    -1,    78,
+      -1,    64,    67,    65,    -1,    64,    67,    -1,    -1,    67,
+      45,    -1,    67,    66,    -1,    67,    55,    -1,    67,     1,
+      32,    -1,     6,    77,    32,    -1,    68,    -1,     9,    77,
+      32,    -1,    70,    74,    -1,    12,    32,    -1,    72,    13,
+      -1,    -1,    74,    75,    -1,    74,    32,    -1,    16,    35,
+      81,    32,    -1,    16,    81,    32,    -1,    17,    81,    32,
+      -1,    -1,    77,    80,    -1,    28,    -1,    29,    -1,     5,
+      79,    -1,     8,    79,    -1,    15,    79,    -1,    32,    -1,
+      31,    -1,    -1,    14,    81,    -1,    82,    -1,    82,    40,
+      82,    -1,    82,    30,    82,    -1,    34,    81,    33,    -1,
+      41,    81,    -1,    81,    38,    81,    -1,    81,    39,    81,
+      -1,    28,    -1,    29,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short yyrline[] =
+{
+       0,    94,    94,    95,    98,    99,   100,   101,   102,   103,
+     104,   105,   109,   110,   111,   112,   113,   114,   120,   128,
+     134,   142,   152,   154,   155,   156,   157,   160,   166,   173,
+     179,   186,   192,   198,   204,   210,   216,   222,   230,   239,
+     245,   254,   255,   261,   263,   264,   265,   266,   269,   275,
+     281,   287,   293,   299,   301,   306,   315,   324,   325,   331,
+     333,   334,   335,   340,   347,   353,   362,   363,   369,   371,
+     372,   373,   374,   377,   383,   390,   397,   404,   410,   417,
+     418,   419,   422,   427,   432,   440,   442,   447,   448,   451,
+     452,   453,   457,   457,   459,   460,   463,   464,   465,   466,
+     467,   468,   469,   472,   473
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
+  "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
+  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+  "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE",
+  "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT",
+  "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL",
+  "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR",
+  "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block",
+  "common_block", "config_entry_start", "config_stmt",
+  "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
+  "config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
+  "choice_option_list", "choice_option", "choice_block", "if", "if_end",
+  "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt",
+  "menu_block", "source", "source_stmt", "comment", "comment_stmt",
+  "help_start", "help", "depends_list", "depends", "prompt_stmt_opt",
+  "prompt", "end", "nl_or_eof", "if_expr", "expr", "symbol", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    42,    43,    43,    44,    44,    44,    44,    44,    44,
+      44,    44,    45,    45,    45,    45,    45,    45,    46,    47,
+      48,    49,    50,    50,    50,    50,    50,    51,    51,    51,
+      51,    51,    51,    51,    51,    51,    51,    51,    52,    53,
+      54,    55,    55,    56,    56,    56,    56,    56,    57,    57,
+      57,    57,    57,    58,    58,    59,    60,    61,    61,    62,
+      62,    62,    62,    63,    64,    65,    66,    66,    67,    67,
+      67,    67,    67,    68,    69,    70,    71,    72,    73,    74,
+      74,    74,    75,    75,    75,    76,    76,    77,    77,    78,
+      78,    78,    79,    79,    80,    80,    81,    81,    81,    81,
+      81,    81,    81,    82,    82
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     2,     1,     1,     1,     3,     1,     1,
+       1,     2,     1,     1,     1,     1,     1,     1,     3,     2,
+       3,     2,     0,     2,     2,     2,     2,     3,     4,     3,
+       4,     3,     3,     3,     4,     4,     4,     5,     2,     2,
+       1,     3,     2,     0,     2,     2,     2,     2,     4,     3,
+       3,     2,     4,     0,     2,     3,     1,     3,     2,     0,
+       2,     2,     2,     3,     2,     1,     3,     2,     0,     2,
+       2,     2,     3,     3,     1,     3,     2,     2,     2,     0,
+       2,     2,     4,     3,     3,     0,     2,     1,     1,     2,
+       2,     2,     1,     1,     0,     2,     1,     3,     3,     3,
+       2,     3,     3,     1,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       2,     0,     1,     0,     0,     0,     8,     0,     0,    10,
+       0,     0,     0,     0,     9,    93,    92,     3,     4,    22,
+      14,    22,    15,    43,    53,     5,    59,    12,    79,    68,
+       6,    74,    16,    79,    13,    17,    11,    87,    88,     0,
+       0,     0,    38,     0,     0,     0,   103,   104,     0,     0,
+       0,    96,    19,    21,    39,    42,    58,    64,     0,    76,
+       7,    63,    73,    75,    18,    20,     0,   100,    55,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    85,     0,
+      85,     0,    85,    85,    85,    26,     0,     0,    23,     0,
+      25,    24,     0,     0,     0,    85,    85,    47,    44,    46,
+      45,     0,     0,     0,    54,    41,    40,    60,    62,    57,
+      61,    56,    81,    80,     0,    69,    71,    66,    70,    65,
+      99,   101,   102,    98,    97,    77,     0,     0,     0,    94,
+      94,     0,    94,    94,     0,    94,     0,     0,     0,    94,
+       0,    78,    51,    94,    94,     0,     0,    89,    90,    91,
+      72,     0,    83,    84,     0,     0,     0,    27,    86,     0,
+      29,     0,    33,    31,    32,     0,    94,     0,     0,    49,
+      50,    82,    95,    34,    35,    28,    30,    36,     0,    48,
+      52,    37
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short yydefgoto[] =
+{
+      -1,     1,    17,    18,    19,    20,    21,    22,    52,    88,
+      23,    24,   105,    25,    54,    98,    55,    26,   109,    27,
+      56,    28,    29,   117,    30,    58,    31,    32,    33,    34,
+      89,    90,    57,    91,   131,   132,   106,    35,   155,    50,
+      51
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -99
+static const short yypact[] =
+{
+     -99,    48,   -99,    38,    46,    46,   -99,    46,   -29,   -99,
+      46,   -17,    -3,   -11,   -99,   -99,   -99,   -99,   -99,   -99,
+     -99,   -99,   -99,   -99,   -99,   -99,   -99,   -99,   -99,   -99,
+     -99,   -99,   -99,   -99,   -99,   -99,   -99,   -99,   -99,    38,
+      12,    15,   -99,    18,    51,    62,   -99,   -99,   -11,   -11,
+       4,   -24,   138,   138,   160,   121,   110,    -4,    81,    -4,
+     -99,   -99,   -99,   -99,   -99,   -99,   -19,   -99,   -99,   -11,
+     -11,    70,    70,    73,    32,   -11,    46,   -11,    46,   -11,
+      46,   -11,    46,    46,    46,   -99,    36,    70,   -99,    95,
+     -99,   -99,    96,    46,   106,    46,    46,   -99,   -99,   -99,
+     -99,    38,    38,    38,   -99,   -99,   -99,   -99,   -99,   -99,
+     -99,   -99,   -99,   -99,   112,   -99,   -99,   -99,   -99,   -99,
+     -99,   117,   -99,   -99,   -99,   -99,   -11,    33,    65,   131,
+       1,   119,   131,     1,   136,     1,   153,   154,   155,   131,
+      70,   -99,   -99,   131,   131,   156,   157,   -99,   -99,   -99,
+     -99,   101,   -99,   -99,   -11,   158,   159,   -99,   -99,   161,
+     -99,   162,   -99,   -99,   -99,   163,   131,   164,   165,   -99,
+     -99,   -99,    99,   -99,   -99,   -99,   -99,   -99,   166,   -99,
+     -99,   -99
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short yypgoto[] =
+{
+     -99,   -99,   -99,   111,   -99,   -99,   -99,   -99,   178,   -99,
+     -99,   -99,   -99,    91,   -99,   -99,   -99,   -99,   -99,   -99,
+     -99,   -99,   -99,   -99,   115,   -99,   -99,   -99,   -99,   -99,
+     -99,   146,   168,    89,    27,     0,   126,    -1,   -98,   -48,
+     -63
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -68
+static const short yytable[] =
+{
+      66,    67,    36,    42,    39,    40,    71,    41,   123,   124,
+      43,    44,    74,    75,   120,   154,    72,    46,    47,    69,
+      70,   121,   122,    48,   140,    45,   127,   128,   112,   130,
+      49,   133,   156,   135,   158,   159,    68,   161,    60,    69,
+      70,   165,    69,    70,    61,   167,   168,    62,     2,     3,
+      63,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      46,    47,    13,    14,   139,   152,    48,   126,   178,    15,
+      16,    69,    70,    49,    37,    38,   129,   166,   151,    15,
+      16,   -67,   114,    64,   -67,     5,   101,     7,     8,   102,
+      10,    11,    12,   143,    65,    13,   103,   153,    46,    47,
+     147,   148,   149,    69,    70,   125,   172,   134,   141,   136,
+     137,   138,    15,    16,     5,   101,     7,     8,   102,    10,
+      11,    12,   145,   146,    13,   103,   101,     7,   142,   102,
+      10,    11,    12,   171,   144,    13,   103,    69,    70,    69,
+      70,    15,    16,   100,   150,   154,   113,   108,   113,   116,
+      73,   157,    15,    16,    74,    75,    70,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,   104,   107,   160,   115,
+      85,   110,    73,   118,    86,    87,    74,    75,    92,    93,
+      94,    95,   111,    96,   119,   162,   163,   164,   169,   170,
+     173,   174,    97,   175,   176,   177,   179,   180,   181,    53,
+      99,    59
+};
+
+static const unsigned char yycheck[] =
+{
+      48,    49,     3,    32,     4,     5,    30,     7,    71,    72,
+      10,    28,    16,    17,    33,    14,    40,    28,    29,    38,
+      39,    69,    70,    34,    87,    28,    74,    75,    32,    77,
+      41,    79,   130,    81,   132,   133,    32,   135,    39,    38,
+      39,   139,    38,    39,    32,   143,   144,    32,     0,     1,
+      32,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      28,    29,    14,    15,    28,    32,    34,    35,   166,    31,
+      32,    38,    39,    41,    28,    29,    76,   140,   126,    31,
+      32,     0,     1,    32,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    93,    32,    14,    15,    32,    28,    29,
+     101,   102,   103,    38,    39,    32,   154,    80,    13,    82,
+      83,    84,    31,    32,     4,     5,     6,     7,     8,     9,
+      10,    11,    95,    96,    14,    15,     5,     6,    32,     8,
+       9,    10,    11,    32,    28,    14,    15,    38,    39,    38,
+      39,    31,    32,    54,    32,    14,    57,    56,    59,    58,
+      12,    32,    31,    32,    16,    17,    39,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    55,    56,    32,    58,
+      32,    56,    12,    58,    36,    37,    16,    17,    18,    19,
+      20,    21,    56,    23,    58,    32,    32,    32,    32,    32,
+      32,    32,    32,    32,    32,    32,    32,    32,    32,    21,
+      54,    33
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    43,     0,     1,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    14,    15,    31,    32,    44,    45,    46,
+      47,    48,    49,    52,    53,    55,    59,    61,    63,    64,
+      66,    68,    69,    70,    71,    79,    79,    28,    29,    77,
+      77,    77,    32,    77,    28,    28,    28,    29,    34,    41,
+      81,    82,    50,    50,    56,    58,    62,    74,    67,    74,
+      79,    32,    32,    32,    32,    32,    81,    81,    32,    38,
+      39,    30,    40,    12,    16,    17,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    32,    36,    37,    51,    72,
+      73,    75,    18,    19,    20,    21,    23,    32,    57,    73,
+      75,     5,     8,    15,    45,    54,    78,    45,    55,    60,
+      66,    78,    32,    75,     1,    45,    55,    65,    66,    78,
+      33,    81,    81,    82,    82,    32,    35,    81,    81,    77,
+      81,    76,    77,    81,    76,    81,    76,    76,    76,    28,
+      82,    13,    32,    77,    28,    76,    76,    79,    79,    79,
+      32,    81,    32,    32,    14,    80,    80,    32,    80,    80,
+      32,    80,    32,    32,    32,    80,    82,    80,    80,    32,
+      32,    32,    81,    32,    32,    32,    32,    32,    80,    32,
+      32,    32
+};
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrlab1
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL         goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror ("syntax error: cannot back up");\
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).  */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)         \
+  Current.first_line   = Rhs[1].first_line;      \
+  Current.first_column = Rhs[1].first_column;    \
+  Current.last_line    = Rhs[N].last_line;       \
+  Current.last_column  = Rhs[N].last_column;
+#endif
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (0)
+
+# define YYDSYMPRINT(Args)                     \
+do {                                           \
+  if (yydebug)                                 \
+    yysymprint Args;                           \
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location)           \
+do {                                                           \
+  if (yydebug)                                                 \
+    {                                                          \
+      YYFPRINTF (stderr, "%s ", Title);                                \
+      yysymprint (stderr,                                      \
+                  Token, Value);       \
+      YYFPRINTF (stderr, "\n");                                        \
+    }                                                          \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (cinluded).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short *bottom, short *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short *bottom;
+    short *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned int yylineno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             yyrule - 1, yylineno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (Rule);            \
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+#endif /* !YYERROR_VERBOSE */
+
+\f
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+    }
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+\f
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+
+  register int yystate;
+  register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short        yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
+  register short *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow ("parser stack overflow",
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+       goto yyoverflowlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyoverflowlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 8:
+
+    { zconfprint("unexpected 'endmenu' statement"); ;}
+    break;
+
+  case 9:
+
+    { zconfprint("unexpected 'endif' statement"); ;}
+    break;
+
+  case 10:
+
+    { zconfprint("unexpected 'endchoice' statement"); ;}
+    break;
+
+  case 11:
+
+    { zconfprint("syntax error"); yyerrok; ;}
+    break;
+
+  case 18:
+
+    {
+       struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
+       sym->flags |= SYMBOL_OPTIONAL;
+       menu_add_entry(sym);
+       printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
+    break;
+
+  case 19:
+
+    {
+       menu_end_entry();
+       printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 20:
+
+    {
+       struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
+       sym->flags |= SYMBOL_OPTIONAL;
+       menu_add_entry(sym);
+       printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
+    break;
+
+  case 21:
+
+    {
+       if (current_entry->prompt)
+               current_entry->prompt->type = P_MENU;
+       else
+               zconfprint("warning: menuconfig statement without prompt");
+       menu_end_entry();
+       printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 27:
+
+    {
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 28:
+
+    {
+       menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 29:
+
+    {
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 30:
+
+    {
+       menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 31:
+
+    {
+       menu_set_type(S_INT);
+       printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 32:
+
+    {
+       menu_set_type(S_HEX);
+       printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 33:
+
+    {
+       menu_set_type(S_STRING);
+       printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 34:
+
+    {
+       menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 35:
+
+    {
+       menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 36:
+
+    {
+       menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 37:
+
+    {
+       menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 38:
+
+    {
+       struct symbol *sym = sym_lookup(NULL, 0);
+       sym->flags |= SYMBOL_CHOICE;
+       menu_add_entry(sym);
+       menu_add_expr(P_CHOICE, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 39:
+
+    {
+       menu_end_entry();
+       menu_add_menu();
+;}
+    break;
+
+  case 40:
+
+    {
+       if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+       }
+;}
+    break;
+
+  case 42:
+
+    {
+       printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+;}
+    break;
+
+  case 48:
+
+    {
+       menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 49:
+
+    {
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 50:
+
+    {
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 51:
+
+    {
+       current_entry->sym->flags |= SYMBOL_OPTIONAL;
+       printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 52:
+
+    {
+       menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 55:
+
+    {
+       printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+       menu_add_entry(NULL);
+       menu_add_dep(yyvsp[-1].expr);
+       menu_end_entry();
+       menu_add_menu();
+;}
+    break;
+
+  case 56:
+
+    {
+       if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+       }
+;}
+    break;
+
+  case 58:
+
+    {
+       printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+;}
+    break;
+
+  case 63:
+
+    {
+       menu_add_entry(NULL);
+       menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 64:
+
+    {
+       menu_end_entry();
+       menu_add_menu();
+;}
+    break;
+
+  case 65:
+
+    {
+       if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+       }
+;}
+    break;
+
+  case 67:
+
+    {
+       printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+;}
+    break;
+
+  case 72:
+
+    { zconfprint("invalid menu option"); yyerrok; ;}
+    break;
+
+  case 73:
+
+    {
+       yyval.string = yyvsp[-1].string;
+       printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
+    break;
+
+  case 74:
+
+    {
+       zconf_nextfile(yyvsp[0].string);
+;}
+    break;
+
+  case 75:
+
+    {
+       menu_add_entry(NULL);
+       menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 76:
+
+    {
+       menu_end_entry();
+;}
+    break;
+
+  case 77:
+
+    {
+       printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+       zconf_starthelp();
+;}
+    break;
+
+  case 78:
+
+    {
+       current_entry->sym->help = yyvsp[0].string;
+;}
+    break;
+
+  case 82:
+
+    {
+       menu_add_dep(yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 83:
+
+    {
+       menu_add_dep(yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 84:
+
+    {
+       menu_add_dep(yyvsp[-1].expr);
+       printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
+;}
+    break;
+
+  case 86:
+
+    {
+       menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
+;}
+    break;
+
+  case 89:
+
+    { yyval.token = T_ENDMENU; ;}
+    break;
+
+  case 90:
+
+    { yyval.token = T_ENDCHOICE; ;}
+    break;
+
+  case 91:
+
+    { yyval.token = T_ENDIF; ;}
+    break;
+
+  case 94:
+
+    { yyval.expr = NULL; ;}
+    break;
+
+  case 95:
+
+    { yyval.expr = yyvsp[0].expr; ;}
+    break;
+
+  case 96:
+
+    { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
+    break;
+
+  case 97:
+
+    { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
+    break;
+
+  case 98:
+
+    { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
+    break;
+
+  case 99:
+
+    { yyval.expr = yyvsp[-1].expr; ;}
+    break;
+
+  case 100:
+
+    { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
+    break;
+
+  case 101:
+
+    { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
+    break;
+
+  case 102:
+
+    { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
+    break;
+
+  case 103:
+
+    { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
+    break;
+
+  case 104:
+
+    { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
+    break;
+
+
+    }
+
+/* Line 999 of yacc.c.  */
+
+\f
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+       {
+         YYSIZE_T yysize = 0;
+         int yytype = YYTRANSLATE (yychar);
+         char *yymsg;
+         int yyx, yycount;
+
+         yycount = 0;
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         for (yyx = yyn < 0 ? -yyn : 0;
+              yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+           if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+             yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+         yysize += yystrlen ("syntax error, unexpected ") + 1;
+         yysize += yystrlen (yytname[yytype]);
+         yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg != 0)
+           {
+             char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+             yyp = yystpcpy (yyp, yytname[yytype]);
+
+             if (yycount < 5)
+               {
+                 yycount = 0;
+                 for (yyx = yyn < 0 ? -yyn : 0;
+                      yyx < (int) (sizeof (yytname) / sizeof (char *));
+                      yyx++)
+                   if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+                     {
+                       const char *yyq = ! yycount ? ", expecting " : " or ";
+                       yyp = yystpcpy (yyp, yyq);
+                       yyp = yystpcpy (yyp, yytname[yyx]);
+                       yycount++;
+                     }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           yyerror ("syntax error; also virtual memory exhausted");
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror ("syntax error");
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+        error, discard it.  */
+
+      /* Return failure if at end of input.  */
+      if (yychar == YYEOF)
+        {
+         /* Pop the error token.  */
+          YYPOPSTACK;
+         /* Pop the rest of the stack.  */
+         while (yyss < yyssp)
+           {
+             YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+             yydestruct (yystos[*yyssp], yyvsp);
+             YYPOPSTACK;
+           }
+         YYABORT;
+        }
+
+      YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+      yydestruct (yytoken, &yylval);
+      yychar = YYEMPTY;
+
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action.  |
+`----------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+       YYABORT;
+
+      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+      yydestruct (yystos[yystate], yyvsp);
+      yyvsp--;
+      yystate = *--yyssp;
+
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  YYDPRINTF ((stderr, "Shifting error token, "));
+
+  *++yyvsp = yylval;
+
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+
+
+
+void conf_parse(const char *name)
+{
+       struct symbol *sym;
+       int i;
+
+       zconf_initscan(name);
+
+       sym_init();
+       menu_init();
+       modules_sym = sym_lookup("MODULES", 0);
+       rootmenu.prompt = menu_add_prop(P_MENU, "axTLS Configuration", NULL, NULL);
+
+       //zconfdebug = 1;
+       zconfparse();
+       if (zconfnerrs)
+               exit(1);
+       menu_finalize(&rootmenu);
+       for_all_symbols(i, sym) {
+                if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
+                        printf("\n");
+               else
+                       sym->flags |= SYMBOL_CHECK_DONE;
+        }
+
+       sym_change_count = 1;
+}
+
+const char *zconf_tokenname(int token)
+{
+       switch (token) {
+       case T_MENU:            return "menu";
+       case T_ENDMENU:         return "endmenu";
+       case T_CHOICE:          return "choice";
+       case T_ENDCHOICE:       return "endchoice";
+       case T_IF:              return "if";
+       case T_ENDIF:           return "endif";
+       }
+       return "<token>";
+}
+
+static bool zconf_endtoken(int token, int starttoken, int endtoken)
+{
+       if (token != endtoken) {
+               zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken));
+               zconfnerrs++;
+               return false;
+       }
+       if (current_menu->file != current_file) {
+               zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken));
+               zconfprint("location of the '%s'", zconf_tokenname(starttoken));
+               zconfnerrs++;
+               return false;
+       }
+       return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+       va_list ap;
+
+       fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
+       va_start(ap, err);
+       vfprintf(stderr, err, ap);
+       va_end(ap);
+       fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+       fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+       const char *p;
+       int len;
+
+       putc('"', out);
+       while ((p = strchr(str, '"'))) {
+               len = p - str;
+               if (len)
+                       fprintf(out, "%.*s", len, str);
+               fputs("\\\"", out);
+               str = p + 1;
+       }
+       fputs(str, out);
+       putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+       struct symbol *sym = menu->sym;
+       struct property *prop;
+
+       if (sym_is_choice(sym))
+               fprintf(out, "choice\n");
+       else
+               fprintf(out, "config %s\n", sym->name);
+       switch (sym->type) {
+       case S_BOOLEAN:
+               fputs("  boolean\n", out);
+               break;
+       case S_TRISTATE:
+               fputs("  tristate\n", out);
+               break;
+       case S_STRING:
+               fputs("  string\n", out);
+               break;
+       case S_INT:
+               fputs("  integer\n", out);
+               break;
+       case S_HEX:
+               fputs("  hex\n", out);
+               break;
+       default:
+               fputs("  ???\n", out);
+               break;
+       }
+       for (prop = sym->prop; prop; prop = prop->next) {
+               if (prop->menu != menu)
+                       continue;
+               switch (prop->type) {
+               case P_PROMPT:
+                       fputs("  prompt ", out);
+                       print_quoted_string(out, prop->text);
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs(" if ", out);
+                               expr_fprint(prop->visible.expr, out);
+                       }
+                       fputc('\n', out);
+                       break;
+               case P_DEFAULT:
+                       fputs( "  default ", out);
+                       expr_fprint(prop->expr, out);
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs(" if ", out);
+                               expr_fprint(prop->visible.expr, out);
+                       }
+                       fputc('\n', out);
+                       break;
+               case P_CHOICE:
+                       fputs("  #choice value\n", out);
+                       break;
+               default:
+                       fprintf(out, "  unknown prop %d!\n", prop->type);
+                       break;
+               }
+       }
+       if (sym->help) {
+               int len = strlen(sym->help);
+               while (sym->help[--len] == '\n')
+                       sym->help[len] = 0;
+               fprintf(out, "  help\n%s\n", sym->help);
+       }
+       fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+       struct property *prop;
+       struct symbol *sym;
+       struct menu *menu;
+
+       menu = rootmenu.list;
+       while (menu) {
+               if ((sym = menu->sym))
+                       print_symbol(out, menu);
+               else if ((prop = menu->prompt)) {
+                       switch (prop->type) {
+                       case P_COMMENT:
+                               fputs("\ncomment ", out);
+                               print_quoted_string(out, prop->text);
+                               fputs("\n", out);
+                               break;
+                       case P_MENU:
+                               fputs("\nmenu ", out);
+                               print_quoted_string(out, prop->text);
+                               fputs("\n", out);
+                               break;
+                       default:
+                               ;
+                       }
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs("  depends ", out);
+                               expr_fprint(prop->visible.expr, out);
+                               fputc('\n', out);
+                       }
+                       fputs("\n", out);
+               }
+
+               if (menu->list)
+                       menu = menu->list;
+               else if (menu->next)
+                       menu = menu->next;
+               else while ((menu = menu->parent)) {
+                       if (menu->prompt && menu->prompt->type == P_MENU)
+                               fputs("\nendmenu\n", out);
+                       if (menu->next) {
+                               menu = menu->next;
+                               break;
+                       }
+               }
+       }
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
+
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped
new file mode 100644 (file)
index 0000000..3b191ef
--- /dev/null
@@ -0,0 +1,125 @@
+/* A Bison parser, made from zconf.y, by GNU bison 1.75.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+#ifndef BISON_ZCONF_TAB_H
+# define BISON_ZCONF_TAB_H
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     T_MAINMENU = 258,
+     T_MENU = 259,
+     T_ENDMENU = 260,
+     T_SOURCE = 261,
+     T_CHOICE = 262,
+     T_ENDCHOICE = 263,
+     T_COMMENT = 264,
+     T_CONFIG = 265,
+     T_HELP = 266,
+     T_HELPTEXT = 267,
+     T_IF = 268,
+     T_ENDIF = 269,
+     T_DEPENDS = 270,
+     T_REQUIRES = 271,
+     T_OPTIONAL = 272,
+     T_PROMPT = 273,
+     T_DEFAULT = 274,
+     T_TRISTATE = 275,
+     T_BOOLEAN = 276,
+     T_INT = 277,
+     T_HEX = 278,
+     T_WORD = 279,
+     T_STRING = 280,
+     T_UNEQUAL = 281,
+     T_EOF = 282,
+     T_EOL = 283,
+     T_CLOSE_PAREN = 284,
+     T_OPEN_PAREN = 285,
+     T_ON = 286,
+     T_OR = 287,
+     T_AND = 288,
+     T_EQUAL = 289,
+     T_NOT = 290
+   };
+#endif
+#define T_MAINMENU 258
+#define T_MENU 259
+#define T_ENDMENU 260
+#define T_SOURCE 261
+#define T_CHOICE 262
+#define T_ENDCHOICE 263
+#define T_COMMENT 264
+#define T_CONFIG 265
+#define T_HELP 266
+#define T_HELPTEXT 267
+#define T_IF 268
+#define T_ENDIF 269
+#define T_DEPENDS 270
+#define T_REQUIRES 271
+#define T_OPTIONAL 272
+#define T_PROMPT 273
+#define T_DEFAULT 274
+#define T_TRISTATE 275
+#define T_BOOLEAN 276
+#define T_INT 277
+#define T_HEX 278
+#define T_WORD 279
+#define T_STRING 280
+#define T_UNEQUAL 281
+#define T_EOF 282
+#define T_EOL 283
+#define T_CLOSE_PAREN 284
+#define T_OPEN_PAREN 285
+#define T_ON 286
+#define T_OR 287
+#define T_AND 288
+#define T_EQUAL 289
+#define T_NOT 290
+
+
+
+
+#ifndef YYSTYPE
+#line 33 "zconf.y"
+typedef union {
+       int token;
+       char *string;
+       struct symbol *symbol;
+       struct expr *expr;
+       struct menu *menu;
+} yystype;
+/* Line 1281 of /usr/share/bison/yacc.c.  */
+#line 118 "zconf.tab.h"
+# define YYSTYPE yystype
+#endif
+
+extern YYSTYPE zconflval;
+
+
+#endif /* not BISON_ZCONF_TAB_H */
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y
new file mode 100644 (file)
index 0000000..cf45da0
--- /dev/null
@@ -0,0 +1,690 @@
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD         0x0001
+#define DEBUG_PARSE    0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(int token, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYERROR_VERBOSE
+%}
+%expect 40
+
+%union
+{
+       int token;
+       char *string;
+       struct symbol *symbol;
+       struct expr *expr;
+       struct menu *menu;
+}
+
+%token T_MAINMENU
+%token T_MENU
+%token T_ENDMENU
+%token T_SOURCE
+%token T_CHOICE
+%token T_ENDCHOICE
+%token T_COMMENT
+%token T_CONFIG
+%token T_MENUCONFIG
+%token T_HELP
+%token <string> T_HELPTEXT
+%token T_IF
+%token T_ENDIF
+%token T_DEPENDS
+%token T_REQUIRES
+%token T_OPTIONAL
+%token T_PROMPT
+%token T_DEFAULT
+%token T_TRISTATE
+%token T_DEF_TRISTATE
+%token T_BOOLEAN
+%token T_DEF_BOOLEAN
+%token T_STRING
+%token T_INT
+%token T_HEX
+%token <string> T_WORD
+%token <string> T_WORD_QUOTE
+%token T_UNEQUAL
+%token T_EOF
+%token T_EOL
+%token T_CLOSE_PAREN
+%token T_OPEN_PAREN
+%token T_ON
+%token T_SELECT
+%token T_RANGE
+
+%left T_OR
+%left T_AND
+%left T_EQUAL T_UNEQUAL
+%nonassoc T_NOT
+
+%type <string> prompt
+%type <string> source
+%type <symbol> symbol
+%type <expr> expr
+%type <expr> if_expr
+%type <token> end
+
+%{
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+%}
+%%
+input:   /* empty */
+       | input block
+;
+
+block:   common_block
+       | choice_stmt
+       | menu_stmt
+       | T_MAINMENU prompt nl_or_eof
+       | T_ENDMENU             { zconfprint("unexpected 'endmenu' statement"); }
+       | T_ENDIF               { zconfprint("unexpected 'endif' statement"); }
+       | T_ENDCHOICE           { zconfprint("unexpected 'endchoice' statement"); }
+       | error nl_or_eof       { zconfprint("syntax error"); yyerrok; }
+;
+
+common_block:
+         if_stmt
+       | comment_stmt
+       | config_stmt
+       | menuconfig_stmt
+       | source_stmt
+       | nl_or_eof
+;
+
+
+/* config/menuconfig entry */
+
+config_entry_start: T_CONFIG T_WORD T_EOL
+{
+       struct symbol *sym = sym_lookup($2, 0);
+       sym->flags |= SYMBOL_OPTIONAL;
+       menu_add_entry(sym);
+       printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+config_stmt: config_entry_start config_option_list
+{
+       menu_end_entry();
+       printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
+{
+       struct symbol *sym = sym_lookup($2, 0);
+       sym->flags |= SYMBOL_OPTIONAL;
+       menu_add_entry(sym);
+       printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+menuconfig_stmt: menuconfig_entry_start config_option_list
+{
+       if (current_entry->prompt)
+               current_entry->prompt->type = P_MENU;
+       else
+               zconfprint("warning: menuconfig statement without prompt");
+       menu_end_entry();
+       printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+config_option_list:
+         /* empty */
+       | config_option_list config_option
+       | config_option_list depends
+       | config_option_list help
+       | config_option_list T_EOL
+;
+
+config_option: T_TRISTATE prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEF_TRISTATE expr if_expr T_EOL
+{
+       menu_add_expr(P_DEFAULT, $2, $3);
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_BOOLEAN prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEF_BOOLEAN expr if_expr T_EOL
+{
+       menu_add_expr(P_DEFAULT, $2, $3);
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_INT prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_INT);
+       printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_HEX prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_HEX);
+       printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_STRING prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_STRING);
+       printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_PROMPT prompt if_expr T_EOL
+{
+       menu_add_prompt(P_PROMPT, $2, $3);
+       printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEFAULT expr if_expr T_EOL
+{
+       menu_add_expr(P_DEFAULT, $2, $3);
+       printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_SELECT T_WORD if_expr T_EOL
+{
+       menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
+       printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_RANGE symbol symbol if_expr T_EOL
+{
+       menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
+       printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+};
+
+/* choice entry */
+
+choice: T_CHOICE T_EOL
+{
+       struct symbol *sym = sym_lookup(NULL, 0);
+       sym->flags |= SYMBOL_CHOICE;
+       menu_add_entry(sym);
+       menu_add_expr(P_CHOICE, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+};
+
+choice_entry: choice choice_option_list
+{
+       menu_end_entry();
+       menu_add_menu();
+};
+
+choice_end: end
+{
+       if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+       }
+};
+
+choice_stmt:
+         choice_entry choice_block choice_end
+       | choice_entry choice_block
+{
+       printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+};
+
+choice_option_list:
+         /* empty */
+       | choice_option_list choice_option
+       | choice_option_list depends
+       | choice_option_list help
+       | choice_option_list T_EOL
+;
+
+choice_option: T_PROMPT prompt if_expr T_EOL
+{
+       menu_add_prompt(P_PROMPT, $2, $3);
+       printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_TRISTATE prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_TRISTATE);
+       printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_BOOLEAN prompt_stmt_opt T_EOL
+{
+       menu_set_type(S_BOOLEAN);
+       printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_OPTIONAL T_EOL
+{
+       current_entry->sym->flags |= SYMBOL_OPTIONAL;
+       printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_DEFAULT T_WORD if_expr T_EOL
+{
+       menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
+       printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
+};
+
+choice_block:
+         /* empty */
+       | choice_block common_block
+;
+
+/* if entry */
+
+if: T_IF expr T_EOL
+{
+       printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+       menu_add_entry(NULL);
+       menu_add_dep($2);
+       menu_end_entry();
+       menu_add_menu();
+};
+
+if_end: end
+{
+       if (zconf_endtoken($1, T_IF, T_ENDIF)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+       }
+};
+
+if_stmt:
+         if if_block if_end
+       | if if_block
+{
+       printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+};
+
+if_block:
+         /* empty */
+       | if_block common_block
+       | if_block menu_stmt
+       | if_block choice_stmt
+;
+
+/* menu entry */
+
+menu: T_MENU prompt T_EOL
+{
+       menu_add_entry(NULL);
+       menu_add_prop(P_MENU, $2, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+};
+
+menu_entry: menu depends_list
+{
+       menu_end_entry();
+       menu_add_menu();
+};
+
+menu_end: end
+{
+       if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {
+               menu_end_menu();
+               printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+       }
+};
+
+menu_stmt:
+         menu_entry menu_block menu_end
+       | menu_entry menu_block
+{
+       printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
+       zconfnerrs++;
+};
+
+menu_block:
+         /* empty */
+       | menu_block common_block
+       | menu_block menu_stmt
+       | menu_block choice_stmt
+       | menu_block error T_EOL                { zconfprint("invalid menu option"); yyerrok; }
+;
+
+source: T_SOURCE prompt T_EOL
+{
+       $$ = $2;
+       printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+source_stmt: source
+{
+       zconf_nextfile($1);
+};
+
+/* comment entry */
+
+comment: T_COMMENT prompt T_EOL
+{
+       menu_add_entry(NULL);
+       menu_add_prop(P_COMMENT, $2, NULL, NULL);
+       printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+};
+
+comment_stmt: comment depends_list
+{
+       menu_end_entry();
+};
+
+/* help option */
+
+help_start: T_HELP T_EOL
+{
+       printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+       zconf_starthelp();
+};
+
+help: help_start T_HELPTEXT
+{
+       current_entry->sym->help = $2;
+};
+
+/* depends option */
+
+depends_list:    /* empty */
+               | depends_list depends
+               | depends_list T_EOL
+;
+
+depends: T_DEPENDS T_ON expr T_EOL
+{
+       menu_add_dep($3);
+       printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+}
+       | T_DEPENDS expr T_EOL
+{
+       menu_add_dep($2);
+       printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
+}
+       | T_REQUIRES expr T_EOL
+{
+       menu_add_dep($2);
+       printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
+};
+
+/* prompt statement */
+
+prompt_stmt_opt:
+         /* empty */
+       | prompt if_expr
+{
+       menu_add_prop(P_PROMPT, $1, NULL, $2);
+};
+
+prompt:          T_WORD
+       | T_WORD_QUOTE
+;
+
+end:     T_ENDMENU nl_or_eof   { $$ = T_ENDMENU; }
+       | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; }
+       | T_ENDIF nl_or_eof     { $$ = T_ENDIF; }
+;
+
+nl_or_eof:
+       T_EOL | T_EOF;
+
+if_expr:  /* empty */                  { $$ = NULL; }
+       | T_IF expr                     { $$ = $2; }
+;
+
+expr:    symbol                                { $$ = expr_alloc_symbol($1); }
+       | symbol T_EQUAL symbol                 { $$ = expr_alloc_comp(E_EQUAL, $1, $3); }
+       | symbol T_UNEQUAL symbol               { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }
+       | T_OPEN_PAREN expr T_CLOSE_PAREN       { $$ = $2; }
+       | T_NOT expr                            { $$ = expr_alloc_one(E_NOT, $2); }
+       | expr T_OR expr                        { $$ = expr_alloc_two(E_OR, $1, $3); }
+       | expr T_AND expr                       { $$ = expr_alloc_two(E_AND, $1, $3); }
+;
+
+symbol:          T_WORD        { $$ = sym_lookup($1, 0); free($1); }
+       | T_WORD_QUOTE  { $$ = sym_lookup($1, 1); free($1); }
+;
+
+%%
+
+void conf_parse(const char *name)
+{
+       struct symbol *sym;
+       int i;
+
+       zconf_initscan(name);
+
+       sym_init();
+       menu_init();
+       modules_sym = sym_lookup("MODULES", 0);
+       rootmenu.prompt = menu_add_prop(P_MENU, "axTLS Configuration", NULL, NULL);
+
+       //zconfdebug = 1;
+       zconfparse();
+       if (zconfnerrs)
+               exit(1);
+       menu_finalize(&rootmenu);
+       for_all_symbols(i, sym) {
+                if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
+                        printf("\n");
+               else
+                       sym->flags |= SYMBOL_CHECK_DONE;
+        }
+
+       sym_change_count = 1;
+}
+
+const char *zconf_tokenname(int token)
+{
+       switch (token) {
+       case T_MENU:            return "menu";
+       case T_ENDMENU:         return "endmenu";
+       case T_CHOICE:          return "choice";
+       case T_ENDCHOICE:       return "endchoice";
+       case T_IF:              return "if";
+       case T_ENDIF:           return "endif";
+       }
+       return "<token>";
+}
+
+static bool zconf_endtoken(int token, int starttoken, int endtoken)
+{
+       if (token != endtoken) {
+               zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken));
+               zconfnerrs++;
+               return false;
+       }
+       if (current_menu->file != current_file) {
+               zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken));
+               zconfprint("location of the '%s'", zconf_tokenname(starttoken));
+               zconfnerrs++;
+               return false;
+       }
+       return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+       va_list ap;
+
+       fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
+       va_start(ap, err);
+       vfprintf(stderr, err, ap);
+       va_end(ap);
+       fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+       fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+       const char *p;
+       int len;
+
+       putc('"', out);
+       while ((p = strchr(str, '"'))) {
+               len = p - str;
+               if (len)
+                       fprintf(out, "%.*s", len, str);
+               fputs("\\\"", out);
+               str = p + 1;
+       }
+       fputs(str, out);
+       putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+       struct symbol *sym = menu->sym;
+       struct property *prop;
+
+       if (sym_is_choice(sym))
+               fprintf(out, "choice\n");
+       else
+               fprintf(out, "config %s\n", sym->name);
+       switch (sym->type) {
+       case S_BOOLEAN:
+               fputs("  boolean\n", out);
+               break;
+       case S_TRISTATE:
+               fputs("  tristate\n", out);
+               break;
+       case S_STRING:
+               fputs("  string\n", out);
+               break;
+       case S_INT:
+               fputs("  integer\n", out);
+               break;
+       case S_HEX:
+               fputs("  hex\n", out);
+               break;
+       default:
+               fputs("  ???\n", out);
+               break;
+       }
+       for (prop = sym->prop; prop; prop = prop->next) {
+               if (prop->menu != menu)
+                       continue;
+               switch (prop->type) {
+               case P_PROMPT:
+                       fputs("  prompt ", out);
+                       print_quoted_string(out, prop->text);
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs(" if ", out);
+                               expr_fprint(prop->visible.expr, out);
+                       }
+                       fputc('\n', out);
+                       break;
+               case P_DEFAULT:
+                       fputs( "  default ", out);
+                       expr_fprint(prop->expr, out);
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs(" if ", out);
+                               expr_fprint(prop->visible.expr, out);
+                       }
+                       fputc('\n', out);
+                       break;
+               case P_CHOICE:
+                       fputs("  #choice value\n", out);
+                       break;
+               default:
+                       fprintf(out, "  unknown prop %d!\n", prop->type);
+                       break;
+               }
+       }
+       if (sym->help) {
+               int len = strlen(sym->help);
+               while (sym->help[--len] == '\n')
+                       sym->help[len] = 0;
+               fprintf(out, "  help\n%s\n", sym->help);
+       }
+       fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+       struct property *prop;
+       struct symbol *sym;
+       struct menu *menu;
+
+       menu = rootmenu.list;
+       while (menu) {
+               if ((sym = menu->sym))
+                       print_symbol(out, menu);
+               else if ((prop = menu->prompt)) {
+                       switch (prop->type) {
+                       case P_COMMENT:
+                               fputs("\ncomment ", out);
+                               print_quoted_string(out, prop->text);
+                               fputs("\n", out);
+                               break;
+                       case P_MENU:
+                               fputs("\nmenu ", out);
+                               print_quoted_string(out, prop->text);
+                               fputs("\n", out);
+                               break;
+                       default:
+                               ;
+                       }
+                       if (!expr_is_yes(prop->visible.expr)) {
+                               fputs("  depends ", out);
+                               expr_fprint(prop->visible.expr, out);
+                               fputc('\n', out);
+                       }
+                       fputs("\n", out);
+               }
+
+               if (menu->list)
+                       menu = menu->list;
+               else if (menu->next)
+                       menu = menu->next;
+               else while ((menu = menu->parent)) {
+                       if (menu->prompt && menu->prompt->type == P_MENU)
+                               fputs("\nendmenu\n", out);
+                       if (menu->next) {
+                               menu = menu->next;
+                               break;
+                       }
+               }
+       }
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/win32config b/package/luci/libs/luci-lib-nixio/axTLS/config/win32config
new file mode 100644 (file)
index 0000000..6c8d607
--- /dev/null
@@ -0,0 +1,119 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+# CONFIG_PLATFORM_LINUX is not set
+# CONFIG_PLATFORM_CYGWIN is not set
+# CONFIG_PLATFORM_SOLARIS is not set
+CONFIG_PLATFORM_WIN32=y
+
+#
+# General Configuration
+#
+PREFIX=""
+# CONFIG_DEBUG is not set
+# CONFIG_STRIP_UNWANTED_SECTIONS is not set
+
+#
+# Microsoft Compiler Options
+#
+# CONFIG_VISUAL_STUDIO_7_0 is not set
+CONFIG_VISUAL_STUDIO_8_0=y
+CONFIG_VISUAL_STUDIO_7_0_BASE=""
+CONFIG_VISUAL_STUDIO_8_0_BASE="c:\\Program Files\\Microsoft Visual Studio 8"
+CONFIG_EXTRA_CFLAGS_OPTIONS=""
+CONFIG_EXTRA_LDFLAGS_OPTIONS=""
+
+#
+# SSL Library
+#
+# CONFIG_SSL_SERVER_ONLY is not set
+# CONFIG_SSL_CERT_VERIFICATION is not set
+# CONFIG_SSL_ENABLE_CLIENT is not set
+CONFIG_SSL_FULL_MODE=y
+# CONFIG_SSL_SKELETON_MODE is not set
+# CONFIG_SSL_PROT_LOW is not set
+CONFIG_SSL_PROT_MEDIUM=y
+# CONFIG_SSL_PROT_HIGH is not set
+CONFIG_SSL_USE_DEFAULT_KEY=y
+CONFIG_SSL_PRIVATE_KEY_LOCATION=""
+CONFIG_SSL_PRIVATE_KEY_PASSWORD=""
+CONFIG_SSL_X509_CERT_LOCATION=""
+CONFIG_SSL_GENERATE_X509_CERT=y
+CONFIG_SSL_X509_COMMON_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME=""
+CONFIG_SSL_ENABLE_V23_HANDSHAKE=y
+CONFIG_SSL_HAS_PEM=y
+CONFIG_SSL_USE_PKCS12=y
+CONFIG_SSL_EXPIRY_TIME=24
+CONFIG_X509_MAX_CA_CERTS=4
+CONFIG_SSL_MAX_CERTS=2
+# CONFIG_SSL_CTX_MUTEXING is not set
+# CONFIG_USE_DEV_URANDOM is not set
+CONFIG_WIN32_USE_CRYPTO_LIB=y
+# CONFIG_OPENSSL_COMPATIBLE is not set
+# CONFIG_PERFORMANCE_TESTING is not set
+# CONFIG_SSL_TEST is not set
+CONFIG_AXHTTPD=y
+
+#
+# Axhttpd Configuration
+#
+# CONFIG_HTTP_STATIC_BUILD is not set
+CONFIG_HTTP_PORT=80
+CONFIG_HTTP_HTTPS_PORT=443
+CONFIG_HTTP_SESSION_CACHE_SIZE=5
+CONFIG_HTTP_WEBROOT="www"
+CONFIG_HTTP_TIMEOUT=300
+# CONFIG_HTTP_HAS_CGI is not set
+CONFIG_HTTP_CGI_EXTENSIONS=""
+# CONFIG_HTTP_ENABLE_LUA is not set
+CONFIG_HTTP_LUA_PREFIX=""
+CONFIG_HTTP_LUA_CGI_LAUNCHER=""
+# CONFIG_HTTP_BUILD_LUA is not set
+CONFIG_HTTP_DIRECTORIES=y
+CONFIG_HTTP_HAS_AUTHORIZATION=y
+# CONFIG_HTTP_HAS_IPV6 is not set
+CONFIG_HTTP_VERBOSE=y
+# CONFIG_HTTP_IS_DAEMON is not set
+
+#
+# Language Bindings
+#
+# CONFIG_BINDINGS is not set
+# CONFIG_CSHARP_BINDINGS is not set
+# CONFIG_VBNET_BINDINGS is not set
+CONFIG_DOT_NET_FRAMEWORK_BASE=""
+# CONFIG_JAVA_BINDINGS is not set
+CONFIG_JAVA_HOME=""
+# CONFIG_PERL_BINDINGS is not set
+CONFIG_PERL_CORE=""
+CONFIG_PERL_LIB=""
+# CONFIG_LUA_BINDINGS is not set
+CONFIG_LUA_CORE=""
+
+#
+# Samples
+#
+CONFIG_SAMPLES=y
+CONFIG_C_SAMPLES=y
+# CONFIG_CSHARP_SAMPLES is not set
+# CONFIG_VBNET_SAMPLES is not set
+# CONFIG_JAVA_SAMPLES is not set
+# CONFIG_PERL_SAMPLES is not set
+# CONFIG_LUA_SAMPLES is not set
+
+#
+# BigInt Options
+#
+# CONFIG_BIGINT_CLASSICAL is not set
+# CONFIG_BIGINT_MONTGOMERY is not set
+CONFIG_BIGINT_BARRETT=y
+CONFIG_BIGINT_CRT=y
+# CONFIG_BIGINT_KARATSUBA is not set
+MUL_KARATSUBA_THRESH=0
+SQU_KARATSUBA_THRESH=0
+CONFIG_BIGINT_SLIDING_WINDOW=y
+CONFIG_BIGINT_SQUARE=y
+# CONFIG_BIGINT_CHECK_ON is not set
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile
new file mode 100644 (file)
index 0000000..3ea8bdd
--- /dev/null
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../config/.config
+include ../config/makefile.conf
+
+AXTLS_HOME=..
+
+OBJ=\
+       aes.o \
+       bigint.o \
+       crypto_misc.o \
+       hmac.o \
+       md2.o \
+       md5.o \
+       rc4.o \
+       rsa.o \
+       sha1.o
+
+include ../config/makefile.post
+
+all: $(OBJ)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c
new file mode 100644 (file)
index 0000000..038a45b
--- /dev/null
@@ -0,0 +1,456 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * AES implementation - this is a small code version. There are much faster
+ * versions around but they are much larger in size (i.e. they use large 
+ * submix tables).
+ */
+
+#include <string.h>
+#include "crypto.h"
+
+/* all commented out in skeleton mode */
+#ifndef CONFIG_SSL_SKELETON_MODE
+
+#define rot1(x) (((x) << 24) | ((x) >> 8))
+#define rot2(x) (((x) << 16) | ((x) >> 16))
+#define rot3(x) (((x) <<  8) | ((x) >> 24))
+
+/* 
+ * This cute trick does 4 'mul by two' at once.  Stolen from
+ * Dr B. R. Gladman <brg@gladman.uk.net> but I'm sure the u-(u>>7) is
+ * a standard graphics trick
+ * The key to this is that we need to xor with 0x1b if the top bit is set.
+ * a 1xxx xxxx   0xxx 0xxx First we mask the 7bit,
+ * b 1000 0000   0000 0000 then we shift right by 7 putting the 7bit in 0bit,
+ * c 0000 0001   0000 0000 we then subtract (c) from (b)
+ * d 0111 1111   0000 0000 and now we and with our mask
+ * e 0001 1011   0000 0000
+ */
+#define mt  0x80808080
+#define ml  0x7f7f7f7f
+#define mh  0xfefefefe
+#define mm  0x1b1b1b1b
+#define mul2(x,t)      ((t)=((x)&mt), \
+                       ((((x)+(x))&mh)^(((t)-((t)>>7))&mm)))
+
+#define inv_mix_col(x,f2,f4,f8,f9) (\
+                       (f2)=mul2(x,f2), \
+                       (f4)=mul2(f2,f4), \
+                       (f8)=mul2(f4,f8), \
+                       (f9)=(x)^(f8), \
+                       (f8)=((f2)^(f4)^(f8)), \
+                       (f2)^=(f9), \
+                       (f4)^=(f9), \
+                       (f8)^=rot3(f2), \
+                       (f8)^=rot2(f4), \
+                       (f8)^rot1(f9))
+
+/*
+ * AES S-box
+ */
+static const uint8_t aes_sbox[256] =
+{
+       0x63,0x7C,0x77,0x7B,0xF2,0x6B,0x6F,0xC5,
+       0x30,0x01,0x67,0x2B,0xFE,0xD7,0xAB,0x76,
+       0xCA,0x82,0xC9,0x7D,0xFA,0x59,0x47,0xF0,
+       0xAD,0xD4,0xA2,0xAF,0x9C,0xA4,0x72,0xC0,
+       0xB7,0xFD,0x93,0x26,0x36,0x3F,0xF7,0xCC,
+       0x34,0xA5,0xE5,0xF1,0x71,0xD8,0x31,0x15,
+       0x04,0xC7,0x23,0xC3,0x18,0x96,0x05,0x9A,
+       0x07,0x12,0x80,0xE2,0xEB,0x27,0xB2,0x75,
+       0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0,
+       0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84,
+       0x53,0xD1,0x00,0xED,0x20,0xFC,0xB1,0x5B,
+       0x6A,0xCB,0xBE,0x39,0x4A,0x4C,0x58,0xCF,
+       0xD0,0xEF,0xAA,0xFB,0x43,0x4D,0x33,0x85,
+       0x45,0xF9,0x02,0x7F,0x50,0x3C,0x9F,0xA8,
+       0x51,0xA3,0x40,0x8F,0x92,0x9D,0x38,0xF5,
+       0xBC,0xB6,0xDA,0x21,0x10,0xFF,0xF3,0xD2,
+       0xCD,0x0C,0x13,0xEC,0x5F,0x97,0x44,0x17,
+       0xC4,0xA7,0x7E,0x3D,0x64,0x5D,0x19,0x73,
+       0x60,0x81,0x4F,0xDC,0x22,0x2A,0x90,0x88,
+       0x46,0xEE,0xB8,0x14,0xDE,0x5E,0x0B,0xDB,
+       0xE0,0x32,0x3A,0x0A,0x49,0x06,0x24,0x5C,
+       0xC2,0xD3,0xAC,0x62,0x91,0x95,0xE4,0x79,
+       0xE7,0xC8,0x37,0x6D,0x8D,0xD5,0x4E,0xA9,
+       0x6C,0x56,0xF4,0xEA,0x65,0x7A,0xAE,0x08,
+       0xBA,0x78,0x25,0x2E,0x1C,0xA6,0xB4,0xC6,
+       0xE8,0xDD,0x74,0x1F,0x4B,0xBD,0x8B,0x8A,
+       0x70,0x3E,0xB5,0x66,0x48,0x03,0xF6,0x0E,
+       0x61,0x35,0x57,0xB9,0x86,0xC1,0x1D,0x9E,
+       0xE1,0xF8,0x98,0x11,0x69,0xD9,0x8E,0x94,
+       0x9B,0x1E,0x87,0xE9,0xCE,0x55,0x28,0xDF,
+       0x8C,0xA1,0x89,0x0D,0xBF,0xE6,0x42,0x68,
+       0x41,0x99,0x2D,0x0F,0xB0,0x54,0xBB,0x16,
+};
+
+/*
+ * AES is-box
+ */
+static const uint8_t aes_isbox[256] = 
+{
+    0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38,
+    0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb,
+    0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87,
+    0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb,
+    0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d,
+    0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e,
+    0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2,
+    0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25,
+    0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16,
+    0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92,
+    0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda,
+    0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84,
+    0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a,
+    0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06,
+    0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02,
+    0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b,
+    0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea,
+    0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73,
+    0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85,
+    0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e,
+    0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89,
+    0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b,
+    0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20,
+    0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4,
+    0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31,
+    0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f,
+    0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d,
+    0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef,
+    0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0,
+    0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61,
+    0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26,
+    0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
+};
+
+static const unsigned char Rcon[30]=
+{
+       0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
+       0x1b,0x36,0x6c,0xd8,0xab,0x4d,0x9a,0x2f,
+       0x5e,0xbc,0x63,0xc6,0x97,0x35,0x6a,0xd4,
+       0xb3,0x7d,0xfa,0xef,0xc5,0x91,
+};
+
+/* ----- static functions ----- */
+static void AES_encrypt(const AES_CTX *ctx, uint32_t *data);
+static void AES_decrypt(const AES_CTX *ctx, uint32_t *data);
+
+/* Perform doubling in Galois Field GF(2^8) using the irreducible polynomial
+   x^8+x^4+x^3+x+1 */
+static unsigned char AES_xtime(uint32_t x)
+{
+       return x = (x&0x80) ? (x<<1)^0x1b : x<<1;
+}
+
+/**
+ * Set up AES with the key/iv and cipher size.
+ */
+void AES_set_key(AES_CTX *ctx, const uint8_t *key, 
+        const uint8_t *iv, AES_MODE mode)
+{
+    int i, ii;
+    uint32_t *W, tmp, tmp2;
+    const unsigned char *ip;
+    int words;
+
+    switch (mode)
+    {
+        case AES_MODE_128:
+            i = 10;
+            words = 4;
+            break;
+
+        case AES_MODE_256:
+            i = 14;
+            words = 8;
+            break;
+
+        default:        /* fail silently */
+            return;
+    }
+
+    ctx->rounds = i;
+    ctx->key_size = words;
+    W = ctx->ks;
+    for (i = 0; i < words; i+=2)
+    {
+        W[i+0]=        ((uint32_t)key[ 0]<<24)|
+            ((uint32_t)key[ 1]<<16)|
+            ((uint32_t)key[ 2]<< 8)|
+            ((uint32_t)key[ 3]    );
+        W[i+1]=        ((uint32_t)key[ 4]<<24)|
+            ((uint32_t)key[ 5]<<16)|
+            ((uint32_t)key[ 6]<< 8)|
+            ((uint32_t)key[ 7]    );
+        key += 8;
+    }
+
+    ip = Rcon;
+    ii = 4 * (ctx->rounds+1);
+    for (i = words; i<ii; i++)
+    {
+        tmp = W[i-1];
+
+        if ((i % words) == 0)
+        {
+            tmp2 =(uint32_t)aes_sbox[(tmp    )&0xff]<< 8;
+            tmp2|=(uint32_t)aes_sbox[(tmp>> 8)&0xff]<<16;
+            tmp2|=(uint32_t)aes_sbox[(tmp>>16)&0xff]<<24;
+            tmp2|=(uint32_t)aes_sbox[(tmp>>24)     ];
+            tmp=tmp2^(((unsigned int)*ip)<<24);
+            ip++;
+        }
+
+        if ((words == 8) && ((i % words) == 4))
+        {
+            tmp2 =(uint32_t)aes_sbox[(tmp    )&0xff]    ;
+            tmp2|=(uint32_t)aes_sbox[(tmp>> 8)&0xff]<< 8;
+            tmp2|=(uint32_t)aes_sbox[(tmp>>16)&0xff]<<16;
+            tmp2|=(uint32_t)aes_sbox[(tmp>>24)     ]<<24;
+            tmp=tmp2;
+        }
+
+        W[i]=W[i-words]^tmp;
+    }
+
+    /* copy the iv across */
+    memcpy(ctx->iv, iv, 16);
+}
+
+/**
+ * Change a key for decryption.
+ */
+void AES_convert_key(AES_CTX *ctx)
+{
+    int i;
+    uint32_t *k,w,t1,t2,t3,t4;
+
+    k = ctx->ks;
+    k += 4;
+
+    for (i= ctx->rounds*4; i > 4; i--)
+    {
+        w= *k;
+        w = inv_mix_col(w,t1,t2,t3,t4);
+        *k++ =w;
+    }
+}
+
+/**
+ * Encrypt a byte sequence (with a block size 16) using the AES cipher.
+ */
+void AES_cbc_encrypt(AES_CTX *ctx, const uint8_t *msg, uint8_t *out, int length)
+{
+    int i;
+    uint32_t tin[4], tout[4], iv[4];
+
+    memcpy(iv, ctx->iv, AES_IV_SIZE);
+    for (i = 0; i < 4; i++)
+        tout[i] = ntohl(iv[i]);
+
+    for (length -= AES_BLOCKSIZE; length >= 0; length -= AES_BLOCKSIZE)
+    {
+        uint32_t msg_32[4];
+        uint32_t out_32[4];
+        memcpy(msg_32, msg, AES_BLOCKSIZE);
+        msg += AES_BLOCKSIZE;
+
+        for (i = 0; i < 4; i++)
+            tin[i] = ntohl(msg_32[i])^tout[i];
+
+        AES_encrypt(ctx, tin);
+
+        for (i = 0; i < 4; i++)
+        {
+            tout[i] = tin[i]; 
+            out_32[i] = htonl(tout[i]);
+        }
+
+        memcpy(out, out_32, AES_BLOCKSIZE);
+        out += AES_BLOCKSIZE;
+    }
+
+    for (i = 0; i < 4; i++)
+        iv[i] = htonl(tout[i]);
+    memcpy(ctx->iv, iv, AES_IV_SIZE);
+}
+
+/**
+ * Decrypt a byte sequence (with a block size 16) using the AES cipher.
+ */
+void AES_cbc_decrypt(AES_CTX *ctx, const uint8_t *msg, uint8_t *out, int length)
+{
+    int i;
+    uint32_t tin[4], xor[4], tout[4], data[4], iv[4];
+
+    memcpy(iv, ctx->iv, AES_IV_SIZE);
+    for (i = 0; i < 4; i++)
+        xor[i] = ntohl(iv[i]);
+
+    for (length -= 16; length >= 0; length -= 16)
+    {
+        uint32_t msg_32[4];
+        uint32_t out_32[4];
+        memcpy(msg_32, msg, AES_BLOCKSIZE);
+        msg += AES_BLOCKSIZE;
+
+        for (i = 0; i < 4; i++)
+        {
+            tin[i] = ntohl(msg_32[i]);
+            data[i] = tin[i];
+        }
+
+        AES_decrypt(ctx, data);
+
+        for (i = 0; i < 4; i++)
+        {
+            tout[i] = data[i]^xor[i];
+            xor[i] = tin[i];
+            out_32[i] = htonl(tout[i]);
+        }
+
+        memcpy(out, out_32, AES_BLOCKSIZE);
+        out += AES_BLOCKSIZE;
+    }
+
+    for (i = 0; i < 4; i++)
+        iv[i] = htonl(xor[i]);
+    memcpy(ctx->iv, iv, AES_IV_SIZE);
+}
+
+/**
+ * Encrypt a single block (16 bytes) of data
+ */
+static void AES_encrypt(const AES_CTX *ctx, uint32_t *data)
+{
+    /* To make this code smaller, generate the sbox entries on the fly.
+     * This will have a really heavy effect upon performance.
+     */
+    uint32_t tmp[4];
+    uint32_t tmp1, old_a0, a0, a1, a2, a3, row;
+    int curr_rnd;
+    int rounds = ctx->rounds; 
+    const uint32_t *k = ctx->ks;
+
+    /* Pre-round key addition */
+    for (row = 0; row < 4; row++)
+        data[row] ^= *(k++);
+
+    /* Encrypt one block. */
+    for (curr_rnd = 0; curr_rnd < rounds; curr_rnd++)
+    {
+        /* Perform ByteSub and ShiftRow operations together */
+        for (row = 0; row < 4; row++)
+        {
+            a0 = (uint32_t)aes_sbox[(data[row%4]>>24)&0xFF];
+            a1 = (uint32_t)aes_sbox[(data[(row+1)%4]>>16)&0xFF];
+            a2 = (uint32_t)aes_sbox[(data[(row+2)%4]>>8)&0xFF]; 
+            a3 = (uint32_t)aes_sbox[(data[(row+3)%4])&0xFF];
+
+            /* Perform MixColumn iff not last round */
+            if (curr_rnd < (rounds - 1))
+            {
+                tmp1 = a0 ^ a1 ^ a2 ^ a3;
+                old_a0 = a0;
+                a0 ^= tmp1 ^ AES_xtime(a0 ^ a1);
+                a1 ^= tmp1 ^ AES_xtime(a1 ^ a2);
+                a2 ^= tmp1 ^ AES_xtime(a2 ^ a3);
+                a3 ^= tmp1 ^ AES_xtime(a3 ^ old_a0);
+            }
+
+            tmp[row] = ((a0 << 24) | (a1 << 16) | (a2 << 8) | a3);
+        }
+
+        /* KeyAddition - note that it is vital that this loop is separate from
+           the MixColumn operation, which must be atomic...*/ 
+        for (row = 0; row < 4; row++)
+            data[row] = tmp[row] ^ *(k++);
+    }
+}
+
+/**
+ * Decrypt a single block (16 bytes) of data
+ */
+static void AES_decrypt(const AES_CTX *ctx, uint32_t *data)
+{ 
+    uint32_t tmp[4];
+    uint32_t xt0,xt1,xt2,xt3,xt4,xt5,xt6;
+    uint32_t a0, a1, a2, a3, row;
+    int curr_rnd;
+    int rounds = ctx->rounds;
+    const uint32_t *k = ctx->ks + ((rounds+1)*4);
+
+    /* pre-round key addition */
+    for (row=4; row > 0;row--)
+        data[row-1] ^= *(--k);
+
+    /* Decrypt one block */
+    for (curr_rnd = 0; curr_rnd < rounds; curr_rnd++)
+    {
+        /* Perform ByteSub and ShiftRow operations together */
+        for (row = 4; row > 0; row--)
+        {
+            a0 = aes_isbox[(data[(row+3)%4]>>24)&0xFF];
+            a1 = aes_isbox[(data[(row+2)%4]>>16)&0xFF];
+            a2 = aes_isbox[(data[(row+1)%4]>>8)&0xFF];
+            a3 = aes_isbox[(data[row%4])&0xFF];
+
+            /* Perform MixColumn iff not last round */
+            if (curr_rnd<(rounds-1))
+            {
+                /* The MDS cofefficients (0x09, 0x0B, 0x0D, 0x0E)
+                   are quite large compared to encryption; this 
+                   operation slows decryption down noticeably. */
+                xt0 = AES_xtime(a0^a1);
+                xt1 = AES_xtime(a1^a2);
+                xt2 = AES_xtime(a2^a3);
+                xt3 = AES_xtime(a3^a0);
+                xt4 = AES_xtime(xt0^xt1);
+                xt5 = AES_xtime(xt1^xt2);
+                xt6 = AES_xtime(xt4^xt5);
+
+                xt0 ^= a1^a2^a3^xt4^xt6;
+                xt1 ^= a0^a2^a3^xt5^xt6;
+                xt2 ^= a0^a1^a3^xt4^xt6;
+                xt3 ^= a0^a1^a2^xt5^xt6;
+                tmp[row-1] = ((xt0<<24)|(xt1<<16)|(xt2<<8)|xt3);
+            }
+            else
+                tmp[row-1] = ((a0<<24)|(a1<<16)|(a2<<8)|a3);
+        }
+
+        for (row = 4; row > 0; row--)
+            data[row-1] = tmp[row-1] ^ *(--k);
+    }
+}
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c
new file mode 100644 (file)
index 0000000..53a5839
--- /dev/null
@@ -0,0 +1,1575 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @defgroup bigint_api Big Integer API
+ * @brief The bigint implementation as used by the axTLS project.
+ *
+ * The bigint library is for RSA encryption/decryption as well as signing.
+ * This code tries to minimise use of malloc/free by maintaining a small 
+ * cache. A bigint context may maintain state by being made "permanent". 
+ * It be be later released with a bi_depermanent() and bi_free() call.
+ *
+ * It supports the following reduction techniques:
+ * - Classical
+ * - Barrett
+ * - Montgomery
+ *
+ * It also implements the following:
+ * - Karatsuba multiplication
+ * - Squaring
+ * - Sliding window exponentiation
+ * - Chinese Remainder Theorem (implemented in rsa.c).
+ *
+ * All the algorithms used are pretty standard, and designed for different
+ * data bus sizes. Negative numbers are not dealt with at all, so a subtraction
+ * may need to be tested for negativity.
+ *
+ * This library steals some ideas from Jef Poskanzer
+ * <http://cs.marlboro.edu/term/cs-fall02/algorithms/crypto/RSA/bigint>
+ * and GMP <http://www.swox.com/gmp>. It gets most of its implementation
+ * detail from "The Handbook of Applied Cryptography"
+ * <http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf>
+ * @{
+ */
+
+#include <stdlib.h>
+#include <limits.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include "bigint.h"
+
+#define V1      v->comps[v->size-1]                 /**< v1 for division */
+#define V2      v->comps[v->size-2]                 /**< v2 for division */
+#define U(j)    tmp_u->comps[tmp_u->size-j-1]       /**< uj for division */
+#define Q(j)    quotient->comps[quotient->size-j-1] /**< qj for division */
+
+static bigint *bi_int_multiply(BI_CTX *ctx, bigint *bi, comp i);
+static bigint *bi_int_divide(BI_CTX *ctx, bigint *biR, comp denom);
+static bigint *alloc(BI_CTX *ctx, int size);
+static bigint *trim(bigint *bi);
+static void more_comps(bigint *bi, int n);
+#if defined(CONFIG_BIGINT_KARATSUBA) || defined(CONFIG_BIGINT_BARRETT) || \
+    defined(CONFIG_BIGINT_MONTGOMERY)
+static bigint *comp_right_shift(bigint *biR, int num_shifts);
+static bigint *comp_left_shift(bigint *biR, int num_shifts);
+#endif
+
+#ifdef CONFIG_BIGINT_CHECK_ON
+static void check(const bigint *bi);
+#else
+#define check(A)                /**< disappears in normal production mode */
+#endif
+
+
+/**
+ * @brief Start a new bigint context.
+ * @return A bigint context.
+ */
+BI_CTX *bi_initialize(void)
+{
+    /* calloc() sets everything to zero */
+    BI_CTX *ctx = (BI_CTX *)calloc(1, sizeof(BI_CTX));
+   
+    /* the radix */
+    ctx->bi_radix = alloc(ctx, 2); 
+    ctx->bi_radix->comps[0] = 0;
+    ctx->bi_radix->comps[1] = 1;
+    bi_permanent(ctx->bi_radix);
+    return ctx;
+}
+
+/**
+ * @brief Close the bigint context and free any resources.
+ *
+ * Free up any used memory - a check is done if all objects were not 
+ * properly freed.
+ * @param ctx [in]   The bigint session context.
+ */
+void bi_terminate(BI_CTX *ctx)
+{
+    bi_depermanent(ctx->bi_radix); 
+    bi_free(ctx, ctx->bi_radix);
+
+    if (ctx->active_count != 0)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("bi_terminate: there were %d un-freed bigints\n",
+                       ctx->active_count);
+#endif
+        abort();
+    }
+
+    bi_clear_cache(ctx);
+    free(ctx);
+}
+
+/**
+ *@brief Clear the memory cache.
+ */
+void bi_clear_cache(BI_CTX *ctx)
+{
+    bigint *p, *pn;
+
+    if (ctx->free_list == NULL)
+        return;
+    
+    for (p = ctx->free_list; p != NULL; p = pn)
+    {
+        pn = p->next;
+        free(p->comps);
+        free(p);
+    }
+
+    ctx->free_count = 0;
+    ctx->free_list = NULL;
+}
+
+/**
+ * @brief Increment the number of references to this object. 
+ * It does not do a full copy.
+ * @param bi [in]   The bigint to copy.
+ * @return A reference to the same bigint.
+ */
+bigint *bi_copy(bigint *bi)
+{
+    check(bi);
+    if (bi->refs != PERMANENT)
+        bi->refs++;
+    return bi;
+}
+
+/**
+ * @brief Simply make a bigint object "unfreeable" if bi_free() is called on it.
+ *
+ * For this object to be freed, bi_depermanent() must be called.
+ * @param bi [in]   The bigint to be made permanent.
+ */
+void bi_permanent(bigint *bi)
+{
+    check(bi);
+    if (bi->refs != 1)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("bi_permanent: refs was not 1\n");
+#endif
+        abort();
+    }
+
+    bi->refs = PERMANENT;
+}
+
+/**
+ * @brief Take a permanent object and make it eligible for freedom.
+ * @param bi [in]   The bigint to be made back to temporary.
+ */
+void bi_depermanent(bigint *bi)
+{
+    check(bi);
+    if (bi->refs != PERMANENT)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("bi_depermanent: bigint was not permanent\n");
+#endif
+        abort();
+    }
+
+    bi->refs = 1;
+}
+
+/**
+ * @brief Free a bigint object so it can be used again. 
+ *
+ * The memory itself it not actually freed, just tagged as being available 
+ * @param ctx [in]   The bigint session context.
+ * @param bi [in]    The bigint to be freed.
+ */
+void bi_free(BI_CTX *ctx, bigint *bi)
+{
+    check(bi);
+    if (bi->refs == PERMANENT)
+    {
+        return;
+    }
+
+    if (--bi->refs > 0)
+    {
+        return;
+    }
+
+    bi->next = ctx->free_list;
+    ctx->free_list = bi;
+    ctx->free_count++;
+
+    if (--ctx->active_count < 0)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("bi_free: active_count went negative "
+                "- double-freed bigint?\n");
+#endif
+        abort();
+    }
+}
+
+/**
+ * @brief Convert an (unsigned) integer into a bigint.
+ * @param ctx [in]   The bigint session context.
+ * @param i [in]     The (unsigned) integer to be converted.
+ * 
+ */
+bigint *int_to_bi(BI_CTX *ctx, comp i)
+{
+    bigint *biR = alloc(ctx, 1);
+    biR->comps[0] = i;
+    return biR;
+}
+
+/**
+ * @brief Do a full copy of the bigint object.
+ * @param ctx [in]   The bigint session context.
+ * @param bi  [in]   The bigint object to be copied.
+ */
+bigint *bi_clone(BI_CTX *ctx, const bigint *bi)
+{
+    bigint *biR = alloc(ctx, bi->size);
+    check(bi);
+    memcpy(biR->comps, bi->comps, bi->size*COMP_BYTE_SIZE);
+    return biR;
+}
+
+/**
+ * @brief Perform an addition operation between two bigints.
+ * @param ctx [in]  The bigint session context.
+ * @param bia [in]  A bigint.
+ * @param bib [in]  Another bigint.
+ * @return The result of the addition.
+ */
+bigint *bi_add(BI_CTX *ctx, bigint *bia, bigint *bib)
+{
+    int n;
+    comp carry = 0;
+    comp *pa, *pb;
+
+    check(bia);
+    check(bib);
+
+    n = max(bia->size, bib->size);
+    more_comps(bia, n+1);
+    more_comps(bib, n);
+    pa = bia->comps;
+    pb = bib->comps;
+
+    do
+    {
+        comp  sl, rl, cy1;
+        sl = *pa + *pb++;
+        rl = sl + carry;
+        cy1 = sl < *pa;
+        carry = cy1 | (rl < sl);
+        *pa++ = rl;
+    } while (--n != 0);
+
+    *pa = carry;                  /* do overflow */
+    bi_free(ctx, bib);
+    return trim(bia);
+}
+
+/**
+ * @brief Perform a subtraction operation between two bigints.
+ * @param ctx [in]  The bigint session context.
+ * @param bia [in]  A bigint.
+ * @param bib [in]  Another bigint.
+ * @param is_negative [out] If defined, indicates that the result was negative.
+ * is_negative may be null.
+ * @return The result of the subtraction. The result is always positive.
+ */
+bigint *bi_subtract(BI_CTX *ctx, 
+        bigint *bia, bigint *bib, int *is_negative)
+{
+    int n = bia->size;
+    comp *pa, *pb, carry = 0;
+
+    check(bia);
+    check(bib);
+
+    more_comps(bib, n);
+    pa = bia->comps;
+    pb = bib->comps;
+
+    do 
+    {
+        comp sl, rl, cy1;
+        sl = *pa - *pb++;
+        rl = sl - carry;
+        cy1 = sl > *pa;
+        carry = cy1 | (rl > sl);
+        *pa++ = rl;
+    } while (--n != 0);
+
+    if (is_negative)    /* indicate a negative result */
+    {
+        *is_negative = carry;
+    }
+
+    bi_free(ctx, trim(bib));    /* put bib back to the way it was */
+    return trim(bia);
+}
+
+/**
+ * Perform a multiply between a bigint an an (unsigned) integer
+ */
+static bigint *bi_int_multiply(BI_CTX *ctx, bigint *bia, comp b)
+{
+    int j = 0, n = bia->size;
+    bigint *biR = alloc(ctx, n + 1);
+    comp carry = 0;
+    comp *r = biR->comps;
+    comp *a = bia->comps;
+
+    check(bia);
+
+    /* clear things to start with */
+    memset(r, 0, ((n+1)*COMP_BYTE_SIZE));
+
+    do
+    {
+        long_comp tmp = *r + (long_comp)a[j]*b + carry;
+        *r++ = (comp)tmp;              /* downsize */
+        carry = (comp)(tmp >> COMP_BIT_SIZE);
+    } while (++j < n);
+
+    *r = carry;
+    bi_free(ctx, bia);
+    return trim(biR);
+}
+
+/**
+ * @brief Does both division and modulo calculations. 
+ *
+ * Used extensively when doing classical reduction.
+ * @param ctx [in]  The bigint session context.
+ * @param u [in]    A bigint which is the numerator.
+ * @param v [in]    Either the denominator or the modulus depending on the mode.
+ * @param is_mod [n] Determines if this is a normal division (0) or a reduction
+ * (1).
+ * @return  The result of the division/reduction.
+ */
+bigint *bi_divide(BI_CTX *ctx, bigint *u, bigint *v, int is_mod)
+{
+    int n = v->size, m = u->size-n;
+    int j = 0, orig_u_size = u->size;
+    uint8_t mod_offset = ctx->mod_offset;
+    comp d;
+    bigint *quotient, *tmp_u;
+    comp q_dash;
+
+    check(u);
+    check(v);
+
+    /* if doing reduction and we are < mod, then return mod */
+    if (is_mod && bi_compare(v, u) > 0)
+    {
+        bi_free(ctx, v);
+        return u;
+    }
+
+    quotient = alloc(ctx, m+1);
+    tmp_u = alloc(ctx, n+1);
+    v = trim(v);        /* make sure we have no leading 0's */
+    d = (comp)((long_comp)COMP_RADIX/(V1+1));
+
+    /* clear things to start with */
+    memset(quotient->comps, 0, ((quotient->size)*COMP_BYTE_SIZE));
+
+    /* normalise */
+    if (d > 1)
+    {
+        u = bi_int_multiply(ctx, u, d);
+
+        if (is_mod)
+        {
+            v = ctx->bi_normalised_mod[mod_offset];
+        }
+        else
+        {
+            v = bi_int_multiply(ctx, v, d);
+        }
+    }
+
+    if (orig_u_size == u->size)  /* new digit position u0 */
+    {
+        more_comps(u, orig_u_size + 1);
+    }
+
+    do
+    {
+        /* get a temporary short version of u */
+        memcpy(tmp_u->comps, &u->comps[u->size-n-1-j], (n+1)*COMP_BYTE_SIZE);
+
+        /* calculate q' */
+        if (U(0) == V1)
+        {
+            q_dash = COMP_RADIX-1;
+        }
+        else
+        {
+            q_dash = (comp)(((long_comp)U(0)*COMP_RADIX + U(1))/V1);
+        }
+
+        if (v->size > 1 && V2)
+        {
+            /* we are implementing the following:
+            if (V2*q_dash > (((U(0)*COMP_RADIX + U(1) - 
+                    q_dash*V1)*COMP_RADIX) + U(2))) ... */
+            comp inner = (comp)((long_comp)COMP_RADIX*U(0) + U(1) - 
+                                        (long_comp)q_dash*V1);
+            if ((long_comp)V2*q_dash > (long_comp)inner*COMP_RADIX + U(2))
+            {
+                q_dash--;
+            }
+        }
+
+        /* multiply and subtract */
+        if (q_dash)
+        {
+            int is_negative;
+            tmp_u = bi_subtract(ctx, tmp_u, 
+                    bi_int_multiply(ctx, bi_copy(v), q_dash), &is_negative);
+            more_comps(tmp_u, n+1);
+
+            Q(j) = q_dash; 
+
+            /* add back */
+            if (is_negative)
+            {
+                Q(j)--;
+                tmp_u = bi_add(ctx, tmp_u, bi_copy(v));
+
+                /* lop off the carry */
+                tmp_u->size--;
+                v->size--;
+            }
+        }
+        else
+        {
+            Q(j) = 0; 
+        }
+
+        /* copy back to u */
+        memcpy(&u->comps[u->size-n-1-j], tmp_u->comps, (n+1)*COMP_BYTE_SIZE);
+    } while (++j <= m);
+
+    bi_free(ctx, tmp_u);
+    bi_free(ctx, v);
+
+    if (is_mod)     /* get the remainder */
+    {
+        bi_free(ctx, quotient);
+        return bi_int_divide(ctx, trim(u), d);
+    }
+    else            /* get the quotient */
+    {
+        bi_free(ctx, u);
+        return trim(quotient);
+    }
+}
+
+/*
+ * Perform an integer divide on a bigint.
+ */
+static bigint *bi_int_divide(BI_CTX *ctx, bigint *biR, comp denom)
+{
+    int i = biR->size - 1;
+    long_comp r = 0;
+
+    check(biR);
+
+    do
+    {
+        r = (r<<COMP_BIT_SIZE) + biR->comps[i];
+        biR->comps[i] = (comp)(r / denom);
+        r %= denom;
+    } while (--i >= 0);
+
+    return trim(biR);
+}
+
+#ifdef CONFIG_BIGINT_MONTGOMERY
+/**
+ * There is a need for the value of integer N' such that B^-1(B-1)-N^-1N'=1, 
+ * where B^-1(B-1) mod N=1. Actually, only the least significant part of 
+ * N' is needed, hence the definition N0'=N' mod b. We reproduce below the 
+ * simple algorithm from an article by Dusse and Kaliski to efficiently 
+ * find N0' from N0 and b */
+static comp modular_inverse(bigint *bim)
+{
+    int i;
+    comp t = 1;
+    comp two_2_i_minus_1 = 2;   /* 2^(i-1) */
+    long_comp two_2_i = 4;      /* 2^i */
+    comp N = bim->comps[0];
+
+    for (i = 2; i <= COMP_BIT_SIZE; i++)
+    {
+        if ((long_comp)N*t%two_2_i >= two_2_i_minus_1)
+        {
+            t += two_2_i_minus_1;
+        }
+
+        two_2_i_minus_1 <<= 1;
+        two_2_i <<= 1;
+    }
+
+    return (comp)(COMP_RADIX-t);
+}
+#endif
+
+#if defined(CONFIG_BIGINT_KARATSUBA) || defined(CONFIG_BIGINT_BARRETT) || \
+    defined(CONFIG_BIGINT_MONTGOMERY)
+/**
+ * Take each component and shift down (in terms of components) 
+ */
+static bigint *comp_right_shift(bigint *biR, int num_shifts)
+{
+    int i = biR->size-num_shifts;
+    comp *x = biR->comps;
+    comp *y = &biR->comps[num_shifts];
+
+    check(biR);
+
+    if (i <= 0)     /* have we completely right shifted? */
+    {
+        biR->comps[0] = 0;  /* return 0 */
+        biR->size = 1;
+        return biR;
+    }
+
+    do
+    {
+        *x++ = *y++;
+    } while (--i > 0);
+
+    biR->size -= num_shifts;
+    return biR;
+}
+
+/**
+ * Take each component and shift it up (in terms of components) 
+ */
+static bigint *comp_left_shift(bigint *biR, int num_shifts)
+{
+    int i = biR->size-1;
+    comp *x, *y;
+
+    check(biR);
+
+    if (num_shifts <= 0)
+    {
+        return biR;
+    }
+
+    more_comps(biR, biR->size + num_shifts);
+
+    x = &biR->comps[i+num_shifts];
+    y = &biR->comps[i];
+
+    do
+    {
+        *x-- = *y--;
+    } while (i--);
+
+    memset(biR->comps, 0, num_shifts*COMP_BYTE_SIZE); /* zero LS comps */
+    return biR;
+}
+#endif
+
+/**
+ * @brief Allow a binary sequence to be imported as a bigint.
+ * @param ctx [in]  The bigint session context.
+ * @param data [in] The data to be converted.
+ * @param size [in] The number of bytes of data.
+ * @return A bigint representing this data.
+ */
+bigint *bi_import(BI_CTX *ctx, const uint8_t *data, int size)
+{
+    bigint *biR = alloc(ctx, (size+COMP_BYTE_SIZE-1)/COMP_BYTE_SIZE);
+    int i, j = 0, offset = 0;
+
+    memset(biR->comps, 0, biR->size*COMP_BYTE_SIZE);
+
+    for (i = size-1; i >= 0; i--)
+    {
+        biR->comps[offset] += data[i] << (j*8);
+
+        if (++j == COMP_BYTE_SIZE)
+        {
+            j = 0;
+            offset ++;
+        }
+    }
+
+    return trim(biR);
+}
+
+#ifdef CONFIG_SSL_FULL_MODE
+/**
+ * @brief The testharness uses this code to import text hex-streams and 
+ * convert them into bigints.
+ * @param ctx [in]  The bigint session context.
+ * @param data [in] A string consisting of hex characters. The characters must
+ * be in upper case.
+ * @return A bigint representing this data.
+ */
+bigint *bi_str_import(BI_CTX *ctx, const char *data)
+{
+    int size = strlen(data);
+    bigint *biR = alloc(ctx, (size+COMP_NUM_NIBBLES-1)/COMP_NUM_NIBBLES);
+    int i, j = 0, offset = 0;
+    memset(biR->comps, 0, biR->size*COMP_BYTE_SIZE);
+
+    for (i = size-1; i >= 0; i--)
+    {
+        int num = (data[i] <= '9') ? (data[i] - '0') : (data[i] - 'A' + 10);
+        biR->comps[offset] += num << (j*4);
+
+        if (++j == COMP_NUM_NIBBLES)
+        {
+            j = 0;
+            offset ++;
+        }
+    }
+
+    return biR;
+}
+
+void bi_print(const char *label, bigint *x)
+{
+    int i, j;
+
+    if (x == NULL)
+    {
+        printf("%s: (null)\n", label);
+        return;
+    }
+
+    printf("%s: (size %d)\n", label, x->size);
+    for (i = x->size-1; i >= 0; i--)
+    {
+        for (j = COMP_NUM_NIBBLES-1; j >= 0; j--)
+        {
+            comp mask = 0x0f << (j*4);
+            comp num = (x->comps[i] & mask) >> (j*4);
+            putc((num <= 9) ? (num + '0') : (num + 'A' - 10), stdout);
+        }
+    }  
+
+    printf("\n");
+}
+#endif
+
+/**
+ * @brief Take a bigint and convert it into a byte sequence. 
+ *
+ * This is useful after a decrypt operation.
+ * @param ctx [in]  The bigint session context.
+ * @param x [in]  The bigint to be converted.
+ * @param data [out] The converted data as a byte stream.
+ * @param size [in] The maximum size of the byte stream. Unused bytes will be
+ * zeroed.
+ */
+void bi_export(BI_CTX *ctx, bigint *x, uint8_t *data, int size)
+{
+    int i, j, k = size-1;
+
+    check(x);
+    memset(data, 0, size);  /* ensure all leading 0's are cleared */
+
+    for (i = 0; i < x->size; i++)
+    {
+        for (j = 0; j < COMP_BYTE_SIZE; j++)
+        {
+            comp mask = 0xff << (j*8);
+            int num = (x->comps[i] & mask) >> (j*8);
+            data[k--] = num;
+
+            if (k < 0)
+            {
+                break;
+            }
+        }
+    }
+
+    bi_free(ctx, x);
+}
+
+/**
+ * @brief Pre-calculate some of the expensive steps in reduction. 
+ *
+ * This function should only be called once (normally when a session starts).
+ * When the session is over, bi_free_mod() should be called. bi_mod_power()
+ * relies on this function being called.
+ * @param ctx [in]  The bigint session context.
+ * @param bim [in]  The bigint modulus that will be used.
+ * @param mod_offset [in] There are three moduluii that can be stored - the
+ * standard modulus, and its two primes p and q. This offset refers to which
+ * modulus we are referring to.
+ * @see bi_free_mod(), bi_mod_power().
+ */
+void bi_set_mod(BI_CTX *ctx, bigint *bim, int mod_offset)
+{
+    int k = bim->size;
+    comp d = (comp)((long_comp)COMP_RADIX/(bim->comps[k-1]+1));
+#ifdef CONFIG_BIGINT_MONTGOMERY
+    bigint *R, *R2;
+#endif
+
+    ctx->bi_mod[mod_offset] = bim;
+    bi_permanent(ctx->bi_mod[mod_offset]);
+    ctx->bi_normalised_mod[mod_offset] = bi_int_multiply(ctx, bim, d);
+    bi_permanent(ctx->bi_normalised_mod[mod_offset]);
+
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+    /* set montgomery variables */
+    R = comp_left_shift(bi_clone(ctx, ctx->bi_radix), k-1);     /* R */
+    R2 = comp_left_shift(bi_clone(ctx, ctx->bi_radix), k*2-1);  /* R^2 */
+    ctx->bi_RR_mod_m[mod_offset] = bi_mod(ctx, R2);             /* R^2 mod m */
+    ctx->bi_R_mod_m[mod_offset] = bi_mod(ctx, R);               /* R mod m */
+
+    bi_permanent(ctx->bi_RR_mod_m[mod_offset]);
+    bi_permanent(ctx->bi_R_mod_m[mod_offset]);
+
+    ctx->N0_dash[mod_offset] = modular_inverse(ctx->bi_mod[mod_offset]);
+
+#elif defined (CONFIG_BIGINT_BARRETT)
+    ctx->bi_mu[mod_offset] = 
+        bi_divide(ctx, comp_left_shift(
+            bi_clone(ctx, ctx->bi_radix), k*2-1), ctx->bi_mod[mod_offset], 0);
+    bi_permanent(ctx->bi_mu[mod_offset]);
+#endif
+}
+
+/**
+ * @brief Used when cleaning various bigints at the end of a session.
+ * @param ctx [in]  The bigint session context.
+ * @param mod_offset [in] The offset to use.
+ * @see bi_set_mod().
+ */
+void bi_free_mod(BI_CTX *ctx, int mod_offset)
+{
+    bi_depermanent(ctx->bi_mod[mod_offset]);
+    bi_free(ctx, ctx->bi_mod[mod_offset]);
+#if defined (CONFIG_BIGINT_MONTGOMERY)
+    bi_depermanent(ctx->bi_RR_mod_m[mod_offset]);
+    bi_depermanent(ctx->bi_R_mod_m[mod_offset]);
+    bi_free(ctx, ctx->bi_RR_mod_m[mod_offset]);
+    bi_free(ctx, ctx->bi_R_mod_m[mod_offset]);
+#elif defined(CONFIG_BIGINT_BARRETT)
+    bi_depermanent(ctx->bi_mu[mod_offset]); 
+    bi_free(ctx, ctx->bi_mu[mod_offset]);
+#endif
+    bi_depermanent(ctx->bi_normalised_mod[mod_offset]); 
+    bi_free(ctx, ctx->bi_normalised_mod[mod_offset]);
+}
+
+/** 
+ * Perform a standard multiplication between two bigints.
+ */
+static bigint *regular_multiply(BI_CTX *ctx, bigint *bia, bigint *bib)
+{
+    int i, j, i_plus_j;
+    int n = bia->size; 
+    int t = bib->size;
+    bigint *biR = alloc(ctx, n + t);
+    comp *sr = biR->comps;
+    comp *sa = bia->comps;
+    comp *sb = bib->comps;
+
+    check(bia);
+    check(bib);
+
+    /* clear things to start with */
+    memset(biR->comps, 0, ((n+t)*COMP_BYTE_SIZE));
+    i = 0;
+
+    do 
+    {
+        comp carry = 0;
+        comp b = *sb++;
+        i_plus_j = i;
+        j = 0;
+
+        do
+        {
+            long_comp tmp = sr[i_plus_j] + (long_comp)sa[j]*b + carry;
+            sr[i_plus_j++] = (comp)tmp;              /* downsize */
+            carry = (comp)(tmp >> COMP_BIT_SIZE);
+        } while (++j < n);
+
+        sr[i_plus_j] = carry;
+    } while (++i < t);
+
+    bi_free(ctx, bia);
+    bi_free(ctx, bib);
+    return trim(biR);
+}
+
+#ifdef CONFIG_BIGINT_KARATSUBA
+/*
+ * Karatsuba improves on regular multiplication due to only 3 multiplications 
+ * being done instead of 4. The additional additions/subtractions are O(N) 
+ * rather than O(N^2) and so for big numbers it saves on a few operations 
+ */
+static bigint *karatsuba(BI_CTX *ctx, bigint *bia, bigint *bib, int is_square)
+{
+    bigint *x0, *x1;
+    bigint *p0, *p1, *p2;
+    int m;
+
+    if (is_square)
+    {
+        m = (bia->size + 1)/2;
+    }
+    else
+    {
+        m = (max(bia->size, bib->size) + 1)/2;
+    }
+
+    x0 = bi_clone(ctx, bia);
+    x0->size = m;
+    x1 = bi_clone(ctx, bia);
+    comp_right_shift(x1, m);
+    bi_free(ctx, bia);
+
+    /* work out the 3 partial products */
+    if (is_square)
+    {
+        p0 = bi_square(ctx, bi_copy(x0));
+        p2 = bi_square(ctx, bi_copy(x1));
+        p1 = bi_square(ctx, bi_add(ctx, x0, x1));
+    }
+    else /* normal multiply */
+    {
+        bigint *y0, *y1;
+        y0 = bi_clone(ctx, bib);
+        y0->size = m;
+        y1 = bi_clone(ctx, bib);
+        comp_right_shift(y1, m);
+        bi_free(ctx, bib);
+
+        p0 = bi_multiply(ctx, bi_copy(x0), bi_copy(y0));
+        p2 = bi_multiply(ctx, bi_copy(x1), bi_copy(y1));
+        p1 = bi_multiply(ctx, bi_add(ctx, x0, x1), bi_add(ctx, y0, y1));
+    }
+
+    p1 = bi_subtract(ctx, 
+            bi_subtract(ctx, p1, bi_copy(p2), NULL), bi_copy(p0), NULL);
+
+    comp_left_shift(p1, m);
+    comp_left_shift(p2, 2*m);
+    return bi_add(ctx, p1, bi_add(ctx, p0, p2));
+}
+#endif
+
+/**
+ * @brief Perform a multiplication operation between two bigints.
+ * @param ctx [in]  The bigint session context.
+ * @param bia [in]  A bigint.
+ * @param bib [in]  Another bigint.
+ * @return The result of the multiplication.
+ */
+bigint *bi_multiply(BI_CTX *ctx, bigint *bia, bigint *bib)
+{
+    check(bia);
+    check(bib);
+
+#ifdef CONFIG_BIGINT_KARATSUBA
+    if (min(bia->size, bib->size) < MUL_KARATSUBA_THRESH)
+    {
+        return regular_multiply(ctx, bia, bib);
+    }
+
+    return karatsuba(ctx, bia, bib, 0);
+#else
+    return regular_multiply(ctx, bia, bib);
+#endif
+}
+
+#ifdef CONFIG_BIGINT_SQUARE
+/*
+ * Perform the actual square operion. It takes into account overflow.
+ */
+static bigint *regular_square(BI_CTX *ctx, bigint *bi)
+{
+    int t = bi->size;
+    int i = 0, j;
+    bigint *biR = alloc(ctx, t*2);
+    comp *w = biR->comps;
+    comp *x = bi->comps;
+    comp carry;
+
+    memset(w, 0, biR->size*COMP_BYTE_SIZE);
+
+    do
+    {
+        long_comp tmp = w[2*i] + (long_comp)x[i]*x[i];
+        comp u = 0;
+        w[2*i] = (comp)tmp;
+        carry = (comp)(tmp >> COMP_BIT_SIZE);
+
+        for (j = i+1; j < t; j++)
+        {
+            long_comp xx = (long_comp)x[i]*x[j];
+            long_comp xx2 = 2*xx;
+            long_comp blob = (long_comp)w[i+j]+carry;
+
+            if (u)                  /* previous overflow */
+            {
+                blob += COMP_RADIX;
+            }
+
+
+            u = 0;
+            tmp = xx2 + blob;
+
+            /* check for overflow */
+            if ((COMP_MAX-xx) < xx  || (COMP_MAX-xx2) < blob)
+            {
+                u = 1;
+            }
+
+            w[i+j] = (comp)tmp;
+            carry = (comp)(tmp >> COMP_BIT_SIZE);
+        }
+
+        w[i+t] += carry;
+
+        if (u)
+        {
+            w[i+t+1] = 1;   /* add carry */
+        }
+    } while (++i < t);
+
+    bi_free(ctx, bi);
+    return trim(biR);
+}
+
+/**
+ * @brief Perform a square operation on a bigint.
+ * @param ctx [in]  The bigint session context.
+ * @param bia [in]  A bigint.
+ * @return The result of the multiplication.
+ */
+bigint *bi_square(BI_CTX *ctx, bigint *bia)
+{
+    check(bia);
+
+#ifdef CONFIG_BIGINT_KARATSUBA
+    if (bia->size < SQU_KARATSUBA_THRESH) 
+    {
+        return regular_square(ctx, bia);
+    }
+
+    return karatsuba(ctx, bia, NULL, 1);
+#else
+    return regular_square(ctx, bia);
+#endif
+}
+#endif
+
+/**
+ * @brief Compare two bigints.
+ * @param bia [in]  A bigint.
+ * @param bib [in]  Another bigint.
+ * @return -1 if smaller, 1 if larger and 0 if equal.
+ */
+int bi_compare(bigint *bia, bigint *bib)
+{
+    int r, i;
+
+    check(bia);
+    check(bib);
+
+    if (bia->size > bib->size)
+        r = 1;
+    else if (bia->size < bib->size)
+        r = -1;
+    else
+    {
+        comp *a = bia->comps; 
+        comp *b = bib->comps; 
+
+        /* Same number of components.  Compare starting from the high end
+         * and working down. */
+        r = 0;
+        i = bia->size - 1;
+
+        do 
+        {
+            if (a[i] > b[i])
+            { 
+                r = 1;
+                break; 
+            }
+            else if (a[i] < b[i])
+            { 
+                r = -1;
+                break; 
+            }
+        } while (--i >= 0);
+    }
+
+    return r;
+}
+
+/*
+ * Allocate and zero more components.  Does not consume bi. 
+ */
+static void more_comps(bigint *bi, int n)
+{
+    if (n > bi->max_comps)
+    {
+        bi->max_comps = max(bi->max_comps * 2, n);
+        bi->comps = (comp*)realloc(bi->comps, bi->max_comps * COMP_BYTE_SIZE);
+    }
+
+    if (n > bi->size)
+    {
+        memset(&bi->comps[bi->size], 0, (n-bi->size)*COMP_BYTE_SIZE);
+    }
+
+    bi->size = n;
+}
+
+/*
+ * Make a new empty bigint. It may just use an old one if one is available.
+ * Otherwise get one off the heap.
+ */
+static bigint *alloc(BI_CTX *ctx, int size)
+{
+    bigint *biR;
+
+    /* Can we recycle an old bigint? */
+    if (ctx->free_list != NULL)
+    {
+        biR = ctx->free_list;
+        ctx->free_list = biR->next;
+        ctx->free_count--;
+
+        if (biR->refs != 0)
+        {
+#ifdef CONFIG_SSL_FULL_MODE
+            printf("alloc: refs was not 0\n");
+#endif
+            abort();    /* create a stack trace from a core dump */
+        }
+
+        more_comps(biR, size);
+    }
+    else
+    {
+        /* No free bigints available - create a new one. */
+        biR = (bigint *)malloc(sizeof(bigint));
+        biR->comps = (comp*)malloc(size * COMP_BYTE_SIZE);
+        biR->max_comps = size;  /* give some space to spare */
+    }
+
+    biR->size = size;
+    biR->refs = 1;
+    biR->next = NULL;
+    ctx->active_count++;
+    return biR;
+}
+
+/*
+ * Work out the highest '1' bit in an exponent. Used when doing sliding-window
+ * exponentiation.
+ */
+static int find_max_exp_index(bigint *biexp)
+{
+    int i = COMP_BIT_SIZE-1;
+    comp shift = COMP_RADIX/2;
+    comp test = biexp->comps[biexp->size-1];    /* assume no leading zeroes */
+
+    check(biexp);
+
+    do
+    {
+        if (test & shift)
+        {
+            return i+(biexp->size-1)*COMP_BIT_SIZE;
+        }
+
+        shift >>= 1;
+    } while (--i != 0);
+
+    return -1;      /* error - must have been a leading 0 */
+}
+
+/*
+ * Is a particular bit is an exponent 1 or 0? Used when doing sliding-window
+ * exponentiation.
+ */
+static int exp_bit_is_one(bigint *biexp, int offset)
+{
+    comp test = biexp->comps[offset / COMP_BIT_SIZE];
+    int num_shifts = offset % COMP_BIT_SIZE;
+    comp shift = 1;
+    int i;
+
+    check(biexp);
+
+    for (i = 0; i < num_shifts; i++)
+    {
+        shift <<= 1;
+    }
+
+    return test & shift;
+}
+
+#ifdef CONFIG_BIGINT_CHECK_ON
+/*
+ * Perform a sanity check on bi.
+ */
+static void check(const bigint *bi)
+{
+    if (bi->refs <= 0)
+    {
+        printf("check: zero or negative refs in bigint\n");
+        abort();
+    }
+
+    if (bi->next != NULL)
+    {
+        printf("check: attempt to use a bigint from "
+                "the free list\n");
+        abort();
+    }
+}
+#endif
+
+/*
+ * Delete any leading 0's (and allow for 0).
+ */
+static bigint *trim(bigint *bi)
+{
+    check(bi);
+
+    while (bi->comps[bi->size-1] == 0 && bi->size > 1)
+    {
+        bi->size--;
+    }
+
+    return bi;
+}
+
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+/**
+ * @brief Perform a single montgomery reduction.
+ * @param ctx [in]  The bigint session context.
+ * @param bixy [in]  A bigint.
+ * @return The result of the montgomery reduction.
+ */
+bigint *bi_mont(BI_CTX *ctx, bigint *bixy)
+{
+    int i = 0, n;
+    uint8_t mod_offset = ctx->mod_offset;
+    bigint *bim = ctx->bi_mod[mod_offset];
+    comp mod_inv = ctx->N0_dash[mod_offset];
+
+    check(bixy);
+
+    if (ctx->use_classical)     /* just use classical instead */
+    {
+        return bi_mod(ctx, bixy);
+    }
+
+    n = bim->size;
+
+    do
+    {
+        bixy = bi_add(ctx, bixy, comp_left_shift(
+                    bi_int_multiply(ctx, bim, bixy->comps[i]*mod_inv), i));
+    } while (++i < n);
+
+    comp_right_shift(bixy, n);
+
+    if (bi_compare(bixy, bim) >= 0)
+    {
+        bixy = bi_subtract(ctx, bixy, bim, NULL);
+    }
+
+    return bixy;
+}
+
+#elif defined(CONFIG_BIGINT_BARRETT)
+/*
+ * Stomp on the most significant components to give the illusion of a "mod base
+ * radix" operation 
+ */
+static bigint *comp_mod(bigint *bi, int mod)
+{
+    check(bi);
+
+    if (bi->size > mod)
+    {
+        bi->size = mod;
+    }
+
+    return bi;
+}
+
+/*
+ * Barrett reduction has no need for some parts of the product, so ignore bits
+ * of the multiply. This routine gives Barrett its big performance
+ * improvements over Classical/Montgomery reduction methods. 
+ */
+static bigint *partial_multiply(BI_CTX *ctx, bigint *bia, bigint *bib, 
+        int inner_partial, int outer_partial)
+{
+    int i = 0, j, n = bia->size, t = bib->size;
+    bigint *biR;
+    comp carry;
+    comp *sr, *sa, *sb;
+
+    check(bia);
+    check(bib);
+
+    biR = alloc(ctx, n + t);
+    sa = bia->comps;
+    sb = bib->comps;
+    sr = biR->comps;
+
+    if (inner_partial)
+    {
+        memset(sr, 0, inner_partial*COMP_BYTE_SIZE); 
+    }
+    else    /* outer partial */
+    {
+        if (n < outer_partial || t < outer_partial) /* should we bother? */
+        {
+            bi_free(ctx, bia);
+            bi_free(ctx, bib);
+            biR->comps[0] = 0;      /* return 0 */
+            biR->size = 1;
+            return biR;
+        }
+
+        memset(&sr[outer_partial], 0, (n+t-outer_partial)*COMP_BYTE_SIZE);
+    }
+
+    do 
+    {
+        comp *a = sa;
+        comp b = *sb++;
+        long_comp tmp;
+        int i_plus_j = i;
+        carry = 0;
+        j = n;
+
+        if (outer_partial && i_plus_j < outer_partial)
+        {
+            i_plus_j = outer_partial;
+            a = &sa[outer_partial-i];
+            j = n-(outer_partial-i);
+        }
+
+        do
+        {
+            if (inner_partial && i_plus_j >= inner_partial) 
+            {
+                break;
+            }
+
+            tmp = sr[i_plus_j] + ((long_comp)*a++)*b + carry;
+            sr[i_plus_j++] = (comp)tmp;              /* downsize */
+            carry = (comp)(tmp >> COMP_BIT_SIZE);
+        } while (--j != 0);
+
+        sr[i_plus_j] = carry;
+    } while (++i < t);
+
+    bi_free(ctx, bia);
+    bi_free(ctx, bib);
+    return trim(biR);
+}
+
+/**
+ * @brief Perform a single Barrett reduction.
+ * @param ctx [in]  The bigint session context.
+ * @param bi [in]  A bigint.
+ * @return The result of the Barrett reduction.
+ */
+bigint *bi_barrett(BI_CTX *ctx, bigint *bi)
+{
+    bigint *q1, *q2, *q3, *r1, *r2, *r;
+    uint8_t mod_offset = ctx->mod_offset;
+    bigint *bim = ctx->bi_mod[mod_offset];
+    int k = bim->size;
+
+    check(bi);
+    check(bim);
+
+    /* use Classical method instead  - Barrett cannot help here */
+    if (bi->size > k*2)
+    {
+        return bi_mod(ctx, bi);
+    }
+
+    q1 = comp_right_shift(bi_clone(ctx, bi), k-1);
+
+    /* do outer partial multiply */
+    q2 = partial_multiply(ctx, q1, ctx->bi_mu[mod_offset], 0, k-1); 
+    q3 = comp_right_shift(q2, k+1);
+    r1 = comp_mod(bi, k+1);
+
+    /* do inner partial multiply */
+    r2 = comp_mod(partial_multiply(ctx, q3, bim, k+1, 0), k+1);
+    r = bi_subtract(ctx, r1, r2, NULL);
+
+    /* if (r >= m) r = r - m; */
+    if (bi_compare(r, bim) >= 0)
+    {
+        r = bi_subtract(ctx, r, bim, NULL);
+    }
+
+    return r;
+}
+#endif /* CONFIG_BIGINT_BARRETT */
+
+#ifdef CONFIG_BIGINT_SLIDING_WINDOW
+/*
+ * Work out g1, g3, g5, g7... etc for the sliding-window algorithm 
+ */
+static void precompute_slide_window(BI_CTX *ctx, int window, bigint *g1)
+{
+    int k = 1, i;
+    bigint *g2;
+
+    for (i = 0; i < window-1; i++)   /* compute 2^(window-1) */
+    {
+        k <<= 1;
+    }
+
+    ctx->g = (bigint **)malloc(k*sizeof(bigint *));
+    ctx->g[0] = bi_clone(ctx, g1);
+    bi_permanent(ctx->g[0]);
+    g2 = bi_residue(ctx, bi_square(ctx, ctx->g[0]));   /* g^2 */
+
+    for (i = 1; i < k; i++)
+    {
+        ctx->g[i] = bi_residue(ctx, bi_multiply(ctx, ctx->g[i-1], bi_copy(g2)));
+        bi_permanent(ctx->g[i]);
+    }
+
+    bi_free(ctx, g2);
+    ctx->window = k;
+}
+#endif
+
+/**
+ * @brief Perform a modular exponentiation.
+ *
+ * This function requires bi_set_mod() to have been called previously. This is 
+ * one of the optimisations used for performance.
+ * @param ctx [in]  The bigint session context.
+ * @param bi  [in]  The bigint on which to perform the mod power operation.
+ * @param biexp [in] The bigint exponent.
+ * @return The result of the mod exponentiation operation
+ * @see bi_set_mod().
+ */
+bigint *bi_mod_power(BI_CTX *ctx, bigint *bi, bigint *biexp)
+{
+    int i = find_max_exp_index(biexp), j, window_size = 1;
+    bigint *biR = int_to_bi(ctx, 1);
+
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+    uint8_t mod_offset = ctx->mod_offset;
+    if (!ctx->use_classical)
+    {
+        /* preconvert */
+        bi = bi_mont(ctx, 
+                bi_multiply(ctx, bi, ctx->bi_RR_mod_m[mod_offset]));    /* x' */
+        bi_free(ctx, biR);
+        biR = ctx->bi_R_mod_m[mod_offset];                              /* A */
+    }
+#endif
+
+    check(bi);
+    check(biexp);
+
+#ifdef CONFIG_BIGINT_SLIDING_WINDOW
+    for (j = i; j > 32; j /= 5) /* work out an optimum size */
+        window_size++;
+
+    /* work out the slide constants */
+    precompute_slide_window(ctx, window_size, bi);
+#else   /* just one constant */
+    ctx->g = (bigint **)malloc(sizeof(bigint *));
+    ctx->g[0] = bi_clone(ctx, bi);
+    ctx->window = 1;
+    bi_permanent(ctx->g[0]);
+#endif
+
+    /* if sliding-window is off, then only one bit will be done at a time and
+     * will reduce to standard left-to-right exponentiation */
+    do
+    {
+        if (exp_bit_is_one(biexp, i))
+        {
+            int l = i-window_size+1;
+            int part_exp = 0;
+
+            if (l < 0)  /* LSB of exponent will always be 1 */
+                l = 0;
+            else
+            {
+                while (exp_bit_is_one(biexp, l) == 0)
+                    l++;    /* go back up */
+            }
+
+            /* build up the section of the exponent */
+            for (j = i; j >= l; j--)
+            {
+                biR = bi_residue(ctx, bi_square(ctx, biR));
+                if (exp_bit_is_one(biexp, j))
+                    part_exp++;
+
+                if (j != l)
+                    part_exp <<= 1;
+            }
+
+            part_exp = (part_exp-1)/2;  /* adjust for array */
+            biR = bi_residue(ctx, bi_multiply(ctx, biR, ctx->g[part_exp]));
+            i = l-1;
+        }
+        else    /* square it */
+        {
+            biR = bi_residue(ctx, bi_square(ctx, biR));
+            i--;
+        }
+    } while (i >= 0);
+     
+    /* cleanup */
+    for (i = 0; i < ctx->window; i++)
+    {
+        bi_depermanent(ctx->g[i]);
+        bi_free(ctx, ctx->g[i]);
+    }
+
+    free(ctx->g);
+    bi_free(ctx, bi);
+    bi_free(ctx, biexp);
+#if defined CONFIG_BIGINT_MONTGOMERY
+    return ctx->use_classical ? biR : bi_mont(ctx, biR); /* convert back */
+#else /* CONFIG_BIGINT_CLASSICAL or CONFIG_BIGINT_BARRETT */
+    return biR;
+#endif
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * @brief Perform a modular exponentiation using a temporary modulus.
+ *
+ * We need this function to check the signatures of certificates. The modulus
+ * of this function is temporary as it's just used for authentication.
+ * @param ctx [in]  The bigint session context.
+ * @param bi  [in]  The bigint to perform the exp/mod.
+ * @param bim [in]  The temporary modulus.
+ * @param biexp [in] The bigint exponent.
+ * @return The result of the mod exponentiation operation
+ * @see bi_set_mod().
+ */
+bigint *bi_mod_power2(BI_CTX *ctx, bigint *bi, bigint *bim, bigint *biexp)
+{
+    bigint *biR, *tmp_biR;
+
+    /* Set up a temporary bigint context and transfer what we need between
+     * them. We need to do this since we want to keep the original modulus
+     * which is already in this context. This operation is only called when
+     * doing peer verification, and so is not expensive :-) */
+    BI_CTX *tmp_ctx = bi_initialize();
+    bi_set_mod(tmp_ctx, bi_clone(tmp_ctx, bim), BIGINT_M_OFFSET);
+    tmp_biR = bi_mod_power(tmp_ctx, 
+                bi_clone(tmp_ctx, bi), 
+                bi_clone(tmp_ctx, biexp));
+    biR = bi_clone(ctx, tmp_biR);
+    bi_free(tmp_ctx, tmp_biR);
+    bi_free_mod(tmp_ctx, BIGINT_M_OFFSET);
+    bi_terminate(tmp_ctx);
+
+    bi_free(ctx, bi);
+    bi_free(ctx, bim);
+    bi_free(ctx, biexp);
+    return biR;
+}
+#endif
+
+#ifdef CONFIG_BIGINT_CRT
+/**
+ * @brief Use the Chinese Remainder Theorem to quickly perform RSA decrypts.
+ *
+ * @param ctx [in]  The bigint session context.
+ * @param bi  [in]  The bigint to perform the exp/mod.
+ * @param dP [in] CRT's dP bigint
+ * @param dQ [in] CRT's dQ bigint
+ * @param p [in] CRT's p bigint
+ * @param q [in] CRT's q bigint
+ * @param qInv [in] CRT's qInv bigint
+ * @return The result of the CRT operation
+ */
+bigint *bi_crt(BI_CTX *ctx, bigint *bi,
+        bigint *dP, bigint *dQ,
+        bigint *p, bigint *q, bigint *qInv)
+{
+    bigint *m1, *m2, *h;
+
+    /* Montgomery has a condition the 0 < x, y < m and these products violate
+     * that condition. So disable Montgomery when using CRT */
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+    ctx->use_classical = 1;
+#endif
+    ctx->mod_offset = BIGINT_P_OFFSET;
+    m1 = bi_mod_power(ctx, bi_copy(bi), dP);
+
+    ctx->mod_offset = BIGINT_Q_OFFSET;
+    m2 = bi_mod_power(ctx, bi, dQ);
+
+    h = bi_subtract(ctx, bi_add(ctx, m1, p), bi_copy(m2), NULL);
+    h = bi_multiply(ctx, h, qInv);
+    ctx->mod_offset = BIGINT_P_OFFSET;
+    h = bi_residue(ctx, h);
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+    ctx->use_classical = 0;         /* reset for any further operation */
+#endif
+    return bi_add(ctx, m2, bi_multiply(ctx, q, h));
+}
+#endif
+/** @} */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h
new file mode 100644 (file)
index 0000000..2966a3e
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BIGINT_HEADER
+#define BIGINT_HEADER
+
+#include "crypto.h"
+
+BI_CTX *bi_initialize(void);
+void bi_terminate(BI_CTX *ctx);
+void bi_permanent(bigint *bi);
+void bi_depermanent(bigint *bi);
+void bi_clear_cache(BI_CTX *ctx);
+void bi_free(BI_CTX *ctx, bigint *bi);
+bigint *bi_copy(bigint *bi);
+bigint *bi_clone(BI_CTX *ctx, const bigint *bi);
+void bi_export(BI_CTX *ctx, bigint *bi, uint8_t *data, int size);
+bigint *bi_import(BI_CTX *ctx, const uint8_t *data, int len);
+bigint *int_to_bi(BI_CTX *ctx, comp i);
+
+/* the functions that actually do something interesting */
+bigint *bi_add(BI_CTX *ctx, bigint *bia, bigint *bib);
+bigint *bi_subtract(BI_CTX *ctx, bigint *bia, 
+        bigint *bib, int *is_negative);
+bigint *bi_divide(BI_CTX *ctx, bigint *bia, bigint *bim, int is_mod);
+bigint *bi_multiply(BI_CTX *ctx, bigint *bia, bigint *bib);
+bigint *bi_mod_power(BI_CTX *ctx, bigint *bi, bigint *biexp);
+bigint *bi_mod_power2(BI_CTX *ctx, bigint *bi, bigint *bim, bigint *biexp);
+int bi_compare(bigint *bia, bigint *bib);
+void bi_set_mod(BI_CTX *ctx, bigint *bim, int mod_offset);
+void bi_free_mod(BI_CTX *ctx, int mod_offset);
+
+#ifdef CONFIG_SSL_FULL_MODE
+void bi_print(const char *label, bigint *bi);
+bigint *bi_str_import(BI_CTX *ctx, const char *data);
+#endif
+
+/**
+ * @def bi_mod
+ * Find the residue of B. bi_set_mod() must be called before hand.
+ */
+#define bi_mod(A, B)      bi_divide(A, B, ctx->bi_mod[ctx->mod_offset], 1)
+
+/**
+ * bi_residue() is technically the same as bi_mod(), but it uses the
+ * appropriate reduction technique (which is bi_mod() when doing classical
+ * reduction).
+ */
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+#define bi_residue(A, B)         bi_mont(A, B)
+bigint *bi_mont(BI_CTX *ctx, bigint *bixy);
+#elif defined(CONFIG_BIGINT_BARRETT)
+#define bi_residue(A, B)         bi_barrett(A, B)
+bigint *bi_barrett(BI_CTX *ctx, bigint *bi);
+#else /* if defined(CONFIG_BIGINT_CLASSICAL) */
+#define bi_residue(A, B)         bi_mod(A, B)
+#endif
+
+#ifdef CONFIG_BIGINT_SQUARE
+bigint *bi_square(BI_CTX *ctx, bigint *bi);
+#else
+#define bi_square(A, B)     bi_multiply(A, bi_copy(B), B)
+#endif
+
+#ifdef CONFIG_BIGINT_CRT
+bigint *bi_crt(BI_CTX *ctx, bigint *bi,
+        bigint *dP, bigint *dQ,
+        bigint *p, bigint *q,
+        bigint *qInv);
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h
new file mode 100644 (file)
index 0000000..1483154
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BIGINT_IMPL_HEADER
+#define BIGINT_IMPL_HEADER
+
+/* Maintain a number of precomputed variables when doing reduction */
+#define BIGINT_M_OFFSET     0    /**< Normal modulo offset. */
+#ifdef CONFIG_BIGINT_CRT
+#define BIGINT_P_OFFSET     1    /**< p modulo offset. */
+#define BIGINT_Q_OFFSET     2    /**< q module offset. */
+#define BIGINT_NUM_MODS     3    /**< The number of modulus constants used. */
+#else
+#define BIGINT_NUM_MODS     1    
+#endif
+
+/* Architecture specific functions for big ints */
+#ifdef WIN32
+#define COMP_RADIX          4294967296i64         
+#define COMP_MAX            0xFFFFFFFFFFFFFFFFui64
+#else
+#define COMP_RADIX          4294967296ULL         /**< Max component + 1 */
+#define COMP_MAX            0xFFFFFFFFFFFFFFFFULL/**< (Max dbl comp -1) */
+#endif
+#define COMP_BIT_SIZE       32  /**< Number of bits in a component. */
+#define COMP_BYTE_SIZE      4   /**< Number of bytes in a component. */
+#define COMP_NUM_NIBBLES    8   /**< Used For diagnostics only. */
+
+typedef uint32_t comp;         /**< A single precision component. */
+typedef uint64_t long_comp;     /**< A double precision component. */
+typedef int64_t slong_comp;     /**< A signed double precision component. */
+
+/**
+ * @struct  _bigint
+ * @brief A big integer basic object
+ */
+struct _bigint
+{
+    struct _bigint* next;       /**< The next bigint in the cache. */
+    short size;                 /**< The number of components in this bigint. */
+    short max_comps;            /**< The heapsize allocated for this bigint */
+    int refs;                   /**< An internal reference count. */
+    comp* comps;                /**< A ptr to the actual component data */
+};
+
+typedef struct _bigint bigint;  /**< An alias for _bigint */
+
+/**
+ * Maintains the state of the cache, and a number of variables used in 
+ * reduction.
+ */
+typedef struct /**< A big integer "session" context. */
+{
+    bigint *active_list;                    /**< Bigints currently used. */
+    bigint *free_list;                      /**< Bigints not used. */
+    bigint *bi_radix;                       /**< The radix used. */
+    bigint *bi_mod[BIGINT_NUM_MODS];        /**< modulus */
+
+#if defined(CONFIG_BIGINT_MONTGOMERY)
+    bigint *bi_RR_mod_m[BIGINT_NUM_MODS];   /**< R^2 mod m */
+    bigint *bi_R_mod_m[BIGINT_NUM_MODS];    /**< R mod m */
+    comp N0_dash[BIGINT_NUM_MODS];
+#elif defined(CONFIG_BIGINT_BARRETT)
+    bigint *bi_mu[BIGINT_NUM_MODS];         /**< Storage for mu */
+#endif
+    bigint *bi_normalised_mod[BIGINT_NUM_MODS]; /**< Normalised mod storage. */
+    bigint **g;                 /**< Used by sliding-window. */
+    int window;                 /**< The size of the sliding window */
+    int active_count;           /**< Number of active bigints. */
+    int free_count;             /**< Number of free bigints. */
+
+#ifdef CONFIG_BIGINT_MONTGOMERY
+    uint8_t use_classical;      /**< Use classical reduction. */
+#endif
+    uint8_t mod_offset;         /**< The mod offset we are using */
+} BI_CTX;
+
+#ifndef WIN32
+#define max(a,b) ((a)>(b)?(a):(b))  /**< Find the maximum of 2 numbers. */
+#define min(a,b) ((a)<(b)?(a):(b))  /**< Find the minimum of 2 numbers. */
+#endif
+
+#define PERMANENT           0x7FFF55AA  /**< A magic number for permanents. */
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h
new file mode 100644 (file)
index 0000000..5c95f21
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file crypto.h
+ */
+
+#ifndef HEADER_CRYPTO_H
+#define HEADER_CRYPTO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "config.h"
+#include "os_port.h"
+#include "bigint_impl.h"
+#include "bigint.h"
+
+/* enable features based on a 'super-set' capbaility. */
+#if defined(CONFIG_SSL_FULL_MODE) 
+#define CONFIG_SSL_ENABLE_CLIENT
+#define CONFIG_SSL_CERT_VERIFICATION
+#elif defined(CONFIG_SSL_ENABLE_CLIENT)
+#define CONFIG_SSL_CERT_VERIFICATION
+#endif
+
+/**************************************************************************
+ * AES declarations 
+ **************************************************************************/
+
+#define AES_MAXROUNDS                  14
+#define AES_BLOCKSIZE           16
+#define AES_IV_SIZE             16
+
+typedef struct aes_key_st 
+{
+    uint16_t rounds;
+    uint16_t key_size;
+    uint32_t ks[(AES_MAXROUNDS+1)*8];
+    uint8_t iv[AES_IV_SIZE];
+} AES_CTX;
+
+typedef enum
+{
+    AES_MODE_128,
+    AES_MODE_256
+} AES_MODE;
+
+void AES_set_key(AES_CTX *ctx, const uint8_t *key, 
+        const uint8_t *iv, AES_MODE mode);
+void AES_cbc_encrypt(AES_CTX *ctx, const uint8_t *msg, 
+        uint8_t *out, int length);
+void AES_cbc_decrypt(AES_CTX *ks, const uint8_t *in, uint8_t *out, int length);
+void AES_convert_key(AES_CTX *ctx);
+
+/**************************************************************************
+ * RC4 declarations 
+ **************************************************************************/
+
+typedef struct 
+{
+    uint8_t x, y, m[256];
+} RC4_CTX;
+
+void RC4_setup(RC4_CTX *s, const uint8_t *key, int length);
+void RC4_crypt(RC4_CTX *s, const uint8_t *msg, uint8_t *data, int length);
+
+/**************************************************************************
+ * SHA1 declarations 
+ **************************************************************************/
+
+#define SHA1_SIZE   20
+
+/*
+ *  This structure will hold context information for the SHA-1
+ *  hashing operation
+ */
+typedef struct 
+{
+    uint32_t Intermediate_Hash[SHA1_SIZE/4]; /* Message Digest */
+    uint32_t Length_Low;            /* Message length in bits */
+    uint32_t Length_High;           /* Message length in bits */
+    uint16_t Message_Block_Index;   /* Index into message block array   */
+    uint8_t Message_Block[64];      /* 512-bit message blocks */
+} SHA1_CTX;
+
+void SHA1_Init(SHA1_CTX *);
+void SHA1_Update(SHA1_CTX *, const uint8_t * msg, int len);
+void SHA1_Final(uint8_t *digest, SHA1_CTX *);
+
+/**************************************************************************
+ * MD2 declarations 
+ **************************************************************************/
+
+#define MD2_SIZE 16
+
+typedef struct
+{
+    unsigned char cksum[16];    /* checksum of the data block */
+    unsigned char state[48];    /* intermediate digest state */
+    unsigned char buffer[16];   /* data block being processed */
+    int left;                   /* amount of data in buffer */
+} MD2_CTX;
+
+EXP_FUNC void STDCALL MD2_Init(MD2_CTX *ctx);
+EXP_FUNC void STDCALL MD2_Update(MD2_CTX *ctx, const uint8_t *input, int ilen);
+EXP_FUNC void STDCALL MD2_Final(uint8_t *digest, MD2_CTX *ctx);
+
+/**************************************************************************
+ * MD5 declarations 
+ **************************************************************************/
+
+#define MD5_SIZE    16
+
+typedef struct 
+{
+  uint32_t state[4];        /* state (ABCD) */
+  uint32_t count[2];        /* number of bits, modulo 2^64 (lsb first) */
+  uint8_t buffer[64];       /* input buffer */
+} MD5_CTX;
+
+EXP_FUNC void STDCALL MD5_Init(MD5_CTX *);
+EXP_FUNC void STDCALL MD5_Update(MD5_CTX *, const uint8_t *msg, int len);
+EXP_FUNC void STDCALL MD5_Final(uint8_t *digest, MD5_CTX *);
+
+/**************************************************************************
+ * HMAC declarations 
+ **************************************************************************/
+void hmac_md5(const uint8_t *msg, int length, const uint8_t *key, 
+        int key_len, uint8_t *digest);
+void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key, 
+        int key_len, uint8_t *digest);
+
+/**************************************************************************
+ * RSA declarations 
+ **************************************************************************/
+
+typedef struct 
+{
+    bigint *m;              /* modulus */
+    bigint *e;              /* public exponent */
+    bigint *d;              /* private exponent */
+#ifdef CONFIG_BIGINT_CRT
+    bigint *p;              /* p as in m = pq */
+    bigint *q;              /* q as in m = pq */
+    bigint *dP;             /* d mod (p-1) */
+    bigint *dQ;             /* d mod (q-1) */
+    bigint *qInv;           /* q^-1 mod p */
+#endif
+    int num_octets;
+    BI_CTX *bi_ctx;
+} RSA_CTX;
+
+void RSA_priv_key_new(RSA_CTX **rsa_ctx, 
+        const uint8_t *modulus, int mod_len,
+        const uint8_t *pub_exp, int pub_len,
+        const uint8_t *priv_exp, int priv_len
+#ifdef CONFIG_BIGINT_CRT
+      , const uint8_t *p, int p_len,
+        const uint8_t *q, int q_len,
+        const uint8_t *dP, int dP_len,
+        const uint8_t *dQ, int dQ_len,
+        const uint8_t *qInv, int qInv_len
+#endif
+        );
+void RSA_pub_key_new(RSA_CTX **rsa_ctx, 
+        const uint8_t *modulus, int mod_len,
+        const uint8_t *pub_exp, int pub_len);
+void RSA_free(RSA_CTX *ctx);
+int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint8_t *out_data,
+        int is_decryption);
+bigint *RSA_private(const RSA_CTX *c, bigint *bi_msg);
+#if defined(CONFIG_SSL_CERT_VERIFICATION) || defined(CONFIG_SSL_GENERATE_X509_CERT)
+bigint *RSA_sign_verify(BI_CTX *ctx, const uint8_t *sig, int sig_len,
+        bigint *modulus, bigint *pub_exp);
+bigint *RSA_public(const RSA_CTX * c, bigint *bi_msg);
+int RSA_encrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint16_t in_len, 
+        uint8_t *out_data, int is_signing);
+void RSA_print(const RSA_CTX *ctx);
+#endif
+
+/**************************************************************************
+ * RNG declarations 
+ **************************************************************************/
+EXP_FUNC void STDCALL RNG_initialize(const uint8_t *seed_buf, int size);
+EXP_FUNC void STDCALL RNG_terminate(void);
+EXP_FUNC void STDCALL get_random(int num_rand_bytes, uint8_t *rand_data);
+void get_random_NZ(int num_rand_bytes, uint8_t *rand_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c
new file mode 100644 (file)
index 0000000..59b72ec
--- /dev/null
@@ -0,0 +1,357 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Some misc. routines to help things out
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include "crypto_misc.h"
+#ifdef CONFIG_WIN32_USE_CRYPTO_LIB
+#include "wincrypt.h"
+#endif
+
+#ifndef WIN32
+static int rng_fd = -1;
+#elif defined(CONFIG_WIN32_USE_CRYPTO_LIB)
+static HCRYPTPROV gCryptProv;
+#endif
+
+#if (!defined(CONFIG_USE_DEV_URANDOM) && !defined(CONFIG_WIN32_USE_CRYPTO_LIB))
+static uint64_t rng_num;
+#endif
+
+static int rng_ref_count;
+const char * const unsupported_str = "Error: Feature not supported\n";
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+/** 
+ * Retrieve a file and put it into memory
+ * @return The size of the file, or -1 on failure.
+ */
+int get_file(const char *filename, uint8_t **buf)
+{
+    int total_bytes = 0;
+    int bytes_read = 0; 
+    int filesize;
+    FILE *stream = fopen(filename, "rb");
+
+    if (stream == NULL)
+    {
+#ifdef CONFIG_SSL_FULL_MODE         
+        printf("file '%s' does not exist\n", filename); TTY_FLUSH();
+#endif
+        return -1;
+    }
+
+    /* Win CE doesn't support stat() */
+    fseek(stream, 0, SEEK_END);
+    filesize = ftell(stream);
+    *buf = (uint8_t *)malloc(filesize);
+    fseek(stream, 0, SEEK_SET);
+
+    do
+    {
+        bytes_read = fread(*buf+total_bytes, 1, filesize-total_bytes, stream);
+        total_bytes += bytes_read;
+    } while (total_bytes < filesize && bytes_read > 0);
+    
+    fclose(stream);
+    return filesize;
+}
+#endif
+
+/**
+ * Initialise the Random Number Generator engine.
+ * - On Win32 use the platform SDK's crypto engine.
+ * - On Linux use /dev/urandom
+ * - If none of these work then use a custom RNG.
+ */
+EXP_FUNC void STDCALL RNG_initialize(const uint8_t *seed_buf, int size)
+{
+    if (rng_ref_count == 0)
+    {
+#if !defined(WIN32) && defined(CONFIG_USE_DEV_URANDOM)
+        rng_fd = ax_open("/dev/urandom", O_RDONLY);
+#elif defined(WIN32) && defined(CONFIG_WIN32_USE_CRYPTO_LIB)
+        if (!CryptAcquireContext(&gCryptProv, 
+                          NULL, NULL, PROV_RSA_FULL, 0))
+        {
+            if (GetLastError() == NTE_BAD_KEYSET &&
+                    !CryptAcquireContext(&gCryptProv, 
+                           NULL, 
+                           NULL, 
+                           PROV_RSA_FULL, 
+                           CRYPT_NEWKEYSET))
+            {
+                printf("CryptoLib: %x\n", unsupported_str, GetLastError());
+                exit(1);
+            }
+        }
+#else   
+        /* help seed with the user's private key - this is a number that 
+           should be hard to find, due to the fact that it relies on knowing 
+           the private key */
+        int i;  
+
+        for (i = 0; i < size/(int)sizeof(uint64_t); i++)
+            rng_num ^= *((uint64_t *)&seed_buf[i*sizeof(uint64_t)]);
+
+        srand((long)&seed_buf);  /* use the stack ptr as another rnd seed */
+#endif
+    }
+
+    rng_ref_count++;
+}
+
+/**
+ * Terminate the RNG engine.
+ */
+EXP_FUNC void STDCALL RNG_terminate(void)
+{
+    if (--rng_ref_count == 0)
+    {
+#ifndef WIN32
+        close(rng_fd);
+#elif defined(CONFIG_WIN32_USE_CRYPTO_LIB)
+        CryptReleaseContext(gCryptProv, 0);
+#endif
+    }
+}
+
+/**
+ * Set a series of bytes with a random number. Individual bytes can be 0
+ */
+EXP_FUNC void STDCALL get_random(int num_rand_bytes, uint8_t *rand_data)
+{   
+#if !defined(WIN32) && defined(CONFIG_USE_DEV_URANDOM)
+    /* use the Linux default */
+    read(rng_fd, rand_data, num_rand_bytes);    /* read from /dev/urandom */
+#elif defined(WIN32) && defined(CONFIG_WIN32_USE_CRYPTO_LIB)
+    /* use Microsoft Crypto Libraries */
+    CryptGenRandom(gCryptProv, num_rand_bytes, rand_data);
+#else   /* nothing else to use, so use a custom RNG */
+    /* The method we use when we've got nothing better. Use RC4, time 
+       and a couple of random seeds to generate a random sequence */
+    RC4_CTX rng_ctx;
+    struct timeval tv;
+    uint64_t big_num1, big_num2;
+
+    gettimeofday(&tv, NULL);    /* yes I know we shouldn't do this */
+
+    /* all numbers by themselves are pretty simple, but combined should 
+     * be a challenge */
+    big_num1 = (uint64_t)tv.tv_sec*(tv.tv_usec+1); 
+    big_num2 = (uint64_t)rand()*big_num1;
+    big_num1 ^= rng_num;
+
+    memcpy(rand_data, &big_num1, sizeof(uint64_t));
+    if (num_rand_bytes > sizeof(uint64_t))
+        memcpy(&rand_data[8], &big_num2, sizeof(uint64_t));
+
+    if (num_rand_bytes > 16)
+    {
+        /* clear rest of data */
+        memset(&rand_data[16], 0, num_rand_bytes-16); 
+    }
+
+    RC4_setup(&rng_ctx, rand_data, 16); /* use as a key */
+    RC4_crypt(&rng_ctx, rand_data, rand_data, num_rand_bytes);
+    
+    /* use last 8 bytes for next time */
+    memcpy(&rng_num, &rand_data[num_rand_bytes-8], sizeof(uint64_t));    
+#endif
+}
+
+/**
+ * Set a series of bytes with a random number. Individual bytes are not zero.
+ */
+void get_random_NZ(int num_rand_bytes, uint8_t *rand_data)
+{
+    int i;
+    get_random(num_rand_bytes, rand_data);
+
+    for (i = 0; i < num_rand_bytes; i++)
+    {
+        while (rand_data[i] == 0)  /* can't be 0 */
+            rand_data[i] = (uint8_t)(rand());
+    }
+}
+
+/**
+ * Some useful diagnostic routines
+ */
+#if defined(CONFIG_SSL_FULL_MODE) || defined(CONFIG_DEBUG)
+int hex_finish;
+int hex_index;
+
+static void print_hex_init(int finish)
+{
+    hex_finish = finish;
+    hex_index = 0;
+}
+
+static void print_hex(uint8_t hex)
+{
+    static int column;
+
+    if (hex_index == 0)
+    {
+        column = 0;
+    }
+
+    printf("%02x ", hex);
+    if (++column == 8)
+    {
+        printf(": ");
+    }
+    else if (column >= 16)
+    {
+        printf("\n");
+        column = 0;
+    }
+
+    if (++hex_index >= hex_finish && column > 0)
+    {
+        printf("\n");
+    }
+}
+
+/**
+ * Spit out a blob of data for diagnostics. The data is is a nice column format
+ * for easy reading.
+ *
+ * @param format   [in]    The string (with possible embedded format characters)
+ * @param size     [in]    The number of numbers to print
+ * @param data     [in]    The start of data to use
+ * @param ...      [in]    Any additional arguments
+ */
+EXP_FUNC void STDCALL print_blob(const char *format, 
+        const uint8_t *data, int size, ...)
+{
+    int i;
+    char tmp[80];
+    va_list(ap);
+
+    va_start(ap, size);
+    sprintf(tmp, "%s\n", format);
+    vprintf(tmp, ap);
+    print_hex_init(size);
+    for (i = 0; i < size; i++)
+    {
+        print_hex(data[i]);
+    }
+
+    va_end(ap);
+    TTY_FLUSH();
+}
+#elif defined(WIN32)
+/* VC6.0 doesn't handle variadic macros */
+EXP_FUNC void STDCALL print_blob(const char *format, const unsigned char *data,
+        int size, ...) {}
+#endif
+
+#if defined(CONFIG_SSL_HAS_PEM) || defined(CONFIG_HTTP_HAS_AUTHORIZATION)
+/* base64 to binary lookup table */
+static const uint8_t map[128] =
+{
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255,  62, 255, 255, 255,  63,
+    52,  53,  54,  55,  56,  57,  58,  59,  60,  61, 255, 255,
+    255, 254, 255, 255, 255,   0,   1,   2,   3,   4,   5,   6,
+    7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
+    19,  20,  21,  22,  23,  24,  25, 255, 255, 255, 255, 255,
+    255,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
+    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
+    49,  50,  51, 255, 255, 255, 255, 255
+};
+
+EXP_FUNC int STDCALL base64_decode(const char *in, int len,
+                    uint8_t *out, int *outlen)
+{
+    int g, t, x, y, z;
+    uint8_t c;
+    int ret = -1;
+
+    g = 3;
+    for (x = y = z = t = 0; x < len; x++)
+    {
+        if ((c = map[in[x]&0x7F]) == 0xff)
+            continue;
+
+        if (c == 254)   /* this is the end... */
+        {
+            c = 0;
+
+            if (--g < 0)
+                goto error;
+        }
+        else if (g != 3) /* only allow = at end */
+            goto error;
+
+        t = (t<<6) | c;
+
+        if (++y == 4)
+        {
+            out[z++] = (uint8_t)((t>>16)&255);
+
+            if (g > 1)
+                out[z++] = (uint8_t)((t>>8)&255);
+
+            if (g > 2)
+                out[z++] = (uint8_t)(t&255);
+
+            y = t = 0;
+        }
+    }
+
+    if (y != 0)
+        goto error;
+
+    if (outlen)
+        *outlen = z;
+    ret = 0;
+
+error:
+#ifdef CONFIG_SSL_FULL_MODE
+    if (ret < 0)
+        printf("Error: Invalid base64\n"); TTY_FLUSH();
+#endif
+    TTY_FLUSH();
+    return ret;
+
+}
+#endif
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c
new file mode 100644 (file)
index 0000000..9199ff2
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * HMAC implementation - This code was originally taken from RFC2104
+ */
+
+#include <string.h>
+#include "crypto.h"
+
+/**
+ * Perform HMAC-MD5
+ */
+void hmac_md5(const uint8_t *msg, int length, const uint8_t *key, 
+        int key_len, uint8_t *digest)
+{
+    MD5_CTX context;
+    uint8_t k_ipad[64];
+    uint8_t k_opad[64];
+    int i;
+
+    memset(k_ipad, 0, sizeof k_ipad);
+    memset(k_opad, 0, sizeof k_opad);
+    memcpy(k_ipad, key, key_len);
+    memcpy(k_opad, key, key_len);
+
+    for (i = 0; i < 64; i++) 
+    {
+        k_ipad[i] ^= 0x36;
+        k_opad[i] ^= 0x5c;
+    }
+
+    MD5_Init(&context);
+    MD5_Update(&context, k_ipad, 64);
+    MD5_Update(&context, msg, length);
+    MD5_Final(digest, &context);
+    MD5_Init(&context);
+    MD5_Update(&context, k_opad, 64);
+    MD5_Update(&context, digest, MD5_SIZE);
+    MD5_Final(digest, &context);
+}
+
+/**
+ * Perform HMAC-SHA1
+ */
+void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key, 
+        int key_len, uint8_t *digest)
+{
+    SHA1_CTX context;
+    uint8_t k_ipad[64];
+    uint8_t k_opad[64];
+    int i;
+
+    memset(k_ipad, 0, sizeof k_ipad);
+    memset(k_opad, 0, sizeof k_opad);
+    memcpy(k_ipad, key, key_len);
+    memcpy(k_opad, key, key_len);
+
+    for (i = 0; i < 64; i++) 
+    {
+        k_ipad[i] ^= 0x36;
+        k_opad[i] ^= 0x5c;
+    }
+
+    SHA1_Init(&context);
+    SHA1_Update(&context, k_ipad, 64);
+    SHA1_Update(&context, msg, length);
+    SHA1_Final(digest, &context);
+    SHA1_Init(&context);
+    SHA1_Update(&context, k_opad, 64);
+    SHA1_Update(&context, digest, SHA1_SIZE);
+    SHA1_Final(digest, &context);
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c
new file mode 100644 (file)
index 0000000..bfcbd24
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ *  RFC 1115/1319 compliant MD2 implementation
+ *  The MD2 algorithm was designed by Ron Rivest in 1989.
+ *
+ *  http://www.ietf.org/rfc/rfc1115.txt
+ *  http://www.ietf.org/rfc/rfc1319.txt
+ */
+
+#include <string.h>
+#include <stdio.h>
+
+#include "crypto.h"
+
+/**
+ * This code is only here to enable the verification of Verisign root
+ * certificates. So only enable it for verification mode.
+ */
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+
+static const uint8_t PI_SUBST[256] =
+{
+    0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36,
+    0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 0x62, 0xA7, 0x05, 0xF3,
+    0xC0, 0xC7, 0x73, 0x8C, 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C,
+    0x82, 0xCA, 0x1E, 0x9B, 0x57, 0x3C, 0xFD, 0xD4, 0xE0, 0x16,
+    0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12, 0xBE, 0x4E,
+    0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E,
+    0xBB, 0x2F, 0xEE, 0x7A, 0xA9, 0x68, 0x79, 0x91, 0x15, 0xB2,
+    0x07, 0x3F, 0x94, 0xC2, 0x10, 0x89, 0x0B, 0x22, 0x5F, 0x21,
+    0x80, 0x7F, 0x5D, 0x9A, 0x5A, 0x90, 0x32, 0x27, 0x35, 0x3E,
+    0xCC, 0xE7, 0xBF, 0xF7, 0x97, 0x03, 0xFF, 0x19, 0x30, 0xB3,
+    0x48, 0xA5, 0xB5, 0xD1, 0xD7, 0x5E, 0x92, 0x2A, 0xAC, 0x56,
+    0xAA, 0xC6, 0x4F, 0xB8, 0x38, 0xD2, 0x96, 0xA4, 0x7D, 0xB6,
+    0x76, 0xFC, 0x6B, 0xE2, 0x9C, 0x74, 0x04, 0xF1, 0x45, 0x9D,
+    0x70, 0x59, 0x64, 0x71, 0x87, 0x20, 0x86, 0x5B, 0xCF, 0x65,
+    0xE6, 0x2D, 0xA8, 0x02, 0x1B, 0x60, 0x25, 0xAD, 0xAE, 0xB0,
+    0xB9, 0xF6, 0x1C, 0x46, 0x61, 0x69, 0x34, 0x40, 0x7E, 0x0F,
+    0x55, 0x47, 0xA3, 0x23, 0xDD, 0x51, 0xAF, 0x3A, 0xC3, 0x5C,
+    0xF9, 0xCE, 0xBA, 0xC5, 0xEA, 0x26, 0x2C, 0x53, 0x0D, 0x6E,
+    0x85, 0x28, 0x84, 0x09, 0xD3, 0xDF, 0xCD, 0xF4, 0x41, 0x81,
+    0x4D, 0x52, 0x6A, 0xDC, 0x37, 0xC8, 0x6C, 0xC1, 0xAB, 0xFA,
+    0x24, 0xE1, 0x7B, 0x08, 0x0C, 0xBD, 0xB1, 0x4A, 0x78, 0x88,
+    0x95, 0x8B, 0xE3, 0x63, 0xE8, 0x6D, 0xE9, 0xCB, 0xD5, 0xFE,
+    0x3B, 0x00, 0x1D, 0x39, 0xF2, 0xEF, 0xB7, 0x0E, 0x66, 0x58,
+    0xD0, 0xE4, 0xA6, 0x77, 0x72, 0xF8, 0xEB, 0x75, 0x4B, 0x0A,
+    0x31, 0x44, 0x50, 0xB4, 0x8F, 0xED, 0x1F, 0x1A, 0xDB, 0x99,
+    0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14
+};
+
+/*
+ * MD2 context setup
+ */
+EXP_FUNC void STDCALL MD2_Init(MD2_CTX *ctx)
+{
+    memset(ctx, 0, sizeof *ctx);
+}
+
+static void md2_process(MD2_CTX *ctx)
+{
+    int i, j;
+    uint8_t t = 0;
+
+    for (i = 0; i < 16; i++)
+    {
+        ctx->state[i + 16] = ctx->buffer[i];
+        ctx->state[i + 32] = ctx->buffer[i] ^ ctx->state[i];
+    }
+
+    for (i = 0; i < 18; i++)
+    {
+        for (j = 0; j < 48; j++)
+            t = (ctx->state[j] ^= PI_SUBST[t]);
+
+        t = (t + i) & 0xFF;
+    }
+
+    t = ctx->cksum[15];
+
+    for (i = 0; i < 16; i++)
+        t = (ctx->cksum[i] ^= PI_SUBST[ctx->buffer[i] ^ t]);
+}
+
+/*
+ * MD2 process buffer
+ */
+EXP_FUNC void STDCALL MD2_Update(MD2_CTX *ctx, const uint8_t *input, int ilen)
+{
+    int fill;
+
+    while (ilen > 0)
+    {
+        if (ctx->left + ilen > 16)
+            fill = 16 - ctx->left;
+        else
+            fill = ilen;
+
+        memcpy(ctx->buffer + ctx->left, input, fill);
+
+        ctx->left += fill;
+        input += fill;
+        ilen  -= fill;
+
+        if (ctx->left == 16)
+        {
+            ctx->left = 0;
+            md2_process(ctx);
+        }
+    }
+}
+
+/*
+ * MD2 final digest
+ */
+EXP_FUNC void STDCALL MD2_Final(uint8_t *output, MD2_CTX *ctx)
+{
+    int i;
+    uint8_t x;
+
+    x = (uint8_t)(16 - ctx->left);
+
+    for (i = ctx->left; i < 16; i++)
+        ctx->buffer[i] = x;
+
+    md2_process(ctx);
+
+    memcpy(ctx->buffer, ctx->cksum, 16);
+    md2_process(ctx);
+
+    memcpy(output, ctx->state, 16);
+}
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c
new file mode 100644 (file)
index 0000000..b4f86ca
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * This file implements the MD5 algorithm as defined in RFC1321
+ */
+
+#include <string.h>
+#include "crypto.h"
+
+/* Constants for MD5Transform routine.
+ */
+#define S11 7
+#define S12 12
+#define S13 17
+#define S14 22
+#define S21 5
+#define S22 9
+#define S23 14
+#define S24 20
+#define S31 4
+#define S32 11
+#define S33 16
+#define S34 23
+#define S41 6
+#define S42 10
+#define S43 15
+#define S44 21
+
+/* ----- static functions ----- */
+static void MD5Transform(uint32_t state[4], const uint8_t block[64]);
+static void Encode(uint8_t *output, uint32_t *input, uint32_t len);
+static void Decode(uint32_t *output, const uint8_t *input, uint32_t len);
+
+static const uint8_t PADDING[64] = 
+{
+    0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* F, G, H and I are basic MD5 functions.
+ */
+#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
+#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define I(x, y, z) ((y) ^ ((x) | (~z)))
+
+/* ROTATE_LEFT rotates x left n bits.  */
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+
+/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
+   Rotation is separate from addition to prevent recomputation.  */
+#define FF(a, b, c, d, x, s, ac) { \
+    (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \
+    (a) = ROTATE_LEFT ((a), (s)); \
+    (a) += (b); \
+  }
+#define GG(a, b, c, d, x, s, ac) { \
+    (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \
+    (a) = ROTATE_LEFT ((a), (s)); \
+    (a) += (b); \
+  }
+#define HH(a, b, c, d, x, s, ac) { \
+    (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \
+    (a) = ROTATE_LEFT ((a), (s)); \
+    (a) += (b); \
+  }
+#define II(a, b, c, d, x, s, ac) { \
+    (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \
+    (a) = ROTATE_LEFT ((a), (s)); \
+    (a) += (b); \
+  }
+
+/**
+ * MD5 initialization - begins an MD5 operation, writing a new ctx.
+ */
+EXP_FUNC void STDCALL MD5_Init(MD5_CTX *ctx)
+{
+    ctx->count[0] = ctx->count[1] = 0;
+
+    /* Load magic initialization constants.
+     */
+    ctx->state[0] = 0x67452301;
+    ctx->state[1] = 0xefcdab89;
+    ctx->state[2] = 0x98badcfe;
+    ctx->state[3] = 0x10325476;
+}
+
+/**
+ * Accepts an array of octets as the next portion of the message.
+ */
+EXP_FUNC void STDCALL MD5_Update(MD5_CTX *ctx, const uint8_t * msg, int len)
+{
+    uint32_t x;
+    int i, partLen;
+
+    /* Compute number of bytes mod 64 */
+    x = (uint32_t)((ctx->count[0] >> 3) & 0x3F);
+
+    /* Update number of bits */
+    if ((ctx->count[0] += ((uint32_t)len << 3)) < ((uint32_t)len << 3))
+        ctx->count[1]++;
+    ctx->count[1] += ((uint32_t)len >> 29);
+
+    partLen = 64 - x;
+
+    /* Transform as many times as possible.  */
+    if (len >= partLen) 
+    {
+        memcpy(&ctx->buffer[x], msg, partLen);
+        MD5Transform(ctx->state, ctx->buffer);
+
+        for (i = partLen; i + 63 < len; i += 64)
+            MD5Transform(ctx->state, &msg[i]);
+
+        x = 0;
+    }
+    else
+        i = 0;
+
+    /* Buffer remaining input */
+    memcpy(&ctx->buffer[x], &msg[i], len-i);
+}
+
+/**
+ * Return the 128-bit message digest into the user's array
+ */
+EXP_FUNC void STDCALL MD5_Final(uint8_t *digest, MD5_CTX *ctx)
+{
+    uint8_t bits[8];
+    uint32_t x, padLen;
+
+    /* Save number of bits */
+    Encode(bits, ctx->count, 8);
+
+    /* Pad out to 56 mod 64.
+     */
+    x = (uint32_t)((ctx->count[0] >> 3) & 0x3f);
+    padLen = (x < 56) ? (56 - x) : (120 - x);
+    MD5_Update(ctx, PADDING, padLen);
+
+    /* Append length (before padding) */
+    MD5_Update(ctx, bits, 8);
+
+    /* Store state in digest */
+    Encode(digest, ctx->state, MD5_SIZE);
+}
+
+/**
+ * MD5 basic transformation. Transforms state based on block.
+ */
+static void MD5Transform(uint32_t state[4], const uint8_t block[64])
+{
+    uint32_t a = state[0], b = state[1], c = state[2], 
+             d = state[3], x[MD5_SIZE];
+
+    Decode(x, block, 64);
+
+    /* Round 1 */
+    FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
+    FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
+    FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
+    FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
+    FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
+    FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
+    FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
+    FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
+    FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
+    FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
+    FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
+    FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
+    FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
+    FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
+    FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
+    FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
+
+    /* Round 2 */
+    GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
+    GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
+    GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
+    GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
+    GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
+    GG (d, a, b, c, x[10], S22,  0x2441453); /* 22 */
+    GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
+    GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
+    GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
+    GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
+    GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
+    GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
+    GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
+    GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
+    GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
+    GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
+
+    /* Round 3 */
+    HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
+    HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
+    HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
+    HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
+    HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
+    HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
+    HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
+    HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
+    HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
+    HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
+    HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
+    HH (b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
+    HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
+    HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
+    HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
+    HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
+
+    /* Round 4 */
+    II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
+    II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
+    II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
+    II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
+    II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
+    II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
+    II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
+    II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
+    II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
+    II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
+    II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
+    II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
+    II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
+    II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
+    II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
+    II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
+
+    state[0] += a;
+    state[1] += b;
+    state[2] += c;
+    state[3] += d;
+}
+
+/**
+ * Encodes input (uint32_t) into output (uint8_t). Assumes len is
+ *   a multiple of 4.
+ */
+static void Encode(uint8_t *output, uint32_t *input, uint32_t len)
+{
+    uint32_t i, j;
+
+    for (i = 0, j = 0; j < len; i++, j += 4) 
+    {
+        output[j] = (uint8_t)(input[i] & 0xff);
+        output[j+1] = (uint8_t)((input[i] >> 8) & 0xff);
+        output[j+2] = (uint8_t)((input[i] >> 16) & 0xff);
+        output[j+3] = (uint8_t)((input[i] >> 24) & 0xff);
+    }
+}
+
+/**
+ *  Decodes input (uint8_t) into output (uint32_t). Assumes len is
+ *   a multiple of 4.
+ */
+static void Decode(uint32_t *output, const uint8_t *input, uint32_t len)
+{
+    uint32_t i, j;
+
+    for (i = 0, j = 0; j < len; i++, j += 4)
+        output[i] = ((uint32_t)input[j]) | (((uint32_t)input[j+1]) << 8) |
+            (((uint32_t)input[j+2]) << 16) | (((uint32_t)input[j+3]) << 24);
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c
new file mode 100644 (file)
index 0000000..57136b8
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * An implementation of the RC4/ARC4 algorithm.
+ * Originally written by Christophe Devine.
+ */
+
+#include <string.h>
+#include "crypto.h"
+
+/**
+ * Get ready for an encrypt/decrypt operation
+ */
+void RC4_setup(RC4_CTX *ctx, const uint8_t *key, int length)
+{
+    int i, j = 0, k = 0, a;
+    uint8_t *m;
+
+    ctx->x = 0;
+    ctx->y = 0;
+    m = ctx->m;
+
+    for (i = 0; i < 256; i++)
+        m[i] = i;
+
+    for (i = 0; i < 256; i++)
+    {
+        a = m[i];
+        j = (uint8_t)(j + a + key[k]);
+        m[i] = m[j]; 
+        m[j] = a;
+
+        if (++k >= length) 
+            k = 0;
+    }
+}
+
+/**
+ * Perform the encrypt/decrypt operation (can use it for either since
+ * this is a stream cipher).
+ */
+void RC4_crypt(RC4_CTX *ctx, const uint8_t *msg, uint8_t *out, int length)
+{ 
+    int i;
+    uint8_t *m, x, y, a, b;
+    out = (uint8_t *)msg; 
+
+    x = ctx->x;
+    y = ctx->y;
+    m = ctx->m;
+
+    for (i = 0; i < length; i++)
+    {
+        a = m[++x];
+        y += a;
+        m[x] = b = m[y];
+        m[y] = a;
+        out[i] ^= m[(uint8_t)(a + b)];
+    }
+
+    ctx->x = x;
+    ctx->y = y;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c
new file mode 100644 (file)
index 0000000..31627bb
--- /dev/null
@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Implements the RSA public encryption algorithm. Uses the bigint library to
+ * perform its calculations.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <stdlib.h>
+#include "crypto.h"
+
+void RSA_priv_key_new(RSA_CTX **ctx, 
+        const uint8_t *modulus, int mod_len,
+        const uint8_t *pub_exp, int pub_len,
+        const uint8_t *priv_exp, int priv_len
+#if CONFIG_BIGINT_CRT
+      , const uint8_t *p, int p_len,
+        const uint8_t *q, int q_len,
+        const uint8_t *dP, int dP_len,
+        const uint8_t *dQ, int dQ_len,
+        const uint8_t *qInv, int qInv_len
+#endif
+    )
+{
+    RSA_CTX *rsa_ctx;
+    BI_CTX *bi_ctx;
+    RSA_pub_key_new(ctx, modulus, mod_len, pub_exp, pub_len);
+    rsa_ctx = *ctx;
+    bi_ctx = rsa_ctx->bi_ctx;
+    rsa_ctx->d = bi_import(bi_ctx, priv_exp, priv_len);
+    bi_permanent(rsa_ctx->d);
+
+#ifdef CONFIG_BIGINT_CRT
+    rsa_ctx->p = bi_import(bi_ctx, p, p_len);
+    rsa_ctx->q = bi_import(bi_ctx, q, q_len);
+    rsa_ctx->dP = bi_import(bi_ctx, dP, dP_len);
+    rsa_ctx->dQ = bi_import(bi_ctx, dQ, dQ_len);
+    rsa_ctx->qInv = bi_import(bi_ctx, qInv, qInv_len);
+    bi_permanent(rsa_ctx->dP);
+    bi_permanent(rsa_ctx->dQ);
+    bi_permanent(rsa_ctx->qInv);
+    bi_set_mod(bi_ctx, rsa_ctx->p, BIGINT_P_OFFSET);
+    bi_set_mod(bi_ctx, rsa_ctx->q, BIGINT_Q_OFFSET);
+#endif
+}
+
+void RSA_pub_key_new(RSA_CTX **ctx, 
+        const uint8_t *modulus, int mod_len,
+        const uint8_t *pub_exp, int pub_len)
+{
+    RSA_CTX *rsa_ctx;
+    BI_CTX *bi_ctx;
+
+    if (*ctx)   /* if we load multiple certs, dump the old one */
+        RSA_free(*ctx);
+
+    bi_ctx = bi_initialize();
+    *ctx = (RSA_CTX *)calloc(1, sizeof(RSA_CTX));
+    rsa_ctx = *ctx;
+    rsa_ctx->bi_ctx = bi_ctx;
+    rsa_ctx->num_octets = (mod_len & 0xFFF0);
+    rsa_ctx->m = bi_import(bi_ctx, modulus, mod_len);
+    bi_set_mod(bi_ctx, rsa_ctx->m, BIGINT_M_OFFSET);
+    rsa_ctx->e = bi_import(bi_ctx, pub_exp, pub_len);
+    bi_permanent(rsa_ctx->e);
+}
+
+/**
+ * Free up any RSA context resources.
+ */
+void RSA_free(RSA_CTX *rsa_ctx)
+{
+    BI_CTX *bi_ctx;
+    if (rsa_ctx == NULL)                /* deal with ptrs that are null */
+        return;
+
+    bi_ctx = rsa_ctx->bi_ctx;
+
+    bi_depermanent(rsa_ctx->e);
+    bi_free(bi_ctx, rsa_ctx->e);
+    bi_free_mod(rsa_ctx->bi_ctx, BIGINT_M_OFFSET);
+
+    if (rsa_ctx->d)
+    {
+        bi_depermanent(rsa_ctx->d);
+        bi_free(bi_ctx, rsa_ctx->d);
+#ifdef CONFIG_BIGINT_CRT
+        bi_depermanent(rsa_ctx->dP);
+        bi_depermanent(rsa_ctx->dQ);
+        bi_depermanent(rsa_ctx->qInv);
+        bi_free(bi_ctx, rsa_ctx->dP);
+        bi_free(bi_ctx, rsa_ctx->dQ);
+        bi_free(bi_ctx, rsa_ctx->qInv);
+        bi_free_mod(rsa_ctx->bi_ctx, BIGINT_P_OFFSET);
+        bi_free_mod(rsa_ctx->bi_ctx, BIGINT_Q_OFFSET);
+#endif
+    }
+
+    bi_terminate(bi_ctx);
+    free(rsa_ctx);
+}
+
+/**
+ * @brief Use PKCS1.5 for decryption/verification.
+ * @param ctx [in] The context
+ * @param in_data [in] The data to encrypt (must be < modulus size-11)
+ * @param out_data [out] The encrypted data.
+ * @param is_decryption [in] Decryption or verify operation.
+ * @return  The number of bytes that were originally encrypted. -1 on error.
+ * @see http://www.rsasecurity.com/rsalabs/node.asp?id=2125
+ */
+int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, 
+                            uint8_t *out_data, int is_decryption)
+{
+    const int byte_size = ctx->num_octets;
+    int i, size;
+    bigint *decrypted_bi, *dat_bi;
+    uint8_t *block = (uint8_t *)alloca(byte_size);
+
+    memset(out_data, 0, byte_size); /* initialise */
+
+    /* decrypt */
+    dat_bi = bi_import(ctx->bi_ctx, in_data, byte_size);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    decrypted_bi = is_decryption ?  /* decrypt or verify? */
+            RSA_private(ctx, dat_bi) : RSA_public(ctx, dat_bi);
+#else   /* always a decryption */
+    decrypted_bi = RSA_private(ctx, dat_bi);
+#endif
+
+    /* convert to a normal block */
+    bi_export(ctx->bi_ctx, decrypted_bi, block, byte_size);
+
+    i = 10; /* start at the first possible non-padded byte */
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    if (is_decryption == 0) /* PKCS1.5 signing pads with "0xff"s */
+    {
+        while (block[i++] == 0xff && i < byte_size);
+
+        if (block[i-2] != 0xff)
+            i = byte_size;     /*ensure size is 0 */   
+    }
+    else                    /* PKCS1.5 encryption padding is random */
+#endif
+    {
+        while (block[i++] && i < byte_size);
+    }
+    size = byte_size - i;
+
+    /* get only the bit we want */
+    if (size > 0)
+        memcpy(out_data, &block[i], size);
+    
+    return size ? size : -1;
+}
+
+/**
+ * Performs m = c^d mod n
+ */
+bigint *RSA_private(const RSA_CTX *c, bigint *bi_msg)
+{
+#ifdef CONFIG_BIGINT_CRT
+    return bi_crt(c->bi_ctx, bi_msg, c->dP, c->dQ, c->p, c->q, c->qInv);
+#else
+    BI_CTX *ctx = c->bi_ctx;
+    ctx->mod_offset = BIGINT_M_OFFSET;
+    return bi_mod_power(ctx, bi_msg, c->d);
+#endif
+}
+
+#ifdef CONFIG_SSL_FULL_MODE
+/**
+ * Used for diagnostics.
+ */
+void RSA_print(const RSA_CTX *rsa_ctx) 
+{
+    if (rsa_ctx == NULL)
+        return;
+
+    printf("-----------------   RSA DEBUG   ----------------\n");
+    printf("Size:\t%d\n", rsa_ctx->num_octets);
+    bi_print("Modulus", rsa_ctx->m);
+    bi_print("Public Key", rsa_ctx->e);
+    bi_print("Private Key", rsa_ctx->d);
+}
+#endif
+
+#if defined(CONFIG_SSL_CERT_VERIFICATION) || defined(CONFIG_SSL_GENERATE_X509_CERT)
+/**
+ * Performs c = m^e mod n
+ */
+bigint *RSA_public(const RSA_CTX * c, bigint *bi_msg)
+{
+    c->bi_ctx->mod_offset = BIGINT_M_OFFSET;
+    return bi_mod_power(c->bi_ctx, bi_msg, c->e);
+}
+
+/**
+ * Use PKCS1.5 for encryption/signing.
+ * see http://www.rsasecurity.com/rsalabs/node.asp?id=2125
+ */
+int RSA_encrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint16_t in_len, 
+        uint8_t *out_data, int is_signing)
+{
+    int byte_size = ctx->num_octets;
+    int num_pads_needed = byte_size-in_len-3;
+    bigint *dat_bi, *encrypt_bi;
+
+    /* note: in_len+11 must be > byte_size */
+    out_data[0] = 0;     /* ensure encryption block is < modulus */
+
+    if (is_signing)
+    {
+        out_data[1] = 1;        /* PKCS1.5 signing pads with "0xff"'s */
+        memset(&out_data[2], 0xff, num_pads_needed);
+    }
+    else /* randomize the encryption padding with non-zero bytes */   
+    {
+        out_data[1] = 2;
+        get_random_NZ(num_pads_needed, &out_data[2]);
+    }
+
+    out_data[2+num_pads_needed] = 0;
+    memcpy(&out_data[3+num_pads_needed], in_data, in_len);
+
+    /* now encrypt it */
+    dat_bi = bi_import(ctx->bi_ctx, out_data, byte_size);
+    encrypt_bi = is_signing ? RSA_private(ctx, dat_bi) : 
+                              RSA_public(ctx, dat_bi);
+    bi_export(ctx->bi_ctx, encrypt_bi, out_data, byte_size);
+
+    /* save a few bytes of memory */
+    bi_clear_cache(ctx->bi_ctx);
+    return byte_size;
+}
+
+#endif  /* CONFIG_SSL_CERT_VERIFICATION */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c
new file mode 100644 (file)
index 0000000..be19100
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * SHA1 implementation - as defined in FIPS PUB 180-1 published April 17, 1995.
+ * This code was originally taken from RFC3174
+ */
+
+#include <string.h>
+#include "crypto.h"
+
+/*
+ *  Define the SHA1 circular left shift macro
+ */
+#define SHA1CircularShift(bits,word) \
+                (((word) << (bits)) | ((word) >> (32-(bits))))
+
+/* ----- static functions ----- */
+static void SHA1PadMessage(SHA1_CTX *ctx);
+static void SHA1ProcessMessageBlock(SHA1_CTX *ctx);
+
+/**
+ * Initialize the SHA1 context 
+ */
+void SHA1_Init(SHA1_CTX *ctx)
+{
+    ctx->Length_Low             = 0;
+    ctx->Length_High            = 0;
+    ctx->Message_Block_Index    = 0;
+    ctx->Intermediate_Hash[0]   = 0x67452301;
+    ctx->Intermediate_Hash[1]   = 0xEFCDAB89;
+    ctx->Intermediate_Hash[2]   = 0x98BADCFE;
+    ctx->Intermediate_Hash[3]   = 0x10325476;
+    ctx->Intermediate_Hash[4]   = 0xC3D2E1F0;
+}
+
+/**
+ * Accepts an array of octets as the next portion of the message.
+ */
+void SHA1_Update(SHA1_CTX *ctx, const uint8_t *msg, int len)
+{
+    while (len--)
+    {
+        ctx->Message_Block[ctx->Message_Block_Index++] = (*msg & 0xFF);
+        ctx->Length_Low += 8;
+
+        if (ctx->Length_Low == 0)
+            ctx->Length_High++;
+
+        if (ctx->Message_Block_Index == 64)
+            SHA1ProcessMessageBlock(ctx);
+
+        msg++;
+    }
+}
+
+/**
+ * Return the 160-bit message digest into the user's array
+ */
+void SHA1_Final(uint8_t *digest, SHA1_CTX *ctx)
+{
+    int i;
+
+    SHA1PadMessage(ctx);
+    memset(ctx->Message_Block, 0, 64);
+    ctx->Length_Low = 0;    /* and clear length */
+    ctx->Length_High = 0;
+
+    for  (i = 0; i < SHA1_SIZE; i++)
+    {
+        digest[i] = ctx->Intermediate_Hash[i>>2] >> 8 * ( 3 - ( i & 0x03 ) );
+    }
+}
+
+/**
+ * Process the next 512 bits of the message stored in the array.
+ */
+static void SHA1ProcessMessageBlock(SHA1_CTX *ctx)
+{
+    const uint32_t K[] =    {       /* Constants defined in SHA-1   */
+                            0x5A827999,
+                            0x6ED9EBA1,
+                            0x8F1BBCDC,
+                            0xCA62C1D6
+                            };
+    int        t;                 /* Loop counter                */
+    uint32_t      temp;              /* Temporary word value        */
+    uint32_t      W[80];             /* Word sequence               */
+    uint32_t      A, B, C, D, E;     /* Word buffers                */
+
+    /*
+     *  Initialize the first 16 words in the array W
+     */
+    for  (t = 0; t < 16; t++)
+    {
+        W[t] = ctx->Message_Block[t * 4] << 24;
+        W[t] |= ctx->Message_Block[t * 4 + 1] << 16;
+        W[t] |= ctx->Message_Block[t * 4 + 2] << 8;
+        W[t] |= ctx->Message_Block[t * 4 + 3];
+    }
+
+    for (t = 16; t < 80; t++)
+    {
+       W[t] = SHA1CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);
+    }
+
+    A = ctx->Intermediate_Hash[0];
+    B = ctx->Intermediate_Hash[1];
+    C = ctx->Intermediate_Hash[2];
+    D = ctx->Intermediate_Hash[3];
+    E = ctx->Intermediate_Hash[4];
+
+    for (t = 0; t < 20; t++)
+    {
+        temp =  SHA1CircularShift(5,A) +
+                ((B & C) | ((~B) & D)) + E + W[t] + K[0];
+        E = D;
+        D = C;
+        C = SHA1CircularShift(30,B);
+
+        B = A;
+        A = temp;
+    }
+
+    for (t = 20; t < 40; t++)
+    {
+        temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1];
+        E = D;
+        D = C;
+        C = SHA1CircularShift(30,B);
+        B = A;
+        A = temp;
+    }
+
+    for (t = 40; t < 60; t++)
+    {
+        temp = SHA1CircularShift(5,A) +
+               ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2];
+        E = D;
+        D = C;
+        C = SHA1CircularShift(30,B);
+        B = A;
+        A = temp;
+    }
+
+    for (t = 60; t < 80; t++)
+    {
+        temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3];
+        E = D;
+        D = C;
+        C = SHA1CircularShift(30,B);
+        B = A;
+        A = temp;
+    }
+
+    ctx->Intermediate_Hash[0] += A;
+    ctx->Intermediate_Hash[1] += B;
+    ctx->Intermediate_Hash[2] += C;
+    ctx->Intermediate_Hash[3] += D;
+    ctx->Intermediate_Hash[4] += E;
+    ctx->Message_Block_Index = 0;
+}
+
+/*
+ * According to the standard, the message must be padded to an even
+ * 512 bits.  The first padding bit must be a '1'.  The last 64
+ * bits represent the length of the original message.  All bits in
+ * between should be 0.  This function will pad the message
+ * according to those rules by filling the Message_Block array
+ * accordingly.  It will also call the ProcessMessageBlock function
+ * provided appropriately.  When it returns, it can be assumed that
+ * the message digest has been computed.
+ *
+ * @param ctx [in, out] The SHA1 context
+ */
+static void SHA1PadMessage(SHA1_CTX *ctx)
+{
+    /*
+     *  Check to see if the current message block is too small to hold
+     *  the initial padding bits and length.  If so, we will pad the
+     *  block, process it, and then continue padding into a second
+     *  block.
+     */
+    if (ctx->Message_Block_Index > 55)
+    {
+        ctx->Message_Block[ctx->Message_Block_Index++] = 0x80;
+        while(ctx->Message_Block_Index < 64)
+        {
+            ctx->Message_Block[ctx->Message_Block_Index++] = 0;
+        }
+
+        SHA1ProcessMessageBlock(ctx);
+
+        while (ctx->Message_Block_Index < 56)
+        {
+            ctx->Message_Block[ctx->Message_Block_Index++] = 0;
+        }
+    }
+    else
+    {
+        ctx->Message_Block[ctx->Message_Block_Index++] = 0x80;
+        while(ctx->Message_Block_Index < 56)
+        {
+
+            ctx->Message_Block[ctx->Message_Block_Index++] = 0;
+        }
+    }
+
+    /*
+     *  Store the message length as the last 8 octets
+     */
+    ctx->Message_Block[56] = ctx->Length_High >> 24;
+    ctx->Message_Block[57] = ctx->Length_High >> 16;
+    ctx->Message_Block[58] = ctx->Length_High >> 8;
+    ctx->Message_Block[59] = ctx->Length_High;
+    ctx->Message_Block[60] = ctx->Length_Low >> 24;
+    ctx->Message_Block[61] = ctx->Length_Low >> 16;
+    ctx->Message_Block[62] = ctx->Length_Low >> 8;
+    ctx->Message_Block[63] = ctx->Length_Low;
+    SHA1ProcessMessageBlock(ctx);
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile
new file mode 100644 (file)
index 0000000..2826686
--- /dev/null
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../config/makefile.conf
+
+all:
+
+doco:
+       doxygen ./axTLS.dox
+
+clean::
+       @-rm -fr html *~
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox
new file mode 100644 (file)
index 0000000..d9959b2
--- /dev/null
@@ -0,0 +1,1237 @@
+# Doxyfile 1.4.5\r
+\r
+# This file describes the settings to be used by the documentation system\r
+# doxygen (www.doxygen.org) for a project\r
+#\r
+# All text after a hash (#) is considered a comment and will be ignored\r
+# The format is:\r
+#       TAG = value [value, ...]\r
+# For lists items can also be appended using:\r
+#       TAG += value [value, ...]\r
+# Values that contain spaces should be placed between quotes (" ")\r
+\r
+#---------------------------------------------------------------------------\r
+# Project related configuration options\r
+#---------------------------------------------------------------------------\r
+\r
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \r
+# by quotes) that should identify the project.\r
+\r
+PROJECT_NAME           = axTLS\r
+\r
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. \r
+# This could be handy for archiving the generated documentation or \r
+# if some version control system is used.\r
+\r
+PROJECT_NUMBER         = \r
+\r
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \r
+# base path where the generated documentation will be put. \r
+# If a relative path is entered, it will be relative to the location \r
+# where doxygen was started. If left blank the current directory will be used.\r
+\r
+OUTPUT_DIRECTORY       = \r
+\r
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \r
+# 4096 sub-directories (in 2 levels) under the output directory of each output \r
+# format and will distribute the generated files over these directories. \r
+# Enabling this option can be useful when feeding doxygen a huge amount of \r
+# source files, where putting all generated files in the same directory would \r
+# otherwise cause performance problems for the file system.\r
+\r
+CREATE_SUBDIRS         = NO\r
+\r
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all \r
+# documentation generated by doxygen is written. Doxygen will use this \r
+# information to generate all constant output in the proper language. \r
+# The default language is English, other supported languages are: \r
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, \r
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, \r
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, \r
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, \r
+# Swedish, and Ukrainian.\r
+\r
+OUTPUT_LANGUAGE        = English\r
+\r
+# This tag can be used to specify the encoding used in the generated output. \r
+# The encoding is not always determined by the language that is chosen, \r
+# but also whether or not the output is meant for Windows or non-Windows users. \r
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES \r
+# forces the Windows encoding (this is the default for the Windows binary), \r
+# whereas setting the tag to NO uses a Unix-style encoding (the default for \r
+# all platforms other than Windows).\r
+\r
+USE_WINDOWS_ENCODING   = NO\r
+\r
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \r
+# include brief member descriptions after the members that are listed in \r
+# the file and class documentation (similar to JavaDoc). \r
+# Set to NO to disable this.\r
+\r
+BRIEF_MEMBER_DESC      = YES\r
+\r
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \r
+# the brief description of a member or function before the detailed description. \r
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \r
+# brief descriptions will be completely suppressed.\r
+\r
+REPEAT_BRIEF           = YES\r
+\r
+# This tag implements a quasi-intelligent brief description abbreviator \r
+# that is used to form the text in various listings. Each string \r
+# in this list, if found as the leading text of the brief description, will be \r
+# stripped from the text and the result after processing the whole list, is \r
+# used as the annotated text. Otherwise, the brief description is used as-is. \r
+# If left blank, the following values are used ("$name" is automatically \r
+# replaced with the name of the entity): "The $name class" "The $name widget" \r
+# "The $name file" "is" "provides" "specifies" "contains" \r
+# "represents" "a" "an" "the"\r
+\r
+ABBREVIATE_BRIEF       = \r
+\r
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \r
+# Doxygen will generate a detailed section even if there is only a brief \r
+# description.\r
+\r
+ALWAYS_DETAILED_SEC    = NO\r
+\r
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all \r
+# inherited members of a class in the documentation of that class as if those \r
+# members were ordinary class members. Constructors, destructors and assignment \r
+# operators of the base classes will not be shown.\r
+\r
+INLINE_INHERITED_MEMB  = NO\r
+\r
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \r
+# path before files name in the file list and in the header files. If set \r
+# to NO the shortest path that makes the file name unique will be used.\r
+\r
+FULL_PATH_NAMES        = NO\r
+\r
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \r
+# can be used to strip a user-defined part of the path. Stripping is \r
+# only done if one of the specified strings matches the left-hand part of \r
+# the path. The tag can be used to show relative paths in the file list. \r
+# If left blank the directory from which doxygen is run is used as the \r
+# path to strip.\r
+\r
+STRIP_FROM_PATH        = \r
+\r
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of \r
+# the path mentioned in the documentation of a class, which tells \r
+# the reader which header file to include in order to use a class. \r
+# If left blank only the name of the header file containing the class \r
+# definition is used. Otherwise one should specify the include paths that \r
+# are normally passed to the compiler using the -I flag.\r
+\r
+STRIP_FROM_INC_PATH    = \r
+\r
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter \r
+# (but less readable) file names. This can be useful is your file systems \r
+# doesn't support long names like on DOS, Mac, or CD-ROM.\r
+\r
+SHORT_NAMES            = NO\r
+\r
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \r
+# will interpret the first line (until the first dot) of a JavaDoc-style \r
+# comment as the brief description. If set to NO, the JavaDoc \r
+# comments will behave just like the Qt-style comments (thus requiring an \r
+# explicit @brief command for a brief description.\r
+\r
+JAVADOC_AUTOBRIEF      = NO\r
+\r
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \r
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// \r
+# comments) as a brief description. This used to be the default behaviour. \r
+# The new default is to treat a multi-line C++ comment block as a detailed \r
+# description. Set this tag to YES if you prefer the old behaviour instead.\r
+\r
+MULTILINE_CPP_IS_BRIEF = NO\r
+\r
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen \r
+# will output the detailed description near the top, like JavaDoc.\r
+# If set to NO, the detailed description appears after the member \r
+# documentation.\r
+\r
+DETAILS_AT_TOP         = NO\r
+\r
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \r
+# member inherits the documentation from any documented member that it \r
+# re-implements.\r
+\r
+INHERIT_DOCS           = YES\r
+\r
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce \r
+# a new page for each member. If set to NO, the documentation of a member will \r
+# be part of the file/class/namespace that contains it.\r
+\r
+SEPARATE_MEMBER_PAGES  = NO\r
+\r
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. \r
+# Doxygen uses this value to replace tabs by spaces in code fragments.\r
+\r
+TAB_SIZE               = 4\r
+\r
+# This tag can be used to specify a number of aliases that acts \r
+# as commands in the documentation. An alias has the form "name=value". \r
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to \r
+# put the command \sideeffect (or @sideeffect) in the documentation, which \r
+# will result in a user-defined paragraph with heading "Side Effects:". \r
+# You can put \n's in the value part of an alias to insert newlines.\r
+\r
+ALIASES                = \r
+\r
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C \r
+# sources only. Doxygen will then generate output that is more tailored for C. \r
+# For instance, some of the names that are used will be different. The list \r
+# of all members will be omitted, etc.\r
+\r
+OPTIMIZE_OUTPUT_FOR_C  = YES\r
+\r
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java \r
+# sources only. Doxygen will then generate output that is more tailored for Java. \r
+# For instance, namespaces will be presented as packages, qualified scopes \r
+# will look different, etc.\r
+\r
+OPTIMIZE_OUTPUT_JAVA   = NO\r
+\r
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to \r
+# include (a tag file for) the STL sources as input, then you should \r
+# set this tag to YES in order to let doxygen match functions declarations and \r
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. \r
+# func(std::string) {}). This also make the inheritance and collaboration \r
+# diagrams that involve STL classes more complete and accurate.\r
+\r
+BUILTIN_STL_SUPPORT    = NO\r
+\r
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \r
+# tag is set to YES, then doxygen will reuse the documentation of the first \r
+# member in the group (if any) for the other members of the group. By default \r
+# all members of a group must be documented explicitly.\r
+\r
+DISTRIBUTE_GROUP_DOC   = NO\r
+\r
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of \r
+# the same type (for instance a group of public functions) to be put as a \r
+# subgroup of that type (e.g. under the Public Functions section). Set it to \r
+# NO to prevent subgrouping. Alternatively, this can be done per class using \r
+# the \nosubgrouping command.\r
+\r
+SUBGROUPING            = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# Build related configuration options\r
+#---------------------------------------------------------------------------\r
+\r
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \r
+# documentation are documented, even if no documentation was available. \r
+# Private class members and static file members will be hidden unless \r
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES\r
+\r
+EXTRACT_ALL            = NO\r
+\r
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class \r
+# will be included in the documentation.\r
+\r
+EXTRACT_PRIVATE        = NO\r
+\r
+# If the EXTRACT_STATIC tag is set to YES all static members of a file \r
+# will be included in the documentation.\r
+\r
+EXTRACT_STATIC         = NO\r
+\r
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) \r
+# defined locally in source files will be included in the documentation. \r
+# If set to NO only classes defined in header files are included.\r
+\r
+EXTRACT_LOCAL_CLASSES  = YES\r
+\r
+# This flag is only useful for Objective-C code. When set to YES local \r
+# methods, which are defined in the implementation section but not in \r
+# the interface are included in the documentation. \r
+# If set to NO (the default) only methods in the interface are included.\r
+\r
+EXTRACT_LOCAL_METHODS  = NO\r
+\r
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \r
+# undocumented members of documented classes, files or namespaces. \r
+# If set to NO (the default) these members will be included in the \r
+# various overviews, but no documentation section is generated. \r
+# This option has no effect if EXTRACT_ALL is enabled.\r
+\r
+HIDE_UNDOC_MEMBERS     = NO\r
+\r
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \r
+# undocumented classes that are normally visible in the class hierarchy. \r
+# If set to NO (the default) these classes will be included in the various \r
+# overviews. This option has no effect if EXTRACT_ALL is enabled.\r
+\r
+HIDE_UNDOC_CLASSES     = NO\r
+\r
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \r
+# friend (class|struct|union) declarations. \r
+# If set to NO (the default) these declarations will be included in the \r
+# documentation.\r
+\r
+HIDE_FRIEND_COMPOUNDS  = NO\r
+\r
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any \r
+# documentation blocks found inside the body of a function. \r
+# If set to NO (the default) these blocks will be appended to the \r
+# function's detailed documentation block.\r
+\r
+HIDE_IN_BODY_DOCS      = NO\r
+\r
+# The INTERNAL_DOCS tag determines if documentation \r
+# that is typed after a \internal command is included. If the tag is set \r
+# to NO (the default) then the documentation will be excluded. \r
+# Set it to YES to include the internal documentation.\r
+\r
+INTERNAL_DOCS          = NO\r
+\r
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \r
+# file names in lower-case letters. If set to YES upper-case letters are also \r
+# allowed. This is useful if you have classes or files whose names only differ \r
+# in case and if your file system supports case sensitive file names. Windows \r
+# and Mac users are advised to set this option to NO.\r
+\r
+CASE_SENSE_NAMES       = YES\r
+\r
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen \r
+# will show members with their full class and namespace scopes in the \r
+# documentation. If set to YES the scope will be hidden.\r
+\r
+HIDE_SCOPE_NAMES       = NO\r
+\r
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \r
+# will put a list of the files that are included by a file in the documentation \r
+# of that file.\r
+\r
+SHOW_INCLUDE_FILES     = NO\r
+\r
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \r
+# is inserted in the documentation for inline members.\r
+\r
+INLINE_INFO            = YES\r
+\r
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \r
+# will sort the (detailed) documentation of file and class members \r
+# alphabetically by member name. If set to NO the members will appear in \r
+# declaration order.\r
+\r
+SORT_MEMBER_DOCS       = NO\r
+\r
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the \r
+# brief documentation of file, namespace and class members alphabetically \r
+# by member name. If set to NO (the default) the members will appear in \r
+# declaration order.\r
+\r
+SORT_BRIEF_DOCS        = NO\r
+\r
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \r
+# sorted by fully-qualified names, including namespaces. If set to \r
+# NO (the default), the class list will be sorted only by class name, \r
+# not including the namespace part. \r
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\r
+# Note: This option applies only to the class list, not to the \r
+# alphabetical list.\r
+\r
+SORT_BY_SCOPE_NAME     = NO\r
+\r
+# The GENERATE_TODOLIST tag can be used to enable (YES) or \r
+# disable (NO) the todo list. This list is created by putting \todo \r
+# commands in the documentation.\r
+\r
+GENERATE_TODOLIST      = YES\r
+\r
+# The GENERATE_TESTLIST tag can be used to enable (YES) or \r
+# disable (NO) the test list. This list is created by putting \test \r
+# commands in the documentation.\r
+\r
+GENERATE_TESTLIST      = YES\r
+\r
+# The GENERATE_BUGLIST tag can be used to enable (YES) or \r
+# disable (NO) the bug list. This list is created by putting \bug \r
+# commands in the documentation.\r
+\r
+GENERATE_BUGLIST       = YES\r
+\r
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or \r
+# disable (NO) the deprecated list. This list is created by putting \r
+# \deprecated commands in the documentation.\r
+\r
+GENERATE_DEPRECATEDLIST= YES\r
+\r
+# The ENABLED_SECTIONS tag can be used to enable conditional \r
+# documentation sections, marked by \if sectionname ... \endif.\r
+\r
+ENABLED_SECTIONS       = \r
+\r
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines \r
+# the initial value of a variable or define consists of for it to appear in \r
+# the documentation. If the initializer consists of more lines than specified \r
+# here it will be hidden. Use a value of 0 to hide initializers completely. \r
+# The appearance of the initializer of individual variables and defines in the \r
+# documentation can be controlled using \showinitializer or \hideinitializer \r
+# command in the documentation regardless of this setting.\r
+\r
+MAX_INITIALIZER_LINES  = 30\r
+\r
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \r
+# at the bottom of the documentation of classes and structs. If set to YES the \r
+# list will mention the files that were used to generate the documentation.\r
+\r
+SHOW_USED_FILES        = NO\r
+\r
+# If the sources in your project are distributed over multiple directories \r
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \r
+# in the documentation. The default is YES.\r
+\r
+SHOW_DIRECTORIES       = NO\r
+\r
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that \r
+# doxygen should invoke to get the current version for each file (typically from the \r
+# version control system). Doxygen will invoke the program by executing (via \r
+# popen()) the command <command> <input-file>, where <command> is the value of \r
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file \r
+# provided by doxygen. Whatever the program writes to standard output \r
+# is used as the file version. See the manual for examples.\r
+\r
+FILE_VERSION_FILTER    = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to warning and progress messages\r
+#---------------------------------------------------------------------------\r
+\r
+# The QUIET tag can be used to turn on/off the messages that are generated \r
+# by doxygen. Possible values are YES and NO. If left blank NO is used.\r
+\r
+QUIET                  = NO\r
+\r
+# The WARNINGS tag can be used to turn on/off the warning messages that are \r
+# generated by doxygen. Possible values are YES and NO. If left blank \r
+# NO is used.\r
+\r
+WARNINGS               = YES\r
+\r
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings \r
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will \r
+# automatically be disabled.\r
+\r
+WARN_IF_UNDOCUMENTED   = YES\r
+\r
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for \r
+# potential errors in the documentation, such as not documenting some \r
+# parameters in a documented function, or documenting parameters that \r
+# don't exist or using markup commands wrongly.\r
+\r
+WARN_IF_DOC_ERROR      = YES\r
+\r
+# This WARN_NO_PARAMDOC option can be abled to get warnings for \r
+# functions that are documented, but have no documentation for their parameters \r
+# or return value. If set to NO (the default) doxygen will only warn about \r
+# wrong or incomplete parameter documentation, but not about the absence of \r
+# documentation.\r
+\r
+WARN_NO_PARAMDOC       = NO\r
+\r
+# The WARN_FORMAT tag determines the format of the warning messages that \r
+# doxygen can produce. The string should contain the $file, $line, and $text \r
+# tags, which will be replaced by the file and line number from which the \r
+# warning originated and the warning text. Optionally the format may contain \r
+# $version, which will be replaced by the version of the file (if it could \r
+# be obtained via FILE_VERSION_FILTER)\r
+\r
+WARN_FORMAT            = "$file:$line: $text"\r
+\r
+# The WARN_LOGFILE tag can be used to specify a file to which warning \r
+# and error messages should be written. If left blank the output is written \r
+# to stderr.\r
+\r
+WARN_LOGFILE           = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the input files\r
+#---------------------------------------------------------------------------\r
+\r
+# The INPUT tag can be used to specify the files and/or directories that contain \r
+# documented source files. You may enter file names like "myfile.cpp" or \r
+# directories like "/usr/src/myproject". Separate the files or directories \r
+# with spaces.\r
+\r
+INPUT                  = ../bindings/csharp/axTLS.cs ../bindings/java/SSL.java ../bindings/java/SSLUtil.java ../bindings/java/SSLCTX.java ../bindings/java/SSLServer.java ../bindings/java/SSLClient.java ../bindings/java/SSLReadHolder.java ../ssl/ssl.h ../crypto/bigint.c ../crypto/bigint.h \r
+\r
+# If the value of the INPUT tag contains directories, you can use the \r
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
+# and *.h) to filter out the source-files in the directories. If left \r
+# blank the following patterns are tested: \r
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \r
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py\r
+\r
+FILE_PATTERNS          = \r
+\r
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories \r
+# should be searched for input files as well. Possible values are YES and NO. \r
+# If left blank NO is used.\r
+\r
+RECURSIVE              = NO\r
+\r
+# The EXCLUDE tag can be used to specify files and/or directories that should \r
+# excluded from the INPUT source files. This way you can easily exclude a \r
+# subdirectory from a directory tree whose root is specified with the INPUT tag.\r
+\r
+EXCLUDE                = \r
+\r
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or \r
+# directories that are symbolic links (a Unix filesystem feature) are excluded \r
+# from the input.\r
+\r
+EXCLUDE_SYMLINKS       = NO\r
+\r
+# If the value of the INPUT tag contains directories, you can use the \r
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \r
+# certain files from those directories. Note that the wildcards are matched \r
+# against the file with absolute path, so to exclude all test directories \r
+# for example use the pattern */test/*\r
+\r
+EXCLUDE_PATTERNS       = \r
+\r
+# The EXAMPLE_PATH tag can be used to specify one or more files or \r
+# directories that contain example code fragments that are included (see \r
+# the \include command).\r
+\r
+EXAMPLE_PATH           = \r
+\r
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the \r
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
+# and *.h) to filter out the source-files in the directories. If left \r
+# blank all files are included.\r
+\r
+EXAMPLE_PATTERNS       = \r
+\r
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be \r
+# searched for input files to be used with the \include or \dontinclude \r
+# commands irrespective of the value of the RECURSIVE tag. \r
+# Possible values are YES and NO. If left blank NO is used.\r
+\r
+EXAMPLE_RECURSIVE      = NO\r
+\r
+# The IMAGE_PATH tag can be used to specify one or more files or \r
+# directories that contain image that are included in the documentation (see \r
+# the \image command).\r
+\r
+IMAGE_PATH             = images\r
+\r
+# The INPUT_FILTER tag can be used to specify a program that doxygen should \r
+# invoke to filter for each input file. Doxygen will invoke the filter program \r
+# by executing (via popen()) the command <filter> <input-file>, where <filter> \r
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an \r
+# input file. Doxygen will then use the output that the filter program writes \r
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be \r
+# ignored.\r
+\r
+INPUT_FILTER           = \r
+\r
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \r
+# basis.  Doxygen will compare the file name with each pattern and apply the \r
+# filter if there is a match.  The filters are a list of the form: \r
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \r
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \r
+# is applied to all files.\r
+\r
+FILTER_PATTERNS        = \r
+\r
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \r
+# INPUT_FILTER) will be used to filter the input files when producing source \r
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).\r
+\r
+FILTER_SOURCE_FILES    = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to source browsing\r
+#---------------------------------------------------------------------------\r
+\r
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will \r
+# be generated. Documented entities will be cross-referenced with these sources. \r
+# Note: To get rid of all source code in the generated output, make sure also \r
+# VERBATIM_HEADERS is set to NO.\r
+\r
+SOURCE_BROWSER         = NO\r
+\r
+# Setting the INLINE_SOURCES tag to YES will include the body \r
+# of functions and classes directly in the documentation.\r
+\r
+INLINE_SOURCES         = NO\r
+\r
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \r
+# doxygen to hide any special comment blocks from generated source code \r
+# fragments. Normal C and C++ comments will always remain visible.\r
+\r
+STRIP_CODE_COMMENTS    = YES\r
+\r
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) \r
+# then for each documented function all documented \r
+# functions referencing it will be listed.\r
+\r
+REFERENCED_BY_RELATION = YES\r
+\r
+# If the REFERENCES_RELATION tag is set to YES (the default) \r
+# then for each documented function all documented entities \r
+# called/used by that function will be listed.\r
+\r
+REFERENCES_RELATION    = YES\r
+\r
+# If the USE_HTAGS tag is set to YES then the references to source code \r
+# will point to the HTML generated by the htags(1) tool instead of doxygen \r
+# built-in source browser. The htags tool is part of GNU's global source \r
+# tagging system (see http://www.gnu.org/software/global/global.html). You \r
+# will need version 4.8.6 or higher.\r
+\r
+USE_HTAGS              = NO\r
+\r
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \r
+# will generate a verbatim copy of the header file for each class for \r
+# which an include is specified. Set to NO to disable this.\r
+\r
+VERBATIM_HEADERS       = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the alphabetical class index\r
+#---------------------------------------------------------------------------\r
+\r
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \r
+# of all compounds will be generated. Enable this if the project \r
+# contains a lot of classes, structs, unions or interfaces.\r
+\r
+ALPHABETICAL_INDEX     = NO\r
+\r
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \r
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \r
+# in which this list will be split (can be a number in the range [1..20])\r
+\r
+COLS_IN_ALPHA_INDEX    = 5\r
+\r
+# In case all classes in a project start with a common prefix, all \r
+# classes will be put under the same header in the alphabetical index. \r
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that \r
+# should be ignored while generating the index headers.\r
+\r
+IGNORE_PREFIX          = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the HTML output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will \r
+# generate HTML output.\r
+\r
+GENERATE_HTML          = YES\r
+\r
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `html' will be used as the default path.\r
+\r
+HTML_OUTPUT            = html\r
+\r
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for \r
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank \r
+# doxygen will generate files with .html extension.\r
+\r
+HTML_FILE_EXTENSION    = .html\r
+\r
+# The HTML_HEADER tag can be used to specify a personal HTML header for \r
+# each generated HTML page. If it is left blank doxygen will generate a \r
+# standard header.\r
+\r
+HTML_HEADER            = \r
+\r
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for \r
+# each generated HTML page. If it is left blank doxygen will generate a \r
+# standard footer.\r
+\r
+HTML_FOOTER            = doco_footer.html \r
+\r
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading \r
+# style sheet that is used by each HTML page. It can be used to \r
+# fine-tune the look of the HTML output. If the tag is left blank doxygen \r
+# will generate a default style sheet. Note that doxygen will try to copy \r
+# the style sheet file to the HTML output directory, so don't put your own \r
+# stylesheet in the HTML output directory as well, or it will be erased!\r
+\r
+HTML_STYLESHEET        = \r
+\r
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \r
+# files or namespaces will be aligned in HTML using tables. If set to \r
+# NO a bullet list will be used.\r
+\r
+HTML_ALIGN_MEMBERS     = YES\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files \r
+# will be generated that can be used as input for tools like the \r
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) \r
+# of the generated HTML documentation.\r
+\r
+GENERATE_HTMLHELP      = NO\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \r
+# be used to specify the file name of the resulting .chm file. You \r
+# can add a path in front of the file if the result should not be \r
+# written to the html output directory.\r
+\r
+CHM_FILE               = \r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \r
+# be used to specify the location (absolute path including file name) of \r
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run \r
+# the HTML help compiler on the generated index.hhp.\r
+\r
+HHC_LOCATION           = \r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \r
+# controls if a separate .chi index file is generated (YES) or that \r
+# it should be included in the master .chm file (NO).\r
+\r
+GENERATE_CHI           = NO\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \r
+# controls whether a binary table of contents is generated (YES) or a \r
+# normal table of contents (NO) in the .chm file.\r
+\r
+BINARY_TOC             = NO\r
+\r
+# The TOC_EXPAND flag can be set to YES to add extra items for group members \r
+# to the contents of the HTML help documentation and to the tree view.\r
+\r
+TOC_EXPAND             = YES\r
+\r
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \r
+# top of each HTML page. The value NO (the default) enables the index and \r
+# the value YES disables it.\r
+\r
+DISABLE_INDEX          = YES\r
+\r
+# This tag can be used to set the number of enum values (range [1..20]) \r
+# that doxygen will group on one line in the generated HTML documentation.\r
+\r
+ENUM_VALUES_PER_LINE   = 4\r
+\r
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\r
+# generated containing a tree-like index structure (just like the one that \r
+# is generated for HTML Help). For this to work a browser that supports \r
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \r
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \r
+# probably better off using the HTML help feature.\r
+\r
+GENERATE_TREEVIEW      = YES\r
+\r
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be \r
+# used to set the initial width (in pixels) of the frame in which the tree \r
+# is shown.\r
+\r
+TREEVIEW_WIDTH         = 250\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the LaTeX output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \r
+# generate Latex output.\r
+\r
+GENERATE_LATEX         = NO\r
+\r
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `latex' will be used as the default path.\r
+\r
+LATEX_OUTPUT           = latex\r
+\r
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be \r
+# invoked. If left blank `latex' will be used as the default command name.\r
+\r
+LATEX_CMD_NAME         = latex\r
+\r
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to \r
+# generate index for LaTeX. If left blank `makeindex' will be used as the \r
+# default command name.\r
+\r
+MAKEINDEX_CMD_NAME     = makeindex\r
+\r
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \r
+# LaTeX documents. This may be useful for small projects and may help to \r
+# save some trees in general.\r
+\r
+COMPACT_LATEX          = NO\r
+\r
+# The PAPER_TYPE tag can be used to set the paper type that is used \r
+# by the printer. Possible values are: a4, a4wide, letter, legal and \r
+# executive. If left blank a4wide will be used.\r
+\r
+PAPER_TYPE             = a4wide\r
+\r
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \r
+# packages that should be included in the LaTeX output.\r
+\r
+EXTRA_PACKAGES         = \r
+\r
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \r
+# the generated latex document. The header should contain everything until \r
+# the first chapter. If it is left blank doxygen will generate a \r
+# standard header. Notice: only use this tag if you know what you are doing!\r
+\r
+LATEX_HEADER           = \r
+\r
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \r
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will \r
+# contain links (just like the HTML output) instead of page references \r
+# This makes the output suitable for online browsing using a pdf viewer.\r
+\r
+PDF_HYPERLINKS         = NO\r
+\r
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of \r
+# plain latex in the generated Makefile. Set this option to YES to get a \r
+# higher quality PDF documentation.\r
+\r
+USE_PDFLATEX           = NO\r
+\r
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. \r
+# command to the generated LaTeX files. This will instruct LaTeX to keep \r
+# running if errors occur, instead of asking the user for help. \r
+# This option is also used when generating formulas in HTML.\r
+\r
+LATEX_BATCHMODE        = NO\r
+\r
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not \r
+# include the index chapters (such as File Index, Compound Index, etc.) \r
+# in the output.\r
+\r
+LATEX_HIDE_INDICES     = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the RTF output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \r
+# The RTF output is optimized for Word 97 and may not look very pretty with \r
+# other RTF readers or editors.\r
+\r
+GENERATE_RTF           = NO\r
+\r
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `rtf' will be used as the default path.\r
+\r
+RTF_OUTPUT             = rtf\r
+\r
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact \r
+# RTF documents. This may be useful for small projects and may help to \r
+# save some trees in general.\r
+\r
+COMPACT_RTF            = NO\r
+\r
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \r
+# will contain hyperlink fields. The RTF file will \r
+# contain links (just like the HTML output) instead of page references. \r
+# This makes the output suitable for online browsing using WORD or other \r
+# programs which support those fields. \r
+# Note: wordpad (write) and others do not support links.\r
+\r
+RTF_HYPERLINKS         = NO\r
+\r
+# Load stylesheet definitions from file. Syntax is similar to doxygen's \r
+# config file, i.e. a series of assignments. You only have to provide \r
+# replacements, missing definitions are set to their default value.\r
+\r
+RTF_STYLESHEET_FILE    = \r
+\r
+# Set optional variables used in the generation of an rtf document. \r
+# Syntax is similar to doxygen's config file.\r
+\r
+RTF_EXTENSIONS_FILE    = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the man page output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will \r
+# generate man pages\r
+\r
+GENERATE_MAN           = NO\r
+\r
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `man' will be used as the default path.\r
+\r
+MAN_OUTPUT             = man\r
+\r
+# The MAN_EXTENSION tag determines the extension that is added to \r
+# the generated man pages (default is the subroutine's section .3)\r
+\r
+MAN_EXTENSION          = .3\r
+\r
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, \r
+# then it will generate one additional man file for each entity \r
+# documented in the real man page(s). These additional files \r
+# only source the real man page, but without them the man command \r
+# would be unable to find the correct page. The default is NO.\r
+\r
+MAN_LINKS              = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the XML output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_XML tag is set to YES Doxygen will \r
+# generate an XML file that captures the structure of \r
+# the code including all documentation.\r
+\r
+GENERATE_XML           = NO\r
+\r
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `xml' will be used as the default path.\r
+\r
+XML_OUTPUT             = xml\r
+\r
+# The XML_SCHEMA tag can be used to specify an XML schema, \r
+# which can be used by a validating XML parser to check the \r
+# syntax of the XML files.\r
+\r
+XML_SCHEMA             = \r
+\r
+# The XML_DTD tag can be used to specify an XML DTD, \r
+# which can be used by a validating XML parser to check the \r
+# syntax of the XML files.\r
+\r
+XML_DTD                = \r
+\r
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will \r
+# dump the program listings (including syntax highlighting \r
+# and cross-referencing information) to the XML output. Note that \r
+# enabling this will significantly increase the size of the XML output.\r
+\r
+XML_PROGRAMLISTING     = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options for the AutoGen Definitions output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \r
+# generate an AutoGen Definitions (see autogen.sf.net) file \r
+# that captures the structure of the code including all \r
+# documentation. Note that this feature is still experimental \r
+# and incomplete at the moment.\r
+\r
+GENERATE_AUTOGEN_DEF   = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the Perl module output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will \r
+# generate a Perl module file that captures the structure of \r
+# the code including all documentation. Note that this \r
+# feature is still experimental and incomplete at the \r
+# moment.\r
+\r
+GENERATE_PERLMOD       = NO\r
+\r
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate \r
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able \r
+# to generate PDF and DVI output from the Perl module output.\r
+\r
+PERLMOD_LATEX          = NO\r
+\r
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be \r
+# nicely formatted so it can be parsed by a human reader.  This is useful \r
+# if you want to understand what is going on.  On the other hand, if this \r
+# tag is set to NO the size of the Perl module output will be much smaller \r
+# and Perl will parse it just the same.\r
+\r
+PERLMOD_PRETTY         = YES\r
+\r
+# The names of the make variables in the generated doxyrules.make file \r
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. \r
+# This is useful so different doxyrules.make files included by the same \r
+# Makefile don't overwrite each other's variables.\r
+\r
+PERLMOD_MAKEVAR_PREFIX = \r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration options related to the preprocessor   \r
+#---------------------------------------------------------------------------\r
+\r
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \r
+# evaluate all C-preprocessor directives found in the sources and include \r
+# files.\r
+\r
+ENABLE_PREPROCESSING   = YES\r
+\r
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \r
+# names in the source code. If set to NO (the default) only conditional \r
+# compilation will be performed. Macro expansion can be done in a controlled \r
+# way by setting EXPAND_ONLY_PREDEF to YES.\r
+\r
+MACRO_EXPANSION        = YES\r
+\r
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \r
+# then the macro expansion is limited to the macros specified with the \r
+# PREDEFINED and EXPAND_AS_DEFINED tags.\r
+\r
+EXPAND_ONLY_PREDEF     = YES\r
+\r
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \r
+# in the INCLUDE_PATH (see below) will be search if a #include is found.\r
+\r
+SEARCH_INCLUDES        = YES\r
+\r
+# The INCLUDE_PATH tag can be used to specify one or more directories that \r
+# contain include files that are not input files but should be processed by \r
+# the preprocessor.\r
+\r
+INCLUDE_PATH           = \r
+\r
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard \r
+# patterns (like *.h and *.hpp) to filter out the header-files in the \r
+# directories. If left blank, the patterns specified with FILE_PATTERNS will \r
+# be used.\r
+\r
+INCLUDE_FILE_PATTERNS  = \r
+\r
+# The PREDEFINED tag can be used to specify one or more macro names that \r
+# are defined before the preprocessor is started (similar to the -D option of \r
+# gcc). The argument of the tag is a list of macros of the form: name \r
+# or name=definition (no spaces). If the definition and the = are \r
+# omitted =1 is assumed. To prevent a macro definition from being \r
+# undefined via #undef or recursively expanded use the := operator \r
+# instead of the = operator.\r
+\r
+PREDEFINED             = CONFIG_SSL_CERT_VERIFICATION CONFIG_SSL_ENABLE_CLIENT CONFIG_SSL_GENERATE_X509_CERT CONFIG_BIGINT_MONTGOMERY CONFIG_BIGINT_BARRETT CONFIG_BIGINT_CRT EXP_FUNC="" STDCALL=""\r
+\r
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then \r
+# this tag can be used to specify a list of macro names that should be expanded. \r
+# The macro definition that is found in the sources will be used. \r
+# Use the PREDEFINED tag if you want to use a different macro definition.\r
+\r
+EXPAND_AS_DEFINED      = \r
+\r
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \r
+# doxygen's preprocessor will remove all function-like macros that are alone \r
+# on a line, have an all uppercase name, and do not end with a semicolon. Such \r
+# function macros are typically used for boiler-plate code, and will confuse \r
+# the parser if not removed.\r
+\r
+SKIP_FUNCTION_MACROS   = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration::additions related to external references   \r
+#---------------------------------------------------------------------------\r
+\r
+# The TAGFILES option can be used to specify one or more tagfiles. \r
+# Optionally an initial location of the external documentation \r
+# can be added for each tagfile. The format of a tag file without \r
+# this location is as follows: \r
+#   TAGFILES = file1 file2 ... \r
+# Adding location for the tag files is done as follows: \r
+#   TAGFILES = file1=loc1 "file2 = loc2" ... \r
+# where "loc1" and "loc2" can be relative or absolute paths or \r
+# URLs. If a location is present for each tag, the installdox tool \r
+# does not have to be run to correct the links.\r
+# Note that each tag file must have a unique name\r
+# (where the name does NOT include the path)\r
+# If a tag file is not located in the directory in which doxygen \r
+# is run, you must also specify the path to the tagfile here.\r
+\r
+TAGFILES               = \r
+\r
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create \r
+# a tag file that is based on the input files it reads.\r
+\r
+GENERATE_TAGFILE       = \r
+\r
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed \r
+# in the class index. If set to NO only the inherited external classes \r
+# will be listed.\r
+\r
+ALLEXTERNALS           = NO\r
+\r
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed \r
+# in the modules index. If set to NO, only the current project's groups will \r
+# be listed.\r
+\r
+EXTERNAL_GROUPS        = NO\r
+\r
+# The PERL_PATH should be the absolute path and name of the perl script \r
+# interpreter (i.e. the result of `which perl').\r
+\r
+PERL_PATH              = /usr/bin/perl\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration options related to the dot tool   \r
+#---------------------------------------------------------------------------\r
+\r
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \r
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base \r
+# or super classes. Setting the tag to NO turns the diagrams off. Note that \r
+# this option is superseded by the HAVE_DOT option below. This is only a \r
+# fallback. It is recommended to install and use dot, since it yields more \r
+# powerful graphs.\r
+\r
+CLASS_DIAGRAMS         = YES\r
+\r
+# If set to YES, the inheritance and collaboration graphs will hide \r
+# inheritance and usage relations if the target is undocumented \r
+# or is not a class.\r
+\r
+HIDE_UNDOC_RELATIONS   = YES\r
+\r
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \r
+# available from the path. This tool is part of Graphviz, a graph visualization \r
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section \r
+# have no effect if this option is set to NO (the default)\r
+\r
+HAVE_DOT               = NO\r
+\r
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for each documented class showing the direct and \r
+# indirect inheritance relations. Setting this tag to YES will force the \r
+# the CLASS_DIAGRAMS tag to NO.\r
+\r
+CLASS_GRAPH            = NO\r
+\r
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for each documented class showing the direct and \r
+# indirect implementation dependencies (inheritance, containment, and \r
+# class references variables) of the class with other documented classes.\r
+\r
+COLLABORATION_GRAPH    = NO\r
+\r
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for groups, showing the direct groups dependencies\r
+\r
+GROUP_GRAPHS           = NO\r
+\r
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and \r
+# collaboration diagrams in a style similar to the OMG's Unified Modeling \r
+# Language.\r
+\r
+UML_LOOK               = NO\r
+\r
+# If set to YES, the inheritance and collaboration graphs will show the \r
+# relations between templates and their instances.\r
+\r
+TEMPLATE_RELATIONS     = NO\r
+\r
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \r
+# tags are set to YES then doxygen will generate a graph for each documented \r
+# file showing the direct and indirect include dependencies of the file with \r
+# other documented files.\r
+\r
+INCLUDE_GRAPH          = NO\r
+\r
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \r
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each \r
+# documented header file showing the documented files that directly or \r
+# indirectly include this file.\r
+\r
+INCLUDED_BY_GRAPH      = NO\r
+\r
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will \r
+# generate a call dependency graph for every global function or class method. \r
+# Note that enabling this option will significantly increase the time of a run. \r
+# So in most cases it will be better to enable call graphs for selected \r
+# functions only using the \callgraph command.\r
+\r
+CALL_GRAPH             = NO\r
+\r
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \r
+# will graphical hierarchy of all classes instead of a textual one.\r
+\r
+GRAPHICAL_HIERARCHY    = NO\r
+\r
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \r
+# then doxygen will show the dependencies a directory has on other directories \r
+# in a graphical way. The dependency relations are determined by the #include\r
+# relations between the files in the directories.\r
+\r
+DIRECTORY_GRAPH        = NO\r
+\r
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \r
+# generated by dot. Possible values are png, jpg, or gif\r
+# If left blank png will be used.\r
+\r
+DOT_IMAGE_FORMAT       = png\r
+\r
+# The tag DOT_PATH can be used to specify the path where the dot tool can be \r
+# found. If left blank, it is assumed the dot tool can be found in the path.\r
+\r
+DOT_PATH               = \r
+\r
+# The DOTFILE_DIRS tag can be used to specify one or more directories that \r
+# contain dot files that are included in the documentation (see the \r
+# \dotfile command).\r
+\r
+DOTFILE_DIRS           = \r
+\r
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width \r
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than \r
+# this value, doxygen will try to truncate the graph, so that it fits within \r
+# the specified constraint. Beware that most browsers cannot cope with very \r
+# large images.\r
+\r
+MAX_DOT_GRAPH_WIDTH    = 1024\r
+\r
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height \r
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than \r
+# this value, doxygen will try to truncate the graph, so that it fits within \r
+# the specified constraint. Beware that most browsers cannot cope with very \r
+# large images.\r
+\r
+MAX_DOT_GRAPH_HEIGHT   = 1024\r
+\r
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \r
+# graphs generated by dot. A depth value of 3 means that only nodes reachable \r
+# from the root by following a path via at most 3 edges will be shown. Nodes \r
+# that lay further from the root node will be omitted. Note that setting this \r
+# option to 1 or 2 may greatly reduce the computation time needed for large \r
+# code bases. Also note that a graph may be further truncated if the graph's \r
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH \r
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), \r
+# the graph is not depth-constrained.\r
+\r
+MAX_DOT_GRAPH_DEPTH    = 0\r
+\r
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \r
+# background. This is disabled by default, which results in a white background. \r
+# Warning: Depending on the platform used, enabling this option may lead to \r
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to \r
+# read).\r
+\r
+DOT_TRANSPARENT        = NO\r
+\r
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \r
+# files in one run (i.e. multiple -o and -T options on the command line). This \r
+# makes dot run faster, but since only newer versions of dot (>1.8.10) \r
+# support this, this feature is disabled by default.\r
+\r
+DOT_MULTI_TARGETS      = NO\r
+\r
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \r
+# generate a legend page explaining the meaning of the various boxes and \r
+# arrows in the dot generated graphs.\r
+\r
+GENERATE_LEGEND        = YES\r
+\r
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \r
+# remove the intermediate dot files that are used to generate \r
+# the various graphs.\r
+\r
+DOT_CLEANUP            = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration::additions related to the search engine   \r
+#---------------------------------------------------------------------------\r
+\r
+# The SEARCHENGINE tag specifies whether or not a search engine should be \r
+# used. If set to NO the values of all tags below this one will be ignored.\r
+\r
+SEARCHENGINE           = NO\r
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html
new file mode 100644 (file)
index 0000000..20c4e70
--- /dev/null
@@ -0,0 +1,3 @@
+<p></p>
+<p align="center"><img src="../images/tsbasbw.gif" width="1000" height="7"></p>
+<CITE>Copyright <sup>©</sup> 2007 Cameron Rich</CITE>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg
new file mode 100644 (file)
index 0000000..7352bba
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/tsbasbw.gif b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/tsbasbw.gif
new file mode 100644 (file)
index 0000000..cf03b12
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/tsbasbw.gif differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in
new file mode 100644 (file)
index 0000000..513d57a
--- /dev/null
@@ -0,0 +1,163 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+
+menu "Axhttpd Configuration"
+depends on CONFIG_AXHTTPD
+
+config CONFIG_HTTP_STATIC_BUILD
+    bool "Static Build"
+    default n
+    help
+        Select y if you want axhttpd to be a static build (i.e. don't use the
+        axtls shared library or dll).
+        
+config CONFIG_HTTP_PORT
+    int "HTTP port"
+    default 80
+    help
+        The port number of the normal HTTP server. 
+
+        You must be a root user in order to use the default port.
+
+config CONFIG_HTTP_HTTPS_PORT
+    int "HTTPS port"
+    default 443
+    help
+        The port number of the HTTPS server.
+
+        You must be a root user in order to use the default port.
+
+config CONFIG_HTTP_SESSION_CACHE_SIZE
+    int "SSL session cache size"
+    default 5
+    help
+        The size of the SSL session cache.
+        
+        This is not actually related to the number of concurrent users, but 
+        for optimum performance they should be the same (with a penalty 
+        in memory usage).
+
+config CONFIG_HTTP_WEBROOT
+    string "Web root location"
+    default "../www" if !CONFIG_PLATFORM_WIN32
+    default "..\\www" if CONFIG_PLATFORM_WIN32
+    help
+        The location of the web root in relation to axhttpd. This is 
+        the directory where index.html lives.
+
+config CONFIG_HTTP_TIMEOUT
+    int "Timeout"
+    default 300
+    help
+        Set the timeout of a connection in seconds.
+
+menu "CGI"
+depends on !CONFIG_PLATFORM_WIN32
+
+config CONFIG_HTTP_HAS_CGI
+    bool "Enable CGI"
+    default y
+    depends on !CONFIG_PLATFORM_WIN32
+    help
+        Enable the CGI capability. Not available on Win32 platforms.
+
+config CONFIG_HTTP_CGI_EXTENSIONS
+    string "CGI File Extension(s)"
+    default ".lua,.lp"
+    depends on CONFIG_HTTP_HAS_CGI
+    help
+        Tell axhhtpd what file extension(s) are used for CGI.
+
+        This is a comma separated list - e.g. ".php,.pl" etc
+
+config CONFIG_HTTP_ENABLE_LUA
+    bool "Enable Lua"
+    default y
+    depends on CONFIG_HTTP_HAS_CGI
+    help
+        Lua is a powerful, fast, light-weight, embeddable scripting language.
+
+        See http://www.lua.org for details.
+
+config CONFIG_HTTP_LUA_PREFIX
+    string "Lua's Installation Prefix"
+    default "/usr/local"
+    depends on CONFIG_HTTP_ENABLE_LUA
+
+    help
+        The location of Lua's installation prefix. This is also necessary for
+        Lua's cgi launcher application.
+
+config CONFIG_HTTP_LUA_CGI_LAUNCHER
+    string "CGI launcher location"
+    default "/bin/cgi.exe" if CONFIG_PLATFORM_CYGWIN
+    default "/bin/cgi" if !CONFIG_PLATFORM_CYGWIN
+    depends on CONFIG_HTTP_ENABLE_LUA
+    help
+        The location of LUA's CGI launcher application (after
+        the CONFIG_HTTP_LUA_PREFIX)
+
+config CONFIG_HTTP_BUILD_LUA
+    bool "Build Lua"
+    default n
+    depends on CONFIG_HTTP_ENABLE_LUA
+    help
+        Build Lua and install in /usr/local/bin
+
+endmenu
+
+config CONFIG_HTTP_DIRECTORIES
+    bool "Enable Directory Listing"
+    default y
+    help
+        Enable directory listing.
+    
+config CONFIG_HTTP_HAS_AUTHORIZATION
+    bool "Enable authorization"
+    default y
+    help
+        Pages/directories can have passwords associated with them.
+
+config CONFIG_HTTP_HAS_IPV6
+    bool "Enable IPv6"
+    default n
+    depends on !CONFIG_PLATFORM_WIN32
+    help
+        Use IPv6 instead of IPv4.
+    
+        Does not work under Win32
+
+config CONFIG_HTTP_ENABLE_DIFFERENT_USER
+    bool "Enable different user"
+    default n
+    depends on !CONFIG_PLATFORM_WIN32
+    help
+        Allow the web server to be run as a different user
+    
+config CONFIG_HTTP_USER
+    string "As User"
+    default "nobody"
+    depends on CONFIG_HTTP_ENABLE_DIFFERENT_USER
+    help
+        The user name that will be used to run axhttpd.
+
+config CONFIG_HTTP_VERBOSE
+    bool "Verbose Mode"
+    default y if CONFIG_SSL_FULL_MODE
+    default n if !CONFIG_SSL_FULL_MODE
+    help
+        Enable extra statements used when using axhttpd.
+
+config CONFIG_HTTP_IS_DAEMON
+    bool "Run as a daemon"
+    default n
+    depends on !CONFIG_PLATFORM_WIN32
+    help 
+        Run axhttpd as a background process.
+
+        Does not work under Win32
+
+endmenu
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile
new file mode 100644 (file)
index 0000000..b8c18d2
--- /dev/null
@@ -0,0 +1,127 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+all : web_server lua
+
+AXTLS_HOME=..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+ifndef CONFIG_PLATFORM_WIN32
+
+ifdef CONFIG_PLATFORM_CYGWIN
+TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd.exe
+TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd.exe
+else
+TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd
+TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd
+endif
+
+ifdef CONFIG_HTTP_STATIC_BUILD
+LIBS=$(AXTLS_HOME)/$(STAGE)/libaxtls.a
+else
+LIBS=-L$(AXTLS_HOME)/$(STAGE) -laxtls
+endif
+
+ifdef CONFIG_HTTP_BUILD_LUA
+lua: kepler-1.1
+
+kepler-1.1:
+       @tar xvfz   kepler-1.1-snapshot-20070521-1825.tar.gz
+       @cat kepler.patch | patch -p0
+       cd kepler-1.1; ./configure --prefix=$(CONFIG_HTTP_LUA_PREFIX) --launcher=cgi --lua-suffix= ; make install
+else
+lua:
+endif
+
+else # win32 build
+lua:
+
+TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd.exe
+TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd.exe
+
+ifdef CONFIG_HTTP_STATIC_BUILD
+LIBS=$(AXTLS_HOME)/$(STAGE)/axtls.static.lib $(AXTLS_HOME)\\config\\axtls.res
+else
+LIBS=$(AXTLS_HOME)/$(STAGE)/axtls.lib $(AXTLS_HOME)\\config\\axtls.res
+endif
+endif
+
+ifndef CONFIG_AXHTTPD
+web_server:
+else
+
+web_server :: $(TARGET)
+
+ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+web_server :: $(TARGET2)
+endif
+
+OBJ= \
+       axhttpd.o \
+       proc.o \
+       tdate_parse.o
+
+include $(AXTLS_HOME)/config/makefile.post
+
+ifndef CONFIG_PLATFORM_WIN32
+
+$(TARGET): $(OBJ) $(AXTLS_HOME)/$(STAGE)/libaxtls.a
+       $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
+ifdef CONFIG_STRIP_UNWANTED_SECTIONS
+       $(STRIP) --remove-section=.comment $(TARGET)
+endif
+
+$(TARGET2): htpasswd.o $(AXTLS_HOME)/$(STAGE)/libaxtls.a
+       $(LD) $(LDFLAGS) -o $@ htpasswd.o $(LIBS)
+
+else    # Win32
+
+OBJ:=$(OBJ:.o=.obj)
+%.obj : %.c
+       $(CC) $(CFLAGS) $< 
+
+htpasswd.obj : htpasswd.c
+       $(CC) $(CFLAGS) $? 
+       
+$(TARGET): $(OBJ)
+       $(LD) $(LDFLAGS) /out:$@ $(LIBS) $?
+
+$(TARGET2): htpasswd.obj
+       $(LD) $(LDFLAGS) /out:$@ $(LIBS) $?
+endif
+
+endif       # CONFIG_AXHTTPD
+
+clean::
+       -@rm -f $(TARGET)*
+       -@rm -fr kepler-1.1
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h b/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h
new file mode 100644 (file)
index 0000000..73c299f
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "ssl.h"
+
+#define BACKLOG 15
+#define VERSION "1.0.0"
+#ifdef CONFIG_HTTP_HAS_IPV6
+#define HAVE_IPV6
+#endif
+
+#define MAXPOSTDATASIZE                     30000
+#define MAXREQUESTLENGTH                    256
+#define BLOCKSIZE                           4096
+
+#define INITIAL_CONNECTION_SLOTS            10
+#define CONFIG_HTTP_DEFAULT_SSL_OPTIONS     SSL_DISPLAY_CERTS
+
+#define STATE_WANT_TO_READ_HEAD             1
+#define STATE_WANT_TO_SEND_HEAD             2
+#define STATE_WANT_TO_READ_FILE             3
+#define STATE_WANT_TO_SEND_FILE             4
+#define STATE_DOING_DIR                     5
+
+enum
+{
+    TYPE_GET,
+    TYPE_HEAD,
+    TYPE_POST
+};
+
+struct connstruct 
+{
+    struct connstruct *next;
+    int state;
+    int reqtype;
+    int networkdesc;
+    int filedesc;
+    SSL *ssl;
+
+#if defined(CONFIG_HTTP_DIRECTORIES)
+#ifdef WIN32
+    HANDLE dirp;
+    WIN32_FIND_DATA file_data;
+#else
+    DIR *dirp;
+#endif
+#endif
+
+    time_t timeout;
+    char actualfile[MAXREQUESTLENGTH];
+    char filereq[MAXREQUESTLENGTH];
+    char dirname[MAXREQUESTLENGTH];
+    char server_name[MAXREQUESTLENGTH];
+    int numbytes;
+    char databuf[BLOCKSIZE];
+    uint8_t is_ssl;
+    uint8_t close_when_done;
+    time_t if_modified_since;
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+    uint8_t is_cgi;
+#ifdef CONFIG_HTTP_ENABLE_LUA
+    uint8_t is_lua;
+#endif
+    int content_length;
+    char remote_addr[MAXREQUESTLENGTH];
+    char uri_request[MAXREQUESTLENGTH];
+    char uri_path_info[MAXREQUESTLENGTH];
+    char uri_query[MAXREQUESTLENGTH];
+    char cookie[MAXREQUESTLENGTH];
+#endif
+#if defined(CONFIG_HTTP_HAS_AUTHORIZATION)
+    char authorization[MAXREQUESTLENGTH];
+#endif
+  int post_read;
+  int post_state;
+  char *post_data;
+};
+
+struct serverstruct 
+{
+    struct serverstruct *next;
+    int sd;
+    int is_ssl;
+    SSL_CTX *ssl_ctx;
+};
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+struct cgiextstruct 
+{
+    struct cgiextstruct *next;
+    char *ext;
+};
+#endif
+
+/* global prototypes */
+extern struct serverstruct *servers;
+extern struct connstruct *usedconns;
+extern struct connstruct *freeconns;
+extern const char * const server_version;
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+extern struct cgiextstruct *cgiexts;
+#endif
+
+/* conn.c prototypes */
+void removeconnection(struct connstruct *cn);
+
+/* proc.c prototypes */
+void procdodir(struct connstruct *cn);
+void procreadhead(struct connstruct *cn);
+void procsendhead(struct connstruct *cn);
+void procreadfile(struct connstruct *cn);
+void procsendfile(struct connstruct *cn);
+#if defined(CONFIG_HTTP_HAS_CGI)
+void read_post_data(struct connstruct *cn);
+#endif
+
+/* misc.c prototypes */
+char *my_strncpy(char *dest, const char *src, size_t n);
+int isdir(const char *name);
+
+/* tdate prototypes */
+void tdate_init(void);
+time_t tdate_parse(const char* str);
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c
new file mode 100644 (file)
index 0000000..35d36f6
--- /dev/null
@@ -0,0 +1,604 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <pwd.h>
+#include "axhttp.h"
+
+struct serverstruct *servers;
+struct connstruct *usedconns;
+struct connstruct *freeconns;
+const char * const server_version = "axhttpd/"AXTLS_VERSION;
+
+static void addtoservers(int sd);
+static int openlistener(int port);
+static void handlenewconnection(int listenfd, int is_ssl);
+static void addconnection(int sd, char *ip, int is_ssl);
+static void ax_chdir(void);
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+struct cgiextstruct *cgiexts;
+static void addcgiext(const char *tp);
+
+#if !defined(WIN32)
+static void reaper(int sigtype) 
+{
+    wait3(NULL, WNOHANG, NULL);
+}
+#endif
+#endif
+
+#ifdef CONFIG_HTTP_VERBOSE  /* should really be in debug mode or something */
+/* clean up memory for valgrind */
+static void sigint_cleanup(int sig)
+{
+    struct serverstruct *sp;
+    struct connstruct *tp;
+
+    while (servers != NULL) 
+    {
+        if (servers->is_ssl)
+            ssl_ctx_free(servers->ssl_ctx);
+
+        sp = servers->next;
+        free(servers);
+        servers = sp;
+    }
+
+    while (freeconns != NULL)
+    {
+        tp = freeconns->next;
+        free(freeconns);
+        freeconns = tp;
+    }
+
+    while (usedconns != NULL)
+    {
+        tp = usedconns->next;
+        free(usedconns);
+        usedconns = tp;
+    }
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+    while (cgiexts)
+    {
+        struct cgiextstruct *cp = cgiexts->next;
+        if (cp == NULL) /* last entry */
+            free(cgiexts->ext);
+        free(cgiexts);
+        cgiexts = cp;
+    }
+#endif
+
+    exit(0);
+}
+
+static void die(int sigtype) 
+{
+    exit(0);
+}
+#endif
+
+int main(int argc, char *argv[]) 
+{
+    fd_set rfds, wfds;
+    struct connstruct *tp, *to;
+    struct serverstruct *sp;
+    int rnum, wnum, active;
+    int i;
+    time_t currtime;
+
+#ifdef WIN32
+    WORD wVersionRequested = MAKEWORD(2, 2);
+    WSADATA wsaData;
+    WSAStartup(wVersionRequested,&wsaData);
+#else
+    signal(SIGPIPE, SIG_IGN);
+#if defined(CONFIG_HTTP_HAS_CGI)
+    signal(SIGCHLD, reaper);
+#endif
+#ifdef CONFIG_HTTP_VERBOSE
+    signal(SIGQUIT, die);
+#endif
+#endif
+
+#ifdef CONFIG_HTTP_VERBOSE
+    signal(SIGTERM, die);
+    signal(SIGINT, sigint_cleanup);
+#endif
+    tdate_init();
+
+    for (i = 0; i < INITIAL_CONNECTION_SLOTS; i++) 
+    {
+        tp = freeconns;
+        freeconns = (struct connstruct *)calloc(1, sizeof(struct connstruct));
+        freeconns->next = tp;
+    }
+
+    if ((active = openlistener(CONFIG_HTTP_PORT)) == -1) 
+    {
+#ifdef CONFIG_HTTP_VERBOSE
+        fprintf(stderr, "ERR: Couldn't bind to port %d\n",
+                CONFIG_HTTP_PORT);
+#endif
+        exit(1);
+    }
+
+    addtoservers(active);
+
+    if ((active = openlistener(CONFIG_HTTP_HTTPS_PORT)) == -1) 
+    {
+#ifdef CONFIG_HTTP_VERBOSE
+        fprintf(stderr, "ERR: Couldn't bind to port %d\n", 
+                CONFIG_HTTP_HTTPS_PORT);
+#endif
+        exit(1);
+    }
+
+    addtoservers(active);
+    servers->ssl_ctx = ssl_ctx_new(CONFIG_HTTP_DEFAULT_SSL_OPTIONS, 
+                                CONFIG_HTTP_SESSION_CACHE_SIZE);
+    servers->is_ssl = 1;
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+    addcgiext(CONFIG_HTTP_CGI_EXTENSIONS);
+#endif
+
+#if defined(CONFIG_HTTP_VERBOSE)
+#if defined(CONFIG_HTTP_HAS_CGI)
+    printf("addcgiext %s\n", CONFIG_HTTP_CGI_EXTENSIONS); 
+#endif
+    printf("%s: listening on ports %d (http) and %d (https)\n", 
+            server_version, CONFIG_HTTP_PORT, CONFIG_HTTP_HTTPS_PORT);
+    TTY_FLUSH();
+#endif
+
+    ax_chdir();
+
+#ifdef CONFIG_HTTP_ENABLE_DIFFERENT_USER
+    {
+        struct passwd *pd = getpwnam(CONFIG_HTTP_USER);
+
+        if (pd != NULL)
+        {
+            int res = setuid(pd->pw_uid);
+            res |= setgid(pd->pw_gid);
+
+#if defined(CONFIG_HTTP_VERBOSE)
+            if (res == 0)
+            {
+                printf("change to '%s' successful\n", CONFIG_HTTP_USER); 
+                TTY_FLUSH();
+            }
+#endif
+        }
+
+    }
+#endif
+
+
+#ifndef WIN32 
+#ifdef CONFIG_HTTP_IS_DAEMON
+    if (fork() > 0)  /* parent will die */
+        exit(0);
+
+    setsid();
+#endif
+#endif
+
+    /* main loop */
+    while (1)
+    {
+        FD_ZERO(&rfds);
+        FD_ZERO(&wfds);
+        rnum = wnum = -1;
+        sp = servers;
+
+        while (sp != NULL)  /* read each server port */
+        {
+            FD_SET(sp->sd, &rfds);
+
+            if (sp->sd > rnum) 
+                rnum = sp->sd;
+            sp = sp->next;
+        }
+
+        /* Add the established sockets */
+        tp = usedconns;
+        currtime = time(NULL);
+
+        while (tp != NULL) 
+        {
+            if (currtime > tp->timeout)     /* timed out? Kill it. */
+            {
+                to = tp;
+                tp = tp->next;
+                removeconnection(to);
+                continue;
+            }
+
+            if (tp->state == STATE_WANT_TO_READ_HEAD) 
+            {
+                FD_SET(tp->networkdesc, &rfds);
+                if (tp->networkdesc > rnum) 
+                    rnum = tp->networkdesc;
+            }
+
+            if (tp->state == STATE_WANT_TO_SEND_HEAD) 
+            {
+                FD_SET(tp->networkdesc, &wfds);
+                if (tp->networkdesc > wnum) 
+                    wnum = tp->networkdesc;
+            }
+
+            if (tp->state == STATE_WANT_TO_READ_FILE) 
+            {
+                FD_SET(tp->filedesc, &rfds);
+                if (tp->filedesc > rnum) 
+                    rnum = tp->filedesc;
+            }
+
+            if (tp->state == STATE_WANT_TO_SEND_FILE) 
+            {
+                FD_SET(tp->networkdesc, &wfds);
+                if (tp->networkdesc > wnum) 
+                    wnum = tp->networkdesc;
+            }
+
+#if defined(CONFIG_HTTP_DIRECTORIES)
+            if (tp->state == STATE_DOING_DIR) 
+            {
+                FD_SET(tp->networkdesc, &wfds);
+                if (tp->networkdesc > wnum) 
+                    wnum = tp->networkdesc;
+            }
+#endif
+            tp = tp->next;
+        }
+
+        active = select(wnum > rnum ? wnum+1 : rnum+1,
+                rnum != -1 ? &rfds : NULL, 
+                wnum != -1 ? &wfds : NULL,
+                NULL, NULL);
+
+        /* New connection? */
+        sp = servers;
+        while (active > 0 && sp != NULL) 
+        {
+            if (FD_ISSET(sp->sd, &rfds)) 
+            {
+                handlenewconnection(sp->sd, sp->is_ssl);
+                active--;
+            }
+
+            sp = sp->next;
+        }
+
+        /* Handle the established sockets */
+        tp = usedconns;
+
+        while (active > 0 && tp != NULL) 
+        {
+            to = tp;
+            tp = tp->next;
+
+            if (to->state == STATE_WANT_TO_READ_HEAD &&
+                        FD_ISSET(to->networkdesc, &rfds)) 
+            {
+                active--;
+#if defined(CONFIG_HTTP_HAS_CGI)
+                if (to->post_state)
+                    read_post_data(to);
+                else
+#endif
+                    procreadhead(to);
+            } 
+
+            if (to->state == STATE_WANT_TO_SEND_HEAD &&
+                        FD_ISSET(to->networkdesc, &wfds)) 
+            {
+                active--;
+                procsendhead(to);
+            } 
+
+            if (to->state == STATE_WANT_TO_READ_FILE && 
+                        FD_ISSET(to->filedesc, &rfds)) 
+            {
+                active--;
+                procreadfile(to);
+            } 
+
+            if (to->state == STATE_WANT_TO_SEND_FILE && 
+                        FD_ISSET(to->networkdesc, &wfds)) 
+            {
+                active--;
+                procsendfile(to);
+            }
+
+#if defined(CONFIG_HTTP_DIRECTORIES)
+            if (to->state == STATE_DOING_DIR &&
+                        FD_ISSET(to->networkdesc, &wfds)) 
+            {
+                active--;
+                procdodir(to);
+            }
+#endif
+        }
+    }
+
+    return 0;
+}
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+static void addcgiext(const char *cgi_exts)
+{
+    char *cp = strdup(cgi_exts);
+
+    /* extenstions are comma separated */
+    do 
+    {
+        struct cgiextstruct *ex = (struct cgiextstruct *)
+                            malloc(sizeof(struct cgiextstruct));
+        ex->ext = cp;
+        ex->next = cgiexts;
+        cgiexts = ex;
+        if ((cp = strchr(cp, ',')) != NULL)
+            *cp++ = 0;
+    } while (cp != NULL);
+}
+#endif
+
+static void addtoservers(int sd) 
+{
+    struct serverstruct *tp = (struct serverstruct *)
+                            calloc(1, sizeof(struct serverstruct));
+    tp->next = servers;
+    tp->sd = sd;
+    servers = tp;
+}
+
+#ifdef HAVE_IPV6
+static void handlenewconnection(int listenfd, int is_ssl) 
+{
+    struct sockaddr_in6 their_addr;
+    int tp = sizeof(their_addr);
+    char ipbuf[100];
+    int connfd = accept(listenfd, (struct sockaddr *)&their_addr, &tp);
+
+    if (tp == sizeof(struct sockaddr_in6)) 
+        inet_ntop(AF_INET6, &their_addr.sin6_addr, ipbuf, sizeof(ipbuf));
+    else if (tp == sizeof(struct sockaddr_in)) 
+        inet_ntop(AF_INET, &(((struct sockaddr_in *)&their_addr)->sin_addr),
+                ipbuf, sizeof(ipbuf));
+    else 
+        *ipbuf = '\0';
+
+    addconnection(connfd, ipbuf, is_ssl);
+}
+
+#else
+static void handlenewconnection(int listenfd, int is_ssl) 
+{
+    struct sockaddr_in their_addr;
+    socklen_t tp = sizeof(struct sockaddr_in);
+    int connfd = accept(listenfd, (struct sockaddr *)&their_addr, &tp);
+    addconnection(connfd, inet_ntoa(their_addr.sin_addr), is_ssl);
+}
+#endif
+
+static int openlistener(int port) 
+{
+    int sd;
+#ifdef WIN32
+    char tp = 1;
+#else
+    int tp = 1;
+#endif
+#ifndef HAVE_IPV6
+    struct sockaddr_in my_addr;
+
+    if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
+        return -1;
+
+    memset(&my_addr, 0, sizeof(my_addr));
+    my_addr.sin_family = AF_INET;
+    my_addr.sin_port = htons((short)port);
+    my_addr.sin_addr.s_addr = INADDR_ANY;
+#else
+    struct sockaddr_in6 my_addr;
+
+    if ((sd = socket(AF_INET6, SOCK_STREAM, 0)) == -1) 
+        return -1;
+
+    memset(&my_addr, 0, sizeof(my_addr));
+    my_addr.sin6_family = AF_INET6;
+    my_addr.sin6_port = htons(port);
+    my_addr.sin6_addr.s_addr = INADDR_ANY;
+#endif
+
+    setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &tp, sizeof(tp));
+    if (bind(sd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
+    {
+        close(sd);
+        return -1;
+    }
+
+    listen(sd, BACKLOG);
+    return sd;
+}
+
+/* Wrapper function for strncpy() that guarantees
+   a null-terminated string. This is to avoid any possible
+   issues due to strncpy()'s behaviour.
+ */
+char *my_strncpy(char *dest, const char *src, size_t n) 
+{
+    strncpy(dest, src, n);
+    dest[n-1] = '\0';
+    return dest;
+}
+
+int isdir(const char *tpbuf) 
+{
+    struct stat st;
+    char path[MAXREQUESTLENGTH];
+    strcpy(path, tpbuf);
+
+#ifdef WIN32        /* win32 stat() can't handle trailing '\' */
+    if (path[strlen(path)-1] == '\\')
+        path[strlen(path)-1] = 0;
+#endif
+
+    if (stat(path, &st) == -1) 
+        return 0;
+
+    if ((st.st_mode & S_IFMT) == S_IFDIR) 
+        return 1;
+
+    return 0;
+}
+
+static void addconnection(int sd, char *ip, int is_ssl) 
+{
+    struct connstruct *tp;
+
+    /* Get ourselves a connstruct */
+    if (freeconns == NULL) 
+        tp = (struct connstruct *)calloc(1, sizeof(struct connstruct));
+    else 
+    {
+        tp = freeconns;
+        freeconns = tp->next;
+    }
+
+    /* Attach it to the used list */
+    tp->next = usedconns;
+    usedconns = tp;
+    tp->networkdesc = sd;
+
+    if (is_ssl)
+        tp->ssl = ssl_server_new(servers->ssl_ctx, sd);
+
+    tp->is_ssl = is_ssl;
+    tp->filedesc = -1;
+#if defined(CONFIG_HTTP_HAS_DIRECTORIES)
+    tp->dirp = NULL;
+#endif
+    *tp->actualfile = '\0';
+    *tp->filereq = '\0';
+    tp->state = STATE_WANT_TO_READ_HEAD;
+    tp->reqtype = TYPE_GET;
+    tp->close_when_done = 0;
+    tp->timeout = time(NULL) + CONFIG_HTTP_TIMEOUT;
+#if defined(CONFIG_HTTP_HAS_CGI)
+    strcpy(tp->remote_addr, ip);
+#endif
+}
+
+void removeconnection(struct connstruct *cn) 
+{
+    struct connstruct *tp;
+    int shouldret = 0;
+
+    tp = usedconns;
+
+    if (tp == NULL || cn == NULL) 
+        shouldret = 1;
+    else if (tp == cn) 
+        usedconns = tp->next;
+    else 
+    {
+        while (tp != NULL) 
+        {
+            if (tp->next == cn) 
+            {
+                tp->next = (tp->next)->next;
+                shouldret = 0;
+                break;
+            }
+
+            tp = tp->next;
+            shouldret = 1;
+        }
+    }
+
+    if (shouldret) 
+        return;
+
+    /* If we did, add it to the free list */
+    cn->next = freeconns;
+    freeconns = cn;
+
+    /* Close it all down */
+    if (cn->networkdesc != -1) 
+    {
+        if (cn->is_ssl) 
+        {
+            ssl_free(cn->ssl);
+            cn->ssl = NULL;
+        }
+
+        SOCKET_CLOSE(cn->networkdesc);
+    }
+
+    if (cn->filedesc != -1) 
+        close(cn->filedesc);
+
+#if defined(CONFIG_HTTP_HAS_DIRECTORIES)
+    if (cn->dirp != NULL) 
+#ifdef WIN32
+        FindClose(cn->dirp);
+#else
+        closedir(cn->dirp);
+#endif
+#endif
+}
+
+/*
+ * Change directories one way or the other.
+ */
+static void ax_chdir(void)
+{
+    static char *webroot = CONFIG_HTTP_WEBROOT;
+
+    if (chdir(webroot))
+    {
+#ifdef CONFIG_HTTP_VERBOSE
+        fprintf(stderr, "'%s' is not a directory\n", webroot);
+#endif
+        exit(1);
+    }
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c
new file mode 100644 (file)
index 0000000..1a7a231
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ssl.h"
+
+int tfd;
+
+void base64_encode(const uint8_t *in, size_t inlen, char *out, size_t outlen)
+{
+    static const char b64str[64] =
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+    while (inlen && outlen)
+    {
+        *out++ = b64str[(in[0] >> 2) & 0x3f];
+        if (!--outlen)
+            break;
+
+        *out++ = b64str[((in[0] << 4)
+                + (--inlen ? in[1] >> 4 : 0)) & 0x3f];
+        if (!--outlen)
+            break;
+        *out++ = (inlen
+             ? b64str[((in[1] << 2)
+                 + (--inlen ? in[2] >> 6 : 0))
+             & 0x3f]
+             : '=');
+        if (!--outlen)
+            break;
+        *out++ = inlen ? b64str[in[2] & 0x3f] : '=';
+        if (!--outlen)
+            break;
+        if (inlen)
+            inlen--;
+        if (inlen)
+            in += 3;
+    }
+
+    if (outlen)
+        *out = '\0';
+}
+
+static void usage(void) 
+{
+    fprintf(stderr,"Usage: htpasswd username\n");
+    exit(1);
+}
+
+#ifdef WIN32
+static char * getpass(const char *prompt)
+{
+    static char buf[127];
+    FILE *fp = stdin;
+
+    printf(prompt); TTY_FLUSH();
+#if 0
+    fp = fopen("/dev/tty", "w");
+    if (fp == NULL) 
+    {
+        printf("null\n"); TTY_FLUSH();
+        fp = stdin;
+    }
+#endif
+
+    fgets(buf, sizeof(buf), fp);
+    while (buf[strlen(buf)-1] < ' ') 
+        buf[strlen(buf)-1] = '\0';
+
+    //if (fp != stdin) 
+    //    fclose(fp);
+    return buf;
+}
+#endif
+
+int main(int argc, char *argv[]) 
+{
+    char* pw;
+    uint8_t md5_salt[MD5_SIZE], md5_pass[MD5_SIZE];
+    char b64_salt[MD5_SIZE+10], b64_pass[MD5_SIZE+10];
+    MD5_CTX ctx;
+
+    if (argc != 2)
+        usage();
+
+    pw = strdup(getpass("New password:"));
+    if (strcmp(pw, getpass("Re-type new password:")) != 0)
+    {
+        fprintf(stderr, "They don't match, sorry.\n" );
+        exit(1);
+    }
+
+    RNG_initialize((uint8_t *)pw, sizeof(pw));
+    get_random(MD5_SIZE, md5_salt);
+    RNG_terminate();
+    base64_encode(md5_salt, MD5_SIZE, b64_salt, sizeof(b64_salt));
+
+    MD5_Init(&ctx);
+    MD5_Update(&ctx, md5_salt, MD5_SIZE);
+    MD5_Update(&ctx, (uint8_t *)pw, strlen(pw));
+    MD5_Final(md5_pass, &ctx);
+    base64_encode(md5_pass, MD5_SIZE, b64_pass, sizeof(b64_pass));
+
+    printf("Add the following to your '.htpasswd' file\n");
+    printf("%s:%s$%s\n", argv[1], b64_salt, b64_pass);
+    return 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz b/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz
new file mode 100755 (executable)
index 0000000..d1caec5
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler.patch b/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler.patch
new file mode 100644 (file)
index 0000000..dbab7e5
--- /dev/null
@@ -0,0 +1,64 @@
+diff -Naur kepler-1.1/launcher/cgi/Makefile kepler-1.1.new/launcher/cgi/Makefile
+--- kepler-1.1/launcher/cgi/Makefile   2007-04-21 06:41:49.000000000 +1000
++++ kepler-1.1.new/launcher/cgi/Makefile       2007-05-16 22:13:38.750000000 +1000
+@@ -16,7 +16,7 @@
+ $T: $(CH) $(OBJS)
+-      $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
++      $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) -L../../lua-5.1.2/src -llua
+ build: $T
+diff -Naur kepler-1.1/luafilesystem/Makefile kepler-1.1.new/luafilesystem/Makefile
+--- kepler-1.1/luafilesystem/Makefile  2007-04-21 06:41:49.000000000 +1000
++++ kepler-1.1.new/luafilesystem/Makefile      2007-05-16 22:06:25.546875000 +1000
+@@ -12,7 +12,7 @@
+ lib: src/$(LIBNAME)
+ src/$(LIBNAME): $(OBJS)
+-      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
++      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS) -L../lua-5.1.2/src -llua
+ install: src/$(LIBNAME)
+       mkdir -p $(LUA_LIBDIR)
+diff -Naur kepler-1.1/luasocket-2.0.1/src/makefile kepler-1.1.new/luasocket-2.0.1/src/makefile
+--- kepler-1.1/luasocket-2.0.1/src/makefile    2007-04-21 06:41:49.000000000 +1000
++++ kepler-1.1.new/luasocket-2.0.1/src/makefile        2007-05-16 22:36:37.125000000 +1000
+@@ -47,10 +47,10 @@
+ all: $(SOCKET_SO) $(MIME_SO) 
+ $(SOCKET_SO): $(SOCKET_OBJS)
+-      $(LD) $(LDFLAGS) -o $@ $(SOCKET_OBJS)
++      $(LD) $(LDFLAGS) -o $@ $(SOCKET_OBJS) -L../../lua-5.1.2/src -llua
+ $(MIME_SO): $(MIME_OBJS)
+-      $(LD) $(LDFLAGS) -o $@ $(MIME_OBJS)
++      $(LD) $(LDFLAGS) -o $@ $(MIME_OBJS) -L../../lua-5.1.2/src -llua
+ $(UNIX_SO): $(UNIX_OBJS)
+       $(LD) $(LDFLAGS) -o $@ $(UNIX_OBJS)
+diff -Naur kepler-1.1/md5/Makefile kepler-1.1.new/md5/Makefile
+--- kepler-1.1/md5/Makefile    2007-04-21 06:41:49.000000000 +1000
++++ kepler-1.1.new/md5/Makefile        2007-05-16 22:06:44.593750000 +1000
+@@ -15,7 +15,7 @@
+ src/$(LIBNAME) : $(OBJS)
+-      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
++      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS) -L../lua-5.1.2/src -llua
+ $(COMPAT_DIR)/compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c
+       $(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
+diff -Naur kepler-1.1/rings/Makefile kepler-1.1.new/rings/Makefile
+--- kepler-1.1/rings/Makefile  2007-04-21 06:41:49.000000000 +1000
++++ kepler-1.1.new/rings/Makefile      2007-05-16 22:05:28.765625000 +1000
+@@ -10,7 +10,7 @@
+ OBJS= src/rings.o
+ src/$(LIBNAME) : $(OBJS)
+-      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
++      export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS) -L../lua-5.1.2/src -llua
+ install:
+       mkdir -p $(LUA_LIBDIR)
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/proc.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/proc.c
new file mode 100644 (file)
index 0000000..3c897c9
--- /dev/null
@@ -0,0 +1,1238 @@
+/*
+ * Copyright (c) 2007-2008, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <string.h>
+#include "axhttp.h"
+
+#define HTTP_VERSION        "HTTP/1.1"
+
+static const char * index_file = "index.html";
+
+static int special_read(struct connstruct *cn, void *buf, size_t count);
+static int special_write(struct connstruct *cn, 
+                                        const char *buf, size_t count);
+static void send_error(struct connstruct *cn, int err);
+static int hexit(char c);
+static void urldecode(char *buf);
+static void buildactualfile(struct connstruct *cn);
+static int sanitizefile(const char *buf);
+static int sanitizehost(char *buf);
+static int htaccess_check(struct connstruct *cn);
+static const char *getmimetype(const char *name);
+
+#if defined(CONFIG_HTTP_DIRECTORIES)
+static void urlencode(const uint8_t *s, char *t);
+static void procdirlisting(struct connstruct *cn);
+#endif
+#if defined(CONFIG_HTTP_HAS_CGI)
+static void proccgi(struct connstruct *cn);
+static void decode_path_info(struct connstruct *cn, char *path_info);
+static int init_read_post_data(char *buf, char *data, struct connstruct *cn, int old_rv);
+#endif
+#ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+static int auth_check(struct connstruct *cn);
+#endif
+
+#if AXDEBUG
+#define AXDEBUGSTART \
+       { \
+               FILE *axdout; \
+               axdout = fopen("/var/log/axdebug", "a"); \
+       
+#define AXDEBUGEND \
+               fclose(axdout); \
+       }
+#else /* AXDEBUG */
+#define AXDEBUGSTART
+#define AXDEBUGEND
+#endif /* AXDEBUG */
+
+/* Returns 1 if elems should continue being read, 0 otherwise */
+static int procheadelem(struct connstruct *cn, char *buf) 
+{
+    char *delim, *value;
+
+    if ((delim = strchr(buf, ' ')) == NULL)
+        return 0;
+
+    *delim = 0;
+    value = delim+1;
+
+    if (strcmp(buf, "GET") == 0 || strcmp(buf, "HEAD") == 0 ||
+                                            strcmp(buf, "POST") == 0) 
+    {
+        if (buf[0] == 'H') 
+            cn->reqtype = TYPE_HEAD;
+        else if (buf[0] == 'P') 
+            cn->reqtype = TYPE_POST;
+
+        if ((delim = strchr(value, ' ')) == NULL)       /* expect HTTP type */
+            return 0;
+
+        *delim = 0;
+        urldecode(value);
+
+        if (sanitizefile(value) == 0) 
+        {
+            send_error(cn, 403);
+            return 0;
+        }
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+        decode_path_info(cn, value);
+#else
+        my_strncpy(cn->filereq, value, MAXREQUESTLENGTH);
+#endif
+        cn->if_modified_since = -1;
+    } 
+    else if (strcmp(buf, "Host:") == 0) 
+    {
+        if (sanitizehost(value) == 0) 
+        {
+            removeconnection(cn);
+            return 0;
+        }
+
+        my_strncpy(cn->server_name, value, MAXREQUESTLENGTH);
+    } 
+    else if (strcmp(buf, "Connection:") == 0 && strcmp(value, "close") == 0) 
+    {
+        cn->close_when_done = 1;
+    } 
+    else if (strcmp(buf, "If-Modified-Since:") == 0) 
+    {
+        cn->if_modified_since = tdate_parse(value);
+    }
+    else if (strcmp(buf, "Expect:") == 0)
+    {
+        send_error(cn, 417); /* expectation failed */
+        return 0;
+    }
+#ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+    else if (strcmp(buf, "Authorization:") == 0 &&
+                                    strncmp(value, "Basic ", 6) == 0)
+    {
+        int size;
+        if (base64_decode(&value[6], strlen(&value[6]), 
+                                        (uint8_t *)cn->authorization, &size))
+            cn->authorization[0] = 0;   /* error */
+        else
+            cn->authorization[size] = 0;
+    }
+#endif
+#if defined(CONFIG_HTTP_HAS_CGI)
+    else if (strcmp(buf, "Content-Length:") == 0)
+    {
+        sscanf(value, "%d", &cn->content_length);
+    }
+    else if (strcmp(buf, "Cookie:") == 0)
+    {
+        my_strncpy(cn->cookie, value, MAXREQUESTLENGTH);
+    }
+#endif
+
+    return 1;
+}
+
+#if defined(CONFIG_HTTP_DIRECTORIES)
+static void procdirlisting(struct connstruct *cn)
+{
+    char buf[MAXREQUESTLENGTH];
+    char actualfile[1024];
+
+    if (cn->reqtype == TYPE_HEAD) 
+    {
+        snprintf(buf, sizeof(buf), HTTP_VERSION
+                " 200 OK\nContent-Type: text/html\n\n");
+        write(cn->networkdesc, buf, strlen(buf));
+        removeconnection(cn);
+        return;
+    }
+
+    strcpy(actualfile, cn->actualfile);
+
+#ifdef WIN32
+    strcat(actualfile, "*");
+    cn->dirp = FindFirstFile(actualfile, &cn->file_data);
+
+    if (cn->dirp == INVALID_HANDLE_VALUE) 
+    {
+        send_error(cn, 404);
+        return;
+    }
+#else
+    if ((cn->dirp = opendir(actualfile)) == NULL) 
+    {
+        send_error(cn, 404);
+        return;
+    }
+#endif
+
+    snprintf(buf, sizeof(buf), HTTP_VERSION
+            " 200 OK\nContent-Type: text/html\n\n"
+            "<html><body>\n<title>Directory Listing</title>\n"
+            "<h3>Directory listing of %s://%s%s</h3><br />\n", 
+            cn->is_ssl ? "https" : "http", cn->server_name, cn->filereq);
+    special_write(cn, buf, strlen(buf));
+    cn->state = STATE_DOING_DIR;
+}
+
+void procdodir(struct connstruct *cn) 
+{
+#ifndef WIN32
+    struct dirent *dp;
+#endif
+    char buf[MAXREQUESTLENGTH];
+    char encbuf[1024];
+    char *file;
+
+    do 
+    {
+       buf[0] = 0;
+
+#ifdef WIN32
+        if (!FindNextFile(cn->dirp, &cn->file_data)) 
+#else
+        if ((dp = readdir(cn->dirp)) == NULL)  
+#endif
+        {
+            snprintf(buf, sizeof(buf), "</body></html>\n");
+            special_write(cn, buf, strlen(buf));
+            removeconnection(cn);
+#ifndef WIN32
+            closedir(cn->dirp);
+#endif
+            return;
+        }
+
+#ifdef WIN32
+        file = cn->file_data.cFileName;
+#else
+        file = dp->d_name;
+#endif
+
+        /* if no index file, don't display the ".." directory */
+        if (cn->filereq[0] == '/' && cn->filereq[1] == '\0' &&
+                strcmp(file, "..") == 0) 
+            continue;
+
+        /* don't display files beginning with "." */
+        if (file[0] == '.' && file[1] != '.')
+            continue;
+
+        /* make sure a '/' is at the end of a directory */
+        if (cn->filereq[strlen(cn->filereq)-1] != '/')
+            strcat(cn->filereq, "/");
+
+        /* see if the dir + file is another directory */
+        snprintf(buf, sizeof(buf), "%s%s", cn->actualfile, file);
+        if (isdir(buf))
+            strcat(file, "/");
+
+        urlencode((uint8_t *)file, encbuf);
+        snprintf(buf, sizeof(buf), "<a href=\"%s%s\">%s</a><br />\n",
+                cn->filereq, encbuf, file);
+    } while (special_write(cn, buf, strlen(buf)));
+}
+
+/* Encode funny chars -> %xx in newly allocated storage */
+/* (preserves '/' !) */
+static void urlencode(const uint8_t *s, char *t) 
+{
+    const uint8_t *p = s;
+    char *tp = t;
+
+    for (; *p; p++) 
+    {
+        if ((*p > 0x00 && *p < ',') ||
+                (*p > '9' && *p < 'A') ||
+                (*p > 'Z' && *p < '_') ||
+                (*p > '_' && *p < 'a') ||
+                (*p > 'z' && *p < 0xA1)) 
+        {
+            sprintf((char *)tp, "%%%02X", *p);
+            tp += 3; 
+        } 
+        else 
+        {
+            *tp = *p;
+            tp++;
+        }
+    }
+
+    *tp='\0';
+}
+
+#endif
+
+void procreadhead(struct connstruct *cn) 
+{
+    char buf[MAXREQUESTLENGTH*4], *tp, *next;
+    int rv;
+
+    memset(buf, 0, MAXREQUESTLENGTH*4);
+    rv = special_read(cn, buf, sizeof(buf)-1);
+    if (rv <= 0) 
+    {
+        if (rv < 0) /* really dead? */
+            removeconnection(cn);
+        return;
+    }
+
+    buf[rv] = '\0';
+    next = tp = buf;
+
+#ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+    cn->authorization[0] = 0;
+#endif
+
+    /* Split up lines and send to procheadelem() */
+    while (*next != '\0') 
+    {
+        /* If we have a blank line, advance to next stage */
+        if (*next == '\r' || *next == '\n') 
+        {
+#if defined(CONFIG_HTTP_HAS_CGI)
+            if (cn->reqtype == TYPE_POST && cn->content_length > 0)
+            {
+                if (init_read_post_data(buf,next,cn,rv) == 0)
+                    return;
+            }
+#endif
+
+            buildactualfile(cn);
+            cn->state = STATE_WANT_TO_SEND_HEAD;
+            return;
+        }
+
+        while (*next != '\r' && *next != '\n' && *next != '\0') 
+            next++;
+
+        if (*next == '\r') 
+        {
+            *next = '\0';
+            next += 2;
+        }
+        else if (*next == '\n') 
+            *next++ = '\0';
+
+        if (procheadelem(cn, tp) == 0) 
+            return;
+
+        tp = next;
+    }
+}
+
+/* In this function we assume that the file has been checked for
+ * maliciousness (".."s, etc) and has been decoded
+ */
+void procsendhead(struct connstruct *cn) 
+{
+    char buf[MAXREQUESTLENGTH];
+    struct stat stbuf;
+    time_t now = cn->timeout - CONFIG_HTTP_TIMEOUT;
+    char date[32];
+    int file_exists;
+
+    /* are we trying to access a file over the HTTP connection instead of a
+     * HTTPS connection? Or is this directory disabled? */
+    if (htaccess_check(cn))      
+    {
+        send_error(cn, 403);
+        return;
+    }
+
+#ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+    if (auth_check(cn))     /* see if there is a '.htpasswd' file */
+    {
+#ifdef CONFIG_HTTP_VERBOSE
+        printf("axhttpd: access to %s denied\n", cn->filereq); TTY_FLUSH();
+#endif
+        removeconnection(cn);
+        return;
+    }
+#endif
+
+    file_exists = stat(cn->actualfile, &stbuf);
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+
+    if (file_exists != -1 && cn->is_cgi)
+    {
+        if ((stbuf.st_mode & S_IEXEC) == 0 || isdir(cn->actualfile))
+        {
+            /* A non-executable file, or directory? */
+            send_error(cn, 403);
+        }
+        else
+            proccgi(cn);
+
+        return;
+    }
+#endif
+
+    /* look for "index.html"? */
+    if (isdir(cn->actualfile))
+    {
+        char tbuf[MAXREQUESTLENGTH];
+        snprintf(tbuf, MAXREQUESTLENGTH, "%s%s", cn->actualfile, index_file);
+
+        if ((file_exists = stat(tbuf, &stbuf)) != -1) 
+            my_strncpy(cn->actualfile, tbuf, MAXREQUESTLENGTH);
+        else
+        {
+#if defined(CONFIG_HTTP_DIRECTORIES)
+            /* If not, we do a directory listing of it */
+            procdirlisting(cn);
+#else
+            send_error(cn, 404);
+#endif
+            return;
+        }
+    }
+
+    if (file_exists == -1)
+    {
+        send_error(cn, 404);
+        return;
+    }
+
+    strcpy(date, ctime(&now));
+
+    /* has the file been read before? */
+    if (cn->if_modified_since != -1 && (cn->if_modified_since == 0 || 
+                                       cn->if_modified_since >= stbuf.st_mtime))
+    {
+        snprintf(buf, sizeof(buf), HTTP_VERSION" 304 Not Modified\nServer: "
+                "%s\nDate: %s\n", server_version, date);
+        special_write(cn, buf, strlen(buf));
+        cn->state = STATE_WANT_TO_READ_HEAD;
+        return;
+    }
+
+    if (cn->reqtype == TYPE_HEAD) 
+    {
+        removeconnection(cn);
+        return;
+    } 
+    else 
+    {
+        int flags = O_RDONLY;
+#if defined(WIN32) || defined(CONFIG_PLATFORM_CYGWIN)
+        flags |= O_BINARY;
+#endif
+        cn->filedesc = open(cn->actualfile, flags);
+
+        if (cn->filedesc < 0) 
+        {
+            send_error(cn, 404);
+            return;
+        }
+
+        snprintf(buf, sizeof(buf), HTTP_VERSION" 200 OK\nServer: %s\n"
+            "Content-Type: %s\nContent-Length: %ld\n"
+            "Date: %sLast-Modified: %s\n", server_version,
+            getmimetype(cn->actualfile), (long) stbuf.st_size,
+            date, ctime(&stbuf.st_mtime)); /* ctime() has a \n on the end */
+
+        special_write(cn, buf, strlen(buf));
+
+#ifdef CONFIG_HTTP_VERBOSE
+        printf("axhttpd: %s:/%s\n", cn->is_ssl ? "https" : "http", cn->filereq);
+        TTY_FLUSH();
+#endif
+
+#ifdef WIN32
+        for (;;)
+        {
+            procreadfile(cn);
+            if (cn->filedesc == -1)
+                break;
+
+            do 
+            {
+                procsendfile(cn);
+            } while (cn->state != STATE_WANT_TO_READ_FILE);
+        }
+#else
+        cn->state = STATE_WANT_TO_READ_FILE;
+#endif
+    }
+}
+
+void procreadfile(struct connstruct *cn) 
+{
+    int rv = read(cn->filedesc, cn->databuf, BLOCKSIZE);
+
+    if (rv <= 0) 
+    {
+        close(cn->filedesc);
+        cn->filedesc = -1;
+
+        if (cn->close_when_done)        /* close immediately */
+            removeconnection(cn);
+        else 
+        {                               /* keep socket open - HTTP 1.1 */
+            cn->state = STATE_WANT_TO_READ_HEAD;
+            cn->numbytes = 0;
+        }
+
+        return;
+    }
+
+    cn->numbytes = rv;
+    cn->state = STATE_WANT_TO_SEND_FILE;
+}
+
+void procsendfile(struct connstruct *cn) 
+{
+    int rv = special_write(cn, cn->databuf, cn->numbytes);
+
+    if (rv < 0)
+        removeconnection(cn);
+    else if (rv == cn->numbytes)
+    {
+        cn->state = STATE_WANT_TO_READ_FILE;
+    }
+    else if (rv == 0)
+    { 
+        /* Do nothing */ 
+    }
+    else 
+    {
+        memmove(cn->databuf, cn->databuf + rv, cn->numbytes - rv);
+        cn->numbytes -= rv;
+    }
+}
+
+#if defined(CONFIG_HTTP_HAS_CGI)
+/* Should this be a bit more dynamic? It would mean more calls to malloc etc */
+#define CGI_ARG_SIZE        17
+
+static void proccgi(struct connstruct *cn) 
+{
+    int tpipe[2], spipe[2];
+    char *myargs[2];
+    char cgienv[CGI_ARG_SIZE][MAXREQUESTLENGTH];
+    char * cgiptr[CGI_ARG_SIZE+4];
+    const char *type = "HEAD";
+    int cgi_index = 0, i;
+    pid_t pid;
+#ifdef WIN32
+    int tmp_stdout;
+#endif
+
+    snprintf(cgienv[0], MAXREQUESTLENGTH, 
+            HTTP_VERSION" 200 OK\nServer: %s\n%s",
+            server_version, (cn->reqtype == TYPE_HEAD) ? "\n" : "");
+    special_write(cn, cgienv[0], strlen(cgienv[0]));
+
+    if (cn->reqtype == TYPE_HEAD) 
+    {
+        removeconnection(cn);
+        return;
+    }
+
+#ifdef CONFIG_HTTP_VERBOSE
+        printf("[CGI]: %s:/%s\n", cn->is_ssl ? "https" : "http", cn->filereq);
+        TTY_FLUSH();
+#endif
+
+    /* win32 cgi is a bit too painful */
+#ifndef WIN32
+       /* set up pipe that is used for sending POST query data to CGI script*/
+    if (cn->reqtype == TYPE_POST) 
+    {
+        if (pipe(spipe) == -1)
+        {
+            printf("[CGI]: could not create pipe");
+            TTY_FLUSH();
+            return;
+        }
+    }
+
+       if (pipe(tpipe) == -1)
+    {
+        printf("[CGI]: could not create pipe");
+        TTY_FLUSH();
+        return;
+    }
+
+    /*
+     * use vfork() instead of fork() for performance 
+     */
+    if ((pid = vfork()) > 0)  /* parent */
+    {
+        /* Send POST query data to CGI script */
+        if ((cn->reqtype == TYPE_POST) && (cn->content_length > 0)) 
+        {
+            write(spipe[1], cn->post_data, cn->content_length);
+            close(spipe[0]);    
+            close(spipe[1]);
+
+            /* free the memory that is allocated in read_post_data() */
+            free(cn->post_data); 
+            cn->post_data = NULL;
+        }
+
+        /* Close the write descriptor */
+        close(tpipe[1]);
+        cn->filedesc = tpipe[0];
+        cn->state = STATE_WANT_TO_READ_FILE;
+        cn->close_when_done = 1;
+        return;
+    }
+
+    if (pid < 0) /* vfork failed */
+        exit(1);
+
+    /* The problem child... */
+
+    /* Our stdout/stderr goes to the socket */
+    dup2(tpipe[1], 1);
+    dup2(tpipe[1], 2);
+
+    /* If it was a POST request, send the socket data to our stdin */
+    if (cn->reqtype == TYPE_POST) 
+        dup2(spipe[0], 0);  
+    else    /* Otherwise we can shutdown the read side of the sock */
+        shutdown(cn->networkdesc, 0);
+
+    myargs[0] = cn->actualfile;
+    myargs[1] = NULL;
+
+    /* 
+     * set the cgi args. A url is defined by:
+     * http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME$PATH_INFO?$QUERY_STRING
+     * TODO: other CGI parameters?
+     */
+    sprintf(cgienv[cgi_index++], "SERVER_SOFTWARE=%s", server_version);
+    strcpy(cgienv[cgi_index++], "DOCUMENT_ROOT=" CONFIG_HTTP_WEBROOT);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "SERVER_NAME=%s", cn->server_name);
+    sprintf(cgienv[cgi_index++], "SERVER_PORT=%d", 
+            cn->is_ssl ? CONFIG_HTTP_HTTPS_PORT : CONFIG_HTTP_PORT);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "REQUEST_URI=%s", cn->uri_request);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "SCRIPT_NAME=%s", cn->filereq);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "PATH_INFO=%s", cn->uri_path_info);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "QUERY_STRING=%s", cn->uri_query);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "REMOTE_ADDR=%s", cn->remote_addr);
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "HTTP_COOKIE=%s", cn->cookie);  /* note: small size */
+#if defined(CONFIG_HTTP_HAS_AUTHORIZATION)
+    snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH,
+            "REMOTE_USER=%s", cn->authorization);
+#endif
+
+    switch (cn->reqtype)
+    {
+        case TYPE_GET: 
+            type = "GET";
+            break;
+
+        case TYPE_POST:
+            type = "POST";
+            sprintf(cgienv[cgi_index++], 
+                        "CONTENT_LENGTH=%d", cn->content_length);
+            strcpy(cgienv[cgi_index++],     /* hard-code? */
+                        "CONTENT_TYPE=application/x-www-form-urlencoded");
+            break;
+    }
+
+    sprintf(cgienv[cgi_index++], "REQUEST_METHOD=%s", type);
+
+    if (cn->is_ssl)
+        strcpy(cgienv[cgi_index++], "HTTPS=on");
+
+#ifdef CONFIG_PLATFORM_CYGWIN
+    /* TODO: find out why Lua needs this */
+    strcpy(cgienv[cgi_index++], "PATH=/usr/bin");
+#endif
+
+    if (cgi_index >= CGI_ARG_SIZE)
+    {
+        printf("Content-type: text/plain\n\nToo many CGI args (%d, %d)\n",
+                cgi_index, CGI_ARG_SIZE);
+        _exit(1);
+    }
+
+    /* copy across the pointer indexes */
+    for (i = 0; i < cgi_index; i++)
+        cgiptr[i] = cgienv[i];
+
+    cgiptr[i++] = "AUTH_TYPE=Basic";
+    cgiptr[i++] = "GATEWAY_INTERFACE=CGI/1.1";
+    cgiptr[i++] = "SERVER_PROTOCOL="HTTP_VERSION;
+    cgiptr[i] = NULL;
+
+    execve(myargs[0], myargs, cgiptr);
+    printf("Content-type: text/plain\n\nshouldn't get here\n");
+    _exit(1);
+#endif
+}
+
+static char * cgi_filetype_match(struct connstruct *cn, const char *fn)
+{
+    struct cgiextstruct *tp = cgiexts;
+
+    while (tp != NULL) 
+    {
+        char *t;
+
+        if ((t = strstr(fn, tp->ext)) != NULL)
+        {
+            t += strlen(tp->ext);
+
+            if (*t == '/' || *t == '\0')
+            {
+#ifdef CONFIG_HTTP_ENABLE_LUA
+                if (strcmp(tp->ext, ".lua") == 0 || strcmp(tp->ext, ".lp") == 0)
+                    cn->is_lua = 1;
+#endif
+
+                return t;
+            }
+            else
+                return NULL;
+
+        }
+
+        tp = tp->next;
+    }
+
+    return NULL;
+}
+
+static void decode_path_info(struct connstruct *cn, char *path_info)
+{
+    char *cgi_delim;
+
+    cn->is_cgi = 0;
+#ifdef CONFIG_HTTP_ENABLE_LUA
+    cn->is_lua = 0;
+#endif
+    *cn->uri_request = '\0';
+    *cn->uri_path_info = '\0';
+    *cn->uri_query = '\0';
+
+    my_strncpy(cn->uri_request, path_info, MAXREQUESTLENGTH);
+
+    /* query info? */
+    if ((cgi_delim = strchr(path_info, '?')))
+    {
+        *cgi_delim = '\0';
+        my_strncpy(cn->uri_query, cgi_delim+1, MAXREQUESTLENGTH);
+    }
+
+    if ((cgi_delim = cgi_filetype_match(cn, path_info)) != NULL)
+    {
+        cn->is_cgi = 1;     /* definitely a CGI script */
+
+        /* path info? */
+        if (*cgi_delim != '\0')
+        {
+            my_strncpy(cn->uri_path_info, cgi_delim, MAXREQUESTLENGTH);
+            *cgi_delim = '\0';
+        }
+    }
+
+    /* the bit at the start must be the script name */
+    my_strncpy(cn->filereq, path_info, MAXREQUESTLENGTH);
+}
+
+static int init_read_post_data(char *buf, char *data, 
+                                struct connstruct *cn, int old_rv)
+{
+   char *next = data;
+   int rv = old_rv;
+   char *post_data;
+
+    /* Too much Post data to send. MAXPOSTDATASIZE should be 
+       configured (now it can be chaged in the header file) */
+   if (cn->content_length > MAXPOSTDATASIZE) 
+   {
+       send_error(cn, 418);
+       return 0;
+   }
+   
+   /* remove CRLF */
+   while ((*next == '\r' || *next == '\n') && (next < &buf[rv])) 
+       next++;
+   
+   if (cn->post_data == NULL)
+   {
+       cn->post_data = (char *) calloc(1, (cn->content_length + 1)); 
+       /* Allocate buffer for the POST data that will be used by proccgi 
+          to send POST data to the CGI script */
+
+       if (cn->post_data == NULL)
+       {
+           printf("axhttpd: could not allocate memory for POST data\n"); 
+           TTY_FLUSH();
+           send_error(cn, 599);
+           return 0;
+       }
+   }
+
+   cn->post_state = 0;
+   cn->post_read = 0;
+   post_data = cn->post_data;
+
+   while (next < &buf[rv])
+   { 
+       /*copy POST data to buffer*/
+       *post_data = *next;
+       post_data++;
+       next++;
+       cn->post_read++;
+       if (cn->post_read == cn->content_length)
+       { 
+           /* No more POST data to be copied */
+           *post_data = '\0';
+           return 1;
+       }
+   }
+
+   /* More POST data has to be read. read_post_data will continue with that */
+   cn->post_state = 1;
+   return 0;
+}
+
+void read_post_data(struct connstruct *cn)
+{
+    char buf[MAXREQUESTLENGTH*4], *next;
+    char *post_data;
+    int rv;
+
+    bzero(buf,MAXREQUESTLENGTH*4);
+    rv = special_read(cn, buf, sizeof(buf)-1);
+    if (rv <= 0) 
+    {
+        if (rv < 0) /* really dead? */
+            removeconnection(cn);
+        return;
+    }
+
+    buf[rv] = '\0';
+    next = buf;
+
+    post_data = &cn->post_data[cn->post_read];
+
+    while (next < &buf[rv])
+    {
+        *post_data = *next;
+        post_data++;
+        next++;
+        cn->post_read++;
+        if (cn->post_read == cn->content_length)
+        {  
+            /* No more POST data to be copied */
+            *post_data='\0';
+            cn->post_state = 0;
+            buildactualfile(cn);
+            cn->state = STATE_WANT_TO_SEND_HEAD;
+            return;
+        }
+    }
+
+    /* More POST data to read */
+}
+
+#endif  /* CONFIG_HTTP_HAS_CGI */
+
+/* Decode string %xx -> char (in place) */
+static void urldecode(char *buf) 
+{
+    int v;
+    char *p, *s, *w;
+
+    w = p = buf;
+
+    while (*p) 
+    {
+        v = 0;
+
+        if (*p == '%') 
+        {
+            s = p;
+            s++;
+
+            if (isxdigit((int) s[0]) && isxdigit((int) s[1]))
+            {
+                v = hexit(s[0])*16 + hexit(s[1]);
+
+                if (v) 
+                { 
+                    /* do not decode %00 to null char */
+                    *w = (char)v;
+                    p = &s[1];
+                }
+            }
+
+        }
+
+        if (!v) *w=*p;
+        p++; 
+        w++;
+    }
+
+    *w='\0';
+}
+
+static int hexit(char c) 
+{
+    if (c >= '0' && c <= '9')
+        return c - '0';
+    else if (c >= 'a' && c <= 'f')
+        return c - 'a' + 10;
+    else if (c >= 'A' && c <= 'F')
+        return c - 'A' + 10;
+    else
+        return 0;
+}
+
+static void buildactualfile(struct connstruct *cn)
+{
+    char *cp;
+    snprintf(cn->actualfile, MAXREQUESTLENGTH, ".%s", cn->filereq);
+
+#ifndef WIN32
+    /* Add directory slash if not there */
+    if (isdir(cn->actualfile) && 
+            cn->actualfile[strlen(cn->actualfile)-1] != '/')
+        strcat(cn->actualfile, "/");
+
+    /* work out the directory name */
+    strncpy(cn->dirname, cn->actualfile, MAXREQUESTLENGTH);
+    if ((cp = strrchr(cn->dirname, '/')) == NULL)
+        cn->dirname[0] = 0;
+    else
+        *cp = 0;
+#else
+    {
+        char curr_dir[MAXREQUESTLENGTH];
+        char path[MAXREQUESTLENGTH];
+        char *t = cn->actualfile;
+
+        GetCurrentDirectory(MAXREQUESTLENGTH, curr_dir);
+
+        /* convert all the forward slashes to back slashes */
+        while ((t = strchr(t, '/')))
+            *t++ = '\\';
+
+        snprintf(path, MAXREQUESTLENGTH, "%s%s", curr_dir, cn->actualfile);
+        memcpy(cn->actualfile, path, MAXREQUESTLENGTH);
+
+        /* Add directory slash if not there */
+        if (isdir(cn->actualfile) && 
+                    cn->actualfile[strlen(cn->actualfile)-1] != '\\')
+            strcat(cn->actualfile, "\\");
+
+        /* work out the directory name */
+        strncpy(cn->dirname, cn->actualfile, MAXREQUESTLENGTH);
+        if ((cp = strrchr(cn->dirname, '\\')) == NULL)
+            cn->dirname[0] = 0;
+        else
+            *cp = 0;
+    }
+#endif
+
+#if defined(CONFIG_HTTP_ENABLE_LUA)
+    /* 
+     * Use the lua launcher if this file has a lua extension. Put this at the
+     * end as we need the directory name.
+     */
+    if (cn->is_lua)
+        sprintf(cn->actualfile, "%s%s", CONFIG_HTTP_LUA_PREFIX, 
+                CONFIG_HTTP_LUA_CGI_LAUNCHER);
+#endif
+}
+
+static int sanitizefile(const char *buf) 
+{
+    int len, i;
+
+    /* Don't accept anything not starting with a / */
+    if (*buf != '/') 
+        return 0;
+
+    len = strlen(buf);
+    for (i = 0; i < len; i++) 
+    {
+        /* Check for "/." i.e. don't send files starting with a . */
+        if (buf[i] == '/' && buf[i+1] == '.') 
+            return 0;
+    }
+
+    return 1;
+}
+
+static int sanitizehost(char *buf)
+{
+    while (*buf != '\0') 
+    {
+        /* Handle the port */
+        if (*buf == ':') 
+        {
+            *buf = '\0';
+            return 1;
+        }
+
+        /* Enforce some basic URL rules... */
+        if ((isalnum(*buf) == 0 && *buf != '-' && *buf != '.') ||
+                (*buf == '.' && *(buf+1) == '.') ||
+                (*buf == '.' && *(buf+1) == '-') ||
+                (*buf == '-' && *(buf+1) == '.'))
+            return 0;
+
+        buf++;
+    }
+
+    return 1;
+}
+
+static FILE * exist_check(struct connstruct *cn, const char *check_file)
+{
+    char pathname[MAXREQUESTLENGTH];
+    snprintf(pathname, MAXREQUESTLENGTH, "%s/%s", cn->dirname, check_file);
+    return fopen(pathname, "r");
+}
+
+#ifdef CONFIG_HTTP_HAS_AUTHORIZATION
+static void send_authenticate(struct connstruct *cn, const char *realm)
+{
+    char buf[1024];
+
+    snprintf(buf, sizeof(buf), HTTP_VERSION" 401 Unauthorized\n"
+         "WWW-Authenticate: Basic\n"
+                 "realm=\"%s\"\n", realm);
+    special_write(cn, buf, strlen(buf));
+}
+
+static int check_digest(char *salt, const char *msg_passwd)
+{
+    uint8_t b256_salt[MAXREQUESTLENGTH];
+    uint8_t real_passwd[MD5_SIZE];
+    int salt_size;
+    char *b64_passwd;
+    uint8_t md5_result[MD5_SIZE];
+    MD5_CTX ctx;
+
+    /* retrieve the salt */
+    if ((b64_passwd = strchr(salt, '$')) == NULL)
+        return -1;
+
+    *b64_passwd++ = 0;
+    if (base64_decode(salt, strlen(salt), b256_salt, &salt_size))
+        return -1;
+
+    if (base64_decode(b64_passwd, strlen(b64_passwd), real_passwd, NULL))
+        return -1;
+
+    /* very simple MD5 crypt algorithm, but then the salt we use is large */
+    MD5_Init(&ctx);
+    MD5_Update(&ctx, b256_salt, salt_size);           /* process the salt */
+    MD5_Update(&ctx, (uint8_t *)msg_passwd, strlen(msg_passwd)); 
+    MD5_Final(md5_result, &ctx);
+    return memcmp(md5_result, real_passwd, MD5_SIZE);/* 0 = ok */
+}
+
+static int auth_check(struct connstruct *cn)
+{
+    char line[MAXREQUESTLENGTH];
+    FILE *fp;
+    char *cp;
+
+    if ((fp = exist_check(cn, ".htpasswd")) == NULL)
+        return 0;               /* no .htpasswd file, so let though */
+
+    if (cn->authorization[0] == 0)
+        goto error;
+
+    /* cn->authorization is in form "username:password" */
+    if ((cp = strchr(cn->authorization, ':')) == NULL)
+        goto error;
+    else
+        *cp++ = 0;  /* cp becomes the password */
+
+    while (fgets(line, sizeof(line), fp) != NULL)
+    {
+        char *b64_file_passwd;
+        int l = strlen(line);
+
+        /* nuke newline */
+        if (line[l-1] == '\n')
+            line[l-1] = 0;
+
+        /* line is form "username:salt(b64)$password(b64)" */
+        if ((b64_file_passwd = strchr(line, ':')) == NULL)
+            continue;
+
+        *b64_file_passwd++ = 0;
+
+        if (strcmp(line, cn->authorization)) /* our user? */
+            continue;
+
+        if (check_digest(b64_file_passwd, cp) == 0)
+        {
+            fclose(fp);
+            return 0;
+        }
+    }
+
+error:
+    fclose(fp);
+    send_authenticate(cn, cn->server_name);
+    return -1;
+}
+#endif
+
+static int htaccess_check(struct connstruct *cn)
+{
+    char line[MAXREQUESTLENGTH];
+    FILE *fp;
+    int ret = 0;
+
+    if ((fp = exist_check(cn, ".htaccess")) == NULL)
+        return 0;               /* no .htaccess file, so let though */
+
+    while (fgets(line, sizeof(line), fp) != NULL)
+    {
+        if (strstr(line, "Deny all") || /* access to this dir denied */
+                    /* Access will be denied unless SSL is active */
+                    (!cn->is_ssl && strstr(line, "SSLRequireSSL")) ||
+                    /* Access will be denied if SSL is active */
+                    (cn->is_ssl && strstr(line, "SSLDenySSL")))
+        {
+            ret = -1;
+            break;
+        }
+    }
+
+    fclose(fp);
+    return ret;
+}
+
+static void send_error(struct connstruct *cn, int err)
+{
+    char buf[MAXREQUESTLENGTH];
+    char *title;
+    char *text;
+
+    switch (err)
+    {
+        case 403:
+            title = "Forbidden";
+            text = "File is protected";
+#ifdef CONFIG_HTTP_VERBOSE
+            printf("axhttpd: access to %s denied\n", cn->filereq); TTY_FLUSH();
+#endif
+            break;
+
+        case 404:
+            title = "Not Found";
+            text = title;
+            break;
+
+        case 418:
+            title = "POST data size is to large";
+            text = title;
+            break;
+
+        default:
+            title = "Unknown";
+            text = "Unknown";
+            break;
+    }
+
+    snprintf(buf, MAXREQUESTLENGTH, "HTTP/1.1 %d %s\n"
+            "Content-Type: text/html\n"
+            "Cache-Control: no-cache,no-store\n"
+            "Connection: close\n\n"
+            "<html>\n<head>\n<title>%d %s</title></head>\n"
+            "<body><h1>%d %s</h1>\n</body></html>\n", 
+            err, title, err, title, err, text);
+    special_write(cn, buf, strlen(buf));
+    removeconnection(cn);
+}
+
+static const char *getmimetype(const char *name)
+{
+    /* only bother with a few mime types - let the browser figure the rest out */
+    if (strstr(name, ".htm"))
+        return "text/html";
+    else if (strstr(name, ".css"))
+        return "text/css"; 
+    else
+        return "application/octet-stream";
+}
+
+static int special_write(struct connstruct *cn, 
+                                        const char *buf, size_t count)
+{
+    if (cn->is_ssl)
+    {
+        SSL *ssl = cn->ssl;
+        return ssl ? ssl_write(ssl, (uint8_t *)buf, count) : -1;
+    }
+    else
+        return SOCKET_WRITE(cn->networkdesc, buf, count);
+}
+
+static int special_read(struct connstruct *cn, void *buf, size_t count)
+{
+    int res;
+
+    if (cn->is_ssl)
+    {
+        uint8_t *read_buf;
+        if ((res = ssl_read(cn->ssl, &read_buf)) > SSL_OK)
+        {
+            memcpy(buf, read_buf, res > (int)count ? count : res);
+        }
+    }
+    else
+        res = SOCKET_READ(cn->networkdesc, buf, count);
+
+    return res;
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c
new file mode 100644 (file)
index 0000000..813bdc5
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/types.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "axhttp.h"
+
+struct day_mon_map 
+{
+    const char* s;
+    uint8_t l;
+};
+
+static struct day_mon_map wday_tab[] = 
+{
+    { "Sun", 0 }, { "Mon", 1 }, { "Tue", 2 }, { "Wed", 3 },
+    { "Thu", 4 }, { "Fri", 5 }, { "Sat", 6 }, 
+};
+
+static struct day_mon_map mon_tab[] = 
+{
+    { "Jan", 0 }, { "Feb", 1 }, { "Mar", 2 }, { "Apr", 3 },
+    { "May", 4 }, { "Jun", 5 }, { "Jul", 6 }, { "Aug", 7 },
+    { "Sep", 8 }, { "Oct", 9 }, { "Nov", 10 }, { "Dec", 11 },
+};
+
+static int day_mon_map_compare(const char *v1, const char *v2)
+{
+    return strcmp(((struct day_mon_map*)v1)->s, ((struct day_mon_map*)v2)->s);
+}
+
+void tdate_init(void)
+{
+    qsort(wday_tab, sizeof(wday_tab)/sizeof(struct day_mon_map),
+            sizeof(struct day_mon_map), 
+            (int (*)(const void *, const void *))day_mon_map_compare);
+    qsort(mon_tab, sizeof(mon_tab)/sizeof(struct day_mon_map),
+            sizeof(struct day_mon_map), 
+            (int (*)(const void *, const void *))day_mon_map_compare);
+}
+
+static int8_t day_mon_map_search(const char* str, 
+                            const struct day_mon_map* tab, int n)
+{
+    struct day_mon_map *search = bsearch(&str, tab, n,
+            sizeof(struct day_mon_map), 
+                (int (*)(const void *, const void *))day_mon_map_compare);
+    return search ? search->l : -1;
+}
+
+time_t tdate_parse(const char* str)
+{
+    struct tm tm;
+    char str_mon[4], str_wday[4];
+    int tm_sec, tm_min, tm_hour, tm_mday, tm_year;
+
+    /* Initialize. */
+    memset(&tm, 0, sizeof(struct tm));
+
+    /* wdy, DD mth YY HH:MM:SS GMT */
+    if ((sscanf(str, "%3[a-zA-Z], %d %3[a-zA-Z] %d %d:%d:%d GMT",
+                str_wday, &tm_mday, str_mon, &tm_year, &tm_hour, &tm_min,
+                    &tm_sec) == 7) ||
+    /* wdy mth DD HH:MM:SS YY */
+        (sscanf(str, "%3[a-zA-Z] %3[a-zA-Z] %d %d:%d:%d %d",
+                str_wday, str_mon, &tm_mday, &tm_hour, &tm_min, &tm_sec,
+                    &tm_year) == 7))
+    {
+        int8_t tm_wday = day_mon_map_search(str_wday, wday_tab, 
+                        sizeof(wday_tab)/sizeof(struct day_mon_map));
+        int8_t tm_mon = day_mon_map_search(str_mon, mon_tab, 
+                        sizeof(mon_tab)/sizeof(struct day_mon_map));
+
+        if (tm_wday < 0 || tm_mon < 0)
+            return -1;
+
+        tm.tm_wday = tm_wday;
+        tm.tm_mon = tm_mon;
+        tm.tm_mday = tm_mday;
+        tm.tm_hour = tm_hour;
+        tm.tm_min = tm_min;
+        tm.tm_sec = tm_sec;
+        tm.tm_year = tm_year - 1900;
+        return mktime(&tm);
+    }
+
+    return -1;  /* error */
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in
new file mode 100644 (file)
index 0000000..ecad25e
--- /dev/null
@@ -0,0 +1,63 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+menu "Samples"
+
+config CONFIG_SAMPLES
+    bool "Create Samples"
+    default y
+    help
+        axTLS contains various sample code.
+
+        Select Y here if you want to build the various samples.
+
+config CONFIG_C_SAMPLES
+    bool "axssl - C version"
+    default y
+    depends on CONFIG_SAMPLES
+    help
+        Build the "C" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+
+config CONFIG_CSHARP_SAMPLES
+    bool "axssl - C# version"
+    default y
+    depends on CONFIG_SAMPLES && CONFIG_CSHARP_BINDINGS
+    help
+        Build the "C#" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+
+config CONFIG_VBNET_SAMPLES
+    bool "axssl - VB.NET version"
+    default y
+    depends on CONFIG_SAMPLES && CONFIG_VBNET_BINDINGS
+    help
+        Build the "VB.NET" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+
+config CONFIG_JAVA_SAMPLES
+    bool "axssl - Java version"
+    default y
+    depends on CONFIG_SAMPLES && CONFIG_JAVA_BINDINGS
+    help
+        Build the "Java" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+
+config CONFIG_PERL_SAMPLES
+    bool "axssl - Perl version"
+    default y
+    depends on CONFIG_SAMPLES && CONFIG_PERL_BINDINGS
+    help
+        Build the "Perl" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+
+config CONFIG_LUA_SAMPLES
+    bool "axssl - Lua version"
+    default y
+    depends on CONFIG_SAMPLES && CONFIG_LUA_BINDINGS
+    help
+        Build the "Lua" version of axssl. The features enabled are very
+        dependent on the build mode ('full' mode will give all features).
+endmenu
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile
new file mode 100644 (file)
index 0000000..afbdd43
--- /dev/null
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+all:
+
+include ../config/.config
+include ../config/makefile.conf
+
+all:
+ifdef CONFIG_C_SAMPLES
+       $(MAKE) -C c
+endif
+ifdef CONFIG_CSHARP_SAMPLES
+       $(MAKE) -C csharp
+endif
+ifdef CONFIG_VBNET_SAMPLES
+       $(MAKE) -C vbnet
+endif
+ifdef CONFIG_JAVA_SAMPLES
+       $(MAKE) -C java
+endif
+ifdef CONFIG_PERL_SAMPLES
+       $(MAKE) -C perl
+endif
+ifdef CONFIG_LUA_SAMPLES
+       $(MAKE) -C lua
+endif
+
+clean::
+       $(MAKE) -C c clean
+       $(MAKE) -C csharp clean
+       $(MAKE) -C vbnet clean
+       $(MAKE) -C java clean
+       $(MAKE) -C perl clean
+       $(MAKE) -C lua clean
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile
new file mode 100644 (file)
index 0000000..17cf9e7
--- /dev/null
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+all : sample
+
+AXTLS_HOME=../..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+ifndef CONFIG_PLATFORM_WIN32
+
+ifdef CONFIG_PLATFORM_CYGWIN
+TARGET=$(AXTLS_HOME)/$(STAGE)/axssl.exe
+else
+TARGET=$(AXTLS_HOME)/$(STAGE)/axssl
+endif   # cygwin
+
+LIBS=$(AXTLS_HOME)/$(STAGE)
+else
+TARGET=$(AXTLS_HOME)/$(STAGE)/axssl.exe
+endif
+
+ifndef CONFIG_C_SAMPLES
+sample:
+
+else
+sample : $(TARGET)
+OBJ= axssl.o
+include $(AXTLS_HOME)/config/makefile.post
+
+ifndef CONFIG_PLATFORM_WIN32
+
+$(TARGET): $(OBJ) $(LIBS)/libaxtls.a
+       $(LD) $(LDFLAGS) -o $@ $(OBJ) -L$(LIBS) -laxtls 
+ifdef CONFIG_STRIP_UNWANTED_SECTIONS
+       $(STRIP) --remove-section=.comment $(TARGET)
+endif   # use strip
+else    # Win32
+
+$(TARGET): $(OBJ)
+       $(LD) $(LDFLAGS) $(AXTLS_HOME)/config/axtls.res /out:$@ $^ /libpath:"$(AXTLS_HOME)/$(STAGE)" axtls.lib
+endif
+
+endif    # CONFIG_C_SAMPLES
+
+clean::
+       -@rm -f $(AXTLS_HOME)/$(STAGE)/axssl*
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c b/package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c
new file mode 100644 (file)
index 0000000..6892ee4
--- /dev/null
@@ -0,0 +1,883 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Demonstrate the use of the axTLS library in C with a set of 
+ * command-line parameters similar to openssl. In fact, openssl clients 
+ * should be able to communicate with axTLS servers and visa-versa.
+ *
+ * This code has various bits enabled depending on the configuration. To enable
+ * the most interesting version, compile with the 'full mode' enabled.
+ *
+ * To see what options you have, run the following:
+ * > axssl s_server -?
+ * > axssl s_client -?
+ *
+ * The axtls shared library must be in the same directory or be found 
+ * by the OS.
+ */
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "ssl.h"
+
+/* define standard input */
+#ifndef STDIN_FILENO
+#define STDIN_FILENO        0
+#endif
+
+static void do_server(int argc, char *argv[]);
+static void print_options(char *option);
+static void print_server_options(char *option);
+static void do_client(int argc, char *argv[]);
+static void print_client_options(char *option);
+static void display_cipher(SSL *ssl);
+static void display_session_id(SSL *ssl);
+
+/**
+ * Main entry point. Doesn't do much except works out whether we are a client
+ * or a server.
+ */
+int main(int argc, char *argv[])
+{
+#ifdef WIN32
+    WSADATA wsaData;
+    WORD wVersionRequested = MAKEWORD(2, 2);
+    WSAStartup(wVersionRequested, &wsaData);
+#elif !defined(CONFIG_PLATFORM_SOLARIS)
+    signal(SIGPIPE, SIG_IGN);           /* ignore pipe errors */
+#endif
+
+    if (argc == 2 && strcmp(argv[1], "version") == 0)
+    {
+        printf("axssl %s %s\n", ssl_version(), __DATE__);
+        exit(0);
+    }
+
+    if (argc < 2 || (
+                strcmp(argv[1], "s_server") && strcmp(argv[1], "s_client")))
+        print_options(argc > 1 ? argv[1] : "");
+
+    strcmp(argv[1], "s_server") ? 
+        do_client(argc, argv) : do_server(argc, argv);
+    return 0;
+}
+
+/**
+ * Implement the SSL server logic. 
+ */
+static void do_server(int argc, char *argv[])
+{
+    int i = 2;
+    uint16_t port = 4433;
+    uint32_t options = SSL_DISPLAY_CERTS;
+    int client_fd;
+    SSL_CTX *ssl_ctx;
+    int server_fd, res = 0;
+    socklen_t client_len;
+#ifndef CONFIG_SSL_SKELETON_MODE
+    char *private_key_file = NULL;
+    const char *password = NULL;
+    char **cert;
+    int cert_index = 0;
+    int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET);
+#endif
+#ifdef WIN32
+    char yes = 1;
+#else
+    int yes = 1;
+#endif
+    struct sockaddr_in serv_addr;
+    struct sockaddr_in client_addr;
+    int quiet = 0;
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    int ca_cert_index = 0;
+    int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET);
+    char **ca_cert = (char **)calloc(1, sizeof(char *)*ca_cert_size);
+#endif
+    fd_set read_set;
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    cert = (char **)calloc(1, sizeof(char *)*cert_size);
+#endif
+
+    while (i < argc)
+    {
+        if (strcmp(argv[i], "-accept") == 0)
+        {
+            if (i >= argc-1)
+            {
+                print_server_options(argv[i]);
+            }
+
+            port = atoi(argv[++i]);
+        }
+#ifndef CONFIG_SSL_SKELETON_MODE
+        else if (strcmp(argv[i], "-cert") == 0)
+        {
+            if (i >= argc-1 || cert_index >= cert_size)
+            {
+                print_server_options(argv[i]);
+            }
+
+            cert[cert_index++] = argv[++i];
+        }
+        else if (strcmp(argv[i], "-key") == 0)
+        {
+            if (i >= argc-1)
+            {
+                print_server_options(argv[i]);
+            }
+
+            private_key_file = argv[++i];
+            options |= SSL_NO_DEFAULT_KEY;
+        }
+        else if (strcmp(argv[i], "-pass") == 0)
+        {
+            if (i >= argc-1)
+            {
+                print_server_options(argv[i]);
+            }
+
+            password = argv[++i];
+        }
+#endif
+        else if (strcmp(argv[i], "-quiet") == 0)
+        {
+            quiet = 1;
+            options &= ~SSL_DISPLAY_CERTS;
+        }
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+        else if (strcmp(argv[i], "-verify") == 0)
+        {
+            options |= SSL_CLIENT_AUTHENTICATION;
+        }
+        else if (strcmp(argv[i], "-CAfile") == 0)
+        {
+            if (i >= argc-1 || ca_cert_index >= ca_cert_size)
+            {
+                print_server_options(argv[i]);
+            }
+
+            ca_cert[ca_cert_index++] = argv[++i];
+        }
+#endif
+#ifdef CONFIG_SSL_FULL_MODE
+        else if (strcmp(argv[i], "-debug") == 0)
+        {
+            options |= SSL_DISPLAY_BYTES;
+        }
+        else if (strcmp(argv[i], "-state") == 0)
+        {
+            options |= SSL_DISPLAY_STATES;
+        }
+        else if (strcmp(argv[i], "-show-rsa") == 0)
+        {
+            options |= SSL_DISPLAY_RSA;
+        }
+#endif
+        else    /* don't know what this is */
+        {
+            print_server_options(argv[i]);
+        }
+
+        i++;
+    }
+
+    if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_SVR_SESS)) == NULL)
+    {
+        fprintf(stderr, "Error: Server context is invalid\n");
+        exit(1);
+    }
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    if (private_key_file)
+    {
+        int obj_type = SSL_OBJ_RSA_KEY;
+        
+        /* auto-detect the key type from the file extension */
+        if (strstr(private_key_file, ".p8"))
+            obj_type = SSL_OBJ_PKCS8;
+        else if (strstr(private_key_file, ".p12"))
+            obj_type = SSL_OBJ_PKCS12;
+
+        if (ssl_obj_load(ssl_ctx, obj_type, private_key_file, password))
+        {
+            fprintf(stderr, "Error: Private key '%s' is undefined.\n", 
+                                                        private_key_file);
+            exit(1);
+        }
+    }
+
+    for (i = 0; i < cert_index; i++)
+    {
+        if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, cert[i], NULL))
+        {
+            printf("Certificate '%s' is undefined.\n", cert[i]);
+            exit(1);
+        }
+    }
+#endif
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    for (i = 0; i < ca_cert_index; i++)
+    {
+        if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CACERT, ca_cert[i], NULL))
+        {
+            printf("Certificate '%s' is undefined.\n", ca_cert[i]);
+            exit(1);
+        }
+    }
+
+    free(ca_cert);
+#endif
+#ifndef CONFIG_SSL_SKELETON_MODE
+    free(cert);
+#endif
+
+    /* Create socket for incoming connections */
+    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+    {
+        perror("socket");
+        return;
+    }
+      
+    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
+
+    /* Construct local address structure */
+    memset(&serv_addr, 0, sizeof(serv_addr));      /* Zero out structure */
+    serv_addr.sin_family = AF_INET;                /* Internet address family */
+    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+    serv_addr.sin_port = htons(port);              /* Local port */
+
+    /* Bind to the local address */
+    if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
+    {
+        perror("bind");
+        exit(1);
+    }
+
+    if (listen(server_fd, 5) < 0)
+    {
+        perror("listen");
+        exit(1);
+    }
+
+    client_len = sizeof(client_addr);
+
+    /*************************************************************************
+     * This is where the interesting stuff happens. Up until now we've
+     * just been setting up sockets etc. Now we do the SSL handshake.
+     *************************************************************************/
+    for (;;)
+    {
+        SSL *ssl;
+        int reconnected = 0;
+
+        if (!quiet)
+        {
+            printf("ACCEPT\n");
+            TTY_FLUSH();
+        }
+
+        if ((client_fd = accept(server_fd, 
+                (struct sockaddr *)&client_addr, &client_len)) < 0)
+        {
+            res = 1;
+            break;
+        }
+
+        ssl = ssl_server_new(ssl_ctx, client_fd);
+
+        /* now read (and display) whatever the client sends us */
+        for (;;)
+        {
+            /* allow parallel reading of client and standard input */
+            FD_ZERO(&read_set);
+            FD_SET(client_fd, &read_set);
+
+#ifndef WIN32
+            /* win32 doesn't like mixing up stdin and sockets */
+            if (isatty(STDIN_FILENO))/* but only if we are in an active shell */
+            {
+                FD_SET(STDIN_FILENO, &read_set);
+            }
+
+            if ((res = select(client_fd+1, &read_set, NULL, NULL, NULL)) > 0)
+            {
+               uint8_t buf[1024];
+
+                /* read standard input? */
+                if (FD_ISSET(STDIN_FILENO, &read_set))
+                {
+                    if (fgets((char *)buf, sizeof(buf), stdin) == NULL)
+                    {
+                        res = SSL_ERROR_CONN_LOST;
+                    }
+                    else
+                    {
+                        /* small hack to check renegotiation */
+                        if (buf[0] == 'r' && (buf[1] == '\n' || buf[1] == '\r'))
+                        {
+                            res = ssl_renegotiate(ssl);
+                        }
+                        else    /* write our ramblings to the client */
+                        {
+                            res = ssl_write(ssl, buf, strlen((char *)buf)+1);
+                        }
+                    }
+                }
+                else    /* a socket read */
+#endif
+                {
+                    /* keep reading until we get something interesting */
+                    uint8_t *read_buf;
+
+                    if ((res = ssl_read(ssl, &read_buf)) == SSL_OK)
+                    {
+                        /* are we in the middle of doing a handshake? */
+                        if (ssl_handshake_status(ssl) != SSL_OK)
+                        {
+                            reconnected = 0;
+                        }
+                        else if (!reconnected)
+                        {
+                            /* we are connected/reconnected */
+                            if (!quiet)
+                            {
+                                display_session_id(ssl);
+                                display_cipher(ssl);
+                            }
+
+                            reconnected = 1;
+                        }
+                    }
+
+                    if (res > SSL_OK)    /* display our interesting output */
+                    {
+                        printf("%s", read_buf);
+                        TTY_FLUSH();
+                    }
+                    else if (res < SSL_OK && !quiet)
+                    {
+                        ssl_display_error(res);
+                    }
+                }
+#ifndef WIN32
+            }
+#endif
+
+            if (res < SSL_OK)
+            {
+                if (!quiet)
+                {
+                    printf("CONNECTION CLOSED\n");
+                    TTY_FLUSH();
+                }
+
+                break;
+            }
+        }
+
+        /* client was disconnected or the handshake failed. */
+        ssl_free(ssl);
+        SOCKET_CLOSE(client_fd);
+    }
+
+    ssl_ctx_free(ssl_ctx);
+}
+
+/**
+ * Implement the SSL client logic.
+ */
+static void do_client(int argc, char *argv[])
+{
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+    int res, i = 2;
+    uint16_t port = 4433;
+    uint32_t options = SSL_SERVER_VERIFY_LATER|SSL_DISPLAY_CERTS;
+    int client_fd;
+    char *private_key_file = NULL;
+    struct sockaddr_in client_addr;
+    struct hostent *hostent;
+    int reconnect = 0;
+    uint32_t sin_addr;
+    SSL_CTX *ssl_ctx;
+    SSL *ssl = NULL;
+    int quiet = 0;
+    int cert_index = 0, ca_cert_index = 0;
+    int cert_size, ca_cert_size;
+    char **ca_cert, **cert;
+    uint8_t session_id[SSL_SESSION_ID_SIZE];
+    fd_set read_set;
+    const char *password = NULL;
+
+    FD_ZERO(&read_set);
+    sin_addr = inet_addr("127.0.0.1");
+    cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET);
+    ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET);
+    ca_cert = (char **)calloc(1, sizeof(char *)*ca_cert_size);
+    cert = (char **)calloc(1, sizeof(char *)*cert_size);
+
+    while (i < argc)
+    {
+        if (strcmp(argv[i], "-connect") == 0)
+        {
+            char *host, *ptr;
+
+            if (i >= argc-1)
+            {
+                print_client_options(argv[i]);
+            }
+
+            host = argv[++i];
+            if ((ptr = strchr(host, ':')) == NULL)
+            {
+                print_client_options(argv[i]);
+            }
+
+            *ptr++ = 0;
+            port = atoi(ptr);
+            hostent = gethostbyname(host);
+
+            if (hostent == NULL)
+            {
+                print_client_options(argv[i]);
+            }
+
+            sin_addr = *((uint32_t **)hostent->h_addr_list)[0];
+        }
+        else if (strcmp(argv[i], "-cert") == 0)
+        {
+            if (i >= argc-1 || cert_index >= cert_size)
+            {
+                print_client_options(argv[i]);
+            }
+
+            cert[cert_index++] = argv[++i];
+        }
+        else if (strcmp(argv[i], "-key") == 0)
+        {
+            if (i >= argc-1)
+            {
+                print_client_options(argv[i]);
+            }
+
+            private_key_file = argv[++i];
+            options |= SSL_NO_DEFAULT_KEY;
+        }
+        else if (strcmp(argv[i], "-CAfile") == 0)
+        {
+            if (i >= argc-1 || ca_cert_index >= ca_cert_size)
+            {
+                print_client_options(argv[i]);
+            }
+
+            ca_cert[ca_cert_index++] = argv[++i];
+        }
+        else if (strcmp(argv[i], "-verify") == 0)
+        {
+            options &= ~SSL_SERVER_VERIFY_LATER;
+        }
+        else if (strcmp(argv[i], "-reconnect") == 0)
+        {
+            reconnect = 4;
+        }
+        else if (strcmp(argv[i], "-quiet") == 0)
+        {
+            quiet = 1;
+            options &= ~SSL_DISPLAY_CERTS;
+        }
+        else if (strcmp(argv[i], "-pass") == 0)
+        {
+            if (i >= argc-1)
+            {
+                print_client_options(argv[i]);
+            }
+
+            password = argv[++i];
+        }
+#ifdef CONFIG_SSL_FULL_MODE
+        else if (strcmp(argv[i], "-debug") == 0)
+        {
+            options |= SSL_DISPLAY_BYTES;
+        }
+        else if (strcmp(argv[i], "-state") == 0)
+        {
+            options |= SSL_DISPLAY_STATES;
+        }
+        else if (strcmp(argv[i], "-show-rsa") == 0)
+        {
+            options |= SSL_DISPLAY_RSA;
+        }
+#endif
+        else    /* don't know what this is */
+        {
+            print_client_options(argv[i]);
+        }
+
+        i++;
+    }
+
+    if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_CLNT_SESS)) == NULL)
+    {
+        fprintf(stderr, "Error: Client context is invalid\n");
+        exit(1);
+    }
+
+    if (private_key_file)
+    {
+        int obj_type = SSL_OBJ_RSA_KEY;
+        
+        /* auto-detect the key type from the file extension */
+        if (strstr(private_key_file, ".p8"))
+            obj_type = SSL_OBJ_PKCS8;
+        else if (strstr(private_key_file, ".p12"))
+            obj_type = SSL_OBJ_PKCS12;
+
+        if (ssl_obj_load(ssl_ctx, obj_type, private_key_file, password))
+        {
+            fprintf(stderr, "Error: Private key '%s' is undefined.\n", 
+                                                        private_key_file);
+            exit(1);
+        }
+    }
+
+    for (i = 0; i < cert_index; i++)
+    {
+        if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, cert[i], NULL))
+        {
+            printf("Certificate '%s' is undefined.\n", cert[i]);
+            exit(1);
+        }
+    }
+
+    for (i = 0; i < ca_cert_index; i++)
+    {
+        if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CACERT, ca_cert[i], NULL))
+        {
+            printf("Certificate '%s' is undefined.\n", ca_cert[i]);
+            exit(1);
+        }
+    }
+
+    free(cert);
+    free(ca_cert);
+
+    /*************************************************************************
+     * This is where the interesting stuff happens. Up until now we've
+     * just been setting up sockets etc. Now we do the SSL handshake.
+     *************************************************************************/
+    client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+    memset(&client_addr, 0, sizeof(client_addr));
+    client_addr.sin_family = AF_INET;
+    client_addr.sin_port = htons(port);
+    client_addr.sin_addr.s_addr = sin_addr;
+
+    if (connect(client_fd, (struct sockaddr *)&client_addr, 
+                sizeof(client_addr)) < 0)
+    {
+        perror("connect");
+        exit(1);
+    }
+
+    if (!quiet)
+    {
+        printf("CONNECTED\n");
+        TTY_FLUSH();
+    }
+
+    /* Try session resumption? */
+    if (reconnect)
+    {
+        while (reconnect--)
+        {
+            ssl = ssl_client_new(ssl_ctx, client_fd, session_id,
+                    sizeof(session_id));
+            if ((res = ssl_handshake_status(ssl)) != SSL_OK)
+            {
+                if (!quiet)
+                {
+                    ssl_display_error(res);
+                }
+
+                ssl_free(ssl);
+                exit(1);
+            }
+
+            display_session_id(ssl);
+            memcpy(session_id, ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE);
+
+            if (reconnect)
+            {
+                ssl_free(ssl);
+                SOCKET_CLOSE(client_fd);
+
+                client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+                connect(client_fd, (struct sockaddr *)&client_addr, 
+                        sizeof(client_addr));
+            }
+        }
+    }
+    else
+    {
+        ssl = ssl_client_new(ssl_ctx, client_fd, NULL, 0);
+    }
+
+    /* check the return status */
+    if ((res = ssl_handshake_status(ssl)) != SSL_OK)
+    {
+        if (!quiet)
+        {
+            ssl_display_error(res);
+        }
+
+        exit(1);
+    }
+
+    if (!quiet)
+    {
+        const char *common_name = ssl_get_cert_dn(ssl,
+                SSL_X509_CERT_COMMON_NAME);
+        if (common_name)
+        {
+            printf("Common Name:\t\t\t%s\n", common_name);
+        }
+
+        display_session_id(ssl);
+        display_cipher(ssl);
+    }
+
+    for (;;)
+    {
+        uint8_t buf[1024];
+        res = SSL_OK;
+
+        /* allow parallel reading of server and standard input */
+        FD_SET(client_fd, &read_set);
+#ifndef WIN32
+        /* win32 doesn't like mixing up stdin and sockets */
+        FD_SET(STDIN_FILENO, &read_set);
+
+        if ((res = select(client_fd+1, &read_set, NULL, NULL, NULL)) > 0)
+        {
+            /* read standard input? */
+            if (FD_ISSET(STDIN_FILENO, &read_set))
+#endif
+            {
+                if (fgets((char *)buf, sizeof(buf), stdin) == NULL)
+                {
+                    /* bomb out of here */
+                    ssl_free(ssl);
+                    break;
+                }
+                else
+                {
+                    /* small hack to check renegotiation */
+                    if (buf[0] == 'R' && (buf[1] == '\n' || buf[1] == '\r'))
+                    {
+                        res = ssl_renegotiate(ssl);
+                    }
+                    else
+                    {
+                        res = ssl_write(ssl, buf, strlen((char *)buf)+1);
+                    }
+                }
+            }
+#ifndef WIN32
+            else    /* a socket read */
+            {
+                uint8_t *read_buf;
+
+                res = ssl_read(ssl, &read_buf);
+
+                if (res > 0)    /* display our interesting output */
+                {
+                    printf("%s", read_buf);
+                    TTY_FLUSH();
+                }
+            }
+        }
+#endif
+
+        if (res < 0)
+        {
+            if (!quiet)
+            {
+                ssl_display_error(res);
+            }
+
+            break;      /* get outta here */
+        }
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    SOCKET_CLOSE(client_fd);
+#else
+    print_client_options(argv[1]);
+#endif
+}
+
+/**
+ * We've had some sort of command-line error. Print out the basic options.
+ */
+static void print_options(char *option)
+{
+    printf("axssl: Error: '%s' is an invalid command.\n", option);
+    printf("usage: axssl [s_server|s_client|version] [args ...]\n");
+    exit(1);
+}
+
+/**
+ * We've had some sort of command-line error. Print out the server options.
+ */
+static void print_server_options(char *option)
+{
+#ifndef CONFIG_SSL_SKELETON_MODE
+    int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET);
+#endif
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET);
+#endif
+
+    printf("unknown option %s\n", option);
+    printf("usage: s_server [args ...]\n");
+    printf(" -accept arg\t- port to accept on (default is 4433)\n");
+#ifndef CONFIG_SSL_SKELETON_MODE
+    printf(" -cert arg\t- certificate file to add (in addition to default)"
+                                    " to chain -\n"
+          "\t\t  Can repeat up to %d times\n", cert_size);
+    printf(" -key arg\t- Private key file to use\n");
+    printf(" -pass\t\t- private key file pass phrase source\n");
+#endif
+    printf(" -quiet\t\t- No server output\n");
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    printf(" -verify\t- turn on peer certificate verification\n");
+    printf(" -CAfile arg\t- Certificate authority\n");
+    printf("\t\t  Can repeat up to %d times\n", ca_cert_size);
+#endif
+#ifdef CONFIG_SSL_FULL_MODE
+    printf(" -debug\t\t- Print more output\n");
+    printf(" -state\t\t- Show state messages\n");
+    printf(" -show-rsa\t- Show RSA state\n");
+#endif
+    exit(1);
+}
+
+/**
+ * We've had some sort of command-line error. Print out the client options.
+ */
+static void print_client_options(char *option)
+{
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+    int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET);
+    int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET);
+#endif
+
+    printf("unknown option %s\n", option);
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+    printf("usage: s_client [args ...]\n");
+    printf(" -connect host:port - who to connect to (default "
+            "is localhost:4433)\n");
+    printf(" -verify\t- turn on peer certificate verification\n");
+    printf(" -cert arg\t- certificate file to use\n");
+    printf("\t\t  Can repeat up to %d times\n", cert_size);
+    printf(" -key arg\t- Private key file to use\n");
+    printf(" -CAfile arg\t- Certificate authority\n");
+    printf("\t\t  Can repeat up to %d times\n", ca_cert_size);
+    printf(" -quiet\t\t- No client output\n");
+    printf(" -reconnect\t- Drop and re-make the connection "
+            "with the same Session-ID\n");
+    printf(" -pass\t\t- private key file pass phrase source\n");
+#ifdef CONFIG_SSL_FULL_MODE
+    printf(" -debug\t\t- Print more output\n");
+    printf(" -state\t\t- Show state messages\n");
+    printf(" -show-rsa\t- Show RSA state\n");
+#endif
+#else
+    printf("Change configuration to allow this feature\n");
+#endif
+    exit(1);
+}
+
+/**
+ * Display what cipher we are using 
+ */
+static void display_cipher(SSL *ssl)
+{
+    printf("CIPHER is ");
+    switch (ssl_get_cipher_id(ssl))
+    {
+        case SSL_AES128_SHA:
+            printf("AES128-SHA");
+            break;
+
+        case SSL_AES256_SHA:
+            printf("AES256-SHA");
+            break;
+
+        case SSL_RC4_128_SHA:
+            printf("RC4-SHA");
+            break;
+
+        case SSL_RC4_128_MD5:
+            printf("RC4-MD5");
+            break;
+
+        default:
+            printf("Unknown - %d", ssl_get_cipher_id(ssl));
+            break;
+    }
+
+    printf("\n");
+    TTY_FLUSH();
+}
+
+/**
+ * Display what session id we have.
+ */
+static void display_session_id(SSL *ssl)
+{    
+    int i;
+    const uint8_t *session_id = ssl_get_session_id(ssl);
+    int sess_id_size = ssl_get_session_id_size(ssl);
+
+    if (sess_id_size > 0)
+    {
+        printf("-----BEGIN SSL SESSION PARAMETERS-----\n");
+        for (i = 0; i < sess_id_size; i++)
+        {
+            printf("%02x", session_id[i]);
+        }
+
+        printf("\n-----END SSL SESSION PARAMETERS-----\n");
+        TTY_FLUSH();
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile
new file mode 100644 (file)
index 0000000..46c2421
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+include ../../config/makefile.dotnet.conf
+
+all : sample
+TARGET=../../$(STAGE)/axssl.csharp.exe
+sample : $(TARGET)
+
+$(TARGET): ../../bindings/csharp/axTLS.cs ../../bindings/csharp/axInterface.cs axssl.cs 
+ifdef GO_DOT_NET
+       csc.exe /nologo /t:exe /out:"`cygpath -w $@`" $(foreach file, $^, "`cygpath -w $(file)`")
+else    # use mono to build
+       mcs -out:$@ $^
+
+endif    # ARCH
+
+clean::
+       -@rm -f $(TARGET)
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs b/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs
new file mode 100644 (file)
index 0000000..dae2b8a
--- /dev/null
@@ -0,0 +1,758 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Demonstrate the use of the axTLS library in C# with a set of 
+ * command-line parameters similar to openssl. In fact, openssl clients 
+ * should be able to communicate with axTLS servers and visa-versa.
+ *
+ * This code has various bits enabled depending on the configuration. To enable
+ * the most interesting version, compile with the 'full mode' enabled.
+ *
+ * To see what options you have, run the following:
+ * > axssl.csharp.exe s_server -?
+ * > axssl.csharp.exe s_client -?
+ *
+ * The axtls shared library must be in the same directory or be found 
+ * by the OS.
+ */
+
+using System;
+using System.Net;
+using System.Net.Sockets;
+using axTLS;
+
+public class axssl
+{
+    /*
+     * Main()
+     */
+    public static void Main(string[] args)
+    {
+        if (args.Length == 1 && args[0] == "version")
+        {
+            Console.WriteLine("axssl.csharp " + SSLUtil.Version());
+            Environment.Exit(0); 
+        }
+
+        axssl runner = new axssl();
+
+        if (args.Length < 1 || (args[0] != "s_server" && args[0] != "s_client"))
+            runner.print_options(args.Length > 0 ? args[0] : "");
+
+        int build_mode = SSLUtil.BuildMode();
+
+        if (args[0] == "s_server")
+            runner.do_server(build_mode, args);
+        else 
+            runner.do_client(build_mode, args);
+    }
+
+    /*
+     * do_server()
+     */
+    private void do_server(int build_mode, string[] args)
+    {
+        int i = 1;
+        int port = 4433;
+        uint options = axtls.SSL_DISPLAY_CERTS;
+        bool quiet = false;
+        string password = null;
+        string private_key_file = null;
+
+        /* organise the cert/ca_cert lists */
+        int cert_size = SSLUtil.MaxCerts();
+        int ca_cert_size = SSLUtil.MaxCACerts();
+        string[] cert = new string[cert_size];
+        string[] ca_cert = new string[ca_cert_size];
+        int cert_index = 0;
+        int ca_cert_index = 0;
+
+        while (i < args.Length)
+        {
+            if (args[i] == "-accept")
+            {
+                if (i >= args.Length-1)
+                {
+                    print_server_options(build_mode, args[i]);
+                }
+
+                port = Int32.Parse(args[++i]);
+            }
+            else if (args[i] == "-quiet")
+            {
+                quiet = true;
+                options &= ~(uint)axtls.SSL_DISPLAY_CERTS;
+            }
+            else if (build_mode >= axtls.SSL_BUILD_SERVER_ONLY)
+            {
+                if (args[i] == "-cert")
+                {
+                    if (i >= args.Length-1 || cert_index >= cert_size)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    cert[cert_index++] = args[++i];
+                }
+                else if (args[i] == "-key")
+                {
+                    if (i >= args.Length-1)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    private_key_file = args[++i];
+                    options |= axtls.SSL_NO_DEFAULT_KEY;
+                }
+                else if (args[i] == "-pass")
+                {
+                    if (i >= args.Length-1)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    password = args[++i];
+                }
+                else if (build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION)
+                {
+                    if (args[i] == "-verify")
+                    {
+                        options |= axtls.SSL_CLIENT_AUTHENTICATION;
+                    }
+                    else if (args[i] == "-CAfile")
+                    {
+                        if (i >= args.Length-1 || ca_cert_index >= ca_cert_size)
+                        {
+                            print_server_options(build_mode, args[i]);
+                        }
+
+                        ca_cert[ca_cert_index++] = args[++i];
+                    }
+                    else if (build_mode == axtls.SSL_BUILD_FULL_MODE)
+                    {
+                        if (args[i] == "-debug")
+                        {
+                            options |= axtls.SSL_DISPLAY_BYTES;
+                        }
+                        else if (args[i] == "-state")
+                        {
+                            options |= axtls.SSL_DISPLAY_STATES;
+                        }
+                        else if (args[i] == "-show-rsa")
+                        {
+                            options |= axtls.SSL_DISPLAY_RSA;
+                        }
+                        else
+                            print_server_options(build_mode, args[i]);
+                    }
+                    else
+                        print_server_options(build_mode, args[i]);
+                }
+                else 
+                    print_server_options(build_mode, args[i]);
+            }
+            else
+                print_server_options(build_mode, args[i]);
+
+            i++;
+        }
+
+        /* Create socket for incoming connections */
+        IPEndPoint ep = new IPEndPoint(IPAddress.Any, port);
+        TcpListener server_sock = new TcpListener(ep);
+        server_sock.Start();      
+
+        /**********************************************************************
+         * This is where the interesting stuff happens. Up until now we've
+         * just been setting up sockets etc. Now we do the SSL handshake.
+         **********************************************************************/
+        SSLServer ssl_ctx = new SSLServer(
+                                options, axtls.SSL_DEFAULT_SVR_SESS);
+
+        if (ssl_ctx == null)
+        {
+            Console.Error.WriteLine("Error: Server context is invalid");
+            Environment.Exit(1);
+        }
+
+        if (private_key_file != null)
+        {
+            int obj_type = axtls.SSL_OBJ_RSA_KEY;
+
+            if (private_key_file.EndsWith(".p8"))
+                obj_type = axtls.SSL_OBJ_PKCS8;
+            else if (private_key_file.EndsWith(".p12"))
+                obj_type = axtls.SSL_OBJ_PKCS12;
+
+            if (ssl_ctx.ObjLoad(obj_type,
+                             private_key_file, password) != axtls.SSL_OK)
+            {
+                Console.Error.WriteLine("Private key '" + private_key_file +
+                                                            "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        for (i = 0; i < cert_index; i++)
+        {
+            if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, 
+                                        cert[i], null) != axtls.SSL_OK)
+            {
+                Console.WriteLine("Certificate '" + cert[i] + 
+                        "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        for (i = 0; i < ca_cert_index; i++)
+        {
+            if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, 
+                                        ca_cert[i], null) != axtls.SSL_OK)
+            {
+                Console.WriteLine("Certificate '" + cert[i] + 
+                                                        "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        byte[] buf = null;
+        int res;
+
+        for (;;)
+        {
+            if (!quiet)
+            {
+                Console.WriteLine("ACCEPT");
+            }
+
+            Socket client_sock = server_sock.AcceptSocket();
+
+            SSL ssl = ssl_ctx.Connect(client_sock);
+
+            /* do the actual SSL handshake */
+            while ((res = ssl_ctx.Read(ssl, out buf)) == axtls.SSL_OK)
+            {
+                /* check when the connection has been established */
+                if (ssl.HandshakeStatus() == axtls.SSL_OK)
+                    break;
+
+                /* could do something else here */
+            }
+
+            if (res == axtls.SSL_OK) /* connection established and ok */
+            {
+                if (!quiet)
+                {
+                    display_session_id(ssl);
+                    display_cipher(ssl);
+                }
+
+                /* now read (and display) whatever the client sends us */
+                for (;;)
+                {
+                    /* keep reading until we get something interesting */
+                    while ((res = ssl_ctx.Read(ssl, out buf)) == axtls.SSL_OK)
+                    {
+                        /* could do something else here */
+                    }
+
+                    if (res < axtls.SSL_OK)
+                    {
+                        if (!quiet)
+                        {
+                            Console.WriteLine("CONNECTION CLOSED");
+                        }
+
+                        break;
+                    }
+
+                    /* convert to string */
+                    char[] str = new char[res];
+                    for (i = 0; i < res; i++)
+                    {
+                        str[i] = (char)buf[i];
+                    }
+
+                    Console.Write(str);
+                }
+            }
+            else if (!quiet)
+            {
+                SSLUtil.DisplayError(res);
+            }
+
+            /* client was disconnected or the handshake failed. */
+            ssl.Dispose();
+            client_sock.Close();
+        }
+
+        /* ssl_ctx.Dispose(); */
+    }
+
+    /*
+     * do_client()
+     */
+    private void do_client(int build_mode, string[] args)
+    {
+        if (build_mode < axtls.SSL_BUILD_ENABLE_CLIENT)
+        {
+            print_client_options(build_mode, args[1]);
+        }
+
+        int i = 1, res;
+        int port = 4433;
+        bool quiet = false;
+        string password = null;
+        int reconnect = 0;
+        string private_key_file = null;
+        string hostname = "127.0.0.1";
+
+        /* organise the cert/ca_cert lists */
+        int cert_index = 0;
+        int ca_cert_index = 0;
+        int cert_size = SSLUtil.MaxCerts();
+        int ca_cert_size = SSLUtil.MaxCACerts();
+        string[] cert = new string[cert_size];
+        string[] ca_cert = new string[ca_cert_size];
+
+        uint options = axtls.SSL_SERVER_VERIFY_LATER|axtls.SSL_DISPLAY_CERTS;
+        byte[] session_id = null;
+
+        while (i < args.Length)
+        {
+            if (args[i] == "-connect")
+            {
+                string host_port;
+
+                if (i >= args.Length-1)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                host_port = args[++i];
+                int index_colon;
+
+                if ((index_colon = host_port.IndexOf(':')) < 0)
+                    print_client_options(build_mode, args[i]);
+
+                hostname = new string(host_port.ToCharArray(), 
+                        0, index_colon);
+                port = Int32.Parse(new String(host_port.ToCharArray(), 
+                            index_colon+1, host_port.Length-index_colon-1));
+            }
+            else if (args[i] == "-cert")
+            {
+                if (i >= args.Length-1 || cert_index >= cert_size)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                cert[cert_index++] = args[++i];
+            }
+            else if (args[i] == "-key")
+            {
+                if (i >= args.Length-1)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                private_key_file = args[++i];
+                options |= axtls.SSL_NO_DEFAULT_KEY;
+            }
+            else if (args[i] == "-CAfile")
+            {
+                if (i >= args.Length-1 || ca_cert_index >= ca_cert_size)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                ca_cert[ca_cert_index++] = args[++i];
+            }
+            else if (args[i] == "-verify")
+            {
+                options &= ~(uint)axtls.SSL_SERVER_VERIFY_LATER;
+            }
+            else if (args[i] == "-reconnect")
+            {
+                reconnect = 4;
+            }
+            else if (args[i] == "-quiet")
+            {
+                quiet = true;
+                options &= ~(uint)axtls.SSL_DISPLAY_CERTS;
+            }
+            else if (args[i] == "-pass")
+            {
+                if (i >= args.Length-1)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                password = args[++i];
+            }
+            else if (build_mode == axtls.SSL_BUILD_FULL_MODE)
+            {
+                if (args[i] == "-debug")
+                {
+                    options |= axtls.SSL_DISPLAY_BYTES;
+                }
+                else if (args[i] == "-state")
+                {
+                    options |= axtls.SSL_DISPLAY_STATES;
+                }
+                else if (args[i] == "-show-rsa")
+                {
+                    options |= axtls.SSL_DISPLAY_RSA;
+                }
+                else
+                    print_client_options(build_mode, args[i]);
+            }
+            else    /* don't know what this is */
+                print_client_options(build_mode, args[i]);
+
+            i++;
+        }
+
+        // IPHostEntry hostInfo = Dns.Resolve(hostname); 
+        IPHostEntry hostInfo = Dns.GetHostEntry(hostname);
+        IPAddress[] addresses = hostInfo.AddressList;
+        IPEndPoint ep = new IPEndPoint(addresses[0], port); 
+        Socket client_sock = new Socket(AddressFamily.InterNetwork, 
+                SocketType.Stream, ProtocolType.Tcp);
+        client_sock.Connect(ep);
+
+        if (!client_sock.Connected)
+        {
+            Console.WriteLine("could not connect");
+            Environment.Exit(1);
+        }
+
+        if (!quiet)
+        {
+            Console.WriteLine("CONNECTED");
+        }
+
+        /**********************************************************************
+         * This is where the interesting stuff happens. Up until now we've
+         * just been setting up sockets etc. Now we do the SSL handshake.
+         **********************************************************************/
+        SSLClient ssl_ctx = new SSLClient(options,
+                                    axtls.SSL_DEFAULT_CLNT_SESS);
+
+        if (ssl_ctx == null)
+        {
+            Console.Error.WriteLine("Error: Client context is invalid");
+            Environment.Exit(1);
+        }
+
+        if (private_key_file != null)
+        {
+            int obj_type = axtls.SSL_OBJ_RSA_KEY;
+
+            if (private_key_file.EndsWith(".p8"))
+                obj_type = axtls.SSL_OBJ_PKCS8;
+            else if (private_key_file.EndsWith(".p12"))
+                obj_type = axtls.SSL_OBJ_PKCS12;
+
+            if (ssl_ctx.ObjLoad(obj_type,
+                             private_key_file, password) != axtls.SSL_OK)
+            {
+                Console.Error.WriteLine("Private key '" + private_key_file +
+                                                            "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        for (i = 0; i < cert_index; i++)
+        {
+            if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, 
+                                        cert[i], null) != axtls.SSL_OK)
+            {
+                Console.WriteLine("Certificate '" + cert[i] + 
+                        "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        for (i = 0; i < ca_cert_index; i++)
+        {
+            if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, 
+                                        ca_cert[i], null) != axtls.SSL_OK)
+            {
+                Console.WriteLine("Certificate '" + cert[i] + 
+                                                        "' is undefined.");
+                Environment.Exit(1);
+            }
+        }
+
+        SSL ssl = new SSL(new IntPtr(0));   /* keep compiler happy */
+
+        /* Try session resumption? */
+        if (reconnect > 0)
+        {
+            while (reconnect-- > 0)
+            {
+                ssl = ssl_ctx.Connect(client_sock, session_id);
+
+                if ((res = ssl.HandshakeStatus()) != axtls.SSL_OK)
+                {
+                    if (!quiet)
+                    {
+                        SSLUtil.DisplayError(res);
+                    }
+
+                    ssl.Dispose();
+                    Environment.Exit(1);
+                }
+
+                display_session_id(ssl);
+                session_id = ssl.GetSessionId();
+
+                if (reconnect > 0)
+                {
+                    ssl.Dispose();
+                    client_sock.Close();
+                    
+                    /* and reconnect */
+                    client_sock = new Socket(AddressFamily.InterNetwork, 
+                        SocketType.Stream, ProtocolType.Tcp);
+                    client_sock.Connect(ep);
+                }
+            }
+        }
+        else
+        {
+            ssl = ssl_ctx.Connect(client_sock, null);
+        }
+
+        /* check the return status */
+        if ((res = ssl.HandshakeStatus()) != axtls.SSL_OK)
+        {
+            if (!quiet)
+            {
+                SSLUtil.DisplayError(res);
+            }
+
+            Environment.Exit(1);
+        }
+
+        if (!quiet)
+        {
+            string common_name =
+                ssl.GetCertificateDN(axtls.SSL_X509_CERT_COMMON_NAME);
+
+            if (common_name != null)
+            {
+                Console.WriteLine("Common Name:\t\t\t" + common_name);
+            }
+
+            display_session_id(ssl);
+            display_cipher(ssl);
+        }
+
+        for (;;)
+        {
+            string user_input = Console.ReadLine();
+
+            if (user_input == null)
+                break;
+
+            byte[] buf = new byte[user_input.Length+2];
+            buf[buf.Length-2] = (byte)'\n';     /* add the carriage return */
+            buf[buf.Length-1] = 0;              /* null terminate */
+
+            for (i = 0; i < buf.Length-2; i++)
+            {
+                buf[i] = (byte)user_input[i];
+            }
+
+            if ((res = ssl_ctx.Write(ssl, buf, buf.Length)) < axtls.SSL_OK)
+            {
+                if (!quiet)
+                {
+                    SSLUtil.DisplayError(res);
+                }
+
+                break;
+            }
+        }
+
+        ssl_ctx.Dispose();
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the basic options.
+     */
+    private void print_options(string option)
+    {
+        Console.WriteLine("axssl: Error: '" + option + 
+                "' is an invalid command.");
+        Console.WriteLine("usage: axssl.csharp [s_server|" +
+                            "s_client|version] [args ...]");
+        Environment.Exit(1);
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the server options.
+     */
+    private void print_server_options(int build_mode, string option)
+    {
+        int cert_size = SSLUtil.MaxCerts();
+        int ca_cert_size = SSLUtil.MaxCACerts();
+
+        Console.WriteLine("unknown option " + option);
+        Console.WriteLine("usage: s_server [args ...]");
+        Console.WriteLine(" -accept arg\t- port to accept on (default " + 
+                "is 4433)");
+        Console.WriteLine(" -quiet\t\t- No server output");
+
+        if (build_mode >= axtls.SSL_BUILD_SERVER_ONLY)
+        {
+          Console.WriteLine(" -cert arg\t- certificate file to add (in " + 
+                  "addition to default) to chain -");
+          Console.WriteLine("\t\t  Can repeat up to " + cert_size + " times");
+          Console.WriteLine(" -key arg\t- Private key file to use");
+          Console.WriteLine(" -pass\t\t- private key file pass phrase source");
+        }
+
+        if (build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION)
+        {
+            Console.WriteLine(" -verify\t- turn on peer certificate " +
+                    "verification");
+            Console.WriteLine(" -CAfile arg\t- Certificate authority.");
+            Console.WriteLine("\t\t  Can repeat up to " + 
+                    ca_cert_size + "times");
+        }
+
+        if (build_mode == axtls.SSL_BUILD_FULL_MODE)
+        {
+            Console.WriteLine(" -debug\t\t- Print more output");
+            Console.WriteLine(" -state\t\t- Show state messages");
+            Console.WriteLine(" -show-rsa\t- Show RSA state");
+        }
+
+        Environment.Exit(1);
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the client options.
+     */
+    private void print_client_options(int build_mode, string option)
+    {
+        int cert_size = SSLUtil.MaxCerts();
+        int ca_cert_size = SSLUtil.MaxCACerts();
+
+        Console.WriteLine("unknown option " + option);
+
+        if (build_mode >= axtls.SSL_BUILD_ENABLE_CLIENT)
+        {
+            Console.WriteLine("usage: s_client [args ...]");
+            Console.WriteLine(" -connect host:port - who to connect to " + 
+                    "(default is localhost:4433)");
+            Console.WriteLine(" -verify\t- turn on peer certificate " + 
+                    "verification");
+            Console.WriteLine(" -cert arg\t- certificate file to use");
+            Console.WriteLine("\t\t  Can repeat up to %d times", cert_size);
+            Console.WriteLine(" -key arg\t- Private key file to use");
+            Console.WriteLine(" -CAfile arg\t- Certificate authority.");
+            Console.WriteLine("\t\t  Can repeat up to " + ca_cert_size + 
+                    " times");
+            Console.WriteLine(" -quiet\t\t- No client output");
+            Console.WriteLine(" -pass\t\t- private key file pass " + 
+                    "phrase source");
+            Console.WriteLine(" -reconnect\t- Drop and re-make the " +
+                    "connection with the same Session-ID");
+
+            if (build_mode == axtls.SSL_BUILD_FULL_MODE)
+            {
+                Console.WriteLine(" -debug\t\t- Print more output");
+                Console.WriteLine(" -state\t\t- Show state messages");
+                Console.WriteLine(" -show-rsa\t- Show RSA state");
+            }
+        }
+        else 
+        {
+            Console.WriteLine("Change configuration to allow this feature");
+        }
+
+        Environment.Exit(1);
+    }
+
+    /**
+     * Display what cipher we are using 
+     */
+    private void display_cipher(SSL ssl)
+    {
+        Console.Write("CIPHER is ");
+
+        switch (ssl.GetCipherId())
+        {
+            case axtls.SSL_AES128_SHA:
+                Console.WriteLine("AES128-SHA");
+                break;
+
+            case axtls.SSL_AES256_SHA:
+                Console.WriteLine("AES256-SHA");
+                break;
+
+            case axtls.SSL_RC4_128_SHA:
+                Console.WriteLine("RC4-SHA");
+                break;
+
+            case axtls.SSL_RC4_128_MD5:
+                Console.WriteLine("RC4-MD5");
+                break;
+
+            default:
+                Console.WriteLine("Unknown - " + ssl.GetCipherId());
+                break;
+        }
+    }
+
+    /**
+     * Display what session id we have.
+     */
+    private void display_session_id(SSL ssl)
+    {    
+        byte[] session_id = ssl.GetSessionId();
+
+        if (session_id.Length > 0)
+        {
+            Console.WriteLine("-----BEGIN SSL SESSION PARAMETERS-----");
+            foreach (byte b in session_id)
+            {
+                Console.Write("{0:x02}", b);
+            }
+
+            Console.WriteLine("\n-----END SSL SESSION PARAMETERS-----");
+        }
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile
new file mode 100644 (file)
index 0000000..b10a79f
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+include ../../config/makefile.java.conf
+
+all : sample
+JAR=../../$(STAGE)/axtls.jar
+CLASSES=../../bindings/java/classes
+sample : $(JAR)
+
+$(JAR) : $(CLASSES)/axssl.class $(wildcard $(CLASSES)/axTLSj/*.class)
+       jar mcvf manifest.mf $@ -C $(CLASSES) axTLSj -C $(CLASSES) axssl.class
+
+JAVA_FILES=axssl.java
+JAVA_CLASSES:=$(JAVA_FILES:%.java=$(CLASSES)/axTLSj/%.class)
+
+$(CLASSES)/%.class : %.java
+       javac -d $(CLASSES) -classpath $(CLASSES) $^
+
+clean::
+       -@rm -f $(TARGET)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java
new file mode 100644 (file)
index 0000000..2057f29
--- /dev/null
@@ -0,0 +1,760 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Demonstrate the use of the axTLS library in Java with a set of 
+ * command-line parameters similar to openssl. In fact, openssl clients 
+ * should be able to communicate with axTLS servers and visa-versa.  *
+ * This code has various bits enabled depending on the configuration. To enable
+ * the most interesting version, compile with the 'full mode' enabled.
+ *
+ * To see what options you have, run the following:
+ * > java -jar axtls.jar s_server -?
+ * > java -jar axtls.jar s_client -?
+ *
+ * The axtls/axtlsj shared libraries must be in the same directory or be found 
+ * by the OS.
+ */
+
+import java.io.*;
+import java.util.*;
+import java.net.*;
+import axTLSj.*;
+
+public class axssl
+{
+   /*
+     * Main()
+     */
+    public static void main(String[] args)
+    {
+        if (args.length == 1 && args[0].equals("version"))
+        {
+            System.out.println("axtls.jar " + SSLUtil.version());
+            System.exit(0);
+        }
+
+        axssl runner = new axssl();
+
+        try
+        {
+            if (args.length < 1 || 
+                    (!args[0].equals("s_server") &&
+                     !args[0].equals("s_client")))
+            {
+                runner.print_options(args.length > 0 ? args[0] : "");
+            }
+
+            int build_mode = SSLUtil.buildMode();
+
+            if (args[0].equals("s_server"))
+                runner.do_server(build_mode, args);
+            else 
+                runner.do_client(build_mode, args);
+        }
+        catch (Exception e) 
+        {
+            System.out.println(e);
+        }
+    }
+
+    /*
+     * do_server()
+     */
+    private void do_server(int build_mode, String[] args)
+                    throws Exception
+    {
+        int i = 1;
+        int port = 4433;
+        int options = axtlsj.SSL_DISPLAY_CERTS;
+        boolean quiet = false;
+        String password = null;
+        String private_key_file = null;
+
+        /* organise the cert/ca_cert lists */
+        int cert_size = SSLUtil.maxCerts();
+        int ca_cert_size = SSLUtil.maxCACerts();
+        String[] cert = new String[cert_size];
+        String[] ca_cert = new String[ca_cert_size];
+        int cert_index = 0;
+        int ca_cert_index = 0;
+
+        while (i < args.length)
+        {
+            if (args[i].equals("-accept"))
+            {
+                if (i >= args.length-1)
+                {
+                    print_server_options(build_mode, args[i]);
+                }
+
+                port = Integer.parseInt(args[++i]);
+            }
+            else if (args[i].equals("-quiet"))
+            {
+                quiet = true;
+                options &= ~(int)axtlsj.SSL_DISPLAY_CERTS;
+            }
+            else if (build_mode >= axtlsj.SSL_BUILD_SERVER_ONLY)
+            {
+                if (args[i].equals("-cert"))
+                {
+                    if (i >= args.length-1 || cert_index >= cert_size)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    cert[cert_index++] = args[++i];
+                }
+                else if (args[i].equals("-key"))
+                {
+                    if (i >= args.length-1)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    private_key_file = args[++i];
+                    options |= axtlsj.SSL_NO_DEFAULT_KEY;
+                }
+                else if (args[i].equals("-pass"))
+                {
+                    if (i >= args.length-1)
+                    {
+                        print_server_options(build_mode, args[i]);
+                    }
+
+                    password = args[++i];
+                }
+                else if (build_mode >= axtlsj.SSL_BUILD_ENABLE_VERIFICATION)
+                {
+                    if (args[i].equals("-verify"))
+                    {
+                        options |= axtlsj.SSL_CLIENT_AUTHENTICATION;
+                    }
+                    else if (args[i].equals("-CAfile"))
+                    {
+                        if (i >= args.length-1 || ca_cert_index >= ca_cert_size)
+                        {
+                            print_server_options(build_mode, args[i]);
+                        }
+
+                        ca_cert[ca_cert_index++] = args[++i];
+                    }
+                    else if (build_mode == axtlsj.SSL_BUILD_FULL_MODE)
+                    {
+                        if (args[i].equals("-debug"))
+                        {
+                            options |= axtlsj.SSL_DISPLAY_BYTES;
+                        }
+                        else if (args[i].equals("-state"))
+                        {
+                            options |= axtlsj.SSL_DISPLAY_STATES;
+                        }
+                        else if (args[i].equals("-show-rsa"))
+                        {
+                            options |= axtlsj.SSL_DISPLAY_RSA;
+                        }
+                        else
+                            print_server_options(build_mode, args[i]);
+                    }
+                    else
+                        print_server_options(build_mode, args[i]);
+                }
+                else 
+                    print_server_options(build_mode, args[i]);
+            }
+            else 
+                print_server_options(build_mode, args[i]);
+
+            i++;
+        }
+
+        /* Create socket for incoming connections */
+        ServerSocket server_sock = new ServerSocket(port);
+
+        /**********************************************************************
+         * This is where the interesting stuff happens. Up until now we've
+         * just been setting up sockets etc. Now we do the SSL handshake.
+         **********************************************************************/
+        SSLServer ssl_ctx = new SSLServer(options, 
+                                    axtlsj.SSL_DEFAULT_SVR_SESS);
+
+        if (ssl_ctx == null)
+            throw new Exception("Error: Server context is invalid");
+
+        if (private_key_file != null)
+        {
+            int obj_type =  axtlsj.SSL_OBJ_RSA_KEY;
+
+            if (private_key_file.endsWith(".p8"))
+                obj_type = axtlsj.SSL_OBJ_PKCS8;
+            else if (private_key_file.endsWith(".p12"))
+                obj_type = axtlsj.SSL_OBJ_PKCS12;
+
+            if (ssl_ctx.objLoad(obj_type, 
+                            private_key_file, password) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Error: Private key '" + private_key_file + 
+                        "' is undefined.");
+            }
+        }
+
+        for (i = 0; i < cert_index; i++)
+        {
+            if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CERT, 
+                                        cert[i], null) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Certificate '" + cert[i] + 
+                        "' is undefined.");
+            }
+        }
+
+        for (i = 0; i < ca_cert_index; i++)
+        {
+            if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CACERT, 
+                                        ca_cert[i], null) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Certificate '" + ca_cert[i] + 
+                        "' is undefined.");
+            }
+        }
+
+        int res;
+        SSLReadHolder rh = new SSLReadHolder();
+
+        for (;;)
+        {
+            if (!quiet)
+            {
+                System.out.println("ACCEPT");
+            }
+
+            Socket client_sock = server_sock.accept();
+
+            SSL ssl = ssl_ctx.connect(client_sock);
+
+            while ((res = ssl_ctx.read(ssl, rh)) == axtlsj.SSL_OK)
+            {
+                /* check when the connection has been established */
+                if (ssl.handshakeStatus() == axtlsj.SSL_OK)
+                    break;
+
+                /* could do something else here */
+            }
+
+            if (res == axtlsj.SSL_OK) /* connection established and ok */
+            {
+                if (!quiet)
+                {
+                    display_session_id(ssl);
+                    display_cipher(ssl);
+                }
+
+                /* now read (and display) whatever the client sends us */
+                for (;;)
+                {
+                    /* keep reading until we get something interesting */
+                    while ((res = ssl_ctx.read(ssl, rh)) == axtlsj.SSL_OK)
+                    {
+                        /* could do something else here */
+                    }
+
+                    if (res < axtlsj.SSL_OK)
+                    {
+                        if (!quiet)
+                        {
+                            System.out.println("CONNECTION CLOSED");
+                        }
+
+                        break;
+                    }
+
+                    /* convert to String */
+                    byte[] buf = rh.getData();
+                    char[] str = new char[res];
+
+                    for (i = 0; i < res; i++)
+                    {
+                        str[i] = (char)buf[i];
+                    }
+
+                    System.out.print(str);
+                }
+            }
+            else if (!quiet)
+            {
+                SSLUtil.displayError(res);
+            }
+
+            /* client was disconnected or the handshake failed. */
+            ssl.dispose();
+            client_sock.close();
+        }
+
+        /* ssl_ctx.dispose(); */
+    }
+
+    /*
+     * do_client()
+     */
+    private void do_client(int build_mode, String[] args)
+                    throws Exception
+    {
+        if (build_mode < axtlsj.SSL_BUILD_ENABLE_CLIENT)
+            print_client_options(build_mode, args[1]);
+
+        int i = 1, res;
+        int port = 4433;
+        boolean quiet = false;
+        String password = null;
+        int reconnect = 0;
+        String private_key_file = null;
+        String hostname = "127.0.0.1";
+
+        /* organise the cert/ca_cert lists */
+        int cert_index = 0;
+        int ca_cert_index = 0;
+        int cert_size = SSLUtil.maxCerts();
+        int ca_cert_size = SSLUtil.maxCACerts();
+        String[] cert = new String[cert_size];
+        String[] ca_cert = new String[ca_cert_size];
+
+        int options = axtlsj.SSL_SERVER_VERIFY_LATER|axtlsj.SSL_DISPLAY_CERTS;
+        byte[] session_id = null;
+
+        while (i < args.length)
+        {
+            if (args[i].equals("-connect"))
+            {
+                String host_port;
+
+                if (i >= args.length-1)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                host_port = args[++i];
+                int index_colon;
+
+                if ((index_colon = host_port.indexOf(':')) < 0)
+                    print_client_options(build_mode, args[i]);
+
+                hostname = new String(host_port.toCharArray(), 
+                        0, index_colon);
+                port = Integer.parseInt(new String(host_port.toCharArray(), 
+                            index_colon+1, host_port.length()-index_colon-1));
+            }
+            else if (args[i].equals("-cert"))
+            {
+                if (i >= args.length-1 || cert_index >= cert_size)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                cert[cert_index++] = args[++i];
+            }
+            else if (args[i].equals("-CAfile"))
+            {
+                if (i >= args.length-1 || ca_cert_index >= ca_cert_size)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                ca_cert[ca_cert_index++] = args[++i];
+            }
+            else if (args[i].equals("-key"))
+            {
+                if (i >= args.length-1)
+                {
+                    print_client_options(build_mode, args[i]);
+                }
+
+                private_key_file = args[++i];
+                options |= axtlsj.SSL_NO_DEFAULT_KEY;
+            }
+            else if (args[i].equals("-verify"))
+            {
+                options &= ~(int)axtlsj.SSL_SERVER_VERIFY_LATER;
+            }
+            else if (args[i].equals("-reconnect"))
+            {
+                reconnect = 4;
+            }
+            else if (args[i].equals("-quiet"))
+            {
+                quiet = true;
+                options &= ~(int)axtlsj.SSL_DISPLAY_CERTS;
+            }
+            else if (args[i].equals("-pass"))
+            {
+                if (i >= args.length-1)
+                {
+                    print_server_options(build_mode, args[i]);
+                }
+
+                password = args[++i];
+            }
+            else if (build_mode == axtlsj.SSL_BUILD_FULL_MODE)
+            {
+                if (args[i].equals("-debug"))
+                {
+                    options |= axtlsj.SSL_DISPLAY_BYTES;
+                }
+                else if (args[i].equals("-state"))
+                {
+                    options |= axtlsj.SSL_DISPLAY_STATES;
+                }
+                else if (args[i].equals("-show-rsa"))
+                {
+                    options |= axtlsj.SSL_DISPLAY_RSA;
+                }
+                else
+                    print_client_options(build_mode, args[i]);
+            }
+            else    /* don't know what this is */
+                print_client_options(build_mode, args[i]);
+
+            i++;
+        }
+
+        Socket client_sock = new Socket(hostname, port);
+
+        if (!client_sock.isConnected())
+        {
+            System.out.println("could not connect");
+            throw new Exception();
+        }
+
+        if (!quiet)
+        {
+            System.out.println("CONNECTED");
+        }
+
+        /**********************************************************************
+         * This is where the interesting stuff happens. Up until now we've
+         * just been setting up sockets etc. Now we do the SSL handshake.
+         **********************************************************************/
+        SSLClient ssl_ctx = new SSLClient(options, 
+                                    axtlsj.SSL_DEFAULT_CLNT_SESS);
+
+        if (ssl_ctx == null)
+        {
+            throw new Exception("Error: Client context is invalid");
+        }
+
+        if (private_key_file != null)
+        {
+            int obj_type =  axtlsj.SSL_OBJ_RSA_KEY;
+
+            if (private_key_file.endsWith(".p8"))
+                obj_type = axtlsj.SSL_OBJ_PKCS8;
+            else if (private_key_file.endsWith(".p12"))
+                obj_type = axtlsj.SSL_OBJ_PKCS12;
+
+            if (ssl_ctx.objLoad(obj_type, 
+                            private_key_file, password) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Error: Private key '" + private_key_file + 
+                        "' is undefined.");
+            }
+        }
+
+        for (i = 0; i < cert_index; i++)
+        {
+            if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CERT, 
+                                        cert[i], null) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Certificate '" + cert[i] + 
+                        "' is undefined.");
+            }
+        }
+
+        for (i = 0; i < ca_cert_index; i++)
+        {
+            if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CACERT, 
+                                        ca_cert[i], null) != axtlsj.SSL_OK)
+            {
+                throw new Exception("Certificate '" + ca_cert[i] + 
+                        "' is undefined.");
+            }
+        }
+
+        SSL ssl = null;
+
+        /* Try session resumption? */
+        if (reconnect > 0)
+        {
+            while (reconnect-- > 0)
+            {
+                ssl = ssl_ctx.connect(client_sock, session_id);
+
+                if ((res = ssl.handshakeStatus()) != axtlsj.SSL_OK)
+                {
+                    if (!quiet)
+                    {
+                        SSLUtil.displayError(res);
+                    }
+
+                    ssl.dispose();
+                    throw new Exception();
+                }
+
+                display_session_id(ssl);
+                session_id = ssl.getSessionId();
+
+                if (reconnect > 0)
+                {
+                    ssl.dispose();
+                    client_sock.close();
+                    
+                    /* and reconnect */
+                    client_sock = new Socket(hostname, port);
+                }
+            }
+        }
+        else
+        {
+            ssl = ssl_ctx.connect(client_sock, null);
+        }
+
+        /* check the return status */
+        if ((res = ssl.handshakeStatus()) != axtlsj.SSL_OK)
+        {
+            if (!quiet)
+            {
+                SSLUtil.displayError(res);
+            }
+
+            throw new Exception();
+        }
+
+        if (!quiet)
+        {
+            String common_name =
+                ssl.getCertificateDN(axtlsj.SSL_X509_CERT_COMMON_NAME);
+
+            if (common_name != null)
+            {
+                System.out.println("Common Name:\t\t\t" + common_name);
+            }
+
+            display_session_id(ssl);
+            display_cipher(ssl);
+        }
+
+        BufferedReader in = new BufferedReader(
+                new InputStreamReader(System.in));
+
+        for (;;)
+        {
+            String user_input = in.readLine();
+
+            if (user_input == null)
+                break;
+
+            byte[] buf = new byte[user_input.length()+2];
+            buf[buf.length-2] = (byte)'\n';     /* add the carriage return */
+            buf[buf.length-1] = 0;              /* null terminate */
+
+            for (i = 0; i < buf.length-2; i++)
+            {
+                buf[i] = (byte)user_input.charAt(i);
+            }
+
+            if ((res = ssl_ctx.write(ssl, buf)) < axtlsj.SSL_OK)
+            {
+                if (!quiet)
+                {
+                    SSLUtil.displayError(res);
+                }
+
+                break;
+            }
+        }
+
+        ssl_ctx.dispose();
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the basic options.
+     */
+    private void print_options(String option)
+    {
+        System.out.println("axssl: Error: '" + option + 
+                "' is an invalid command.");
+        System.out.println("usage: axtlsj.jar [s_server|s_client|version] " + 
+                "[args ...]");
+        System.exit(1);
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the server options.
+     */
+    private void print_server_options(int build_mode, String option)
+    {
+        int cert_size = SSLUtil.maxCerts();
+        int ca_cert_size = SSLUtil.maxCACerts();
+
+        System.out.println("unknown option " + option);
+        System.out.println("usage: s_server [args ...]");
+        System.out.println(" -accept arg\t- port to accept on (default " + 
+                "is 4433)");
+        System.out.println(" -quiet\t\t- No server output");
+
+        if (build_mode >= axtlsj.SSL_BUILD_SERVER_ONLY)
+        {
+            System.out.println(" -cert arg\t- certificate file to add (in " + 
+                    "addition to default) to chain -");
+            System.out.println("\t\t  Can repeat up to " + cert_size + " times");
+            System.out.println(" -key arg\t- Private key file to use");
+            System.out.println(" -pass\t\t- private key file pass phrase source");
+        }
+
+        if (build_mode >= axtlsj.SSL_BUILD_ENABLE_VERIFICATION)
+        {
+            System.out.println(" -verify\t- turn on peer certificate " +
+                    "verification");
+            System.out.println(" -CAfile arg\t- Certificate authority. ");
+            System.out.println("\t\t  Can repeat up to " + 
+                    ca_cert_size + " times");
+        }
+
+        if (build_mode == axtlsj.SSL_BUILD_FULL_MODE)
+        {
+            System.out.println(" -debug\t\t- Print more output");
+            System.out.println(" -state\t\t- Show state messages");
+            System.out.println(" -show-rsa\t- Show RSA state");
+        }
+
+        System.exit(1);
+    }
+
+    /**
+     * We've had some sort of command-line error. Print out the client options.
+     */
+    private void print_client_options(int build_mode, String option)
+    {
+        int cert_size = SSLUtil.maxCerts();
+        int ca_cert_size = SSLUtil.maxCACerts();
+
+        System.out.println("unknown option " + option);
+
+        if (build_mode >= axtlsj.SSL_BUILD_ENABLE_CLIENT)
+        {
+            System.out.println("usage: s_client [args ...]");
+            System.out.println(" -connect host:port - who to connect to " + 
+                    "(default is localhost:4433)");
+            System.out.println(" -verify\t- turn on peer certificate " + 
+                    "verification");
+            System.out.println(" -cert arg\t- certificate file to use");
+            System.out.println(" -key arg\t- Private key file to use");
+            System.out.println("\t\t  Can repeat up to " + cert_size + 
+                    " times");
+            System.out.println(" -CAfile arg\t- Certificate authority.");
+            System.out.println("\t\t  Can repeat up to " + ca_cert_size + 
+                    " times");
+            System.out.println(" -quiet\t\t- No client output");
+            System.out.println(" -pass\t\t- private key file pass " + 
+                        "phrase source");
+            System.out.println(" -reconnect\t- Drop and re-make the " +
+                    "connection with the same Session-ID");
+
+            if (build_mode == axtlsj.SSL_BUILD_FULL_MODE)
+            {
+                System.out.println(" -debug\t\t- Print more output");
+                System.out.println(" -state\t\t- Show state messages");
+                System.out.println(" -show-rsa\t- Show RSA state");
+            }
+        }
+        else 
+        {
+            System.out.println("Change configuration to allow this feature");
+        }
+
+        System.exit(1);
+    }
+
+    /**
+     * Display what cipher we are using 
+     */
+    private void display_cipher(SSL ssl)
+    {
+        System.out.print("CIPHER is ");
+
+        byte ciph_id = ssl.getCipherId();
+
+        if (ciph_id == axtlsj.SSL_AES128_SHA)
+            System.out.println("AES128-SHA");
+        else if (ciph_id == axtlsj.SSL_AES256_SHA)
+            System.out.println("AES256-SHA");
+        else if (ciph_id == axtlsj.SSL_RC4_128_SHA)
+            System.out.println("RC4-SHA");
+        else if (ciph_id == axtlsj.SSL_RC4_128_MD5)
+            System.out.println("RC4-MD5");
+        else
+            System.out.println("Unknown - " + ssl.getCipherId());
+    }
+
+    public char toHexChar(int i)
+    {
+        if ((0 <= i) && (i <= 9 ))
+            return (char)('0' + i);
+        else
+            return (char)('a' + (i-10));
+    }
+
+    public void bytesToHex(byte[] data) 
+    {
+        StringBuffer buf = new StringBuffer();
+        for (int i = 0; i < data.length; i++ ) 
+        {
+            buf.append(toHexChar((data[i]>>>4)&0x0F));
+            buf.append(toHexChar(data[i]&0x0F));
+        }
+
+        System.out.println(buf);
+    }
+
+
+    /**
+     * Display what session id we have.
+     */
+    private void display_session_id(SSL ssl)
+    {    
+        byte[] session_id = ssl.getSessionId();
+
+        if (session_id.length > 0)
+        {
+            System.out.println("-----BEGIN SSL SESSION PARAMETERS-----");
+            bytesToHex(session_id);
+            System.out.println("-----END SSL SESSION PARAMETERS-----");
+        }
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf
new file mode 100644 (file)
index 0000000..b906ed2
--- /dev/null
@@ -0,0 +1 @@
+Main-Class: axssl
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile
new file mode 100644 (file)
index 0000000..a460da3
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+
+all: samples
+TARGET=../../$(STAGE)/axssl.lua
+samples: $(TARGET)
+
+$(TARGET): axssl.lua
+       install $< $@
+
+clean::
+       -@rm -f $(TARGET)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua b/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua
new file mode 100755 (executable)
index 0000000..6ea26b6
--- /dev/null
@@ -0,0 +1,562 @@
+#!/usr/local/bin/lua
+
+--
+-- Copyright (c) 2007, Cameron Rich
+--
+-- All rights reserved.
+--
+-- Redistribution and use in source and binary forms, with or without
+-- modification, are permitted provided that the following conditions are met:
+--
+-- * Redistributions of source code must retain the above copyright notice,
+--   this list of conditions and the following disclaimer.
+-- * Redistributions in binary form must reproduce the above copyright
+--   notice, this list of conditions and the following disclaimer in the
+--   documentation and/or other materials provided with the distribution.
+-- * Neither the name of the axTLS project nor the names of its
+--   contributors may be used to endorse or promote products derived
+--   from this software without specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+-- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+-- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--
+
+--
+-- Demonstrate the use of the axTLS library in Lua with a set of 
+-- command-line parameters similar to openssl. In fact, openssl clients 
+-- should be able to communicate with axTLS servers and visa-versa.
+--
+-- This code has various bits enabled depending on the configuration. To enable
+-- the most interesting version, compile with the 'full mode' enabled.
+--
+-- To see what options you have, run the following:
+-- > [lua] axssl s_server -?
+-- > [lua] axssl s_client -?
+--
+-- The axtls/axtlsl shared libraries must be in the same directory or be found 
+-- by the OS.
+--
+--
+require "bit"
+require("axtlsl")
+local socket = require("socket")
+
+-- print version?
+if #arg == 1 and arg[1] == "version" then
+    print("axssl.lua "..axtlsl.ssl_version())
+    os.exit(1)
+end
+
+--
+-- We've had some sort of command-line error. Print out the basic options.
+--
+function print_options(option)
+    print("axssl: Error: '"..option.."' is an invalid command.")
+    print("usage: axssl [s_server|s_client|version] [args ...]")
+    os.exit(1)
+end
+
+--
+-- We've had some sort of command-line error. Print out the server options.
+--
+function print_server_options(build_mode, option)
+    local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET)
+    local ca_cert_size = axtlsl.ssl_get_config(
+            axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET)
+
+    print("unknown option "..option)
+    print("usage: s_server [args ...]")
+    print(" -accept\t- port to accept on (default is 4433)")
+    print(" -quiet\t\t- No server output")
+
+    if build_mode >= axtlsl.SSL_BUILD_SERVER_ONLY then
+        print(" -cert arg\t- certificate file to add (in addition to "..
+                "default) to chain -")
+        print("\t\t  Can repeat up to "..cert_size.." times")
+        print(" -key arg\t- Private key file to use - default DER format")
+        print(" -pass\t\t- private key file pass phrase source")
+    end
+
+    if build_mode >= axtlsl.SSL_BUILD_ENABLE_VERIFICATION then
+        print(" -verify\t- turn on peer certificate verification")
+        print(" -CAfile arg\t- Certificate authority - default DER format")
+        print("\t\t  Can repeat up to "..ca_cert_size.." times")
+    end
+
+    if build_mode == axtlsl.SSL_BUILD_FULL_MODE then
+        print(" -debug\t\t- Print more output")
+        print(" -state\t\t- Show state messages")
+        print(" -show-rsa\t- Show RSA state")
+    end
+
+    os.exit(1)
+end
+
+--
+-- We've had some sort of command-line error. Print out the client options.
+--
+function print_client_options(build_mode, option)
+    local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET)
+    local ca_cert_size = axtlsl.ssl_get_config(
+            axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET)
+
+    print("unknown option "..option)
+
+    if build_mode >= axtlsl.SSL_BUILD_ENABLE_CLIENT then
+        print("usage: s_client [args ...]")
+        print(" -connect host:port - who to connect to (default "..
+                "is localhost:4433)")
+        print(" -verify\t- turn on peer certificate verification")
+        print(" -cert arg\t- certificate file to use - default DER format")
+        print(" -key arg\t- Private key file to use - default DER format")
+        print("\t\t  Can repeat up to "..cert_size.." times")
+        print(" -CAfile arg\t- Certificate authority - default DER format")
+        print("\t\t  Can repeat up to "..ca_cert_size.."times")
+        print(" -quiet\t\t- No client output")
+        print(" -pass\t\t- private key file pass phrase source")
+        print(" -reconnect\t- Drop and re-make the connection "..
+                "with the same Session-ID")
+
+        if build_mode == axtlsl.SSL_BUILD_FULL_MODE then
+            print(" -debug\t\t- Print more output")
+            print(" -state\t\t- Show state messages")
+            print(" -show-rsa\t- Show RSA state")
+        end
+    else
+        print("Change configuration to allow this feature")
+    end
+
+    os.exit(1)
+end
+
+-- Implement the SSL server logic. 
+function do_server(build_mode)
+    local i = 2
+    local v
+    local port = 4433
+    local options = axtlsl.SSL_DISPLAY_CERTS
+    local quiet = false
+    local password = ""
+    local private_key_file = nil
+    local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET)
+    local ca_cert_size = axtlsl.
+                            ssl_get_config(axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET)
+    local cert = {}
+    local ca_cert = {}
+
+    while i <= #arg do
+        if arg[i] ==  "-accept" then
+            if i >= #arg then
+                print_server_options(build_mode, arg[i])
+            end
+
+            i = i + 1
+            port = arg[i]
+        elseif arg[i] == "-quiet" then
+            quiet = true
+            options = bit.band(options, bit.bnot(axtlsl.SSL_DISPLAY_CERTS))
+        elseif build_mode >= axtlsl.SSL_BUILD_SERVER_ONLY then
+            if arg[i] == "-cert" then
+                if i >= #arg or #cert >= cert_size then
+                    print_server_options(build_mode, arg[i]) 
+                end
+
+                i = i + 1
+                table.insert(cert, arg[i])
+            elseif arg[i] == "-key" then
+                if i >= #arg then
+                    print_server_options(build_mode, arg[i]) 
+                end
+
+                i = i + 1
+                private_key_file = arg[i]
+                options = bit.bor(options, axtlsl.SSL_NO_DEFAULT_KEY)
+            elseif arg[i] == "-pass" then
+                if i >= #arg then
+                    print_server_options(build_mode, arg[i]) 
+                end
+
+                i = i + 1
+                password = arg[i]
+            elseif build_mode >= axtlsl.SSL_BUILD_ENABLE_VERIFICATION then
+                if arg[i] == "-verify" then
+                    options = bit.bor(options, axtlsl.SSL_CLIENT_AUTHENTICATION)
+                elseif arg[i] == "-CAfile" then
+                    if i >= #arg or #ca_cert >= ca_cert_size then
+                        print_server_options(build_mode, arg[i])  
+                    end
+
+                    i = i + 1
+                    table.insert(ca_cert, arg[i])
+                elseif build_mode == axtlsl.SSL_BUILD_FULL_MODE then
+                    if arg[i] == "-debug" then
+                        options = bit.bor(options, axtlsl.SSL_DISPLAY_BYTES)
+                    elseif arg[i] == "-state" then
+                        options = bit.bor(options, axtlsl.SSL_DISPLAY_STATES)
+                    elseif arg[i] == "-show-rsa" then
+                        options = bit.bor(options, axtlsl.SSL_DISPLAY_RSA)
+                    else
+                        print_server_options(build_mode, arg[i])
+                    end
+                else
+                    print_server_options(build_mode, arg[i])
+                end
+            else 
+                print_server_options(build_mode, arg[i])
+            end
+        else 
+            print_server_options(build_mode, arg[i])
+        end
+
+        i = i + 1
+    end
+
+    -- Create socket for incoming connections
+    local server_sock = socket.try(socket.bind("*", port))
+
+    ---------------------------------------------------------------------------
+    -- This is where the interesting stuff happens. Up until now we've
+    -- just been setting up sockets etc. Now we do the SSL handshake.
+    ---------------------------------------------------------------------------
+    local ssl_ctx = axtlsl.ssl_ctx_new(options, axtlsl.SSL_DEFAULT_SVR_SESS)
+    if ssl_ctx == nil then error("Error: Server context is invalid") end
+
+    if private_key_file ~= nil then
+        local obj_type = axtlsl.SSL_OBJ_RSA_KEY
+
+        if string.find(private_key_file, ".p8") then 
+            obj_type = axtlsl.SSL_OBJ_PKCS8 
+        end
+
+        if string.find(private_key_file, ".p12") then 
+            obj_type = axtlsl.SSL_OBJ_PKCS12 
+        end
+
+        if axtlsl.ssl_obj_load(ssl_ctx, obj_type, private_key_file, 
+                                        password) ~= axtlsl.SSL_OK then
+            error("Private key '" .. private_key_file .. "' is undefined.")
+        end
+    end
+
+    for _, v in ipairs(cert) do
+        if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CERT, v, "") ~= 
+                                        axtlsl.SSL_OK then
+            error("Certificate '"..v .. "' is undefined.")
+        end
+    end
+
+    for _, v in ipairs(ca_cert) do
+        if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CACERT, v, "") ~= 
+                                        axtlsl.SSL_OK then
+            error("Certificate '"..v .."' is undefined.")
+        end
+    end
+
+    while true do
+        if not quiet then print("ACCEPT") end
+        local client_sock = server_sock:accept();
+        local ssl = axtlsl.ssl_server_new(ssl_ctx, client_sock:getfd())
+
+        -- do the actual SSL handshake
+        local connected = false
+        local res
+        local buf
+
+        while true do
+            socket.select({client_sock}, nil)
+            res, buf = axtlsl.ssl_read(ssl)
+
+            if res == axtlsl.SSL_OK then -- connection established and ok
+                if axtlsl.ssl_handshake_status(ssl) == axtlsl.SSL_OK then
+                    if not quiet and not connected then
+                        display_session_id(ssl)
+                        display_cipher(ssl)
+                    end
+                    connected = true
+                end
+            end
+
+            if res > axtlsl.SSL_OK then
+                for _, v in ipairs(buf) do
+                    io.write(string.format("%c", v))
+                end
+            elseif res < axtlsl.SSL_OK then 
+                if not quiet then
+                    axtlsl.ssl_display_error(res)
+                end
+                break
+            end
+        end
+
+        -- client was disconnected or the handshake failed.
+        print("CONNECTION CLOSED")
+        axtlsl.ssl_free(ssl)
+        client_sock:close()
+    end
+
+    axtlsl.ssl_ctx_free(ssl_ctx)
+end
+
+--
+-- Implement the SSL client logic.
+--
+function do_client(build_mode)
+    local i = 2
+    local v
+    local port = 4433
+    local options = 
+            bit.bor(axtlsl.SSL_SERVER_VERIFY_LATER, axtlsl.SSL_DISPLAY_CERTS)
+    local private_key_file = nil
+    local reconnect = 0
+    local quiet = false
+    local password = ""
+    local session_id = {}
+    local host = "127.0.0.1"
+    local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET)
+    local ca_cert_size = axtlsl.
+                            ssl_get_config(axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET)
+    local cert = {}
+    local ca_cert = {}
+
+    while i <= #arg do
+        if arg[i] == "-connect" then
+            if i >= #arg then
+                print_client_options(build_mode, arg[i]) 
+            end
+
+            i = i + 1
+            local t = string.find(arg[i], ":")
+            host = string.sub(arg[i], 1, t-1)
+            port = string.sub(arg[i], t+1)
+        elseif arg[i] == "-cert" then
+            if i >= #arg or #cert >= cert_size then
+                print_client_options(build_mode, arg[i]) 
+            end
+
+            i = i + 1
+            table.insert(cert, arg[i])
+        elseif arg[i] == "-key" then
+            if i >= #arg then
+                print_client_options(build_mode, arg[i])
+            end
+
+            i = i + 1
+            private_key_file = arg[i]
+            options = bit.bor(options, axtlsl.SSL_NO_DEFAULT_KEY)
+        elseif arg[i] == "-CAfile" then
+            if i >= #arg or #ca_cert >= ca_cert_size then
+                print_client_options(build_mode, arg[i]) 
+            end
+
+            i = i + 1
+            table.insert(ca_cert, arg[i])
+        elseif arg[i] == "-verify" then
+            options = bit.band(options, 
+                                bit.bnot(axtlsl.SSL_SERVER_VERIFY_LATER))
+        elseif arg[i] == "-reconnect" then
+            reconnect = 4
+        elseif arg[i] == "-quiet" then
+            quiet = true
+            options = bit.band(options, bnot(axtlsl.SSL_DISPLAY_CERTS))
+        elseif arg[i] == "-pass" then
+            if i >= #arg then
+                print_server_options(build_mode, arg[i])
+            end
+
+            i = i + 1
+            password = arg[i]
+        elseif build_mode == axtlsl.SSL_BUILD_FULL_MODE then
+            if arg[i] == "-debug" then
+                options = bit.bor(options, axtlsl.SSL_DISPLAY_BYTES)
+            elseif arg[i] == "-state" then
+                options = bit.bor(axtlsl.SSL_DISPLAY_STATES)
+            elseif arg[i] == "-show-rsa" then
+                options = bit.bor(axtlsl.SSL_DISPLAY_RSA)
+            else    -- don't know what this is
+                print_client_options(build_mode, arg[i])
+            end
+        else    -- don't know what this is
+            print_client_options(build_mode, arg[i])
+        end
+
+        i = i + 1
+    end
+
+    local client_sock = socket.try(socket.connect(host, port))
+    local ssl
+    local res
+
+    if not quiet then print("CONNECTED") end
+
+    ---------------------------------------------------------------------------
+    -- This is where the interesting stuff happens. Up until now we've
+    -- just been setting up sockets etc. Now we do the SSL handshake.
+    ---------------------------------------------------------------------------
+    local ssl_ctx = axtlsl.ssl_ctx_new(options, axtlsl.SSL_DEFAULT_CLNT_SESS)
+
+    if ssl_ctx == nil then 
+        error("Error: Client context is invalid")
+    end
+
+    if private_key_file ~= nil then
+        local obj_type = axtlsl.SSL_OBJ_RSA_KEY
+
+        if string.find(private_key_file, ".p8") then 
+            obj_type = axtlsl.SSL_OBJ_PKCS8 
+        end
+
+        if string.find(private_key_file, ".p12") then 
+            obj_type = axtlsl.SSL_OBJ_PKCS12 
+        end
+
+        if axtlsl.ssl_obj_load(ssl_ctx, obj_type, private_key_file, 
+                                        password) ~= axtlsl.SSL_OK then
+            error("Private key '"..private_key_file.."' is undefined.")
+        end
+    end
+
+    for _, v in ipairs(cert) do
+        if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CERT, v, "") ~= 
+                                        axtlsl.SSL_OK then
+            error("Certificate '"..v .. "' is undefined.")
+        end
+    end
+
+    for _, v in ipairs(ca_cert) do
+        if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CACERT, v, "") ~= 
+                                        axtlsl.SSL_OK then
+            error("Certificate '"..v .."' is undefined.")
+        end
+    end
+
+    -- Try session resumption?
+    if reconnect ~= 0 then
+        local session_id = nil
+        local sess_id_size = 0
+
+        while reconnect > 0 do
+            reconnect = reconnect - 1
+            ssl = axtlsl.ssl_client_new(ssl_ctx, 
+                    client_sock:getfd(), session_id, sess_id_size)
+
+            res = axtlsl.ssl_handshake_status(ssl)
+            if res ~= axtlsl.SSL_OK then
+                if not quiet then axtlsl.ssl_display_error(res) end
+                axtlsl.ssl_free(ssl)
+                os.exit(1)
+            end
+
+            display_session_id(ssl)
+            session_id = axtlsl.ssl_get_session_id(ssl)
+            sess_id_size = axtlsl.ssl_get_session_id_size(ssl)
+
+            if reconnect > 0 then
+                axtlsl.ssl_free(ssl)
+                client_sock:close()
+                client_sock = socket.try(socket.connect(host, port))
+            end
+
+        end
+    else
+        ssl = axtlsl.ssl_client_new(ssl_ctx, client_sock:getfd(), nil, 0)
+    end
+
+    -- check the return status
+    res = axtlsl.ssl_handshake_status(ssl)
+    if res ~= axtlsl.SSL_OK then
+        if not quiet then axtlsl.ssl_display_error(res) end
+        os.exit(1)
+    end
+
+    if not quiet then
+        local common_name = axtlsl.ssl_get_cert_dn(ssl, 
+                            axtlsl.SSL_X509_CERT_COMMON_NAME)
+
+        if common_name ~= nil then 
+            print("Common Name:\t\t\t"..common_name)
+        end
+
+        display_session_id(ssl)
+        display_cipher(ssl)
+    end
+
+    while true do
+        local line = io.read()
+    if line == nil then break end
+        local bytes = {}
+
+        for i = 1, #line do
+            bytes[i] = line.byte(line, i)
+        end
+
+        bytes[#line+1] = 10      -- add carriage return, null
+        bytes[#line+2] = 0
+
+        res = axtlsl.ssl_write(ssl, bytes, #bytes)
+        if res < axtlsl.SSL_OK then
+            if not quiet then axtlsl.ssl_display_error(res) end
+            break
+        end
+    end
+
+    axtlsl.ssl_ctx_free(ssl_ctx)
+    client_sock:close()
+end
+
+--
+-- Display what cipher we are using 
+--
+function display_cipher(ssl)
+    io.write("CIPHER is ")
+    local cipher_id = axtlsl.ssl_get_cipher_id(ssl)
+
+    if cipher_id == axtlsl.SSL_AES128_SHA then
+        print("AES128-SHA")
+    elseif cipher_id == axtlsl.SSL_AES256_SHA then
+        print("AES256-SHA")
+    elseif axtlsl.SSL_RC4_128_SHA then
+        print("RC4-SHA")
+    elseif axtlsl.SSL_RC4_128_MD5 then
+        print("RC4-MD5")
+    else 
+        print("Unknown - "..cipher_id)
+    end
+end
+
+--
+-- Display what session id we have.
+--
+function display_session_id(ssl)
+    local session_id = axtlsl.ssl_get_session_id(ssl)
+    local v
+
+    if #session_id > 0 then
+        print("-----BEGIN SSL SESSION PARAMETERS-----")
+        for _, v in ipairs(session_id) do
+            io.write(string.format("%02x", v))
+        end
+        print("\n-----END SSL SESSION PARAMETERS-----")
+    end
+end
+
+--
+-- Main entry point. Doesn't do much except works out whether we are a client
+-- or a server.
+--
+if #arg == 0 or (arg[1] ~= "s_server" and arg[1] ~= "s_client") then
+    print_options(#arg > 0 and arg[1] or "")
+end
+
+local build_mode = axtlsl.ssl_get_config(axtlsl.SSL_BUILD_MODE)
+_ = arg[1] == "s_server" and do_server(build_mode) or do_client(build_mode)
+os.exit(0)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile
new file mode 100644 (file)
index 0000000..5200c43
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+
+all: samples
+TARGET=../../$(STAGE)/axssl.pl
+samples: $(TARGET)
+
+$(TARGET): axssl.pl
+       install $< $@
+
+clean::
+       -@rm -f $(TARGET)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl b/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl
new file mode 100755 (executable)
index 0000000..e49d522
--- /dev/null
@@ -0,0 +1,634 @@
+#!/usr/bin/perl -w
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Demonstrate the use of the axTLS library in Perl with a set of 
+# command-line parameters similar to openssl. In fact, openssl clients 
+# should be able to communicate with axTLS servers and visa-versa.
+#
+# This code has various bits enabled depending on the configuration. To enable
+# the most interesting version, compile with the 'full mode' enabled.
+#
+# To see what options you have, run the following:
+# > [perl] axssl s_server -?
+# > [perl] axssl s_client -?
+#
+# The axtls/axtlsp shared libraries must be in the same directory or be found 
+# by the OS. axtlsp.pm must be in this directory or be in @INC.
+#
+# Under Win32, ActivePerl was used (see
+# http://www.activestate.com/Products/ActivePerl/?mp=1)
+#
+use axtlsp;
+use IO::Socket;
+
+# To get access to Win32 file descriptor stuff
+my $is_win32 = 0;
+
+if ($^O eq "MSWin32")
+{
+    eval("use Win32API::File 0.08 qw( :ALL )");
+    $is_win32 = 1;
+}
+
+use strict;
+
+#
+# Win32 has some problems with socket handles
+#
+sub get_native_sock
+{
+    my ($sock) = @_;
+    return $is_win32 ? FdGetOsFHandle($sock) : $sock;
+}
+
+# print version?
+if ($#ARGV == 0 && $ARGV[0] eq "version")
+{
+    printf("axssl.pl ".axtlsp::ssl_version()."\n");
+    exit 0;
+}
+
+#
+# Main entry point. Doesn't do much except works out whether we are a client
+# or a server.
+#
+print_options($#ARGV > -1 ? $ARGV[0] : "")
+        if ($#ARGV < 0 || ($ARGV[0] ne "s_server" && $ARGV[0] ne "s_client"));
+
+
+# Cygwin/Win32 issue - flush our output continuously
+select STDOUT;
+local $|=1;
+
+my $build_mode = axtlsp::ssl_get_config($axtlsp::SSL_BUILD_MODE);
+$ARGV[0] eq "s_server" ? do_server($build_mode) : do_client($build_mode);
+
+#
+# Implement the SSL server logic. 
+#
+sub do_server
+{
+    my ($build_mode) = @_;
+    my $i = 1;
+    my $port = 4433;
+    my $options = $axtlsp::SSL_DISPLAY_CERTS;
+    my $quiet = 0;
+    my $password = undef;
+    my $private_key_file = undef;
+    my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET);
+    my $ca_cert_size = axtlsp::ssl_get_config(
+                        $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET);
+    my @cert;
+    my @ca_cert;
+
+    while ($i <= $#ARGV)
+    {
+        if ($ARGV[$i] eq  "-accept")
+        {
+            print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+            $port = $ARGV[++$i];
+        }
+        elsif ($ARGV[$i] eq "-quiet")
+        {
+            $quiet = 1;
+            $options &= ~$axtlsp::SSL_DISPLAY_CERTS;
+        }
+        elsif ($build_mode >= $axtlsp::SSL_BUILD_SERVER_ONLY)
+        {
+            if ($ARGV[$i] eq "-cert")
+            {
+                print_server_options($build_mode, $ARGV[$i]) 
+                                    if $i >= $#ARGV || $#cert >= $cert_size-1;
+
+                push @cert,  $ARGV[++$i];
+            }
+            elsif ($ARGV[$i] eq "-key")
+            {
+                print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+                $private_key_file = $ARGV[++$i];
+                $options |= $axtlsp::SSL_NO_DEFAULT_KEY;
+            }
+            elsif ($ARGV[$i] eq "-pass")
+            {
+                print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+                $password = $ARGV[++$i];
+            }
+            elsif ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_VERIFICATION)
+            {
+                if ($ARGV[$i] eq "-verify")
+                {
+                    $options |= $axtlsp::SSL_CLIENT_AUTHENTICATION;
+                }
+                elsif ($ARGV[$i] eq "-CAfile")
+                {
+                    print_server_options($build_mode, $ARGV[$i])  
+                                if $i >= $#ARGV || $#ca_cert >= $ca_cert_size-1;
+                    push @ca_cert, $ARGV[++$i];
+                }
+                elsif ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE)
+                {
+                    if ($ARGV[$i] eq "-debug")
+                    {
+                        $options |= $axtlsp::SSL_DISPLAY_BYTES;
+                    }
+                    elsif ($ARGV[$i] eq "-state")
+                    {
+                        $options |= $axtlsp::SSL_DISPLAY_STATES;
+                    }
+                    elsif ($ARGV[$i] eq "-show-rsa")
+                    {
+                        $options |= $axtlsp::SSL_DISPLAY_RSA;
+                    }
+                    else
+                    {
+                        print_server_options($build_mode, $ARGV[$i]);
+                    }
+                }
+                else
+                {
+                    print_server_options($build_mode, $ARGV[$i]);
+                }
+            }
+            else 
+            {
+                print_server_options($build_mode, $ARGV[$i]);
+            }
+        }
+        else 
+        {
+            print_server_options($build_mode, $ARGV[$i]);
+        }
+
+        $i++;
+    }
+
+    # Create socket for incoming connections
+    my $server_sock = IO::Socket::INET->new(Proto => 'tcp',
+                              LocalPort => $port,
+                              Listen => 1,
+                              Reuse => 1) or die $!;
+
+    ###########################################################################
+    # This is where the interesting stuff happens. Up until now we've
+    # just been setting up sockets etc. Now we do the SSL handshake.
+    ###########################################################################
+    my $ssl_ctx = axtlsp::ssl_ctx_new($options, $axtlsp::SSL_DEFAULT_SVR_SESS);
+    die "Error: Server context is invalid" if not defined $ssl_ctx;
+
+    if (defined $private_key_file)
+    {
+        my $obj_type = $axtlsp::SSL_OBJ_RSA_KEY;
+
+        $obj_type = $axtlsp::SSL_OBJ_PKCS8 if $private_key_file =~ /.p8$/;
+        $obj_type = $axtlsp::SSL_OBJ_PKCS12 if $private_key_file =~ /.p12$/;
+
+        die "Private key '$private_key_file' is undefined." if 
+                axtlsp::ssl_obj_load($ssl_ctx, $obj_type,
+                        $private_key_file, $password);
+    }
+
+    foreach (@cert)
+    {
+        die "Certificate '$_' is undefined." 
+            if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CERT, 
+                    $_, undef) != $axtlsp::SSL_OK;
+    }
+
+    foreach (@ca_cert)
+    {
+        die "Certificate '$_' is undefined." 
+            if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CACERT, 
+                    $_, undef) != $axtlsp::SSL_OK;
+    }
+
+    for (;;)
+    {
+        printf("ACCEPT\n") if not $quiet;
+        my $client_sock = $server_sock->accept;
+        my $native_sock = get_native_sock($client_sock->fileno);
+
+        # This doesn't work in Win32 - need to get file descriptor from socket.
+        my $ssl = axtlsp::ssl_server_new($ssl_ctx, $native_sock);
+
+        # do the actual SSL handshake
+        my $res;
+        my $buf;
+        my $connected = 0;
+
+        while (1)
+        {
+            ($res, $buf) = axtlsp::ssl_read($ssl, undef);
+            last if $res < $axtlsp::SSL_OK;
+
+            if ($res == $axtlsp::SSL_OK) # connection established and ok
+            {
+                if (axtlsp::ssl_handshake_status($ssl) == $axtlsp::SSL_OK)
+                {
+                    if (!$quiet && !$connected)
+                    {
+                        display_session_id($ssl);
+                        display_cipher($ssl);
+                    }
+
+                    $connected = 1;
+                }
+            }
+
+            if ($res > $axtlsp::SSL_OK)
+            {
+                printf($$buf);
+            }
+            elsif ($res < $axtlsp::SSL_OK)
+            {
+                axtlsp::ssl_display_error($res) if not $quiet;
+                last;
+            } 
+        }
+
+        # client was disconnected or the handshake failed.
+        printf("CONNECTION CLOSED\n") if not $quiet;
+        axtlsp::ssl_free($ssl);
+        $client_sock->close;
+    }
+
+    axtlsp::ssl_ctx_free($ssl_ctx);
+}
+
+#
+# Implement the SSL client logic.
+#
+sub do_client
+{
+    my ($build_mode) = @_;
+    my $i = 1;
+    my $port = 4433;
+    my $options = $axtlsp::SSL_SERVER_VERIFY_LATER|$axtlsp::SSL_DISPLAY_CERTS;
+    my $private_key_file = undef;
+    my $reconnect = 0;
+    my $quiet = 0;
+    my $password = undef;
+    my @session_id;
+    my $host = "127.0.0.1";
+    my @cert;
+    my @ca_cert;
+    my $cert_size = axtlsp::ssl_get_config(
+            $axtlsp::SSL_MAX_CERT_CFG_OFFSET);
+    my $ca_cert_size = axtlsp::ssl_get_config(
+            $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET);
+
+    while ($i <= $#ARGV)
+    {
+        if ($ARGV[$i] eq "-connect")
+        {
+            print_client_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+            ($host, $port) = split(':', $ARGV[++$i]);
+        }
+        elsif ($ARGV[$i] eq "-cert")
+        {
+            print_client_options($build_mode, $ARGV[$i]) 
+                if $i >= $#ARGV || $#cert >= $cert_size-1;
+
+            push @cert, $ARGV[++$i];
+        }
+        elsif ($ARGV[$i] eq "-key")
+        {
+            print_client_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+            $private_key_file = $ARGV[++$i];
+            $options |= $axtlsp::SSL_NO_DEFAULT_KEY;
+        }
+        elsif ($ARGV[$i] eq "-CAfile")
+        {
+            print_client_options($build_mode, $ARGV[$i]) 
+                if $i >= $#ARGV || $#ca_cert >= $ca_cert_size-1;
+
+            push @ca_cert, $ARGV[++$i];
+        }
+        elsif ($ARGV[$i] eq "-verify")
+        {
+            $options &= ~$axtlsp::SSL_SERVER_VERIFY_LATER;
+        }
+        elsif ($ARGV[$i] eq "-reconnect")
+        {
+            $reconnect = 4;
+        }
+        elsif ($ARGV[$i] eq "-quiet")
+        {
+            $quiet = 1;
+            $options &= ~$axtlsp::SSL_DISPLAY_CERTS;
+        }
+        elsif ($ARGV[$i] eq "-pass")
+        {
+            print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV;
+            $password = $ARGV[++$i];
+        }
+        elsif ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE)
+        {
+            if ($ARGV[$i] eq "-debug")
+            {
+                $options |= $axtlsp::SSL_DISPLAY_BYTES;
+            }
+            elsif ($ARGV[$i] eq "-state")
+            {
+                $options |= $axtlsp::SSL_DISPLAY_STATES;
+            }
+            elsif ($ARGV[$i] eq "-show-rsa")
+            {
+                $options |= $axtlsp::SSL_DISPLAY_RSA;
+            }
+            else    # don't know what this is
+            {
+                print_client_options($build_mode, $ARGV[$i]);
+            }
+        }
+        else    # don't know what this is
+        {
+            print_client_options($build_mode, $ARGV[$i]);
+        }
+
+        $i++;
+    }
+
+    my $client_sock = new IO::Socket::INET (
+                        PeerAddr => $host, PeerPort => $port, Proto => 'tcp')
+                    || die ("no socket: $!");
+    my $ssl;
+    my $res;
+    my $native_sock = get_native_sock($client_sock->fileno);
+
+    printf("CONNECTED\n") if not $quiet;
+
+    ###########################################################################
+    # This is where the interesting stuff happens. Up until now we've
+    # just been setting up sockets etc. Now we do the SSL handshake.
+    ###########################################################################
+    my $ssl_ctx = axtlsp::ssl_ctx_new($options, $axtlsp::SSL_DEFAULT_CLNT_SESS);
+    die "Error: Client context is invalid" if not defined $ssl_ctx;
+
+    if (defined $private_key_file)
+    {
+        my $obj_type = $axtlsp::SSL_OBJ_RSA_KEY;
+
+        $obj_type = $axtlsp::SSL_OBJ_PKCS8 if $private_key_file =~ /.p8$/;
+        $obj_type = $axtlsp::SSL_OBJ_PKCS12 if $private_key_file =~ /.p12$/;
+
+        die "Private key '$private_key_file' is undefined." if 
+                axtlsp::ssl_obj_load($ssl_ctx, $obj_type,
+                        $private_key_file, $password);
+    }
+
+    foreach (@cert)
+    {
+        die "Certificate '$_' is undefined." 
+            if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CERT, 
+                    $_, undef) != $axtlsp::SSL_OK;
+    }
+
+    foreach (@ca_cert)
+    {
+        die "Certificate '$_' is undefined." 
+            if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CACERT, 
+                    $_, undef) != $axtlsp::SSL_OK;
+    }
+
+    # Try session resumption?
+    if ($reconnect)
+    {
+        my $session_id = undef;
+        my $sess_id_size = 0;
+
+        while ($reconnect--)
+        {
+            $ssl = axtlsp::ssl_client_new($ssl_ctx, $native_sock, 
+                            $session_id, $sess_id_size);
+
+            $res = axtlsp::ssl_handshake_status($ssl);
+            if ($res != $axtlsp::SSL_OK)
+            {
+                axtlsp::ssl_display_error($res) if !$quiet;
+                axtlsp::ssl_free($ssl);
+                exit 1;
+            }
+
+            display_session_id($ssl);
+            $session_id = axtlsp::ssl_get_session_id($ssl);
+
+            if ($reconnect)
+            {
+                axtlsp::ssl_free($ssl);
+                $client_sock->close;
+                $client_sock = new IO::Socket::INET (
+                        PeerAddr => $host, PeerPort => $port, Proto => 'tcp')
+                    || die ("no socket: $!");
+
+            }
+        }
+    }
+    else
+    {
+        $ssl = axtlsp::ssl_client_new($ssl_ctx, $native_sock, undef, 0);
+    }
+
+    # check the return status
+    $res = axtlsp::ssl_handshake_status($ssl);
+    if ($res != $axtlsp::SSL_OK)
+    {
+        axtlsp::ssl_display_error($res) if not $quiet;
+        exit 1;
+    }
+
+    if (!$quiet)
+    {
+        my $common_name = axtlsp::ssl_get_cert_dn($ssl, 
+                    $axtlsp::SSL_X509_CERT_COMMON_NAME);
+
+        printf("Common Name:\t\t\t%s\n", $common_name) if defined $common_name;
+        display_session_id($ssl);
+        display_cipher($ssl);
+    }
+
+    while (<STDIN>)
+    {
+        my $cstring = pack("a*x", $_);   # add null terminator
+        $res = axtlsp::ssl_write($ssl, \$cstring, length($cstring));
+        if ($res < $axtlsp::SSL_OK)
+        {
+            axtlsp::ssl_display_error($res) if not $quiet;
+            last;
+        }
+    }
+
+    axtlsp::ssl_ctx_free($ssl_ctx);
+    $client_sock->close;
+}
+
+#
+# We've had some sort of command-line error. Print out the basic options.
+#
+sub print_options
+{
+    my ($option) = @_;
+    printf("axssl: Error: '%s' is an invalid command.\n", $option);
+    printf("usage: axssl [s_server|s_client|version] [args ...]\n");
+    exit 1;
+}
+
+#
+# We've had some sort of command-line error. Print out the server options.
+#
+sub print_server_options
+{
+    my ($build_mode, $option) = @_;
+    my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET);
+    my $ca_cert_size = axtlsp::ssl_get_config(
+            $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET);
+
+    printf("unknown option %s\n", $option);
+    printf("usage: s_server [args ...]\n");
+    printf(" -accept arg\t- port to accept on (default is 4433)\n");
+    printf(" -quiet\t\t- No server output\n");
+
+    if ($build_mode >= $axtlsp::SSL_BUILD_SERVER_ONLY)
+    {
+        printf(" -cert arg\t- certificate file to add (in addition to default)".
+                                        " to chain -\n".
+          "\t\t  Can repeat up to %d times\n", $cert_size);
+        printf(" -key arg\t- Private key file to use - default DER format\n");
+        printf(" -pass\t\t- private key file pass phrase source\n");
+    }
+
+    if ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_VERIFICATION)
+    {
+        printf(" -verify\t- turn on peer certificate verification\n");
+        printf(" -CAfile arg\t- Certificate authority - default DER format\n");
+        printf("\t\t  Can repeat up to %d times\n", $ca_cert_size);
+    }
+
+    if ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE)
+    {
+        printf(" -debug\t\t- Print more output\n");
+        printf(" -state\t\t- Show state messages\n");
+        printf(" -show-rsa\t- Show RSA state\n");
+    }
+
+    exit 1;
+}
+
+#
+# We've had some sort of command-line error. Print out the client options.
+#
+sub print_client_options
+{
+    my ($build_mode, $option) = @_;
+    my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET);
+    my $ca_cert_size = axtlsp::ssl_get_config(
+            $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET);
+
+    printf("unknown option %s\n", $option);
+
+    if ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_CLIENT)
+    {
+        printf("usage: s_client [args ...]\n");
+        printf(" -connect host:port - who to connect to (default ".
+                "is localhost:4433)\n");
+        printf(" -verify\t- turn on peer certificate verification\n");
+        printf(" -cert arg\t- certificate file to use - default DER format\n");
+        printf(" -key arg\t- Private key file to use - default DER format\n");
+        printf("\t\t  Can repeat up to %d times\n", $cert_size);
+        printf(" -CAfile arg\t- Certificate authority - default DER format\n");
+        printf("\t\t  Can repeat up to %d times\n", $ca_cert_size);
+        printf(" -quiet\t\t- No client output\n");
+        printf(" -pass\t\t- private key file pass phrase source\n");
+        printf(" -reconnect\t- Drop and re-make the connection ".
+                "with the same Session-ID\n");
+
+        if ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE)
+        {
+            printf(" -debug\t\t- Print more output\n");
+            printf(" -state\t\t- Show state messages\n");
+            printf(" -show-rsa\t- Show RSA state\n");
+        }
+    }
+    else
+    {
+        printf("Change configuration to allow this feature\n");
+    }
+
+    exit 1;
+}
+
+#
+# Display what cipher we are using 
+#
+sub display_cipher
+{
+    my ($ssl) = @_;
+    printf("CIPHER is ");
+    my $cipher_id = axtlsp::ssl_get_cipher_id($ssl);
+
+    if ($cipher_id == $axtlsp::SSL_AES128_SHA)
+    {
+        printf("AES128-SHA");
+    }
+    elsif ($cipher_id == $axtlsp::SSL_AES256_SHA)
+    {
+        printf("AES256-SHA");
+    }
+    elsif ($axtlsp::SSL_RC4_128_SHA)
+    {
+        printf("RC4-SHA");
+    }
+    elsif ($axtlsp::SSL_RC4_128_MD5)
+    {
+        printf("RC4-MD5");
+    }
+    else 
+    {
+        printf("Unknown - %d", $cipher_id);
+    }
+
+    printf("\n");
+}
+
+#
+# Display what session id we have.
+#
+sub display_session_id
+{    
+    my ($ssl) = @_;
+    my $session_id = axtlsp::ssl_get_session_id($ssl);
+    if (length($$session_id) > 0)
+    {
+        printf("-----BEGIN SSL SESSION PARAMETERS-----\n");
+        printf(unpack("H*", $$session_id));
+        printf("\n-----END SSL SESSION PARAMETERS-----\n");
+    }
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile
new file mode 100644 (file)
index 0000000..0984d4e
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+include ../../config/.config
+include ../../config/makefile.conf
+include ../../config/makefile.dotnet.conf
+
+# only build on Win32 platforms
+ifdef GO_DOT_NET
+all : sample
+TARGET=../../$(STAGE)/axssl.vbnet.exe
+sample : $(TARGET)
+
+$(TARGET): ../../bindings/vbnet/axTLSvb.vb ../../bindings/vbnet/axInterface.vb axssl.vb
+       vbc.exe /r:"`cygpath -w "$(CONFIG_DOT_NET_FRAMEWORK_BASE)/System.dll"`" /nologo /t:exe /out:"`cygpath -w $@`" $(foreach file, $^, "`cygpath -w $(file)`")
+
+endif   # ARCH
+
+clean::
+       -@rm -f $(TARGET)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb b/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb
new file mode 100644 (file)
index 0000000..1b423c8
--- /dev/null
@@ -0,0 +1,702 @@
+'
+' Copyright (c) 2007, Cameron Rich
+'
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'
+' * Redistributions of source code must retain the above copyright notice,
+'   this list of conditions and the following disclaimer.
+' * Redistributions in binary form must reproduce the above copyright
+'   notice, this list of conditions and the following disclaimer in the
+'   documentation and/or other materials provided with the distribution.
+' * Neither the name of the axTLS project nor the names of its
+'   contributors may be used to endorse or promote products derived
+'   from this software without specific prior written permission.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+' "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+' LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+' A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+' TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+' DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+' OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+' NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+
+'
+' Demonstrate the use of the axTLS library in VB.NET with a set of 
+' command-line parameters similar to openssl. In fact, openssl clients 
+' should be able to communicate with axTLS servers and visa-versa.
+'
+' This code has various bits enabled depending on the configuration. To enable
+' the most interesting version, compile with the 'full mode' enabled.
+'
+' To see what options you have, run the following:
+' > axssl.vbnet.exe s_server -?
+' > axssl.vbnet.exe s_client -?
+'
+' The axtls shared library must be in the same directory or be found 
+' by the OS.
+'
+
+Imports System
+Imports System.Net
+Imports System.Net.Sockets
+Imports Microsoft.VisualBasic
+Imports axTLSvb
+
+Public Class axssl
+    ' 
+    ' do_server()
+    '
+    Public Sub do_server(ByVal build_mode As Integer, _
+                                        ByVal args() As String)
+        Dim i As Integer = 1
+        Dim port As Integer = 4433
+        Dim options As Integer = axtls.SSL_DISPLAY_CERTS
+        Dim quiet As Boolean = False
+        Dim password As String = Nothing
+        Dim private_key_file As String = Nothing
+
+        ' organise the cert/ca_cert lists 
+        Dim cert_size As Integer = SSLUtil.MaxCerts()
+        Dim ca_cert_size As Integer = SSLUtil.MaxCACerts()
+        Dim cert(cert_size) As String
+        Dim ca_cert(ca_cert_size) As String
+        Dim cert_index As Integer = 0
+        Dim ca_cert_index As Integer = 0
+
+        While i < args.Length
+            If args(i) = "-accept" Then
+                If i >= args.Length-1
+                    print_server_options(build_mode, args(i))
+                End If
+
+                i += 1
+                port = Int32.Parse(args(i))
+            ElseIf args(i) = "-quiet"
+                quiet = True
+                options = options And Not axtls.SSL_DISPLAY_CERTS
+            ElseIf build_mode >= axtls.SSL_BUILD_SERVER_ONLY
+                If args(i) = "-cert"
+                    If i >= args.Length-1 Or cert_index >= cert_size
+                        print_server_options(build_mode, args(i))
+                    End If
+
+                    i += 1
+                    cert(cert_index) = args(i)
+                    cert_index += 1
+                ElseIf args(i) = "-key"
+                    If i >= args.Length-1
+                        print_server_options(build_mode, args(i))
+                    End If
+
+                    i += 1
+                    private_key_file = args(i)
+                    options = options Or axtls.SSL_NO_DEFAULT_KEY
+                ElseIf args(i) = "-pass"
+                    If i >= args.Length-1
+                        print_server_options(build_mode, args(i))
+                    End If
+
+                    i += 1
+                    password = args(i)
+                ElseIf build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION
+                    If args(i) = "-verify" Then
+                        options = options Or axtls.SSL_CLIENT_AUTHENTICATION
+                    ElseIf args(i) = "-CAfile"
+                        If i >= args.Length-1 Or _
+                                    ca_cert_index >= ca_cert_size Then
+                            print_server_options(build_mode, args(i))
+                        End If
+
+                        i += 1
+                        ca_cert(ca_cert_index) = args(i)
+                        ca_cert_index += 1
+                    ElseIf build_mode = axtls.SSL_BUILD_FULL_MODE
+                        If args(i) = "-debug" Then
+                            options = options Or axtls.SSL_DISPLAY_BYTES
+                        ElseIf args(i) = "-state"
+                            options = options Or axtls.SSL_DISPLAY_STATES
+                        ElseIf args(i) = "-show-rsa"
+                            options = options Or axtls.SSL_DISPLAY_RSA
+                        Else
+                            print_server_options(build_mode, args(i))
+                        End If
+                    Else
+                        print_server_options(build_mode, args(i))
+                    End If
+                Else
+                    print_server_options(build_mode, args(i))
+                End If
+            End If
+
+            i += 1
+        End While
+
+        ' Create socket for incoming connections
+        Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, port)
+        Dim server_sock As TcpListener = New TcpListener(ep)
+        server_sock.Start()      
+
+        '*********************************************************************
+        ' This is where the interesting stuff happens. Up until now we've
+        ' just been setting up sockets etc. Now we do the SSL handshake.
+        '*********************************************************************/
+        Dim ssl_ctx As SSLServer = New SSLServer(options, _
+                axtls.SSL_DEFAULT_SVR_SESS)
+
+        If ssl_ctx Is Nothing Then
+            Console.Error.WriteLine("Error: Server context is invalid")
+            Environment.Exit(1)
+        End If
+
+        If private_key_file <> Nothing Then
+            Dim obj_type As Integer = axtls.SSL_OBJ_RSA_KEY
+
+            If private_key_file.EndsWith(".p8") Then
+                obj_type = axtls.SSL_OBJ_PKCS8
+            Else If (private_key_file.EndsWith(".p12"))
+                obj_type = axtls.SSL_OBJ_PKCS12
+            End If
+
+            If ssl_ctx.ObjLoad(obj_type, private_key_file, _
+                                            password) <> axtls.SSL_OK Then
+                Console.Error.WriteLine("Error: Private key '" & _
+                        private_key_file & "' is undefined.")
+                Environment.Exit(1)
+            End If
+        End If
+
+        For i = 0 To cert_index-1
+            If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, _
+                            cert(i), Nothing) <> axtls.SSL_OK Then
+                Console.WriteLine("Certificate '" & cert(i) & _
+                        "' is undefined.")
+                Environment.Exit(1)
+            End If
+        Next
+
+        For i = 0 To ca_cert_index-1
+            If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, _
+                            ca_cert(i), Nothing) <> axtls.SSL_OK Then
+                Console.WriteLine("Certificate '" & ca_cert(i) & _
+                        "' is undefined.")
+                Environment.Exit(1)
+            End If
+        Next
+
+        Dim buf As Byte() = Nothing
+        Dim res As Integer
+        Dim ssl As SSL
+
+        While 1
+            If Not quiet Then
+                Console.WriteLine("ACCEPT")
+            End If
+
+            Dim client_sock As Socket = server_sock.AcceptSocket()
+
+            ssl = ssl_ctx.Connect(client_sock)
+
+            ' do the actual SSL handshake 
+            While 1
+                res = ssl_ctx.Read(ssl, buf)
+                If  res <> axtls.SSL_OK Then
+                    Exit While
+                End If
+
+                ' check when the connection has been established 
+                If ssl.HandshakeStatus() = axtls.SSL_OK
+                    Exit While
+                End If
+
+                ' could do something else here 
+            End While
+
+            If res = axtls.SSL_OK Then  ' connection established and ok
+                If Not quiet
+                    display_session_id(ssl)
+                    display_cipher(ssl)
+                End If
+
+                ' now read (and display) whatever the client sends us
+                While 1
+                    ' keep reading until we get something interesting 
+                    While 1
+                        res = ssl_ctx.Read(ssl, buf)
+                        If res <> axtls.SSL_OK Then
+                            Exit While
+                        End If
+
+                        ' could do something else here
+                    End While
+
+                    If res < axtls.SSL_OK
+                        If Not quiet
+                            Console.WriteLine("CONNECTION CLOSED")
+                        End If
+
+                        Exit While
+                    End If
+
+                    ' convert to String 
+                    Dim str(res) As Char
+                    For i = 0 To res-1
+                        str(i) = Chr(buf(i))
+                    Next
+
+                    Console.Write(str)
+                End While
+            ElseIf Not quiet
+                SSLUtil.DisplayError(res)
+            End If
+
+            ' client was disconnected or the handshake failed. */
+            ssl.Dispose()
+            client_sock.Close()
+        End While
+
+        ssl_ctx.Dispose()
+    End Sub
+
+    ' 
+    ' do_client()
+    '
+    Public Sub do_client(ByVal build_mode As Integer, _
+                                    ByVal args() As String)
+
+        If build_mode < axtls.SSL_BUILD_ENABLE_CLIENT Then
+            print_client_options(build_mode, args(1))
+        End If
+
+        Dim i As Integer = 1
+        Dim res As Integer
+        Dim port As Integer = 4433
+        Dim quiet As Boolean = False
+        Dim password As String = Nothing
+        Dim reconnect As Integer = 0
+        Dim private_key_file As String = Nothing
+        Dim hostname As String = "127.0.0.1"
+
+        ' organise the cert/ca_cert lists
+        Dim ssl As SSL = Nothing
+        Dim cert_size As Integer = SSLUtil.MaxCerts()
+        Dim ca_cert_size As Integer = SSLUtil.MaxCACerts()
+        Dim cert(cert_size) As String
+        Dim ca_cert(ca_cert_size) As String
+        Dim cert_index As Integer = 0
+        Dim ca_cert_index As Integer = 0
+
+        Dim options As Integer = _
+                    axtls.SSL_SERVER_VERIFY_LATER Or axtls.SSL_DISPLAY_CERTS
+        Dim session_id As Byte() = Nothing
+
+        While i < args.Length
+            If args(i) = "-connect" Then
+                Dim host_port As String
+
+                If i >= args.Length-1
+                    print_client_options(build_mode, args(i))
+                End If
+
+                i += 1
+                host_port = args(i)
+
+                Dim index_colon As Integer = host_port.IndexOf(":"C)
+                If index_colon < 0 Then 
+                    print_client_options(build_mode, args(i))
+                End If
+
+                hostname = New String(host_port.ToCharArray(), _
+                        0, index_colon)
+                port = Int32.Parse(New String(host_port.ToCharArray(), _
+                            index_colon+1, host_port.Length-index_colon-1))
+            ElseIf args(i) = "-cert"
+                If i >= args.Length-1 Or cert_index >= cert_size Then
+                    print_client_options(build_mode, args(i))
+                End If
+
+                i += 1
+                cert(cert_index) = args(i)
+                cert_index += 1
+            ElseIf args(i) = "-key"
+                If i >= args.Length-1
+                    print_client_options(build_mode, args(i))
+                End If
+
+                i += 1
+                private_key_file = args(i)
+                options = options Or axtls.SSL_NO_DEFAULT_KEY
+            ElseIf args(i) = "-CAfile"
+                If i >= args.Length-1 Or ca_cert_index >= ca_cert_size
+                    print_client_options(build_mode, args(i))
+                End If
+
+                i += 1
+                ca_cert(ca_cert_index) = args(i)
+                ca_cert_index += 1
+            ElseIf args(i) = "-verify"
+                options = options And Not axtls.SSL_SERVER_VERIFY_LATER
+            ElseIf args(i) = "-reconnect"
+                reconnect = 4
+            ElseIf args(i) = "-quiet"
+                quiet = True
+                options = options And  Not axtls.SSL_DISPLAY_CERTS
+            ElseIf args(i) = "-pass"
+                If i >= args.Length-1
+                    print_client_options(build_mode, args(i))
+                End If
+
+                i += 1
+                password = args(i)
+            ElseIf build_mode = axtls.SSL_BUILD_FULL_MODE
+                If args(i) = "-debug" Then
+                    options = options Or axtls.SSL_DISPLAY_BYTES
+                ElseIf args(i) = "-state"
+                    options = options Or axtls.SSL_DISPLAY_STATES
+                ElseIf args(i) = "-show-rsa"
+                    options = options Or axtls.SSL_DISPLAY_RSA
+                Else
+                    print_client_options(build_mode, args(i))
+                End If
+            Else    ' don't know what this is 
+                print_client_options(build_mode, args(i))
+            End If
+
+            i += 1
+        End While
+
+        'Dim hostInfo As IPHostEntry = Dns.Resolve(hostname)
+        Dim hostInfo As IPHostEntry = Dns.GetHostEntry(hostname)
+        Dim  addresses As IPAddress() = hostInfo.AddressList
+        Dim ep As IPEndPoint = New IPEndPoint(addresses(0), port) 
+        Dim client_sock As Socket = New Socket(AddressFamily.InterNetwork, _
+                SocketType.Stream, ProtocolType.Tcp)
+        client_sock.Connect(ep)
+
+        If Not client_sock.Connected Then
+            Console.WriteLine("could not connect")
+            Environment.Exit(1)
+        End If
+
+        If Not quiet Then
+            Console.WriteLine("CONNECTED")
+        End If
+
+        '*********************************************************************
+        ' This is where the interesting stuff happens. Up until now we've
+        ' just been setting up sockets etc. Now we do the SSL handshake.
+        '*********************************************************************/
+        Dim ssl_ctx As SSLClient = New SSLClient(options, _
+                axtls.SSL_DEFAULT_CLNT_SESS)
+
+        If ssl_ctx Is Nothing Then
+            Console.Error.WriteLine("Error: Client context is invalid")
+            Environment.Exit(1)
+        End If
+
+        If private_key_file <> Nothing Then
+            Dim obj_type As Integer = axtls.SSL_OBJ_RSA_KEY
+
+            If private_key_file.EndsWith(".p8") Then
+                obj_type = axtls.SSL_OBJ_PKCS8
+            Else If (private_key_file.EndsWith(".p12"))
+                obj_type = axtls.SSL_OBJ_PKCS12
+            End If
+
+            If ssl_ctx.ObjLoad(obj_type, private_key_file, _
+                                            password) <> axtls.SSL_OK Then
+                Console.Error.WriteLine("Error: Private key '" & _
+                        private_key_file & "' is undefined.")
+                Environment.Exit(1)
+            End If
+        End If
+
+        For i = 0 To cert_index-1
+            If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, _
+                            cert(i), Nothing) <> axtls.SSL_OK Then
+                Console.WriteLine("Certificate '" & cert(i) & _
+                        "' is undefined.")
+                Environment.Exit(1)
+            End If
+        Next
+
+        For i = 0 To ca_cert_index-1
+            If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, _
+                            ca_cert(i), Nothing) <> axtls.SSL_OK Then
+                Console.WriteLine("Certificate '" & ca_cert(i) & _
+                        "' is undefined.")
+                Environment.Exit(1)
+            End If
+        Next
+
+        ' Try session resumption?
+        If reconnect > 0 Then
+            While reconnect > 0
+                reconnect -= 1
+                ssl = ssl_ctx.Connect(client_sock, session_id)
+
+                res = ssl.HandshakeStatus()
+                If res <> axtls.SSL_OK Then
+                    If Not quiet Then
+                        SSLUtil.DisplayError(res)
+                    End If
+
+                    ssl.Dispose()
+                    Environment.Exit(1)
+                End If
+
+                display_session_id(ssl)
+                session_id = ssl.GetSessionId()
+
+                If reconnect > 0 Then
+                    ssl.Dispose()
+                    client_sock.Close()
+                    
+                    ' and reconnect
+                    client_sock = New Socket(AddressFamily.InterNetwork, _
+                        SocketType.Stream, ProtocolType.Tcp)
+                    client_sock.Connect(ep)
+                End If
+            End While
+        Else
+            ssl = ssl_ctx.Connect(client_sock, Nothing)
+        End If
+
+        ' check the return status 
+        res = ssl.HandshakeStatus()
+        If res <> axtls.SSL_OK Then
+            If Not quiet Then
+                SSLUtil.DisplayError(res)
+            End If
+
+            Environment.Exit(1)
+        End If
+
+        If Not quiet Then
+            Dim common_name As String = _
+                ssl.GetCertificateDN(axtls.SSL_X509_CERT_COMMON_NAME)
+
+            If common_name <> Nothing
+                Console.WriteLine("Common Name:" & _
+                        ControlChars.Tab & ControlChars.Tab & _
+                        ControlChars.Tab & common_name)
+            End If
+
+            display_session_id(ssl)
+            display_cipher(ssl)
+        End If
+
+        While (1)
+            Dim user_input As String = Console.ReadLine()
+
+            If user_input = Nothing Then
+                Exit While
+            End If
+
+            Dim buf(user_input.Length+1) As Byte
+            buf(buf.Length-2) = Asc(ControlChars.Lf) ' add the carriage return
+            buf(buf.Length-1) = 0                    ' null terminate 
+
+            For i = 0 To user_input.Length-1
+                buf(i) = Asc(user_input.Chars(i))
+            Next
+
+            res = ssl_ctx.Write(ssl, buf, buf.Length)
+            If res < axtls.SSL_OK Then
+                If Not quiet Then
+                    SSLUtil.DisplayError(res)
+                End If
+
+                Exit While
+            End If
+        End While
+
+        ssl_ctx.Dispose()
+    End Sub
+
+    '
+    ' Display what cipher we are using
+    '
+    Private Sub display_cipher(ByVal ssl As SSL)
+        Console.Write("CIPHER is ")
+
+        Select ssl.GetCipherId()
+            Case axtls.SSL_AES128_SHA
+                Console.WriteLine("AES128-SHA")
+
+            Case axtls.SSL_AES256_SHA
+                Console.WriteLine("AES256-SHA")
+
+            Case axtls.SSL_RC4_128_SHA
+                Console.WriteLine("RC4-SHA")
+
+            Case axtls.SSL_RC4_128_MD5
+                Console.WriteLine("RC4-MD5")
+
+            Case Else
+                Console.WriteLine("Unknown - " & ssl.GetCipherId())
+        End Select
+    End Sub
+
+    '
+    ' Display what session id we have.
+    '
+    Private Sub display_session_id(ByVal ssl As SSL)
+        Dim session_id As Byte() = ssl.GetSessionId()
+
+        If session_id.Length > 0 Then
+            Console.WriteLine("-----BEGIN SSL SESSION PARAMETERS-----")
+            Dim b As Byte
+            For Each b In session_id
+                Console.Write("{0:x02}", b)
+            Next
+
+            Console.WriteLine()
+            Console.WriteLine("-----END SSL SESSION PARAMETERS-----")
+        End If
+    End Sub
+
+    ' 
+    ' We've had some sort of command-line error. Print out the basic options.
+    '
+    Public Sub print_options(ByVal options As String)
+        Console.WriteLine("axssl: Error: '" & options & _
+                "' is an invalid command.")
+        Console.WriteLine("usage: axssl.vbnet [s_server|s_client|" & _
+                "version] [args ...]")
+        Environment.Exit(1)
+    End Sub
+
+    ' 
+    ' We've had some sort of command-line error. Print out the server options.
+    '
+    Private Sub print_server_options(ByVal build_mode As Integer, _
+                                    ByVal options As String)
+        Dim cert_size As Integer = SSLUtil.MaxCerts()
+        Dim ca_cert_size As Integer = SSLUtil.MaxCACerts()
+
+        Console.WriteLine("unknown option " & options)
+        Console.WriteLine("usage: s_server [args ...]")
+        Console.WriteLine(" -accept arg" & ControlChars.Tab & _
+                "- port to accept on (default is 4433)")
+        Console.WriteLine(" -quiet" & ControlChars.Tab & ControlChars.Tab & _
+                "- No server output")
+        If build_mode >= axtls.SSL_BUILD_SERVER_ONLY 
+            Console.WriteLine(" -cert arg" & ControlChars.Tab & _
+               "- certificate file to add (in addition to default) to chain -")
+            Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _
+                    "  Can repeat up to " & cert_size & " times")
+            Console.WriteLine(" -key arg" & ControlChars.Tab & _
+                        "- Private key file to use")
+            Console.WriteLine(" -pass" & ControlChars.Tab & ControlChars.Tab & _
+                    "- private key file pass phrase source")
+        End If
+
+        If build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION
+            Console.WriteLine(" -verify" & ControlChars.Tab & _
+                    "- turn on peer certificate verification")
+            Console.WriteLine(" -CAfile arg" & ControlChars.Tab & _
+                    "- Certificate authority")
+            Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _
+                    "  Can repeat up to " & ca_cert_size & " times")
+        End If
+
+        If build_mode = axtls.SSL_BUILD_FULL_MODE
+            Console.WriteLine(" -debug" & _
+                    ControlChars.Tab & ControlChars.Tab & _
+                    "- Print more output")
+            Console.WriteLine(" -state" & _
+                    ControlChars.Tab & ControlChars.Tab & _
+                    "- Show state messages")
+            Console.WriteLine(" -show-rsa" & _
+                    ControlChars.Tab & "- Show RSA state")
+        End If
+
+        Environment.Exit(1)
+    End Sub
+
+    '
+    ' We've had some sort of command-line error. Print out the client options.
+    '
+    Private Sub print_client_options(ByVal build_mode As Integer, _
+                                                ByVal options As String)
+        Dim cert_size As Integer = SSLUtil.MaxCerts()
+        Dim ca_cert_size As Integer = SSLUtil.MaxCACerts()
+
+        Console.WriteLine("unknown option " & options)
+
+        If build_mode >= axtls.SSL_BUILD_ENABLE_CLIENT Then
+            Console.WriteLine("usage: s_client [args ...]")
+            Console.WriteLine(" -connect host:port - who to connect to " & _
+                    "(default is localhost:4433)")
+            Console.WriteLine(" -verify" & ControlChars.Tab & _
+                    "- turn on peer certificate verification")
+            Console.WriteLine(" -cert arg" & ControlChars.Tab & _
+                    "- certificate file to use")
+            Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _
+                    "  Can repeat up to " & cert_size & " times")
+            Console.WriteLine(" -key arg" & ControlChars.Tab & _
+                    "- Private key file to use")
+            Console.WriteLine(" -CAfile arg" & ControlChars.Tab & _
+                    "- Certificate authority")
+            Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _
+                    "  Can repeat up to " & ca_cert_size & " times")
+            Console.WriteLine(" -quiet" & _
+                    ControlChars.Tab & ControlChars.Tab & "- No client output")
+            Console.WriteLine(" -pass" & ControlChars.Tab & _
+                    ControlChars.Tab & _
+                    "- private key file pass phrase source")
+            Console.WriteLine(" -reconnect" & ControlChars.Tab & _
+                    "- Drop and re-make the " & _
+                    "connection with the same Session-ID")
+
+            If build_mode = axtls.SSL_BUILD_FULL_MODE Then
+                Console.WriteLine(" -debug" & _
+                        ControlChars.Tab & ControlChars.Tab & _
+                        "- Print more output")
+                Console.WriteLine(" -state" & _
+                        ControlChars.Tab & ControlChars.Tab & _
+                        "- Show state messages")
+                Console.WriteLine(" -show-rsa" & ControlChars.Tab & _
+                        "- Show RSA state")
+            End If
+        Else 
+            Console.WriteLine("Change configuration to allow this feature")
+        End If
+
+        Environment.Exit(1)
+    End Sub
+
+End Class
+
+Public Module MyMain
+    Function Main(ByVal args() As String) As Integer
+        Dim runner As axssl = New axssl()
+
+        If args.Length = 1 And args(0) = "version" Then
+           Console.WriteLine("axssl.vbnet " & SSLUtil.Version())
+            Environment.Exit(0)
+        End If
+
+        If args.Length < 1 
+            runner.print_options("")
+        ElseIf args(0) <> "s_server" And args(0) <> "s_client"
+            runner.print_options(args(0))
+        End If
+
+        Dim build_mode As Integer = SSLUtil.BuildMode()
+
+        If args(0) = "s_server" Then
+            runner.do_server(build_mode, args)
+        Else
+            runner.do_client(build_mode, args)
+        End If
+    End Function
+End Module
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in b/package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in
new file mode 100644 (file)
index 0000000..04c7438
--- /dev/null
@@ -0,0 +1,132 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+
+menu "BigInt Options"
+    depends on !CONFIG_SSL_SKELETON_MODE
+
+choice
+    prompt "Reduction Algorithm"
+    default CONFIG_BIGINT_BARRETT 
+
+config CONFIG_BIGINT_CLASSICAL
+    bool "Classical"
+    help
+        Classical uses standard division. It has no limitations and is
+        theoretically the slowest due to the divisions used. For this particular
+        implementation it is surprisingly quite fast.
+
+config CONFIG_BIGINT_MONTGOMERY
+    bool "Montgomery"
+    help
+        Montgomery uses simple addition and multiplication to achieve its
+        performance. In this implementation it is slower than classical, 
+        and it has the limitation that 0 <= x, y < m, and so is not used 
+        when CRT is active.
+
+        This option will not be normally selected.
+
+config CONFIG_BIGINT_BARRETT
+    bool "Barrett"
+    help
+        Barrett performs expensive precomputation before reduction and partial
+        multiplies for computational speed. It can't be used with some of the
+        calculations when CRT is used, and so defaults to classical when this
+        occurs.
+
+        It is about 40% faster than Classical/Montgomery with the expense of
+        about 2kB, and so this option is normally selected.
+
+endchoice
+
+config CONFIG_BIGINT_CRT
+    bool "Chinese Remainder Theorem (CRT)"
+    default y
+    help 
+        Allow the Chinese Remainder Theorem (CRT) to be used.
+
+        Uses a number of extra coefficients from the private key to improve the
+        performance of a decryption. This feature is one of the most 
+        significant performance improvements (it reduces a decryption time by 
+        over 3 times).
+
+        This option should be selected.
+
+config CONFIG_BIGINT_KARATSUBA
+    bool "Karatsuba Multiplication"
+    default n
+    help
+        Allow Karasuba multiplication to be used.
+        Uses 3 multiplications (plus a number of additions/subtractions) 
+        instead of 4. Multiplications are O(N^2) but addition/subtraction 
+        is O(N) hence for large numbers is beneficial. For this project, the 
+        effect was only useful for 4096 bit keys. As these aren't likely to 
+        be used, the feature is disabled by default. 
+        
+        It costs about 2kB to enable it.
+
+config MUL_KARATSUBA_THRESH
+    int "Karatsuba Multiplication Theshold"
+    default 20
+    depends on CONFIG_BIGINT_KARATSUBA
+    help
+        The minimum number of components needed before Karasuba muliplication
+        is used.
+        This is very dependent on the speed/implementation of bi_add()/
+        bi_subtract(). There is a bit of trial and error here and will be
+        at a different point for different architectures.
+
+config SQU_KARATSUBA_THRESH
+    int "Karatsuba Square Threshold"
+    default 40
+    depends on CONFIG_BIGINT_KARATSUBA && CONFIG_BIGINT_SQUARE
+    help    
+        The minimum number of components needed before Karatsuba squaring
+        is used.
+        This is very dependent on the speed/implementation of bi_add()/
+        bi_subtract(). There is a bit of trial and error here and will be
+        at a different point for different architectures.
+
+config CONFIG_BIGINT_SLIDING_WINDOW
+    bool "Sliding Window Exponentiation"
+    default y
+    help
+        Allow Sliding-Window Exponentiation to be used.
+        Potentially processes more than 1 bit at a time when doing 
+        exponentiation. The sliding-window technique reduces the number of 
+        precomputations compared to other precomputed techniques.
+
+        It results in a considerable performance improvement with it enabled
+        (it halves the decryption time) and so should be selected.
+
+config CONFIG_BIGINT_SQUARE
+    bool "Square Algorithm"
+    default y
+    help
+        Allow squaring to be used instead of a multiplication.
+        Squaring is theoretically 50% faster than a standard multiply 
+        (but is actually about 25% faster). 
+
+        It gives a 20% speed improvement and so should be selected.
+
+config CONFIG_BIGINT_CHECK_ON
+    bool "BigInt Integrity Checking"
+    default n if !CONFIG_DEBUG
+    default y if CONFIG_DEBUG
+    help
+        This is used when developing bigint algorithms. It performs a sanity
+        check on all operations at the expense of speed.
+        
+        This option is only selected when developing and should normally be
+        turned off.
+
+endmenu
+
+
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in
new file mode 100644 (file)
index 0000000..d047d42
--- /dev/null
@@ -0,0 +1,336 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/config/Kconfig-language.txt
+#
+
+menu "SSL Library"
+
+choice
+    prompt "Mode"
+    default CONFIG_SSL_FULL_MODE
+
+config CONFIG_SSL_SERVER_ONLY
+    bool "Server only - no verification"
+    help
+        Enable server functionality (no client functionality). 
+        This mode still supports sessions and chaining (which can be turned
+        off in configuration).
+
+        The axssl sample runs with the minimum of features.
+                
+        This is the most space efficient of the modes with the library 
+        about 45kB in size. Use this mode if you are doing standard SSL server
+        work.
+
+config CONFIG_SSL_CERT_VERIFICATION
+    bool "Server only - with verification"
+    help
+        Enable server functionality with client authentication (no client
+        functionality). 
+
+        The axssl sample runs with the "-verify" and "-CAfile" options.
+
+        This mode produces a library about 49kB in size. Use this mode if you
+        have an SSL server which requires client authentication (which is 
+        uncommon in browser applications).
+
+config CONFIG_SSL_ENABLE_CLIENT
+    bool "Client/Server enabled"
+    help
+        Enable client/server functionality (including peer authentication).
+
+        The axssl sample runs with the "s_client" option enabled.
+
+        This mode produces a library about 51kB in size. Use this mode if you
+        require axTLS to use SSL client functionality (the SSL server code
+        is always enabled).
+
+config CONFIG_SSL_FULL_MODE
+    bool "Client/Server enabled with diagnostics"
+    help
+        Enable client/server functionality including diagnostics. Most of the
+        extra size in this mode is due to the storage of various strings that
+        are used.
+
+        The axssl sample has 3 more options, "-debug", "-state" and "-show-rsa"
+
+        This mode produces a library about 58kB in size. It is suggested that 
+        this mode is used only during development, or systems that have more
+        generous memory limits.
+
+        It is the default to demonstrate the features of axTLS.
+
+config CONFIG_SSL_SKELETON_MODE
+    bool "Skeleton mode - the smallest server mode"
+    help
+        This is an experiment to build the smallest library at the expense of
+        features and speed.
+
+        * Server mode only.
+        * The AES cipher is disabled.
+        * No session resumption.
+        * No external keys/certificates are supported.
+        * The bigint library has most of the performance features disabled.
+        * Some other features/API calls may not work.
+
+        This mode produces a library about 37kB in size. The main
+        disadvantage of this mode is speed - it will be much slower than the 
+        other build modes.
+
+endchoice
+
+choice
+    prompt "Protocol Preference"
+    depends on !CONFIG_SSL_SKELETON_MODE
+    default CONFIG_SSL_PROT_MEDIUM
+
+config CONFIG_SSL_PROT_LOW
+    bool "Low"
+    help
+        Chooses the cipher in the order of RC4-SHA, AES128-SHA, AES256-SHA.
+      
+        This will use the fastest cipher(s) but at the expense of security.
+
+config CONFIG_SSL_PROT_MEDIUM
+    bool "Medium"
+    help
+        Chooses the cipher in the order of AES128-SHA, AES256-SHA, RC4-SHA.
+       
+        This mode is a balance between speed and security and is the default.
+
+config CONFIG_SSL_PROT_HIGH
+    bool "High"
+    help
+        Chooses the cipher in the order of AES256-SHA, AES128-SHA, RC4-SHA.
+        
+        This will use the strongest cipher(s) at the cost of speed.
+
+endchoice
+
+config CONFIG_SSL_USE_DEFAULT_KEY
+    bool "Enable default key"
+    depends on !CONFIG_SSL_SKELETON_MODE
+    default y 
+    help
+        Some applications will not require the default private key/certificate
+        that is built in. This is one way to save on a couple of kB's if an
+        external private key/certificate is used.
+
+        The private key is in ssl/private_key.h and the certificate is in
+        ssl/cert.h.
+
+        The advantage of a built-in private key/certificate is that no file
+        system is required for access. Both the certificate and the private
+        key will be automatically loaded on a ssl_ctx_new().
+        
+        However this private key/certificate can never be changed (without a
+        code update).
+
+        This mode is enabled by default. Disable this mode if the 
+        built-in key/certificate is not used.
+
+config CONFIG_SSL_PRIVATE_KEY_LOCATION
+    string "Private key file location"
+    depends on !CONFIG_SSL_USE_DEFAULT_KEY && !CONFIG_SSL_SKELETON_MODE
+    help
+        The file location of the private key which will be automatically
+        loaded on a ssl_ctx_new().
+
+config CONFIG_SSL_PRIVATE_KEY_PASSWORD
+    string "Private key password"
+    depends on !CONFIG_SSL_USE_DEFAULT_KEY && CONFIG_SSL_HAS_PEM
+    help
+        The password required to decrypt a PEM-encoded password file.
+
+config CONFIG_SSL_X509_CERT_LOCATION
+    string "X.509 certificate file location"
+    depends on !CONFIG_SSL_GENERATE_X509_CERT && !CONFIG_SSL_USE_DEFAULT_KEY && !CONFIG_SSL_SKELETON_MODE
+    help
+        The file location of the X.509 certificate which will be automatically
+        loaded on a ssl_ctx_new().
+
+config CONFIG_SSL_GENERATE_X509_CERT
+    bool "Generate X.509 Certificate"
+    default n
+    help
+        An X.509 certificate can be automatically generated on a
+        ssl_ctx_new(). A private key still needs to be provided (the private
+        key in ss/private_key.h will be used unless 
+        CONFIG_SSL_PRIVATE_KEY_LOCATION is set).
+
+        The certificate is generated on the fly, and so a minor start-up time
+        penalty is to be expected. This feature adds around 5kB to the
+        library.
+
+        This feature is disabled by default.
+
+config CONFIG_SSL_X509_COMMON_NAME
+    string "X.509 Common Name"
+    depends on CONFIG_SSL_GENERATE_X509_CERT
+    help
+        The common name for the X.509 certificate. This should be the fully 
+        qualified domain name (FQDN), e.g. www.foo.com.
+
+        If this is blank, then this will be value from gethostname() and
+        getdomainname().
+
+config CONFIG_SSL_X509_ORGANIZATION_NAME
+    string "X.509 Organization Name"
+    depends on CONFIG_SSL_GENERATE_X509_CERT
+    help
+        The organization name for the generated X.509 certificate. 
+
+        This field is optional.
+
+config CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME
+    string "X.509 Organization Unit Name"
+    depends on CONFIG_SSL_GENERATE_X509_CERT
+    help
+        The organization unit name for the generated X.509 certificate. 
+
+        This field is optional.
+
+config CONFIG_SSL_ENABLE_V23_HANDSHAKE
+    bool "Enable v23 Handshake"
+    default y
+    help
+        Some browsers use the v23 handshake client hello message 
+        (an SSL2 format message which all SSL servers can understand). 
+        It may be used if SSL2 is enabled in the browser.
+
+        Since this feature takes a kB or so, this feature may be disabled - at
+        the risk of making it incompatible with some browsers (IE6 is ok,
+        Firefox 1.5 and below use it).
+
+        Disable if backwards compatibility is not an issue (i.e. the client is
+        always using TLS1.0)
+
+config CONFIG_SSL_HAS_PEM
+    bool "Enable PEM"
+    default n if !CONFIG_SSL_FULL_MODE
+    default y if CONFIG_SSL_FULL_MODE
+    depends on !CONFIG_SSL_SKELETON_MODE
+    help
+        Enable the use of PEM format for certificates and private keys.
+
+        PEM is not normally needed - PEM files can be converted into DER files
+        quite easily. However they have the convenience of allowing multiple
+        certificates/keys in the same file.
+        
+        This feature will add a couple of kB to the library. 
+
+        Disable if PEM is not used (which will be in most cases).
+
+config CONFIG_SSL_USE_PKCS12
+    bool "Use PKCS8/PKCS12"
+    default n if !CONFIG_SSL_FULL_MODE
+    default y if CONFIG_SSL_FULL_MODE
+    depends on !CONFIG_SSL_SERVER_ONLY && !CONFIG_SSL_SKELETON_MODE
+    help
+        PKCS#12 certificates combine private keys and certificates together in
+        one file.
+
+        PKCS#8 private keys are also suppported (as it is a subset of PKCS#12).
+
+        The decryption of these certificates uses RC4-128 (and these
+        certificates must be encrypted using this cipher). The actual
+        algorithm is "PBE-SHA1-RC4-128".
+
+        Disable if PKCS#12 is not used (which will be in most cases).
+
+config CONFIG_SSL_EXPIRY_TIME
+    int "Session expiry time (in hours)"
+    depends on !CONFIG_SSL_SKELETON_MODE
+    default 24 
+    help
+        The time (in hours) before a session expires. 
+        
+        A longer time means that the expensive parts of a handshake don't 
+        need to be run when a client reconnects later.
+
+        The default is 1 day.
+
+config CONFIG_X509_MAX_CA_CERTS
+    int "Maximum number of certificate authorites"
+    default 4
+    depends on !CONFIG_SSL_SERVER_ONLY && !CONFIG_SSL_SKELETON_MODE
+    help
+        Determines the number of CA's allowed. 
+
+        Increase this figure if more trusted sites are allowed. Each
+        certificate adds about 300 bytes (when added).
+
+        The default is to allow four certification authorities.
+
+config CONFIG_SSL_MAX_CERTS
+    int "Maximum number of chained certificates"
+    default 2
+    help
+        Determines the number of certificates used in a certificate
+        chain. The chain length must be at least 1.
+
+        Increase this figure if more certificates are to be added to the 
+        chain. Each certificate adds about 300 bytes (when added).
+
+        The default is to allow one certificate + 1 certificate in the chain
+        (which may be the certificate authority certificate).
+
+config CONFIG_SSL_CTX_MUTEXING
+    bool "Enable SSL_CTX mutexing"
+    default n
+    help
+        Normally mutexing is not required - each SSL_CTX object can deal with
+        many SSL objects (as long as each SSL_CTX object is using a single
+        thread).
+
+        If the SSL_CTX object is not thread safe e.g. the case where a 
+        new thread is created for each SSL object, then mutexing is required. 
+
+        Select y when a mutex on the SSL_CTX object is required.
+
+config CONFIG_USE_DEV_URANDOM
+    bool "Use /dev/urandom"
+    default y
+    depends on !CONFIG_PLATFORM_WIN32
+    help 
+        Use /dev/urandom. Otherwise a custom RNG is used.
+
+        This will be the default on most Linux systems.
+
+config CONFIG_WIN32_USE_CRYPTO_LIB
+    bool "Use Win32 Crypto Library"
+    depends on CONFIG_PLATFORM_WIN32
+    help 
+        Microsoft produce a Crypto API which requires the Platform SDK to be
+        installed. It's used for the RNG.
+
+        This will be the default on most Win32 systems.
+
+config CONFIG_OPENSSL_COMPATIBLE
+    bool "Enable openssl API compatibility"
+    default n
+    help 
+        To ease the porting of openssl applications, a subset of the openssl
+        API is wrapped around the axTLS API.
+
+        Note: not all the API is implemented, so parts may still break. And
+        it's definitely not 100% compatible.
+
+config CONFIG_PERFORMANCE_TESTING
+    bool "Build the bigint performance test tool"
+    default n
+    help
+        Used for performance testing of bigint.
+
+        This is a testing tool and is normally disabled.
+
+config CONFIG_SSL_TEST
+    bool "Build the SSL testing tool"
+    default n
+    depends on CONFIG_SSL_FULL_MODE && !CONFIG_SSL_GENERATE_X509_CERT 
+    help
+        Used for sanity checking the SSL handshaking.
+
+        This is a testing tool and is normally disabled.
+
+endmenu
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile
new file mode 100644 (file)
index 0000000..704d90a
--- /dev/null
@@ -0,0 +1,123 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+AXTLS_HOME=..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+all: libs
+ifdef CONFIG_PERFORMANCE_TESTING
+       $(MAKE) -C test
+else
+ifdef CONFIG_SSL_TEST
+       $(MAKE) -C test
+endif
+endif
+
+ifndef CONFIG_PLATFORM_WIN32
+TARGET1=$(AXTLS_HOME)/$(STAGE)/libaxtls.a
+BASETARGET=libaxtls.so
+CRYPTO_PATH=$(AXTLS_HOME)/crypto/
+ifdef CONFIG_PLATFORM_CYGWIN
+TARGET2=$(AXTLS_HOME)/$(STAGE)/libaxtls.dll.a
+else
+TARGET2=$(AXTLS_HOME)/$(STAGE)/$(LIBMINOR)
+endif
+
+# shared library major/minor numbers
+LIBMAJOR=$(BASETARGET).1
+LIBMINOR=$(BASETARGET).1.2
+else
+TARGET1=$(AXTLS_HOME)/$(STAGE)/axtls.lib
+TARGET2=$(AXTLS_HOME)/$(STAGE)/axtls.dll
+STATIC_LIB=$(AXTLS_HOME)/$(STAGE)/axtls.static.lib
+CRYPTO_PATH=$(AXTLS_HOME)\\crypto\\
+endif
+
+libs: $(TARGET1) $(TARGET2)
+
+CRYPTO_OBJ=\
+       $(CRYPTO_PATH)aes.o \
+       $(CRYPTO_PATH)bigint.o \
+       $(CRYPTO_PATH)crypto_misc.o \
+       $(CRYPTO_PATH)hmac.o \
+       $(CRYPTO_PATH)md2.o \
+       $(CRYPTO_PATH)md5.o \
+       $(CRYPTO_PATH)rc4.o \
+       $(CRYPTO_PATH)rsa.o \
+       $(CRYPTO_PATH)sha1.o
+
+OBJ=\
+       asn1.o \
+       gen_cert.o \
+       loader.o \
+       openssl.o \
+       os_port.o \
+       p12.o \
+       tls1.o \
+       tls1_svr.o \
+       tls1_clnt.o \
+       x509.o
+
+include $(AXTLS_HOME)/config/makefile.post
+
+ifndef CONFIG_PLATFORM_WIN32     # Linux/Unix/Cygwin
+
+$(TARGET1) : $(OBJ)
+       $(AR) -r $@ $(CRYPTO_OBJ) $(OBJ)
+
+$(TARGET2) : $(OBJ)
+ifndef CONFIG_PLATFORM_CYGWIN
+       $(LD) $(LDFLAGS) $(LDSHARED) -o $(AXTLS_HOME)/$(STAGE)/$(LIBMINOR) $(CRYPTO_OBJ) $(OBJ)
+       cd $(AXTLS_HOME)/$(STAGE); ln -sf $(LIBMINOR) $(LIBMAJOR); ln -sf $(LIBMAJOR) $(BASETARGET); cd -
+else
+       $(LD) $(LDFLAGS) $(LDSHARED) -o $(AXTLS_HOME)/$(STAGE)/cygaxtls.dll \
+    -Wl,--out-implib=$(AXTLS_HOME)/$(STAGE)/libaxtls.dll.a \
+    -Wl,--export-all-symbols \
+    -Wl,--enable-auto-import $(CRYPTO_OBJ) $(OBJ)
+endif
+
+else  # Win32
+CRYPTO_OBJ:=$(CRYPTO_OBJ:.o=.obj)
+
+$(TARGET1) : $(OBJ)
+       $(AR) /out:$@ $(CRYPTO_OBJ) $(OBJ)
+
+$(TARGET2) : $(OBJ)
+       cp $(TARGET1) $(STATIC_LIB)
+       $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(CRYPTO_OBJ) $(OBJ)
+
+endif    
+
+clean::
+       $(MAKE) -C test clean
+       -@rm -f $(AXTLS_HOME)/$(STAGE)/* *.a $(TARGET1) $(TARGET2)
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c
new file mode 100644 (file)
index 0000000..4f2e6db
--- /dev/null
@@ -0,0 +1,510 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Some primitive asn methods for extraction ASN.1 data.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "os_port.h"
+#include "crypto.h"
+#include "crypto_misc.h"
+
+#define SIG_OID_PREFIX_SIZE 8
+#define SIG_IIS6_OID_SIZE   5
+
+/* Must be an RSA algorithm with either SHA1 or MD5 for verifying to work */
+static const uint8_t sig_oid_prefix[SIG_OID_PREFIX_SIZE] = 
+{
+    0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01
+};
+
+static const uint8_t sig_iis6_oid[SIG_IIS6_OID_SIZE] =
+{
+    0x2b, 0x0e, 0x03, 0x02, 0x1d
+};
+
+/* CN, O, OU */
+static const uint8_t g_dn_types[] = { 3, 10, 11 };
+
+int get_asn1_length(const uint8_t *buf, int *offset)
+{
+    int len, i;
+
+    if (!(buf[*offset] & 0x80)) /* short form */
+    {
+        len = buf[(*offset)++];
+    }
+    else  /* long form */
+    {
+        int length_bytes = buf[(*offset)++]&0x7f;
+        len = 0;
+        for (i = 0; i < length_bytes; i++)
+        {
+            len <<= 8;
+            len += buf[(*offset)++];
+        }
+    }
+
+    return len;
+}
+
+/**
+ * Skip the ASN1.1 object type and its length. Get ready to read the object's
+ * data.
+ */
+int asn1_next_obj(const uint8_t *buf, int *offset, int obj_type)
+{
+    if (buf[*offset] != obj_type)
+        return X509_NOT_OK;
+    (*offset)++;
+    return get_asn1_length(buf, offset);
+}
+
+/**
+ * Skip over an ASN.1 object type completely. Get ready to read the next
+ * object.
+ */
+int asn1_skip_obj(const uint8_t *buf, int *offset, int obj_type)
+{
+    int len;
+
+    if (buf[*offset] != obj_type)
+        return X509_NOT_OK;
+    (*offset)++;
+    len = get_asn1_length(buf, offset);
+    *offset += len;
+    return 0;
+}
+
+/**
+ * Read an integer value for ASN.1 data
+ * Note: This function allocates memory which must be freed by the user.
+ */
+int asn1_get_int(const uint8_t *buf, int *offset, uint8_t **object)
+{
+    int len;
+
+    if ((len = asn1_next_obj(buf, offset, ASN1_INTEGER)) < 0)
+        goto end_int_array;
+
+    if (len > 1 && buf[*offset] == 0x00)    /* ignore the negative byte */
+    {
+        len--;
+        (*offset)++;
+    }
+
+    *object = (uint8_t *)malloc(len);
+    memcpy(*object, &buf[*offset], len);
+    *offset += len;
+
+end_int_array:
+    return len;
+}
+
+/**
+ * Get all the RSA private key specifics from an ASN.1 encoded file 
+ */
+int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx)
+{
+    int offset = 7;
+    uint8_t *modulus = NULL, *priv_exp = NULL, *pub_exp = NULL;
+    int mod_len, priv_len, pub_len;
+#ifdef CONFIG_BIGINT_CRT
+    uint8_t *p = NULL, *q = NULL, *dP = NULL, *dQ = NULL, *qInv = NULL;
+    int p_len, q_len, dP_len, dQ_len, qInv_len;
+#endif
+
+    /* not in der format */
+    if (buf[0] != ASN1_SEQUENCE) /* basic sanity check */
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: This is not a valid ASN.1 file\n");
+#endif
+        return X509_INVALID_PRIV_KEY;
+    }
+
+    /* initialise the RNG */
+    RNG_initialize(buf, len);
+
+    mod_len = asn1_get_int(buf, &offset, &modulus);
+    pub_len = asn1_get_int(buf, &offset, &pub_exp);
+    priv_len = asn1_get_int(buf, &offset, &priv_exp);
+
+    if (mod_len <= 0 || pub_len <= 0 || priv_len <= 0)
+        return X509_INVALID_PRIV_KEY;
+
+#ifdef CONFIG_BIGINT_CRT
+    p_len = asn1_get_int(buf, &offset, &p);
+    q_len = asn1_get_int(buf, &offset, &q);
+    dP_len = asn1_get_int(buf, &offset, &dP);
+    dQ_len = asn1_get_int(buf, &offset, &dQ);
+    qInv_len = asn1_get_int(buf, &offset, &qInv);
+
+    if (p_len <= 0 || q_len <= 0 || dP_len <= 0 || dQ_len <= 0 || qInv_len <= 0)
+        return X509_INVALID_PRIV_KEY;
+
+    RSA_priv_key_new(rsa_ctx, 
+            modulus, mod_len, pub_exp, pub_len, priv_exp, priv_len,
+            p, p_len, q, p_len, dP, dP_len, dQ, dQ_len, qInv, qInv_len);
+
+    free(p);
+    free(q);
+    free(dP);
+    free(dQ);
+    free(qInv);
+#else
+    RSA_priv_key_new(rsa_ctx, 
+            modulus, mod_len, pub_exp, pub_len, priv_exp, priv_len);
+#endif
+
+    free(modulus);
+    free(priv_exp);
+    free(pub_exp);
+    return X509_OK;
+}
+
+/**
+ * Get the time of a certificate. Ignore hours/minutes/seconds.
+ */
+static int asn1_get_utc_time(const uint8_t *buf, int *offset, time_t *t)
+{
+    int ret = X509_NOT_OK, len, t_offset;
+    struct tm tm;
+
+    if (buf[(*offset)++] != ASN1_UTC_TIME)
+        goto end_utc_time;
+    len = get_asn1_length(buf, offset);
+    t_offset = *offset;
+
+    memset(&tm, 0, sizeof(struct tm));
+    tm.tm_year = (buf[t_offset] - '0')*10 + (buf[t_offset+1] - '0');
+
+    if (tm.tm_year <= 50)    /* 1951-2050 thing */
+    {
+        tm.tm_year += 100;
+    }
+
+    tm.tm_mon = (buf[t_offset+2] - '0')*10 + (buf[t_offset+3] - '0') - 1;
+    tm.tm_mday = (buf[t_offset+4] - '0')*10 + (buf[t_offset+5] - '0');
+    *t = mktime(&tm);
+    *offset += len;
+    ret = X509_OK;
+
+end_utc_time:
+    return ret;
+}
+
+/**
+ * Get the version type of a certificate (which we don't actually care about)
+ */
+int asn1_version(const uint8_t *cert, int *offset, X509_CTX *x509_ctx)
+{
+    int ret = X509_NOT_OK;
+
+    (*offset) += 2;        /* get past explicit tag */
+    if (asn1_skip_obj(cert, offset, ASN1_INTEGER))
+        goto end_version;
+
+    ret = X509_OK;
+end_version:
+    return ret;
+}
+
+/**
+ * Retrieve the notbefore and notafter certificate times.
+ */
+int asn1_validity(const uint8_t *cert, int *offset, X509_CTX *x509_ctx)
+{
+    return (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 ||
+              asn1_get_utc_time(cert, offset, &x509_ctx->not_before) ||
+              asn1_get_utc_time(cert, offset, &x509_ctx->not_after));
+}
+
+/**
+ * Get the components of a distinguished name 
+ */
+static int asn1_get_oid_x520(const uint8_t *buf, int *offset)
+{
+    int dn_type = 0;
+    int len;
+
+    if ((len = asn1_next_obj(buf, offset, ASN1_OID)) < 0)
+        goto end_oid;
+
+    /* expect a sequence of 2.5.4.[x] where x is a one of distinguished name 
+       components we are interested in. */
+    if (len == 3 && buf[(*offset)++] == 0x55 && buf[(*offset)++] == 0x04)
+        dn_type = buf[(*offset)++];
+    else
+    {
+        *offset += len;     /* skip over it */
+    }
+
+end_oid:
+    return dn_type;
+}
+
+/**
+ * Obtain an ASN.1 printable string type.
+ */
+static int asn1_get_printable_str(const uint8_t *buf, int *offset, char **str)
+{
+    int len = X509_NOT_OK;
+
+    /* some certs have this awful crud in them for some reason */
+    if (buf[*offset] != ASN1_PRINTABLE_STR &&  
+            buf[*offset] != ASN1_TELETEX_STR &&  
+            buf[*offset] != ASN1_IA5_STR &&  
+            buf[*offset] != ASN1_UNICODE_STR)
+        goto end_pnt_str;
+
+        (*offset)++;
+        len = get_asn1_length(buf, offset);
+
+        if (buf[*offset - 1] == ASN1_UNICODE_STR)
+        {
+            int i;
+            *str = (char *)malloc(len/2+1);     /* allow for null */
+
+            for (i = 0; i < len; i += 2)
+                (*str)[i/2] = buf[*offset + i + 1];
+
+            (*str)[len/2] = 0;                  /* null terminate */
+        }
+        else
+        {
+            *str = (char *)malloc(len+1);       /* allow for null */
+            memcpy(*str, &buf[*offset], len);
+            (*str)[len] = 0;                    /* null terminate */
+        }
+
+        *offset += len;
+
+end_pnt_str:
+    return len;
+}
+
+/**
+ * Get the subject name (or the issuer) of a certificate.
+ */
+int asn1_name(const uint8_t *cert, int *offset, char *dn[])
+{
+    int ret = X509_NOT_OK;
+    int dn_type;
+    char *tmp = NULL;
+
+    if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0)
+        goto end_name;
+
+    while (asn1_next_obj(cert, offset, ASN1_SET) >= 0)
+    {
+        int i, found = 0;
+
+        if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 ||
+               (dn_type = asn1_get_oid_x520(cert, offset)) < 0)
+            goto end_name;
+
+        if (asn1_get_printable_str(cert, offset, &tmp) < 0)
+        {
+            free(tmp);
+            goto end_name;
+        }
+
+        /* find the distinguished named type */
+        for (i = 0; i < X509_NUM_DN_TYPES; i++)
+        {
+            if (dn_type == g_dn_types[i])
+            {
+                if (dn[i] == NULL)
+                {
+                    dn[i] = tmp;
+                    found = 1;
+                    break;
+                }
+            }
+        }
+
+        if (found == 0) /* not found so get rid of it */
+        {
+            free(tmp);
+        }
+    }
+
+    ret = X509_OK;
+end_name:
+    return ret;
+}
+
+/**
+ * Read the modulus and public exponent of a certificate.
+ */
+int asn1_public_key(const uint8_t *cert, int *offset, X509_CTX *x509_ctx)
+{
+    int ret = X509_NOT_OK, mod_len, pub_len;
+    uint8_t *modulus = NULL, *pub_exp = NULL;
+
+    if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 ||
+            asn1_skip_obj(cert, offset, ASN1_SEQUENCE) ||
+            asn1_next_obj(cert, offset, ASN1_BIT_STRING) < 0)
+        goto end_pub_key;
+
+    (*offset)++;        /* ignore the padding bit field */
+
+    if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0)
+        goto end_pub_key;
+
+    mod_len = asn1_get_int(cert, offset, &modulus);
+    pub_len = asn1_get_int(cert, offset, &pub_exp);
+
+    RSA_pub_key_new(&x509_ctx->rsa_ctx, modulus, mod_len, pub_exp, pub_len);
+
+    free(modulus);
+    free(pub_exp);
+    ret = X509_OK;
+
+end_pub_key:
+    return ret;
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * Read the signature of the certificate.
+ */
+int asn1_signature(const uint8_t *cert, int *offset, X509_CTX *x509_ctx)
+{
+    int ret = X509_NOT_OK;
+
+    if (cert[(*offset)++] != ASN1_BIT_STRING)
+        goto end_sig;
+
+    x509_ctx->sig_len = get_asn1_length(cert, offset)-1;
+    (*offset)++;            /* ignore bit string padding bits */
+    x509_ctx->signature = (uint8_t *)malloc(x509_ctx->sig_len);
+    memcpy(x509_ctx->signature, &cert[*offset], x509_ctx->sig_len);
+    *offset += x509_ctx->sig_len;
+    ret = X509_OK;
+
+end_sig:
+    return ret;
+}
+
+/*
+ * Compare 2 distinguished name components for equality 
+ * @return 0 if a match
+ */
+static int asn1_compare_dn_comp(const char *dn1, const char *dn2)
+{
+    int ret = 1;
+
+    if ((dn1 && dn2 == NULL) || (dn1 == NULL && dn2)) goto err_no_match;
+
+    ret = (dn1 && dn2) ? strcmp(dn1, dn2) : 0;
+
+err_no_match:
+    return ret;
+}
+
+/**
+ * Clean up all of the CA certificates.
+ */
+void remove_ca_certs(CA_CERT_CTX *ca_cert_ctx)
+{
+    int i = 0;
+
+    if (ca_cert_ctx == NULL)
+        return;
+
+    while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i])
+    {
+        x509_free(ca_cert_ctx->cert[i]);
+        ca_cert_ctx->cert[i++] = NULL;
+    }
+
+    free(ca_cert_ctx);
+}
+
+/*
+ * Compare 2 distinguished names for equality 
+ * @return 0 if a match
+ */
+int asn1_compare_dn(char * const dn1[], char * const dn2[])
+{
+    int i;
+
+    for (i = 0; i < X509_NUM_DN_TYPES; i++)
+    {
+        if (asn1_compare_dn_comp(dn1[i], dn2[i]))
+            return 1;
+    }
+
+    return 0;       /* all good */
+}
+
+#endif
+
+/**
+ * Read the signature type of the certificate. We only support RSA-MD5 and
+ * RSA-SHA1 signature types.
+ */
+int asn1_signature_type(const uint8_t *cert, 
+                                int *offset, X509_CTX *x509_ctx)
+{
+    int ret = X509_NOT_OK, len;
+
+    if (cert[(*offset)++] != ASN1_OID)
+        goto end_check_sig;
+
+    len = get_asn1_length(cert, offset);
+
+    if (len == 5 && memcmp(sig_iis6_oid, &cert[*offset], 
+                                    SIG_IIS6_OID_SIZE) == 0)
+    {
+        x509_ctx->sig_type = SIG_TYPE_SHA1;
+    }
+    else
+    {
+        if (memcmp(sig_oid_prefix, &cert[*offset], SIG_OID_PREFIX_SIZE))
+            goto end_check_sig;     /* unrecognised cert type */
+
+        x509_ctx->sig_type = cert[*offset + SIG_OID_PREFIX_SIZE];
+    }
+
+    *offset += len;
+    asn1_skip_obj(cert, offset, ASN1_NULL); /* if it's there */
+    ret = X509_OK;
+
+end_check_sig:
+    return ret;
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h
new file mode 100644 (file)
index 0000000..7a85d2d
--- /dev/null
@@ -0,0 +1,43 @@
+unsigned char default_certificate[] = {
+  0x30, 0x82, 0x01, 0xd7, 0x30, 0x82, 0x01, 0x40, 0x02, 0x09, 0x00, 0xf1,
+  0xc3, 0x87, 0xc0, 0xd4, 0xf4, 0x57, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a,
+  0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x34,
+  0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x29, 0x61,
+  0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+  0x20, 0x44, 0x6f, 0x64, 0x67, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
+  0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
+  0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x36,
+  0x30, 0x37, 0x31, 0x31, 0x34, 0x34, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x33,
+  0x33, 0x31, 0x30, 0x32, 0x33, 0x31, 0x31, 0x34, 0x34, 0x33, 0x32, 0x5a,
+  0x30, 0x2c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
+  0x0d, 0x61, 0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65,
+  0x63, 0x74, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
+  0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x81,
+  0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
+  0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02,
+  0x81, 0x81, 0x00, 0xd8, 0xe0, 0xbf, 0x15, 0xde, 0xea, 0xaf, 0xe8, 0xd5,
+  0xfd, 0x0b, 0xa8, 0xa8, 0xb3, 0xd7, 0x46, 0x5d, 0xa7, 0x26, 0x6c, 0x0c,
+  0xb5, 0xd9, 0xbc, 0xc6, 0xf8, 0xc0, 0x78, 0xd0, 0xf6, 0x56, 0x65, 0xf8,
+  0x29, 0x48, 0x0e, 0x7b, 0x0b, 0xa6, 0x25, 0x7e, 0xe8, 0x7b, 0x79, 0x6f,
+  0x38, 0xe5, 0xb5, 0xb7, 0xf4, 0xe0, 0x9c, 0x91, 0x60, 0xf4, 0x06, 0xf3,
+  0x40, 0x1e, 0xf9, 0x91, 0x19, 0xa9, 0x2f, 0x47, 0x43, 0xb5, 0x9b, 0x1e,
+  0xdc, 0xf6, 0xaa, 0x1c, 0x49, 0x79, 0x21, 0x28, 0xcb, 0xaa, 0x49, 0x73,
+  0xd9, 0x09, 0x05, 0x4c, 0x02, 0xf2, 0x4c, 0x4d, 0x6c, 0x1c, 0x80, 0xa7,
+  0x14, 0x91, 0x44, 0xfc, 0x12, 0xb3, 0xe1, 0xe7, 0xe3, 0x4f, 0x44, 0xba,
+  0x8c, 0xc3, 0x74, 0x39, 0xe8, 0x4c, 0xd0, 0xd4, 0x4c, 0x24, 0x61, 0xb4,
+  0x40, 0x95, 0x8c, 0xc0, 0x0a, 0xb7, 0x02, 0x39, 0x31, 0x85, 0x93, 0x02,
+  0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+  0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0b,
+  0x47, 0x24, 0x52, 0x7d, 0xb6, 0x63, 0x78, 0xbc, 0x80, 0xdd, 0x87, 0x6c,
+  0x90, 0x4c, 0x33, 0xc3, 0x5c, 0xa7, 0x97, 0x09, 0x1c, 0x09, 0x4f, 0x9b,
+  0x6e, 0xb3, 0x5a, 0x3e, 0x46, 0x92, 0x1a, 0xc7, 0x87, 0x15, 0x59, 0xe1,
+  0x88, 0x5c, 0xce, 0x6a, 0xe2, 0x96, 0xaa, 0x32, 0xec, 0xc2, 0xed, 0x78,
+  0x8b, 0xe0, 0x90, 0x66, 0x93, 0x14, 0xc3, 0x98, 0xab, 0x33, 0x35, 0xd3,
+  0x7d, 0x5d, 0x51, 0x0a, 0x9c, 0xb9, 0x10, 0x58, 0x47, 0x7a, 0x98, 0x95,
+  0x64, 0xff, 0x4c, 0x5d, 0x82, 0x19, 0xf9, 0xea, 0x0f, 0x5e, 0x9a, 0xcb,
+  0x32, 0x27, 0x64, 0xca, 0x6f, 0x58, 0x8a, 0xd0, 0xc0, 0x36, 0xf4, 0xb9,
+  0x63, 0x34, 0xa5, 0xda, 0x36, 0x50, 0x36, 0x49, 0xd2, 0xb7, 0x3a, 0x21,
+  0x33, 0x5b, 0x3e, 0xd6, 0x5f, 0x0c, 0x99, 0x83, 0xb7, 0xb2, 0xf7, 0x8b,
+  0x44, 0xc4, 0x5e, 0x73, 0x41, 0xa9, 0x02
+};
+unsigned int default_certificate_len = 475;
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h
new file mode 100644 (file)
index 0000000..97cb0f2
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/**
+ * @file crypto_misc.h
+ */
+
+#ifndef HEADER_CRYPTO_MISC_H
+#define HEADER_CRYPTO_MISC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "crypto.h"
+#include "bigint.h"
+
+/**************************************************************************
+ * X509 declarations 
+ **************************************************************************/
+#define X509_OK                             0
+#define X509_NOT_OK                         -1
+#define X509_VFY_ERROR_NO_TRUSTED_CERT      -2
+#define X509_VFY_ERROR_BAD_SIGNATURE        -3      
+#define X509_VFY_ERROR_NOT_YET_VALID        -4
+#define X509_VFY_ERROR_EXPIRED              -5
+#define X509_VFY_ERROR_SELF_SIGNED          -6
+#define X509_VFY_ERROR_INVALID_CHAIN        -7
+#define X509_VFY_ERROR_UNSUPPORTED_DIGEST   -8
+#define X509_INVALID_PRIV_KEY               -9
+
+/*
+ * The Distinguished Name
+ */
+#define X509_NUM_DN_TYPES                   3
+#define X509_COMMON_NAME                    0
+#define X509_ORGANIZATION                   1
+#define X509_ORGANIZATIONAL_UNIT            2
+
+struct _x509_ctx
+{
+    char *ca_cert_dn[X509_NUM_DN_TYPES];
+    char *cert_dn[X509_NUM_DN_TYPES];
+    time_t not_before;
+    time_t not_after;
+    uint8_t *signature;
+    uint16_t sig_len;
+    uint8_t sig_type;
+    RSA_CTX *rsa_ctx;
+    bigint *digest;
+    struct _x509_ctx *next;
+};
+
+typedef struct _x509_ctx X509_CTX;
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+typedef struct 
+{
+    X509_CTX *cert[CONFIG_X509_MAX_CA_CERTS];
+} CA_CERT_CTX;
+#endif
+
+int x509_new(const uint8_t *cert, int *len, X509_CTX **ctx);
+void x509_free(X509_CTX *x509_ctx);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+int x509_verify(const CA_CERT_CTX *ca_cert_ctx, const X509_CTX *cert);
+#endif
+#ifdef CONFIG_SSL_FULL_MODE
+void x509_print(const X509_CTX *cert, CA_CERT_CTX *ca_cert_ctx);
+const char * x509_display_error(int error);
+#endif
+
+/**************************************************************************
+ * ASN1 declarations 
+ **************************************************************************/
+#define ASN1_INTEGER            0x02
+#define ASN1_BIT_STRING         0x03
+#define ASN1_OCTET_STRING       0x04
+#define ASN1_NULL               0x05
+#define ASN1_OID                0x06
+#define ASN1_PRINTABLE_STR      0x13
+#define ASN1_TELETEX_STR        0x14
+#define ASN1_IA5_STR            0x16
+#define ASN1_UTC_TIME           0x17
+#define ASN1_UNICODE_STR        0x1e
+#define ASN1_SEQUENCE           0x30
+#define ASN1_SET                0x31
+#define ASN1_IMPLICIT_TAG       0x80
+#define ASN1_EXPLICIT_TAG       0xa0
+
+#define SIG_TYPE_MD2            0x02
+#define SIG_TYPE_MD5            0x04
+#define SIG_TYPE_SHA1           0x05
+
+int get_asn1_length(const uint8_t *buf, int *offset);
+int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx);
+int asn1_next_obj(const uint8_t *buf, int *offset, int obj_type);
+int asn1_skip_obj(const uint8_t *buf, int *offset, int obj_type);
+int asn1_get_int(const uint8_t *buf, int *offset, uint8_t **object);
+int asn1_version(const uint8_t *cert, int *offset, X509_CTX *x509_ctx);
+int asn1_validity(const uint8_t *cert, int *offset, X509_CTX *x509_ctx);
+int asn1_name(const uint8_t *cert, int *offset, char *dn[]);
+int asn1_public_key(const uint8_t *cert, int *offset, X509_CTX *x509_ctx);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+int asn1_signature(const uint8_t *cert, int *offset, X509_CTX *x509_ctx);
+int asn1_compare_dn(char * const dn1[], char * const dn2[]);
+#endif
+int asn1_signature_type(const uint8_t *cert, 
+                                int *offset, X509_CTX *x509_ctx);
+
+/**************************************************************************
+ * MISC declarations 
+ **************************************************************************/
+#define SALT_SIZE               8
+
+extern const char * const unsupported_str;
+
+typedef void (*crypt_func)(void *, const uint8_t *, uint8_t *, int);
+typedef void (*hmac_func)(const uint8_t *msg, int length, const uint8_t *key, 
+        int key_len, uint8_t *digest);
+
+int get_file(const char *filename, uint8_t **buf);
+
+#if defined(CONFIG_SSL_FULL_MODE) || defined(WIN32) || defined(CONFIG_DEBUG)
+EXP_FUNC void STDCALL print_blob(const char *format, const uint8_t *data, int size, ...);
+#else
+    #define print_blob(...)
+#endif
+
+EXP_FUNC int STDCALL base64_decode(const char *in,  int len,
+                    uint8_t *out, int *outlen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c
new file mode 100644 (file)
index 0000000..94b7490
--- /dev/null
@@ -0,0 +1,363 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#ifdef CONFIG_SSL_GENERATE_X509_CERT
+#include <string.h>
+#include <stdlib.h>
+#include "ssl.h"
+
+/**
+ * Generate a basic X.509 certificate
+ */
+
+static uint8_t set_gen_length(int len, uint8_t *buf, int *offset)
+{
+    if (len < 0x80) /* short form */
+    {
+        buf[(*offset)++] = len;
+        return 1;
+    }
+    else /* long form */
+    {
+        int i, length_bytes = 0;
+
+        if (len & 0x00FF0000)
+            length_bytes = 3;
+        else if (len & 0x0000FF00)
+            length_bytes = 2;
+        else if (len & 0x000000FF)
+            length_bytes = 1;
+            
+        buf[(*offset)++] = 0x80 + length_bytes;
+
+        for (i = length_bytes-1; i >= 0; i--)
+        {
+            buf[*offset+i] = len & 0xFF;
+            len >>= 8;
+        }
+
+        *offset += length_bytes;
+        return length_bytes+1;
+    }
+}
+
+static int pre_adjust_with_size(uint8_t type,
+        int *seq_offset, uint8_t *buf, int *offset)
+{
+    buf[(*offset)++] = type;
+    *seq_offset = *offset;
+    *offset += 4;   /* fill in later */
+    return *offset;
+}
+
+static void adjust_with_size(int seq_size, int seq_start, 
+                uint8_t *buf, int *offset)
+{
+    uint8_t seq_byte_size; 
+    int orig_seq_size = seq_size;
+    int orig_seq_start = seq_start;
+
+    seq_size = *offset-seq_size;
+    seq_byte_size = set_gen_length(seq_size, buf, &seq_start);
+
+    if (seq_byte_size != 4)
+    {
+        memmove(&buf[orig_seq_start+seq_byte_size], 
+                &buf[orig_seq_size], seq_size);
+        *offset -= 4-seq_byte_size;
+    }
+}
+
+static void gen_serial_number(uint8_t *buf, int *offset)
+{
+    static const uint8_t ser_oid[] = { ASN1_INTEGER, 1, 0x7F };
+    memcpy(&buf[*offset], ser_oid , sizeof(ser_oid));
+    *offset += sizeof(ser_oid);
+}
+
+static void gen_signature_alg(uint8_t *buf, int *offset)
+{
+    /* OBJECT IDENTIFIER sha1withRSAEncryption (1 2 840 113549 1 1 5) */
+    static const uint8_t sig_oid[] = 
+    {
+        ASN1_SEQUENCE, 0x0d, ASN1_OID, 0x09, 
+        0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
+        ASN1_NULL, 0x00
+    };
+
+    memcpy(&buf[*offset], sig_oid, sizeof(sig_oid));
+    *offset += sizeof(sig_oid);
+}
+
+static int gen_dn(const char *name, uint8_t dn_type, 
+                        uint8_t *buf, int *offset)
+{
+    int ret = X509_OK;
+    int name_size = strlen(name);
+
+    if (name_size > 0x70)    /* just too big */
+    {
+        ret = X509_NOT_OK;
+        goto error;
+    }
+
+    buf[(*offset)++] = ASN1_SET;
+    set_gen_length(9+name_size, buf, offset);
+    buf[(*offset)++] = ASN1_SEQUENCE;
+    set_gen_length(7+name_size, buf, offset);
+    buf[(*offset)++] = ASN1_OID;
+    buf[(*offset)++] = 3;
+    buf[(*offset)++] = 0x55;
+    buf[(*offset)++] = 0x04;
+    buf[(*offset)++] = dn_type;
+    buf[(*offset)++] = ASN1_PRINTABLE_STR;
+    buf[(*offset)++] = name_size;
+    strcpy(&buf[*offset], name);
+    *offset += name_size;
+
+error:
+    return ret;
+}
+
+static int gen_issuer(const char * dn[], uint8_t *buf, int *offset)
+{
+    int ret = X509_OK;
+    int seq_offset;
+    int seq_size = pre_adjust_with_size(
+                            ASN1_SEQUENCE, &seq_offset, buf, offset);
+    char fqdn[128]; 
+
+    /* we need the common name, so if not configured, work out the fully
+     * qualified domain name */
+    if (dn[X509_COMMON_NAME] == NULL || strlen(dn[X509_COMMON_NAME]) == 0)
+    {
+        int fqdn_len;
+        gethostname(fqdn, sizeof(fqdn));
+        fqdn_len = strlen(fqdn);
+        fqdn[fqdn_len++] = '.';
+        getdomainname(&fqdn[fqdn_len], sizeof(fqdn)-fqdn_len);
+        fqdn_len = strlen(fqdn);
+
+        if (fqdn[fqdn_len-1] == '.')    /* ensure '.' is not last char */
+            fqdn[fqdn_len-1] = 0;
+
+        dn[X509_COMMON_NAME] = fqdn;
+    }
+
+    if ((ret = gen_dn(dn[X509_COMMON_NAME], 3, buf, offset)))
+        goto error;
+
+    if (dn[X509_ORGANIZATION] != NULL && strlen(dn[X509_ORGANIZATION]) > 0)
+    {
+        if ((ret = gen_dn(dn[X509_ORGANIZATION], 10, buf, offset)))
+            goto error;
+    }
+
+    if (dn[X509_ORGANIZATIONAL_UNIT] != NULL &&
+                                strlen(dn[X509_ORGANIZATIONAL_UNIT]) > 0)
+    {
+        if ((ret = gen_dn(dn[X509_ORGANIZATIONAL_UNIT], 11, buf, offset)))
+            goto error;
+    }
+
+    adjust_with_size(seq_size, seq_offset, buf, offset);
+
+error:
+    return ret;
+}
+
+static void gen_utc_time(uint8_t *buf, int *offset)
+{
+    static const uint8_t time_seq[] = 
+    {
+        ASN1_SEQUENCE, 30, 
+        ASN1_UTC_TIME, 13, 
+        '0', '7', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', 'Z', 
+        ASN1_UTC_TIME, 13,  /* make it good for 30 or so years */
+        '3', '8', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', 'Z'
+    };
+
+    /* fixed time */
+    memcpy(&buf[*offset], time_seq, sizeof(time_seq));
+    *offset += sizeof(time_seq);
+}
+
+static void gen_pub_key2(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset)
+{
+    static const uint8_t pub_key_seq[] = 
+    {
+        ASN1_INTEGER, 0x03, 0x01, 0x00, 0x01 /* INTEGER 65537 */
+    };
+
+    int seq_offset;
+    int pub_key_size = rsa_ctx->num_octets;
+    uint8_t *block = (uint8_t *)alloca(pub_key_size);
+    int seq_size = pre_adjust_with_size(
+                            ASN1_SEQUENCE, &seq_offset, buf, offset);
+    buf[(*offset)++] = ASN1_INTEGER;
+    bi_export(rsa_ctx->bi_ctx, rsa_ctx->m, block, pub_key_size);
+
+    if (*block & 0x80)  /* make integer positive */
+    {
+        set_gen_length(pub_key_size+1, buf, offset);
+        buf[(*offset)++] = 0;
+    }
+    else
+        set_gen_length(pub_key_size, buf, offset);
+
+    memcpy(&buf[*offset], block, pub_key_size);
+    *offset += pub_key_size;
+    memcpy(&buf[*offset], pub_key_seq, sizeof(pub_key_seq));
+    *offset += sizeof(pub_key_seq);
+    adjust_with_size(seq_size, seq_offset, buf, offset);
+}
+
+static void gen_pub_key1(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset)
+{
+    int seq_offset;
+    int seq_size = pre_adjust_with_size(
+                            ASN1_BIT_STRING, &seq_offset, buf, offset);
+    buf[(*offset)++] = 0;   /* bit string is multiple of 8 */
+    gen_pub_key2(rsa_ctx, buf, offset);
+    adjust_with_size(seq_size, seq_offset, buf, offset);
+}
+
+static void gen_pub_key(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset)
+{
+    /*  OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1) */
+    static const uint8_t rsa_enc_oid[] =
+    {
+        ASN1_SEQUENCE, 0x0d, ASN1_OID, 0x09,
+        0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
+        ASN1_NULL, 0x00
+    };
+
+    int seq_offset;
+    int seq_size = pre_adjust_with_size(
+                            ASN1_SEQUENCE, &seq_offset, buf, offset);
+
+    memcpy(&buf[*offset], rsa_enc_oid, sizeof(rsa_enc_oid));
+    *offset += sizeof(rsa_enc_oid);
+    gen_pub_key1(rsa_ctx, buf, offset);
+    adjust_with_size(seq_size, seq_offset, buf, offset);
+}
+
+static void gen_signature(const RSA_CTX *rsa_ctx, const uint8_t *sha_dgst, 
+                        uint8_t *buf, int *offset)
+{
+    static const uint8_t asn1_sig[] = 
+    {
+        ASN1_SEQUENCE,  0x21, ASN1_SEQUENCE, 0x09, ASN1_OID, 0x05, 
+        0x2b, 0x0e, 0x03, 0x02, 0x1a, /* sha1 (1 3 14 3 2 26) */
+        ASN1_NULL, 0x00, ASN1_OCTET_STRING, 0x14 
+    };
+
+    uint8_t *enc_block = (uint8_t *)alloca(rsa_ctx->num_octets);
+    uint8_t *block = (uint8_t *)alloca(sizeof(asn1_sig) + SHA1_SIZE);
+    int sig_size;
+
+    /* add the digest as an embedded asn.1 sequence */
+    memcpy(block, asn1_sig, sizeof(asn1_sig));
+    memcpy(&block[sizeof(asn1_sig)], sha_dgst, SHA1_SIZE);
+
+    sig_size = RSA_encrypt(rsa_ctx, block, 
+                            sizeof(asn1_sig) + SHA1_SIZE, enc_block, 1);
+
+    buf[(*offset)++] = ASN1_BIT_STRING;
+    set_gen_length(sig_size+1, buf, offset);
+    buf[(*offset)++] = 0;   /* bit string is multiple of 8 */
+    memcpy(&buf[*offset], enc_block, sig_size);
+    *offset += sig_size;
+}
+
+static int gen_tbs_cert(const char * dn[],
+                    const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset,
+                    uint8_t *sha_dgst)
+{
+    int ret = X509_OK;
+    SHA1_CTX sha_ctx;
+    int seq_offset;
+    int begin_tbs = *offset;
+    int seq_size = pre_adjust_with_size(
+                        ASN1_SEQUENCE, &seq_offset, buf, offset);
+
+    gen_serial_number(buf, offset);
+    gen_signature_alg(buf, offset);
+
+    /* CA certicate issuer */
+    if ((ret = gen_issuer(dn, buf, offset)))
+        goto error;
+
+    gen_utc_time(buf, offset);
+
+    /* certificate issuer */
+    if ((ret = gen_issuer(dn, buf, offset)))
+        goto error;
+
+    gen_pub_key(rsa_ctx, buf, offset);
+    adjust_with_size(seq_size, seq_offset, buf, offset);
+
+    SHA1_Init(&sha_ctx);
+    SHA1_Update(&sha_ctx, &buf[begin_tbs], *offset-begin_tbs);
+    SHA1_Final(sha_dgst, &sha_ctx);
+
+error:
+    return ret;
+}
+
+/**
+ * Create a new certificate.
+ */
+EXP_FUNC int STDCALL ssl_x509_create(SSL_CTX *ssl_ctx, uint32_t options, const char * dn[], uint8_t **cert_data)
+{
+    int ret = X509_OK, offset = 0, seq_offset;
+    /* allocate enough space to load a new certificate */
+    uint8_t *buf = (uint8_t *)alloca(ssl_ctx->rsa_ctx->num_octets*2 + 512);
+    uint8_t sha_dgst[SHA1_SIZE];
+    int seq_size = pre_adjust_with_size(ASN1_SEQUENCE, 
+                                    &seq_offset, buf, &offset);
+
+    if ((ret = gen_tbs_cert(dn, ssl_ctx->rsa_ctx, buf, &offset, sha_dgst)) < 0)
+        goto error;
+
+    gen_signature_alg(buf, &offset);
+    gen_signature(ssl_ctx->rsa_ctx, sha_dgst, buf, &offset);
+    adjust_with_size(seq_size, seq_offset, buf, &offset);
+    *cert_data = (uint8_t *)malloc(offset); /* create the exact memory for it */
+    memcpy(*cert_data, buf, offset);
+
+error:
+    return ret < 0 ? ret : offset;
+}
+
+#endif
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c
new file mode 100644 (file)
index 0000000..4232f7e
--- /dev/null
@@ -0,0 +1,465 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Load certificates/keys into memory. These can be in many different formats.
+ * PEM support and other formats can be processed here.
+ *
+ * The PEM private keys may be optionally encrypted with AES128 or AES256. 
+ * The encrypted PEM keys were generated with something like:
+ *
+ * openssl genrsa -aes128 -passout pass:abcd -out axTLS.key_aes128.pem 512
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "ssl.h"
+
+static int do_obj(SSL_CTX *ssl_ctx, int obj_type, 
+                    SSLObjLoader *ssl_obj, const char *password);
+#ifdef CONFIG_SSL_HAS_PEM
+static int ssl_obj_PEM_load(SSL_CTX *ssl_ctx, int obj_type, 
+                        SSLObjLoader *ssl_obj, const char *password);
+#endif
+
+/*
+ * Load a file into memory that is in binary DER (or ascii PEM) format.
+ */
+EXP_FUNC int STDCALL ssl_obj_load(SSL_CTX *ssl_ctx, int obj_type, 
+                            const char *filename, const char *password)
+{
+#ifndef CONFIG_SSL_SKELETON_MODE
+    static const char * const begin = "-----BEGIN";
+    int ret = SSL_OK;
+    SSLObjLoader *ssl_obj = NULL;
+
+    if (filename == NULL)
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto error;
+    }
+
+    ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader));
+    ssl_obj->len = get_file(filename, &ssl_obj->buf); 
+    if (ssl_obj->len <= 0)
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto error;
+    }
+
+    /* is the file a PEM file? */
+    if (strncmp((char *)ssl_obj->buf, begin, strlen(begin)) == 0)
+    {
+#ifdef CONFIG_SSL_HAS_PEM
+        ret = ssl_obj_PEM_load(ssl_ctx, obj_type, ssl_obj, password);
+#else
+        printf(unsupported_str);
+        ret = SSL_ERROR_NOT_SUPPORTED;
+#endif
+    }
+    else
+        ret = do_obj(ssl_ctx, obj_type, ssl_obj, password);
+
+error:
+    ssl_obj_free(ssl_obj);
+    return ret;
+#else
+    printf(unsupported_str);
+    return SSL_ERROR_NOT_SUPPORTED;
+#endif /* CONFIG_SSL_SKELETON_MODE */
+}
+
+/*
+ * Transfer binary data into the object loader.
+ */
+EXP_FUNC int STDCALL ssl_obj_memory_load(SSL_CTX *ssl_ctx, int mem_type, 
+        const uint8_t *data, int len, const char *password)
+{
+    int ret;
+    SSLObjLoader *ssl_obj;
+
+    ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader));
+    ssl_obj->buf = (uint8_t *)malloc(len);
+    memcpy(ssl_obj->buf, data, len);
+    ssl_obj->len = len;
+    ret = do_obj(ssl_ctx, mem_type, ssl_obj, password);
+    ssl_obj_free(ssl_obj);
+    return ret;
+}
+
+/*
+ * Actually work out what we are doing 
+ */
+static int do_obj(SSL_CTX *ssl_ctx, int obj_type, 
+                    SSLObjLoader *ssl_obj, const char *password)
+{
+    int ret = SSL_OK;
+
+    switch (obj_type)
+    {
+        case SSL_OBJ_RSA_KEY:
+            ret = add_private_key(ssl_ctx, ssl_obj);
+            break;
+
+        case SSL_OBJ_X509_CERT:
+            ret = add_cert(ssl_ctx, ssl_obj->buf, ssl_obj->len);
+            break;
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+        case SSL_OBJ_X509_CACERT:
+            ret = add_cert_auth(ssl_ctx, ssl_obj->buf, ssl_obj->len);
+            break;
+#endif
+
+#ifdef CONFIG_SSL_USE_PKCS12
+        case SSL_OBJ_PKCS8:
+            ret = pkcs8_decode(ssl_ctx, ssl_obj, password);
+            break;
+
+        case SSL_OBJ_PKCS12:
+            ret = pkcs12_decode(ssl_ctx, ssl_obj, password);
+            break;
+#endif
+        default:
+            printf(unsupported_str);
+            ret = SSL_ERROR_NOT_SUPPORTED;
+            break;
+    }
+
+    return ret;
+}
+
+/*
+ * Clean up our mess.
+ */
+void ssl_obj_free(SSLObjLoader *ssl_obj)
+{
+    if (ssl_obj)
+    {
+        free(ssl_obj->buf);
+        free(ssl_obj);
+    }
+}
+
+/*
+ * Support for PEM encoded keys/certificates.
+ */
+#ifdef CONFIG_SSL_HAS_PEM
+
+#define NUM_PEM_TYPES               3
+#define IV_SIZE                     16
+#define IS_RSA_PRIVATE_KEY          0
+#define IS_ENCRYPTED_PRIVATE_KEY    1
+#define IS_CERTIFICATE              2
+
+static const char * const begins[NUM_PEM_TYPES] =
+{
+    "-----BEGIN RSA PRIVATE KEY-----",
+    "-----BEGIN ENCRYPTED PRIVATE KEY-----",
+    "-----BEGIN CERTIFICATE-----",
+};
+
+static const char * const ends[NUM_PEM_TYPES] =
+{
+    "-----END RSA PRIVATE KEY-----",
+    "-----END ENCRYPTED PRIVATE KEY-----",
+    "-----END CERTIFICATE-----",
+};
+
+static const char * const aes_str[2] =
+{
+    "DEK-Info: AES-128-CBC,",
+    "DEK-Info: AES-256-CBC," 
+};
+
+/**
+ * Take a base64 blob of data and decrypt it (using AES) into its 
+ * proper ASN.1 form.
+ */
+static int pem_decrypt(const char *where, const char *end,
+                        const char *password, SSLObjLoader *ssl_obj)
+{
+    int ret = -1;
+    int is_aes_256 = 0;
+    char *start = NULL;
+    uint8_t iv[IV_SIZE];
+    int i, pem_size;
+    MD5_CTX md5_ctx;
+    AES_CTX aes_ctx;
+    uint8_t key[32];        /* AES256 size */
+
+    if (password == NULL || strlen(password) == 0)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: Need a password for this PEM file\n"); TTY_FLUSH();
+#endif
+        goto error;
+    }
+
+    if ((start = strstr((const char *)where, aes_str[0])))         /* AES128? */
+    {
+        start += strlen(aes_str[0]);
+    }
+    else if ((start = strstr((const char *)where, aes_str[1])))    /* AES256? */
+    {
+        is_aes_256 = 1;
+        start += strlen(aes_str[1]);
+    }
+    else 
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: Unsupported password cipher\n"); TTY_FLUSH();
+#endif
+        goto error;
+    }
+
+    /* convert from hex to binary - assumes uppercase hex */
+    for (i = 0; i < IV_SIZE; i++)
+    {
+        char c = *start++ - '0';
+        iv[i] = (c > 9 ? c + '0' - 'A' + 10 : c) << 4;
+        c = *start++ - '0';
+        iv[i] += (c > 9 ? c + '0' - 'A' + 10 : c);
+    }
+
+    while (*start == '\r' || *start == '\n')
+        start++;
+
+    /* turn base64 into binary */
+    pem_size = (int)(end-start);
+    if (base64_decode(start, pem_size, ssl_obj->buf, &ssl_obj->len) != 0)
+        goto error;
+
+    /* work out the key */
+    MD5_Init(&md5_ctx);
+    MD5_Update(&md5_ctx, (const uint8_t *)password, strlen(password));
+    MD5_Update(&md5_ctx, iv, SALT_SIZE);
+    MD5_Final(key, &md5_ctx);
+
+    if (is_aes_256)
+    {
+        MD5_Init(&md5_ctx);
+        MD5_Update(&md5_ctx, key, MD5_SIZE);
+        MD5_Update(&md5_ctx, (const uint8_t *)password, strlen(password));
+        MD5_Update(&md5_ctx, iv, SALT_SIZE);
+        MD5_Final(&key[MD5_SIZE], &md5_ctx);
+    }
+
+    /* decrypt using the key/iv */
+    AES_set_key(&aes_ctx, key, iv, is_aes_256 ? AES_MODE_256 : AES_MODE_128);
+    AES_convert_key(&aes_ctx);
+    AES_cbc_decrypt(&aes_ctx, ssl_obj->buf, ssl_obj->buf, ssl_obj->len);
+    ret = 0;
+
+error:
+    return ret; 
+}
+
+/**
+ * Take a base64 blob of data and turn it into its proper ASN.1 form.
+ */
+static int new_pem_obj(SSL_CTX *ssl_ctx, int is_cacert, char *where, 
+                    int remain, const char *password)
+{
+    int ret = SSL_OK;
+    SSLObjLoader *ssl_obj = NULL;
+    int i, pem_size, obj_type;
+    char *start = NULL, *end = NULL;
+
+    for (i = 0; i < NUM_PEM_TYPES; i++)
+    {
+        if ((start = strstr(where, begins[i])) &&
+                (end = strstr(where, ends[i])))
+        {
+            remain -= (int)(end-start);
+            start += strlen(begins[i]);
+            pem_size = (int)(end-start);
+
+            ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader));
+
+            /* 4/3 bigger than what we need but so what */
+            ssl_obj->buf = (uint8_t *)calloc(1, pem_size);
+
+            if (i == IS_RSA_PRIVATE_KEY && 
+                        strstr(start, "Proc-Type:") && 
+                        strstr(start, "4,ENCRYPTED"))
+            {
+                /* check for encrypted PEM file */
+                if (pem_decrypt(start, end, password, ssl_obj) < 0)
+                    goto error;
+            }
+            else if (base64_decode(start, pem_size, 
+                        ssl_obj->buf, &ssl_obj->len) != 0)
+                goto error;
+
+            switch (i)
+            {
+                case IS_RSA_PRIVATE_KEY:
+                    obj_type = SSL_OBJ_RSA_KEY;
+                    break;
+
+                case IS_ENCRYPTED_PRIVATE_KEY:
+                    obj_type = SSL_OBJ_PKCS8;
+                    break;
+
+                case IS_CERTIFICATE:
+                    obj_type = is_cacert ?
+                                    SSL_OBJ_X509_CACERT : SSL_OBJ_X509_CERT;
+                    break;
+
+                default:
+                    goto error;
+            }
+
+            /* In a format we can now understand - so process it */
+            if ((ret = do_obj(ssl_ctx, obj_type, ssl_obj, password)))
+                goto error;
+
+            end += strlen(ends[i]);
+            remain -= strlen(ends[i]);
+            while (remain > 0 && (*end == '\r' || *end == '\n'))
+            {
+                end++;
+                remain--;
+            }
+
+            break;
+        }
+    }
+
+    if (i == NUM_PEM_TYPES)
+        goto error;
+
+    /* more PEM stuff to process? */
+    if (remain)
+        ret = new_pem_obj(ssl_ctx, is_cacert, end, remain, password);
+
+error:
+    ssl_obj_free(ssl_obj);
+    return ret;
+}
+
+/*
+ * Load a file into memory that is in ASCII PEM format.
+ */
+static int ssl_obj_PEM_load(SSL_CTX *ssl_ctx, int obj_type, 
+                        SSLObjLoader *ssl_obj, const char *password)
+{
+    char *start;
+
+    /* add a null terminator */
+    ssl_obj->len++;
+    ssl_obj->buf = (uint8_t *)realloc(ssl_obj->buf, ssl_obj->len);
+    ssl_obj->buf[ssl_obj->len-1] = 0;
+    start = (char *)ssl_obj->buf;
+    return new_pem_obj(ssl_ctx, obj_type == SSL_OBJ_X509_CACERT,
+                                start, ssl_obj->len, password);
+}
+#endif /* CONFIG_SSL_HAS_PEM */
+
+/**
+ * Load the key/certificates in memory depending on compile-time and user
+ * options. 
+ */
+int load_key_certs(SSL_CTX *ssl_ctx)
+{
+    int ret = SSL_OK;
+    uint32_t options = ssl_ctx->options;
+#ifdef CONFIG_SSL_GENERATE_X509_CERT 
+    uint8_t *cert_data = NULL;
+    int cert_size;
+    static const char *dn[] = 
+    {
+        CONFIG_SSL_X509_COMMON_NAME,
+        CONFIG_SSL_X509_ORGANIZATION_NAME,
+        CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME
+    };
+#endif
+
+    /* do the private key first */
+    if (strlen(CONFIG_SSL_PRIVATE_KEY_LOCATION) > 0)
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, 
+                                CONFIG_SSL_PRIVATE_KEY_LOCATION,
+                                CONFIG_SSL_PRIVATE_KEY_PASSWORD)) < 0)
+            goto error;
+    }
+    else if (!(options & SSL_NO_DEFAULT_KEY))
+    {
+#if defined(CONFIG_SSL_USE_DEFAULT_KEY) || defined(CONFIG_SSL_SKELETON_MODE)
+        static const    /* saves a few more bytes */
+#include "private_key.h"
+
+        ssl_obj_memory_load(ssl_ctx, SSL_OBJ_RSA_KEY, default_private_key,
+                default_private_key_len, NULL); 
+#endif
+    }
+
+    /* now load the certificate */
+#ifdef CONFIG_SSL_GENERATE_X509_CERT 
+    if ((cert_size = ssl_x509_create(ssl_ctx, 0, dn, &cert_data)) < 0)
+    {
+        ret = cert_size;
+        goto error;
+    }
+
+    ssl_obj_memory_load(ssl_ctx, SSL_OBJ_X509_CERT, cert_data, cert_size, NULL);
+    free(cert_data);
+#else
+    if (strlen(CONFIG_SSL_X509_CERT_LOCATION))
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, 
+                                CONFIG_SSL_X509_CERT_LOCATION, NULL)) < 0)
+            goto error;
+    }
+    else if (!(options & SSL_NO_DEFAULT_KEY))
+    {
+#if defined(CONFIG_SSL_USE_DEFAULT_KEY) || defined(CONFIG_SSL_SKELETON_MODE)
+        static const    /* saves a few bytes and RAM */
+#include "cert.h"
+        ssl_obj_memory_load(ssl_ctx, SSL_OBJ_X509_CERT, 
+                    default_certificate, default_certificate_len, NULL);
+#endif
+    }
+#endif
+
+error:
+#ifdef CONFIG_SSL_FULL_MODE
+    if (ret)
+    {
+        printf("Error: Certificate or key not loaded\n"); TTY_FLUSH();
+    }
+#endif
+
+    return ret;
+
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c
new file mode 100644 (file)
index 0000000..b6b9550
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Enable a subset of openssl compatible functions. We don't aim to be 100%
+ * compatible - just to be able to do basic ports etc.
+ *
+ * Only really tested on mini_httpd, so I'm not too sure how extensive this
+ * port is.
+ */
+
+#include "config.h"
+
+#ifdef CONFIG_OPENSSL_COMPATIBLE
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include "ssl.h"
+
+#define OPENSSL_CTX_ATTR  ((OPENSSL_CTX *)ssl_ctx->bonus_attr)
+
+static char *key_password = NULL;
+
+void *SSLv23_server_method(void) { return NULL; }
+void *SSLv3_server_method(void) { return NULL; }
+void *TLSv1_server_method(void) { return NULL; }
+void *SSLv23_client_method(void) { return NULL; }
+void *SSLv3_client_method(void) { return NULL; }
+void *TLSv1_client_method(void) { return NULL; }
+
+typedef void * (*ssl_func_type_t)(void);
+typedef void * (*bio_func_type_t)(void);
+
+typedef struct
+{
+    ssl_func_type_t ssl_func_type;
+} OPENSSL_CTX;
+
+SSL_CTX * SSL_CTX_new(ssl_func_type_t meth)
+{
+    SSL_CTX *ssl_ctx = ssl_ctx_new(0, 5);
+    ssl_ctx->bonus_attr = malloc(sizeof(OPENSSL_CTX));
+    OPENSSL_CTX_ATTR->ssl_func_type = meth;
+    return ssl_ctx;
+}
+
+void SSL_CTX_free(SSL_CTX * ssl_ctx)
+{
+    free(ssl_ctx->bonus_attr);
+    ssl_ctx_free(ssl_ctx);
+}
+
+SSL * SSL_new(SSL_CTX *ssl_ctx)
+{
+    SSL *ssl;
+    ssl_func_type_t ssl_func_type;
+
+    ssl = ssl_new(ssl_ctx, -1);        /* fd is set later */
+    ssl_func_type = OPENSSL_CTX_ATTR->ssl_func_type;
+
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+    if (ssl_func_type == SSLv23_client_method ||
+        ssl_func_type == SSLv3_client_method ||
+        ssl_func_type == TLSv1_client_method)
+    {
+        SET_SSL_FLAG(SSL_IS_CLIENT);
+    }
+    else
+#endif
+    {
+        ssl->next_state = HS_CLIENT_HELLO;
+    }
+
+    return ssl;
+}
+
+int SSL_set_fd(SSL *s, int fd)
+{
+    s->client_fd = fd;
+    return 1;   /* always succeeds */
+}
+
+int SSL_accept(SSL *ssl)
+{
+    while (ssl_read(ssl, NULL) == SSL_OK)
+    {
+        if (ssl->next_state == HS_CLIENT_HELLO)
+            return 1;   /* we're done */
+    }
+
+    return -1;
+}
+
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+int SSL_connect(SSL *ssl)
+{
+    return do_client_connect(ssl) == SSL_OK ? 1 : -1;
+}
+#endif
+
+void SSL_free(SSL *ssl)
+{
+    ssl_free(ssl);
+}
+
+int SSL_read(SSL *ssl, void *buf, int num)
+{
+    uint8_t *read_buf;
+    int ret;
+
+    while ((ret = ssl_read(ssl, &read_buf)) == SSL_OK);
+
+    if (ret > SSL_OK)
+    {
+        memcpy(buf, read_buf, ret > num ? num : ret);
+    }
+
+    return ret;
+}
+
+int SSL_write(SSL *ssl, const void *buf, int num)
+{
+    return ssl_write(ssl, buf, num);
+}
+
+int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type)
+{
+    return (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, file, NULL) == SSL_OK);
+}
+
+int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type)
+{
+    return (ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, file, key_password) == SSL_OK);
+}
+
+int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d)
+{
+    return (ssl_obj_memory_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, d, len, NULL) == SSL_OK);
+}
+
+int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx,
+                                            unsigned int sid_ctx_len)
+{
+    return 1;
+}
+
+int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx)
+{
+    return 1;
+}
+
+int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file)
+{
+    return (ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, file, NULL) == SSL_OK);
+}
+
+int SSL_shutdown(SSL *ssl)
+{
+    return 1;
+}
+
+/*** get/set session ***/
+SSL_SESSION *SSL_get1_session(SSL *ssl)
+{
+    return (SSL_SESSION *)ssl_get_session_id(ssl); /* note: wrong cast */
+}
+
+int SSL_set_session(SSL *ssl, SSL_SESSION *session)
+{
+    memcpy(ssl->session_id, (uint8_t *)session, SSL_SESSION_ID_SIZE);
+    return 1;
+}
+
+void SSL_SESSION_free(SSL_SESSION *session) { }
+/*** end get/set session ***/
+
+long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
+{
+    return 0;
+}
+
+void SSL_CTX_set_verify(SSL_CTX *ctx, int mode,
+                                 int (*verify_callback)(int, void *)) { }
+
+void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth) { }
+
+int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
+                                           const char *CApath)
+{
+    return 1;
+}
+
+void *SSL_load_client_CA_file(const char *file)
+{
+    return (void *)file;
+}
+
+void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file) 
+{ 
+
+    ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, (const char *)file, NULL);
+}
+
+void SSLv23_method(void) { }
+
+void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb) { }
+
+void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u) 
+{ 
+    key_password = (char *)u;
+}
+
+int SSL_peek(SSL *ssl, void *buf, int num)
+{
+    memcpy(buf, ssl->bm_data, num);
+    return num;
+}
+
+void SSL_set_bio(SSL *ssl, void *rbio, void *wbio) { }
+
+long SSL_get_verify_result(const SSL *ssl)
+{
+    return ssl_handshake_status(ssl);
+}
+
+int SSL_state(SSL *ssl)
+{
+    return 0x03; // ok state
+}
+
+/** end of could do better list */
+
+void *SSL_get_peer_certificate(const SSL *ssl)
+{
+    return &ssl->ssl_ctx->certs[0];
+}
+
+int SSL_clear(SSL *ssl)
+{
+    return 1;
+}
+
+
+int SSL_CTX_check_private_key(const SSL_CTX *ctx)
+{
+    return 1;
+}
+
+int SSL_CTX_set_cipher_list(SSL *s, const char *str)
+{
+    return 1;
+}
+
+int SSL_get_error(const SSL *ssl, int ret)
+{
+    ssl_display_error(ret);
+    return 0;   /* TODO: return proper return code */
+}
+
+void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option) {}
+int SSL_library_init(void ) { return 1; }
+void SSL_load_error_strings(void ) {}
+void ERR_print_errors_fp(FILE *fp) {}
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx) { 
+                            return CONFIG_SSL_EXPIRY_TIME*3600; }
+long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t) { 
+                            return SSL_CTX_get_timeout(ssl_ctx); }
+#endif
+void BIO_printf(FILE *f, const char *format, ...)
+{
+    va_list(ap);
+    va_start(ap, format);
+    vfprintf(f, format, ap);
+    va_end(ap);
+}
+
+void* BIO_s_null(void) { return NULL; }
+FILE *BIO_new(bio_func_type_t func)
+{
+    if (func == BIO_s_null)
+        return fopen("/dev/null", "r");
+    else
+        return NULL;
+}
+
+FILE *BIO_new_fp(FILE *stream, int close_flag) { return stream; }
+int BIO_free(FILE *a) { if (a != stdout && a != stderr) fclose(a); return 1; }
+
+
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c
new file mode 100644 (file)
index 0000000..6a71000
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file os_port.c
+ *
+ * OS specific functions.
+ */
+#include <time.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdarg.h>
+#include "os_port.h"
+
+#ifdef WIN32
+/**
+ * gettimeofday() not in Win32 
+ */
+EXP_FUNC void STDCALL gettimeofday(struct timeval* t, void* timezone)
+{       
+#if defined(_WIN32_WCE)
+    t->tv_sec = time(NULL);
+    t->tv_usec = 0;                         /* 1sec precision only */ 
+#else
+    struct _timeb timebuffer;
+    _ftime(&timebuffer);
+    t->tv_sec = (long)timebuffer.time;
+    t->tv_usec = 1000 * timebuffer.millitm; /* 1ms precision */
+#endif
+}
+
+/**
+ * strcasecmp() not in Win32
+ */
+EXP_FUNC int STDCALL strcasecmp(const char *s1, const char *s2)
+{
+    while (tolower(*s1) == tolower(*s2++))
+    {
+        if (*s1++ == '\0')
+        {
+            return 0;
+        }
+    }
+
+    return *(unsigned char *)s1 - *(unsigned char *)(s2 - 1);
+}
+
+
+EXP_FUNC int STDCALL getdomainname(char *buf, int buf_size)
+{
+    HKEY hKey;
+    unsigned long datatype;
+    unsigned long bufferlength = buf_size;
+
+    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+            TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"),
+                        0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
+        return -1;
+
+    RegQueryValueEx(hKey, "Domain", NULL, &datatype, buf, &bufferlength);
+    RegCloseKey(hKey);
+    return 0; 
+}
+#endif
+
+#undef malloc
+#undef realloc
+#undef calloc
+
+static const char * out_of_mem_str = "out of memory";
+static const char * file_open_str = "Could not open file \"%s\"";
+
+/* 
+ * Some functions that call display some error trace and then call abort().
+ * This just makes life much easier on embedded systems, since we're 
+ * suffering major trauma...
+ */
+EXP_FUNC void * STDCALL ax_malloc(size_t s)
+{
+    void *x;
+
+    if ((x = malloc(s)) == NULL)
+        exit_now(out_of_mem_str);
+
+    return x;
+}
+
+EXP_FUNC void * STDCALL ax_realloc(void *y, size_t s)
+{
+    void *x;
+
+    if ((x = realloc(y, s)) == NULL)
+        exit_now(out_of_mem_str);
+
+    return x;
+}
+
+EXP_FUNC void * STDCALL ax_calloc(size_t n, size_t s)
+{
+    void *x;
+
+    if ((x = calloc(n, s)) == NULL)
+        exit_now(out_of_mem_str);
+
+    return x;
+}
+
+EXP_FUNC int STDCALL ax_open(const char *pathname, int flags)
+{
+    int x;
+
+    if ((x = open(pathname, flags)) < 0)
+        exit_now(file_open_str, pathname);
+
+    return x;
+}
+
+/**
+ * This is a call which will deliberately exit an application, but will
+ * display some information before dying.
+ */
+void exit_now(const char *format, ...)
+{
+    va_list argp;
+
+    va_start(argp, format);
+    vfprintf(stderr, format, argp);
+    va_end(argp);
+    abort();
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h
new file mode 100644 (file)
index 0000000..262c4dd
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file os_port.h
+ *
+ * Some stuff to minimise the differences between windows and linux/unix
+ */
+
+#ifndef HEADER_OS_PORT_H
+#define HEADER_OS_PORT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#if defined(WIN32)
+#define STDCALL                 __stdcall
+#define EXP_FUNC                __declspec(dllexport)
+#else
+#define STDCALL
+#define EXP_FUNC
+#endif
+
+#if defined(_WIN32_WCE)
+#undef WIN32
+#define WIN32
+#endif
+
+#ifdef WIN32
+
+/* Windows CE stuff */
+#if defined(_WIN32_WCE)
+#include <basetsd.h>
+#define abort()                 exit(1)
+#else
+#include <io.h>
+#include <process.h>
+#include <sys/timeb.h>
+#include <fcntl.h>
+#endif      /* _WIN32_WCE */
+
+#include <winsock.h>
+#include <direct.h>
+#undef getpid
+#undef open
+#undef close
+#undef sleep
+#undef gettimeofday
+#undef dup2
+#undef unlink
+
+#define SOCKET_READ(A,B,C)      recv(A,B,C,0)
+#define SOCKET_WRITE(A,B,C)     send(A,B,C,0)
+#define SOCKET_CLOSE(A)         closesocket(A)
+#define SOCKET_BLOCK(A)         u_long argp = 0; \
+                                ioctlsocket(A, FIONBIO, &argp)
+#define srandom(A)              srand(A)
+#define random()                rand()
+#define getpid()                _getpid()
+#define snprintf                _snprintf
+#define open(A,B)               _open(A,B)
+#define dup2(A,B)               _dup2(A,B)
+#define unlink(A)               _unlink(A)
+#define close(A)                _close(A)
+#define read(A,B,C)             _read(A,B,C)
+#define write(A,B,C)            _write(A,B,C)
+#define sleep(A)                Sleep(A*1000)
+#define usleep(A)               Sleep(A/1000)
+#define strdup(A)               _strdup(A)
+#define chroot(A)               _chdir(A)
+#define chdir(A)                _chdir(A)
+#define alloca(A)               _alloca(A)
+#ifndef lseek
+#define lseek(A,B,C)            _lseek(A,B,C)
+#endif
+
+/* This fix gets around a problem where a win32 application on a cygwin xterm
+   doesn't display regular output (until a certain buffer limit) - but it works
+   fine under a normal DOS window. This is a hack to get around the issue - 
+   see http://www.khngai.com/emacs/tty.php  */
+#define TTY_FLUSH()             if (!_isatty(_fileno(stdout))) fflush(stdout);
+
+/*
+ * automatically build some library dependencies.
+ */
+#pragma comment(lib, "WS2_32.lib")
+#pragma comment(lib, "AdvAPI32.lib")
+
+typedef UINT8 uint8_t;
+typedef INT8 int8_t;
+typedef UINT16 uint16_t;
+typedef INT16 int16_t;
+typedef UINT32 uint32_t;
+typedef INT32 int32_t;
+typedef UINT64 uint64_t;
+typedef INT64 int64_t;
+typedef int socklen_t;
+
+EXP_FUNC void STDCALL gettimeofday(struct timeval* t,void* timezone);
+EXP_FUNC int STDCALL strcasecmp(const char *s1, const char *s2);
+EXP_FUNC int STDCALL getdomainname(char *buf, int buf_size);
+
+#else   /* Not Win32 */
+
+#ifdef CONFIG_PLATFORM_SOLARIS
+#include <inttypes.h>
+#else
+#include <stdint.h>
+#endif /* Not Solaris */
+
+#include <unistd.h>
+#include <pwd.h>
+#include <netdb.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#define SOCKET_READ(A,B,C)      read(A,B,C)
+#define SOCKET_WRITE(A,B,C)     write(A,B,C)
+#define SOCKET_CLOSE(A)         close(A)
+#define SOCKET_BLOCK(A)         int fd = fcntl(A, F_GETFL, NULL); \
+                                fcntl(A, F_SETFL, fd & ~O_NONBLOCK)
+#define TTY_FLUSH()
+
+#endif  /* Not Win32 */
+
+/* some functions to mutate the way these work */
+#define malloc(A)       ax_malloc(A)
+#ifndef realloc
+#define realloc(A,B)    ax_realloc(A,B)
+#endif
+#define calloc(A,B)     ax_calloc(A,B)
+
+EXP_FUNC void * STDCALL ax_malloc(size_t s);
+EXP_FUNC void * STDCALL ax_realloc(void *y, size_t s);
+EXP_FUNC void * STDCALL ax_calloc(size_t n, size_t s);
+EXP_FUNC int STDCALL ax_open(const char *pathname, int flags); 
+
+#ifdef CONFIG_PLATFORM_LINUX
+void exit_now(const char *format, ...) __attribute((noreturn));
+#else
+void exit_now(const char *format, ...);
+#endif
+
+/* Mutexing definitions */
+#if defined(CONFIG_SSL_CTX_MUTEXING)
+#if defined(WIN32)
+#define SSL_CTX_MUTEX_TYPE          HANDLE
+#define SSL_CTX_MUTEX_INIT(A)       A=CreateMutex(0, FALSE, 0)
+#define SSL_CTX_MUTEX_DESTROY(A)    CloseHandle(A)
+#define SSL_CTX_LOCK(A)             WaitForSingleObject(A, INFINITE)
+#define SSL_CTX_UNLOCK(A)           ReleaseMutex(A)
+#else 
+#include <pthread.h>
+#define SSL_CTX_MUTEX_TYPE          pthread_mutex_t
+#define SSL_CTX_MUTEX_INIT(A)       pthread_mutex_init(&A, NULL)
+#define SSL_CTX_MUTEX_DESTROY(A)    pthread_mutex_destroy(&A)
+#define SSL_CTX_LOCK(A)             pthread_mutex_lock(&A)
+#define SSL_CTX_UNLOCK(A)           pthread_mutex_unlock(&A)
+#endif
+#else   /* no mutexing */
+#define SSL_CTX_MUTEX_INIT(A)
+#define SSL_CTX_MUTEX_DESTROY(A)
+#define SSL_CTX_LOCK(A)
+#define SSL_CTX_UNLOCK(A)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c
new file mode 100644 (file)
index 0000000..6ed92e4
--- /dev/null
@@ -0,0 +1,486 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Process PKCS#8/PKCS#12 keys.
+ *
+ * The decoding of a PKCS#12 key is fairly specific - this code was tested on a
+ * key generated with:
+ *
+ * openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem
+ * -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 
+ * -name "p12_withoutCA" -out axTLS.withoutCA.p12 -password pass:abcd
+ *
+ * or with a certificate chain:
+ *
+ * openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem
+ * -certfile axTLS.ca_x509.pem -keypbe PBE-SHA1-RC4-128 -certpbe
+ * PBE-SHA1-RC4-128 -name "p12_withCA" -out axTLS.withCA.p12 -password pass:abcd
+ *
+ * Note that the PBE has to be specified with PBE-SHA1-RC4-128. The
+ * private/public keys/certs have to use RSA encryption. Both the integrity
+ * and privacy passwords are the same.
+ *
+ * The PKCS#8 files were generated with something like:
+ *
+ * PEM format:
+ * openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -v1
+ * PBE-SHA1-RC4-128 -out axTLS.encrypted_pem.p8
+ *
+ * DER format:
+ * openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -outform DER
+ * -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted.p8
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "ssl.h"
+
+/* all commented out if not used */
+#ifdef CONFIG_SSL_USE_PKCS12
+
+#define BLOCK_SIZE          64
+#define PKCS12_KEY_ID       1
+#define PKCS12_IV_ID        2
+#define PKCS12_MAC_ID       3
+
+static char *make_uni_pass(const char *password, int *uni_pass_len);
+static int p8_decrypt(const char *uni_pass, int uni_pass_len, 
+                        const uint8_t *salt, int iter, 
+                        uint8_t *priv_key, int priv_key_len, int id);
+static int p8_add_key(SSL_CTX *ssl_ctx, uint8_t *priv_key);
+static int get_pbe_params(uint8_t *buf, int *offset, 
+        const uint8_t **salt, int *iterations);
+
+/*
+ * Take a raw pkcs8 block and then decrypt it and turn it into a normal key.
+ */
+int pkcs8_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password)
+{
+    uint8_t *buf = ssl_obj->buf;
+    int len, offset = 0;
+    int iterations;
+    int ret = SSL_NOT_OK;
+    uint8_t *version = NULL;
+    const uint8_t *salt;
+    uint8_t *priv_key;
+    int uni_pass_len;
+    char *uni_pass = make_uni_pass(password, &uni_pass_len);
+
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: Invalid p8 ASN.1 file\n");
+#endif
+        goto error;
+    }
+
+    /* unencrypted key? */
+    if (asn1_get_int(buf, &offset, &version) > 0 && *version == 0)
+    {
+        ret = p8_add_key(ssl_ctx, buf);
+        goto error;
+    }
+
+    if (get_pbe_params(buf, &offset, &salt, &iterations) < 0)
+        goto error;
+
+    if ((len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0)
+        goto error;
+
+    priv_key = &buf[offset];
+
+    p8_decrypt(uni_pass, uni_pass_len, salt, 
+                        iterations, priv_key, len, PKCS12_KEY_ID);
+    ret = p8_add_key(ssl_ctx, priv_key);
+
+error:
+    free(version);
+    free(uni_pass);
+    return ret;
+}
+
+/*
+ * Take the unencrypted pkcs8 and turn it into a private key 
+ */
+static int p8_add_key(SSL_CTX *ssl_ctx, uint8_t *priv_key)
+{
+    uint8_t *buf = priv_key;
+    int len, offset = 0;
+    int ret = SSL_NOT_OK;
+
+    /* Skip the preamble and go straight to the private key.
+       We only support rsaEncryption (1.2.840.113549.1.1.1)  */
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_skip_obj(buf, &offset, ASN1_INTEGER) < 0 ||
+            asn1_skip_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0)
+        goto error;
+
+    ret = asn1_get_private_key(&buf[offset], len, &ssl_ctx->rsa_ctx);
+
+error:
+    return ret;
+}
+
+/*
+ * Create the unicode password 
+ */
+static char *make_uni_pass(const char *password, int *uni_pass_len)
+{
+    int pass_len = 0, i;
+    char *uni_pass;
+
+    if (password == NULL)
+    {
+        password = "";
+    }
+
+    uni_pass = (char *)malloc((strlen(password)+1)*2);
+
+    /* modify the password into a unicode version */
+    for (i = 0; i < (int)strlen(password); i++)
+    {
+        uni_pass[pass_len++] = 0;
+        uni_pass[pass_len++] = password[i];
+    }
+
+    uni_pass[pass_len++] = 0;       /* null terminate */
+    uni_pass[pass_len++] = 0;
+    *uni_pass_len = pass_len;
+    return uni_pass;
+}
+
+/*
+ * Decrypt a pkcs8 block.
+ */
+static int p8_decrypt(const char *uni_pass, int uni_pass_len,
+                        const uint8_t *salt, int iter, 
+                        uint8_t *priv_key, int priv_key_len, int id)
+{
+    uint8_t p[BLOCK_SIZE*2];
+    uint8_t d[BLOCK_SIZE];
+    uint8_t Ai[SHA1_SIZE];
+    SHA1_CTX sha_ctx;
+    RC4_CTX rc4_ctx;
+    int i;
+
+    for (i = 0; i < BLOCK_SIZE; i++)
+    {
+        p[i] = salt[i % SALT_SIZE];
+        p[BLOCK_SIZE+i] = uni_pass[i % uni_pass_len];
+        d[i] = id;
+    }
+
+    /* get the key - no IV since we are using RC4 */
+    SHA1_Init(&sha_ctx);
+    SHA1_Update(&sha_ctx, d, sizeof(d));
+    SHA1_Update(&sha_ctx, p, sizeof(p));
+    SHA1_Final(Ai, &sha_ctx);
+
+    for (i = 1; i < iter; i++)
+    {
+        SHA1_Init(&sha_ctx);
+        SHA1_Update(&sha_ctx, Ai, SHA1_SIZE);
+        SHA1_Final(Ai, &sha_ctx);
+    }
+
+    /* do the decryption */
+    if (id == PKCS12_KEY_ID)
+    {
+        RC4_setup(&rc4_ctx, Ai, 16);
+        RC4_crypt(&rc4_ctx, priv_key, priv_key, priv_key_len);
+    }
+    else  /* MAC */
+        memcpy(priv_key, Ai, SHA1_SIZE);
+
+    return 0;
+}
+
+/*
+ * Take a raw pkcs12 block and the decrypt it and turn it into a certificate(s)
+ * and keys.
+ */
+int pkcs12_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password)
+{
+    uint8_t *buf = ssl_obj->buf;
+    int all_ok = 0, len, iterations, auth_safes_start, 
+              auth_safes_end, auth_safes_len, key_offset, offset = 0;
+    int all_certs = 0;
+    uint8_t *version = NULL, *auth_safes = NULL, *cert, *orig_mac;
+    uint8_t key[SHA1_SIZE];
+    uint8_t mac[SHA1_SIZE];
+    const uint8_t *salt;
+    int uni_pass_len, ret;
+    int error_code = SSL_ERROR_NOT_SUPPORTED;
+    char *uni_pass = make_uni_pass(password, &uni_pass_len);
+    static const uint8_t pkcs_data[] = /* pkc7 data */
+        { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01 };
+    static const uint8_t pkcs_encrypted[] = /* pkc7 encrypted */
+        { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x06 };
+    static const uint8_t pkcs8_key_bag[] = /* 1.2.840.113549.1.12.10.1.2 */
+        { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x0a, 0x01, 0x02 };
+
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: Invalid p12 ASN.1 file\n");
+#endif
+        goto error;
+    }
+
+    if (asn1_get_int(buf, &offset, &version) < 0 || *version != 3)
+    {
+        error_code = SSL_ERROR_INVALID_VERSION;
+        goto error;
+    }
+
+    /* remove all the boring pcks7 bits */
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || 
+                (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 ||
+                len != sizeof(pkcs_data) || 
+                memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data)))
+        goto error;
+
+    offset += len;
+
+    if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_OCTET_STRING) < 0)
+        goto error;
+
+    /* work out the MAC start/end points (done on AuthSafes) */
+    auth_safes_start = offset;
+    auth_safes_end = offset;
+    if (asn1_skip_obj(buf, &auth_safes_end, ASN1_SEQUENCE) < 0)
+        goto error;
+
+    auth_safes_len = auth_safes_end - auth_safes_start;
+    auth_safes = malloc(auth_safes_len);
+
+    memcpy(auth_safes, &buf[auth_safes_start], auth_safes_len);
+
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 ||
+            (len != sizeof(pkcs_encrypted) || 
+            memcmp(&buf[offset], pkcs_encrypted, sizeof(pkcs_encrypted))))
+        goto error;
+
+    offset += len;
+
+    if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_skip_obj(buf, &offset, ASN1_INTEGER) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 ||
+            len != sizeof(pkcs_data) || 
+            memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data)))
+        goto error;
+
+    offset += len;
+
+    /* work out the salt for the certificate */
+    if (get_pbe_params(buf, &offset, &salt, &iterations) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_IMPLICIT_TAG)) < 0)
+        goto error;
+
+    /* decrypt the certificate */
+    cert = &buf[offset];
+    if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, cert, 
+                            len, PKCS12_KEY_ID)) < 0)
+        goto error;
+
+    offset += len;
+
+    /* load the certificate */
+    key_offset = 0;
+    all_certs = asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE);
+
+    /* keep going until all certs are loaded */
+    while (key_offset < all_certs)
+    {
+        int cert_offset = key_offset;
+
+        if (asn1_skip_obj(cert, &cert_offset, ASN1_SEQUENCE) < 0 ||
+                asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE) < 0 ||
+                asn1_skip_obj(cert, &key_offset, ASN1_OID) < 0 ||
+                asn1_next_obj(cert, &key_offset, ASN1_EXPLICIT_TAG) < 0 ||
+                asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE) < 0 ||
+                asn1_skip_obj(cert, &key_offset, ASN1_OID) < 0 ||
+                asn1_next_obj(cert, &key_offset, ASN1_EXPLICIT_TAG) < 0 ||
+                (len = asn1_next_obj(cert, &key_offset, ASN1_OCTET_STRING)) < 0)
+            goto error;
+
+        if ((ret = add_cert(ssl_ctx, &cert[key_offset], len)) < 0)
+            goto error;
+
+        key_offset = cert_offset;
+    }
+
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 ||
+            len != sizeof(pkcs_data) || 
+            memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data)))
+        goto error;
+
+    offset += len;
+
+    if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_OCTET_STRING) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 ||
+            (len != sizeof(pkcs8_key_bag)) || 
+            memcmp(&buf[offset], pkcs8_key_bag, sizeof(pkcs8_key_bag)))
+        goto error;
+
+    offset += len;
+
+    /* work out the salt for the private key */
+    if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            get_pbe_params(buf, &offset, &salt, &iterations) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0)
+        goto error;
+
+    /* decrypt the private key */
+    cert = &buf[offset];
+    if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, cert, 
+                            len, PKCS12_KEY_ID)) < 0)
+        goto error;
+
+    offset += len;
+
+    /* load the private key */
+    if ((ret = p8_add_key(ssl_ctx, cert)) < 0)
+        goto error;
+
+    /* miss out on friendly name, local key id etc */
+    if (asn1_skip_obj(buf, &offset, ASN1_SET) < 0)
+        goto error;
+
+    /* work out the MAC */
+    if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            asn1_skip_obj(buf, &offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0 ||
+            len != SHA1_SIZE)
+        goto error;
+
+    orig_mac = &buf[offset];
+    offset += len;
+
+    /* get the salt */
+    if ((len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0 || len != 8)
+        goto error;
+
+    salt = &buf[offset];
+
+    /* work out what the mac should be */
+    if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, 
+                            key, SHA1_SIZE, PKCS12_MAC_ID)) < 0)
+        goto error;
+
+    hmac_sha1(auth_safes, auth_safes_len, key, SHA1_SIZE, mac);
+
+    if (memcmp(mac, orig_mac, SHA1_SIZE))
+    {
+        error_code = SSL_ERROR_INVALID_HMAC;                  
+        goto error;
+    }
+
+    all_ok = 1;
+
+error:
+    free(version);
+    free(uni_pass);
+    free(auth_safes);
+    return all_ok ? SSL_OK : error_code;
+}
+
+/*
+ * Retrieve the salt/iteration details from a PBE block.
+ */
+static int get_pbe_params(uint8_t *buf, int *offset, 
+        const uint8_t **salt, int *iterations)
+{
+    static const uint8_t pbeSH1RC4[] = /* pbeWithSHAAnd128BitRC4  */
+            { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x01, 0x01 };
+
+    int i, len;
+    uint8_t *iter = NULL;
+    int error_code = SSL_ERROR_NOT_SUPPORTED;
+
+    /* Get the PBE type */
+    if (asn1_next_obj(buf, offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, offset, ASN1_OID)) < 0)
+        goto error;
+
+    /* we expect pbeWithSHAAnd128BitRC4 (1.2.840.113549.1.12.1.1) 
+       which is the only algorithm we support */
+    if (len != sizeof(pbeSH1RC4) || 
+                    memcmp(&buf[*offset], pbeSH1RC4, sizeof(pbeSH1RC4)))
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: pkcs8/pkcs12 must use \"PBE-SHA1-RC4-128\"\n");
+#endif
+        goto error;
+    }
+
+    *offset += len;
+
+    if (asn1_next_obj(buf, offset, ASN1_SEQUENCE) < 0 ||
+            (len = asn1_next_obj(buf, offset, ASN1_OCTET_STRING)) < 0 || 
+            len != 8)
+        goto error;
+
+    *salt = &buf[*offset];
+    *offset += len;
+
+    if ((len = asn1_get_int(buf, offset, &iter)) < 0)
+        goto error;
+
+    *iterations = 0;
+    for (i = 0; i < len; i++)
+    {
+        (*iterations) <<= 8;
+        (*iterations) += iter[i];
+    }
+
+    free(iter);
+    error_code = SSL_OK;       /* got here - we are ok */
+
+error:
+    return error_code;
+}
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h
new file mode 100644 (file)
index 0000000..96a5253
--- /dev/null
@@ -0,0 +1,54 @@
+unsigned char default_private_key[] = {
+  0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xd8,
+  0xe0, 0xbf, 0x15, 0xde, 0xea, 0xaf, 0xe8, 0xd5, 0xfd, 0x0b, 0xa8, 0xa8,
+  0xb3, 0xd7, 0x46, 0x5d, 0xa7, 0x26, 0x6c, 0x0c, 0xb5, 0xd9, 0xbc, 0xc6,
+  0xf8, 0xc0, 0x78, 0xd0, 0xf6, 0x56, 0x65, 0xf8, 0x29, 0x48, 0x0e, 0x7b,
+  0x0b, 0xa6, 0x25, 0x7e, 0xe8, 0x7b, 0x79, 0x6f, 0x38, 0xe5, 0xb5, 0xb7,
+  0xf4, 0xe0, 0x9c, 0x91, 0x60, 0xf4, 0x06, 0xf3, 0x40, 0x1e, 0xf9, 0x91,
+  0x19, 0xa9, 0x2f, 0x47, 0x43, 0xb5, 0x9b, 0x1e, 0xdc, 0xf6, 0xaa, 0x1c,
+  0x49, 0x79, 0x21, 0x28, 0xcb, 0xaa, 0x49, 0x73, 0xd9, 0x09, 0x05, 0x4c,
+  0x02, 0xf2, 0x4c, 0x4d, 0x6c, 0x1c, 0x80, 0xa7, 0x14, 0x91, 0x44, 0xfc,
+  0x12, 0xb3, 0xe1, 0xe7, 0xe3, 0x4f, 0x44, 0xba, 0x8c, 0xc3, 0x74, 0x39,
+  0xe8, 0x4c, 0xd0, 0xd4, 0x4c, 0x24, 0x61, 0xb4, 0x40, 0x95, 0x8c, 0xc0,
+  0x0a, 0xb7, 0x02, 0x39, 0x31, 0x85, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01,
+  0x02, 0x81, 0x81, 0x00, 0x94, 0x07, 0x72, 0xe5, 0xbe, 0xad, 0x79, 0x3b,
+  0xf7, 0x33, 0x2c, 0x8e, 0x05, 0xf8, 0x1a, 0x6b, 0xd0, 0xe8, 0x91, 0xf5,
+  0x16, 0x07, 0xd9, 0x82, 0x5c, 0x5c, 0xd5, 0x22, 0xa1, 0x9e, 0x42, 0x02,
+  0x7f, 0x8b, 0xcd, 0xbe, 0xf4, 0x85, 0x52, 0xf6, 0x2c, 0xd5, 0x09, 0xd2,
+  0x2c, 0xf4, 0x2c, 0xf6, 0x07, 0x85, 0x80, 0xf9, 0xdc, 0xd0, 0xcc, 0x3f,
+  0x22, 0x31, 0x15, 0xf3, 0x49, 0xf2, 0xb5, 0xe2, 0x69, 0x99, 0x04, 0x04,
+  0x49, 0x21, 0xdb, 0x9f, 0xa1, 0x54, 0x5a, 0xfa, 0xe4, 0xd9, 0xf9, 0x07,
+  0x05, 0xff, 0x9a, 0x65, 0xa4, 0xeb, 0xf2, 0x47, 0xce, 0x56, 0xc7, 0x72,
+  0x49, 0x48, 0x5c, 0xe8, 0x14, 0xd7, 0x8f, 0x25, 0xcc, 0x49, 0x29, 0x06,
+  0x6a, 0x54, 0x7b, 0x17, 0xdc, 0x9e, 0xd4, 0x53, 0xf0, 0xf5, 0x9e, 0x85,
+  0x25, 0xa1, 0xeb, 0x3d, 0xe9, 0x2f, 0xb9, 0x9c, 0xf6, 0xe1, 0x80, 0x81,
+  0x02, 0x41, 0x00, 0xee, 0x02, 0x78, 0xc7, 0x78, 0x85, 0x04, 0x97, 0xcc,
+  0x36, 0xbd, 0xd6, 0x11, 0xe2, 0xc7, 0x39, 0xd9, 0x34, 0x51, 0x72, 0x6f,
+  0x8a, 0x0f, 0xcd, 0x88, 0x32, 0x33, 0x9b, 0xc7, 0xa7, 0x03, 0x77, 0xd9,
+  0x82, 0x35, 0xb6, 0xdd, 0x1f, 0xc2, 0xc1, 0x13, 0x40, 0x83, 0x55, 0xeb,
+  0x60, 0xeb, 0x81, 0x8e, 0x0c, 0x16, 0x62, 0xb4, 0xb4, 0x3c, 0xeb, 0x08,
+  0x80, 0x9c, 0x79, 0xd3, 0x38, 0xca, 0xf1, 0x02, 0x41, 0x00, 0xe9, 0x45,
+  0x5f, 0x2e, 0x16, 0xcc, 0x93, 0x50, 0x40, 0xb6, 0x79, 0xbc, 0x38, 0xe0,
+  0x56, 0x68, 0x50, 0xd3, 0x2f, 0x73, 0x8c, 0x8c, 0x2a, 0x0e, 0x81, 0x4a,
+  0x8a, 0xbb, 0xcc, 0xf0, 0x64, 0x34, 0x46, 0x9f, 0x07, 0x7d, 0x22, 0xb6,
+  0xf9, 0x46, 0xac, 0x57, 0x23, 0x8c, 0x1e, 0xeb, 0xd3, 0x05, 0x4d, 0xa8,
+  0x83, 0x6a, 0x67, 0xf6, 0xa6, 0xb1, 0xab, 0x8e, 0xc1, 0xef, 0xef, 0x7d,
+  0xf0, 0xc3, 0x02, 0x40, 0x2f, 0xc6, 0x59, 0x3e, 0x18, 0xe8, 0x02, 0x73,
+  0x01, 0xef, 0xdf, 0x0d, 0x30, 0x4b, 0xe8, 0x17, 0xa9, 0x8c, 0xc1, 0xe8,
+  0x89, 0x91, 0x19, 0xf8, 0xf4, 0xa4, 0xb7, 0x0d, 0x46, 0xf7, 0x34, 0x50,
+  0x03, 0x5e, 0x0a, 0xb0, 0x29, 0x14, 0xae, 0x00, 0x19, 0x80, 0x32, 0x9c,
+  0xb5, 0x81, 0x9f, 0xe4, 0x42, 0x82, 0x14, 0xa0, 0x3d, 0x8b, 0x8c, 0x4a,
+  0xd5, 0x4b, 0x13, 0x9d, 0xb4, 0x93, 0x4a, 0xd1, 0x02, 0x40, 0x64, 0x8c,
+  0x83, 0x77, 0x61, 0x5a, 0x73, 0x11, 0x3f, 0xa3, 0xa8, 0x1b, 0x8a, 0xc4,
+  0xa0, 0x5a, 0x3c, 0xa4, 0x9b, 0x2a, 0x8a, 0x65, 0x8c, 0x67, 0x4e, 0x31,
+  0xac, 0x55, 0x41, 0x04, 0x49, 0x9d, 0x02, 0xe7, 0xdf, 0x99, 0x7f, 0xd2,
+  0x30, 0xe6, 0xd6, 0xb8, 0x84, 0xd9, 0x0c, 0x27, 0x08, 0x81, 0x9b, 0xb4,
+  0xcc, 0x58, 0x9c, 0x51, 0x84, 0x0e, 0xc7, 0x6d, 0x34, 0x89, 0x50, 0xc9,
+  0x0f, 0x73, 0x02, 0x41, 0x00, 0xda, 0xde, 0x5e, 0x1a, 0xac, 0x1d, 0x1d,
+  0xd7, 0xb9, 0x65, 0x26, 0x00, 0xf5, 0xd4, 0xe4, 0x28, 0x84, 0x86, 0x2f,
+  0x00, 0x9c, 0x41, 0x00, 0x52, 0xe1, 0x47, 0x91, 0xc0, 0x52, 0x05, 0x4e,
+  0x0f, 0x2f, 0x0d, 0xca, 0x9b, 0x3d, 0x89, 0x41, 0xbf, 0xee, 0x9f, 0xa1,
+  0xe6, 0x9d, 0xa4, 0xeb, 0x45, 0x7f, 0xe3, 0xcb, 0xa4, 0x6b, 0x0a, 0xe2,
+  0x7e, 0xb0, 0x87, 0x5c, 0x40, 0xb1, 0x51, 0x11, 0x1d
+};
+unsigned int default_private_key_len = 609;
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h
new file mode 100644 (file)
index 0000000..539d0a3
--- /dev/null
@@ -0,0 +1,474 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @mainpage axTLS API
+ *
+ * @image html axolotl.jpg
+ *
+ * The axTLS library has features such as:
+ * - The TLSv1 SSL client/server protocol
+ * - No requirement to use any openssl libraries.
+ * - A choice between AES block (128/256 bit) and RC4 (128 bit) stream ciphers.
+ * - RSA encryption/decryption with variable sized keys (up to 4096 bits).
+ * - Certificate chaining and peer authentication.
+ * - Session resumption, session renegotiation.
+ * - ASN.1, X.509, PKCS#8, PKCS#12 keys/certificates with DER/PEM encoding.
+ * - Highly configurable compile time options.
+ * - Portable across many platforms (written in ANSI C), and has language
+ * bindings in C, C#, VB.NET, Java, Perl and Lua.
+ * - Partial openssl API compatibility (via a wrapper).
+ * - A very small footprint (around 50-60kB for the library in 'server-only' 
+ *   mode).
+ * - No dependencies on sockets - can use serial connections for example.
+ * - A very simple API - ~ 20 functions/methods.
+ *
+ * A list of these functions/methods are described below.
+ *
+ *  @ref c_api 
+ *
+ *  @ref bigint_api 
+ *
+ *  @ref csharp_api 
+ *
+ *  @ref java_api 
+ */
+#ifndef HEADER_SSL_H
+#define HEADER_SSL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <time.h>
+//#include "crypto.h"
+
+/* need to predefine before ssl_lib.h gets to it */
+#define SSL_SESSION_ID_SIZE                     32
+
+#include "tls1.h"
+
+/* The optional parameters that can be given to the client/server SSL engine */
+#define SSL_CLIENT_AUTHENTICATION               0x00010000
+#define SSL_SERVER_VERIFY_LATER                 0x00020000
+#define SSL_NO_DEFAULT_KEY                      0x00040000
+#define SSL_DISPLAY_STATES                      0x00080000
+#define SSL_DISPLAY_BYTES                       0x00100000
+#define SSL_DISPLAY_CERTS                       0x00200000
+#define SSL_DISPLAY_RSA                         0x00400000
+
+/* errors that can be generated */
+#define SSL_OK                                  0
+#define SSL_NOT_OK                              -1
+#define SSL_ERROR_DEAD                          -2
+#define SSL_ERROR_CONN_LOST                     -256
+#define SSL_ERROR_SOCK_SETUP_FAILURE            -258
+#define SSL_ERROR_INVALID_HANDSHAKE             -260
+#define SSL_ERROR_INVALID_PROT_MSG              -261
+#define SSL_ERROR_INVALID_HMAC                  -262
+#define SSL_ERROR_INVALID_VERSION               -263
+#define SSL_ERROR_INVALID_SESSION               -265
+#define SSL_ERROR_NO_CIPHER                     -266
+#define SSL_ERROR_BAD_CERTIFICATE               -268
+#define SSL_ERROR_INVALID_KEY                   -269
+#define SSL_ERROR_FINISHED_INVALID              -271
+#define SSL_ERROR_NO_CERT_DEFINED               -272
+#define SSL_ERROR_NOT_SUPPORTED                 -274
+#define SSL_X509_OFFSET                         -512
+#define SSL_X509_ERROR(A)                       (SSL_X509_OFFSET+A)
+
+/* these are all the alerts that are recognized */
+#define SSL_ALERT_CLOSE_NOTIFY                  0
+#define SSL_ALERT_UNEXPECTED_MESSAGE            10
+#define SSL_ALERT_BAD_RECORD_MAC                20
+#define SSL_ALERT_HANDSHAKE_FAILURE             40
+#define SSL_ALERT_BAD_CERTIFICATE               42
+#define SSL_ALERT_ILLEGAL_PARAMETER             47
+#define SSL_ALERT_DECODE_ERROR                  50
+#define SSL_ALERT_DECRYPT_ERROR                 51
+#define SSL_ALERT_INVALID_VERSION               70
+
+/* The ciphers that are supported */
+#define SSL_AES128_SHA                          0x2f
+#define SSL_AES256_SHA                          0x35
+#define SSL_RC4_128_SHA                         0x05
+#define SSL_RC4_128_MD5                         0x04
+
+/* build mode ids' */
+#define SSL_BUILD_SKELETON_MODE                 0x01
+#define SSL_BUILD_SERVER_ONLY                   0x02
+#define SSL_BUILD_ENABLE_VERIFICATION           0x03
+#define SSL_BUILD_ENABLE_CLIENT                 0x04
+#define SSL_BUILD_FULL_MODE                     0x05
+
+/* offsets to retrieve configuration information */
+#define SSL_BUILD_MODE                          0
+#define SSL_MAX_CERT_CFG_OFFSET                 1
+#define SSL_MAX_CA_CERT_CFG_OFFSET              2
+#define SSL_HAS_PEM                             3
+
+/* default session sizes */
+#define SSL_DEFAULT_SVR_SESS                    5
+#define SSL_DEFAULT_CLNT_SESS                   1
+
+/* X.509/X.520 distinguished name types */
+#define SSL_X509_CERT_COMMON_NAME               0
+#define SSL_X509_CERT_ORGANIZATION              1
+#define SSL_X509_CERT_ORGANIZATIONAL_NAME       2
+#define SSL_X509_CA_CERT_COMMON_NAME            3
+#define SSL_X509_CA_CERT_ORGANIZATION           4
+#define SSL_X509_CA_CERT_ORGANIZATIONAL_NAME    5
+
+/* SSL object loader types */
+#define SSL_OBJ_X509_CERT                       1
+#define SSL_OBJ_X509_CACERT                     2
+#define SSL_OBJ_RSA_KEY                         3
+#define SSL_OBJ_PKCS8                           4
+#define SSL_OBJ_PKCS12                          5
+
+/**
+ * @defgroup c_api Standard C API
+ * @brief The standard interface in C.
+ * @{
+ */
+
+/**
+ * @brief Establish a new client/server context.
+ *
+ * This function is called before any client/server SSL connections are made. 
+ *
+ * Each new connection will use the this context's private key and 
+ * certificate chain. If a different certificate chain is required, then a 
+ * different context needs to be be used.
+ *
+ * There are two threading models supported - a single thread with one
+ * SSL_CTX can support any number of SSL connections - and multiple threads can 
+ * support one SSL_CTX object each (the default). But if a single SSL_CTX 
+ * object uses many SSL objects in individual threads, then the 
+ * CONFIG_SSL_CTX_MUTEXING option needs to be configured.
+ *
+ * @param options [in]  Any particular options. At present the options
+ * supported are:
+ * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if the server
+ * authentication fails. The certificate can be authenticated later with a
+ * call to ssl_verify_cert().
+ * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client authentication
+ * i.e. each handshake will include a "certificate request" message from the
+ * server. Only available if verification has been enabled.
+ * - SSL_DISPLAY_BYTES (full mode build only): Display the byte sequences
+ * during the handshake.
+ * - SSL_DISPLAY_STATES (full mode build only): Display the state changes
+ * during the handshake.
+ * - SSL_DISPLAY_CERTS (full mode build only): Display the certificates that
+ * are passed during a handshake.
+ * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key details that
+ * are passed during a handshake.
+ *
+ * @param num_sessions [in] The number of sessions to be used for session
+ * caching. If this value is 0, then there is no session caching. This option
+ * is not used in skeleton mode.
+ * @return A client/server context.
+ */
+EXP_FUNC SSL_CTX * STDCALL ssl_ctx_new(uint32_t options, int num_sessions);
+
+/**
+ * @brief Remove a client/server context.
+ *
+ * Frees any used resources used by this context. Each connection will be 
+ * sent a "Close Notify" alert (if possible).
+ * @param ssl_ctx [in] The client/server context.
+ */
+EXP_FUNC void STDCALL ssl_ctx_free(SSL_CTX *ssl_ctx);
+
+/**
+ * @brief (server only) Establish a new SSL connection to an SSL client.
+ *
+ * It is up to the application to establish the logical connection (whether it
+ * is  a socket, serial connection etc).
+ * @param ssl_ctx [in] The server context.
+ * @param client_fd [in] The client's file descriptor. 
+ * @return An SSL object reference.
+ */
+EXP_FUNC SSL * STDCALL ssl_server_new(SSL_CTX *ssl_ctx, int client_fd);
+
+/**
+ * @brief (client only) Establish a new SSL connection to an SSL server.
+ *
+ * It is up to the application to establish the initial logical connection 
+ * (whether it is  a socket, serial connection etc).
+ *
+ * This is a blocking call - it will finish when the handshake is complete (or
+ * has failed).
+ * @param ssl_ctx [in] The client context.
+ * @param client_fd [in] The client's file descriptor.
+ * @param session_id [in] A 32 byte session id for session resumption. This 
+ * can be null if no session resumption is being used or required. This option
+ * is not used in skeleton mode.
+ * @param sess_id_size The size of the session id (max 32)
+ * @return An SSL object reference. Use ssl_handshake_status() to check 
+ * if a handshake succeeded.
+ */
+EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const uint8_t *session_id, uint8_t sess_id_size);
+
+/**
+ * @brief Free any used resources on this connection. 
+ * A "Close Notify" message is sent on this connection (if possible). It is up 
+ * to the application to close the socket or file descriptor.
+ * @param ssl [in] The ssl object reference.
+ */
+EXP_FUNC void STDCALL ssl_free(SSL *ssl);
+
+/**
+ * @brief Read the SSL data stream.
+ * The socket must be in blocking mode.
+ * @param ssl [in] An SSL object reference.
+ * @param in_data [out] If the read was successful, a pointer to the read
+ * buffer will be here. Do NOT ever free this memory as this buffer is used in
+ * sucessive calls. If the call was unsuccessful, this value will be null.
+ * @return The number of decrypted bytes:
+ * - if > 0, then the handshaking is complete and we are returning the number 
+ *   of decrypted bytes. 
+ * - SSL_OK if the handshaking stage is successful (but not yet complete).  
+ * - < 0 if an error.
+ * @see ssl.h for the error code list.
+ * @note Use in_data before doing any successive ssl calls.
+ */
+EXP_FUNC int STDCALL ssl_read(SSL *ssl, uint8_t **in_data);
+
+/**
+ * @brief Write to the SSL data stream. 
+ * The socket must be in blocking mode.
+ * @param ssl [in] An SSL obect reference.
+ * @param out_data [in] The data to be written
+ * @param out_len [in] The number of bytes to be written.
+ * @return The number of bytes sent, or if < 0 if an error.
+ * @see ssl.h for the error code list.
+ */
+EXP_FUNC int STDCALL ssl_write(SSL *ssl, const uint8_t *out_data, int out_len);
+
+/**
+ * @brief Find an ssl object based on a file descriptor.
+ *
+ * Goes through the list of SSL objects maintained in a client/server context
+ * to look for a file descriptor match.
+ * @param ssl_ctx [in] The client/server context.
+ * @param client_fd [in]  The file descriptor.
+ * @return A reference to the SSL object. Returns null if the object could not 
+ * be found.
+ */
+EXP_FUNC SSL * STDCALL ssl_find(SSL_CTX *ssl_ctx, int client_fd);
+
+/**
+ * @brief Get the session id for a handshake. 
+ * 
+ * This will be a 32 byte sequence and is available after the first
+ * handshaking messages are sent.
+ * @param ssl [in] An SSL object reference.
+ * @return The session id as a 32 byte sequence.
+ * @note A SSLv23 handshake may have only 16 valid bytes.
+ */
+EXP_FUNC const uint8_t * STDCALL ssl_get_session_id(const SSL *ssl);
+
+/**
+ * @brief Get the session id size for a handshake. 
+ * 
+ * This will normally be 32 but could be 0 (no session id) or something else.
+ * @param ssl [in] An SSL object reference.
+ * @return The size of the session id.
+ */
+EXP_FUNC uint8_t STDCALL ssl_get_session_id_size(const SSL *ssl);
+
+/**
+ * @brief Return the cipher id (in the SSL form).
+ * @param ssl [in] An SSL object reference.
+ * @return The cipher id. This will be one of the following:
+ * - SSL_AES128_SHA (0x2f)
+ * - SSL_AES256_SHA (0x35)
+ * - SSL_RC4_128_SHA (0x05)
+ * - SSL_RC4_128_MD5 (0x04)
+ */
+EXP_FUNC uint8_t STDCALL ssl_get_cipher_id(const SSL *ssl);
+
+/**
+ * @brief Return the status of the handshake.
+ * @param ssl [in] An SSL object reference.
+ * @return SSL_OK if the handshake is complete and ok. 
+ * @see ssl.h for the error code list.
+ */
+EXP_FUNC int STDCALL ssl_handshake_status(const SSL *ssl);
+
+/**
+ * @brief Retrieve various parameters about the axTLS engine.
+ * @param offset [in] The configuration offset. It will be one of the following:
+ * - SSL_BUILD_MODE The build mode. This will be one of the following:
+ *   - SSL_BUILD_SERVER_ONLY            (basic server mode)
+ *   - SSL_BUILD_ENABLE_VERIFICATION    (server can do client authentication)
+ *   - SSL_BUILD_ENABLE_CLIENT          (client/server capabilties)
+ *   - SSL_BUILD_FULL_MODE              (client/server with diagnostics)
+ *   - SSL_BUILD_SKELETON_MODE          (skeleton mode)
+ * - SSL_MAX_CERT_CFG_OFFSET The maximum number of certificates allowed.
+ * - SSL_MAX_CA_CERT_CFG_OFFSET The maximum number of CA certificates allowed.
+ * - SSL_HAS_PEM                        1 if supported
+ * @return The value of the requested parameter.
+ */
+EXP_FUNC int STDCALL ssl_get_config(int offset);
+
+/**
+ * @brief Display why the handshake failed.
+ *
+ * This call is only useful in a 'full mode' build. The output is to stdout.
+ * @param error_code [in] An error code.
+ * @see ssl.h for the error code list.
+ */
+EXP_FUNC void STDCALL ssl_display_error(int error_code);
+
+/**
+ * @brief Authenticate a received certificate.
+ * 
+ * This call is usually made by a client after a handshake is complete and the
+ * context is in SSL_SERVER_VERIFY_LATER mode.
+ * @param ssl [in] An SSL object reference.
+ * @return SSL_OK if the certificate is verified.
+ */
+EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl);
+
+/**
+ * @brief Retrieve an X.509 distinguished name component.
+ * 
+ * When a handshake is complete and a certificate has been exchanged, then the
+ * details of the remote certificate can be retrieved.
+ *
+ * This will usually be used by a client to check that the server's common 
+ * name matches the URL.
+ *
+ * A full handshake needs to occur for this call to work properly.
+ *
+ * @param ssl [in] An SSL object reference.
+ * @param component [in] one of:
+ * - SSL_X509_CERT_COMMON_NAME
+ * - SSL_X509_CERT_ORGANIZATION
+ * - SSL_X509_CERT_ORGANIZATIONAL_NAME
+ * - SSL_X509_CA_CERT_COMMON_NAME
+ * - SSL_X509_CA_CERT_ORGANIZATION
+ * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME
+ * @return The appropriate string (or null if not defined)
+ * @note Verification build mode must be enabled.
+ */
+EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component);
+
+/**
+ * @brief Force the client to perform its handshake again.
+ *
+ * For a client this involves sending another "client hello" message.
+ * For the server is means sending a "hello request" message.
+ *
+ * This is a blocking call on the client (until the handshake completes).
+ *
+ * @param ssl [in] An SSL object reference.
+ * @return SSL_OK if renegotiation instantiation was ok
+ */
+EXP_FUNC int STDCALL ssl_renegotiate(SSL *ssl);
+
+/**
+ * @brief Process a file that is in binary DER or ASCII PEM format.
+ *
+ * These are temporary objects that are used to load private keys,
+ * certificates etc into memory.
+ * @param ssl_ctx [in] The client/server context.
+ * @param obj_type [in] The format of the file. Can be one of:
+ * - SSL_OBJ_X509_CERT (no password required)
+ * - SSL_OBJ_X509_CACERT (no password required)
+ * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported)
+ * - SSL_OBJ_PKCS8 (RC4-128 encrypted data supported)
+ * - SSL_OBJ_PKCS12 (RC4-128 encrypted data supported)
+ *
+ * PEM files are automatically detected (if supported). The object type is
+ * also detected, and so is not relevant for these types of files.
+ * @param filename [in] The location of a file in DER/PEM format.
+ * @param password [in] The password used. Can be null if not required.
+ * @return SSL_OK if all ok
+ * @note Not available in skeleton build mode.
+ */
+EXP_FUNC int STDCALL ssl_obj_load(SSL_CTX *ssl_ctx, int obj_type, const char *filename, const char *password);
+
+/**
+ * @brief Process binary data.
+ *
+ * These are temporary objects that are used to load private keys,
+ * certificates etc into memory.
+ * @param ssl_ctx [in] The client/server context.
+ * @param obj_type [in] The format of the memory data.
+ * @param data [in] The binary data to be loaded.
+ * @param len [in] The amount of data to be loaded.
+ * @param password [in] The password used. Can be null if not required.
+ * @return SSL_OK if all ok
+ * @see ssl_obj_load for more details on obj_type.
+ */
+EXP_FUNC int STDCALL ssl_obj_memory_load(SSL_CTX *ssl_ctx, int obj_type, const uint8_t *data, int len, const char *password);
+
+#ifdef CONFIG_SSL_GENERATE_X509_CERT
+/**
+ * @brief Create an X.509 certificate. 
+ * 
+ * This certificate is a self-signed v1 cert with a fixed start/stop validity 
+ * times. It is signed with an internal private key in ssl_ctx.
+ *
+ * @param ssl_ctx [in] The client/server context.
+ * @param options [in] Not used yet.
+ * @param dn [in] An array of distinguished name strings. The array is defined
+ * by:
+ * - SSL_X509_CERT_COMMON_NAME (0)
+ *      - If SSL_X509_CERT_COMMON_NAME is empty or not defined, then the 
+ *        hostname will be used.
+ * - SSL_X509_CERT_ORGANIZATION (1)
+ *      - If SSL_X509_CERT_ORGANIZATION is empty or not defined, then $USERNAME 
+ *        will be used.
+ * - SSL_X509_CERT_ORGANIZATIONAL_NAME (2)
+ *      - SSL_X509_CERT_ORGANIZATIONAL_NAME is optional.
+ * @param cert_data [out] The certificate as a sequence of bytes.
+ * @return < 0 if an error, or the size of the certificate in bytes.
+ * @note cert_data must be freed when there is no more need for it.
+ */
+EXP_FUNC int STDCALL ssl_x509_create(SSL_CTX *ssl_ctx, uint32_t options, const char * dn[], uint8_t **cert_data);
+#endif
+
+/**
+ * @brief Return the axTLS library version as a string.
+ */
+EXP_FUNC const char * STDCALL ssl_version(void);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile
new file mode 100644 (file)
index 0000000..56c711f
--- /dev/null
@@ -0,0 +1,97 @@
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+all:
+
+AXTLS_HOME=../..
+
+include $(AXTLS_HOME)/config/.config
+include $(AXTLS_HOME)/config/makefile.conf
+
+ifdef CONFIG_PERFORMANCE_TESTING
+all: performance
+endif
+
+ifdef CONFIG_SSL_TEST
+all: ssltesting
+endif
+
+include $(AXTLS_HOME)/config/makefile.post
+
+ifndef CONFIG_PLATFORM_WIN32
+performance: $(AXTLS_HOME)/$(STAGE)/perf_bigint
+ssltesting: $(AXTLS_HOME)/$(STAGE)/ssltest
+LIBS=$(AXTLS_HOME)/$(STAGE)
+
+$(AXTLS_HOME)/$(STAGE)/perf_bigint: perf_bigint.o $(LIBS)/libaxtls.a
+       $(CC) $(LDFLAGS) -o $@ $^ -L $(LIBS) -laxtls
+
+$(AXTLS_HOME)/$(STAGE)/ssltest: ssltest.o $(LIBS)/libaxtls.a
+       $(CC) $(LDFLAGS) -o $@ $^ -lpthread -L $(LIBS) -laxtls
+else
+performance: $(AXTLS_HOME)/$(STAGE)/perf_bigint.exe
+ssltesting: $(AXTLS_HOME)/$(STAGE)/ssltest.exe
+
+CRYPTO_PATH="$(AXTLS_INCLUDE)crypto\\"
+AXTLS_SSL_PATH="$(AXTLS_INCLUDE)ssl\\"
+
+CRYPTO_OBJ=\
+       $(CRYPTO_PATH)aes.obj \
+       $(CRYPTO_PATH)bigint.obj \
+       $(CRYPTO_PATH)crypto_misc.obj \
+       $(CRYPTO_PATH)hmac.obj \
+       $(CRYPTO_PATH)md2.obj \
+       $(CRYPTO_PATH)md5.obj \
+       $(CRYPTO_PATH)rc4.obj \
+       $(CRYPTO_PATH)rsa.obj \
+       $(CRYPTO_PATH)sha1.obj
+
+OBJ=\
+       $(AXTLS_SSL_PATH)asn1.obj \
+       $(AXTLS_SSL_PATH)gen_cert.obj \
+       $(AXTLS_SSL_PATH)loader.obj \
+       $(AXTLS_SSL_PATH)openssl.obj \
+       $(AXTLS_SSL_PATH)os_port.obj \
+       $(AXTLS_SSL_PATH)p12.obj \
+       $(AXTLS_SSL_PATH)x509.obj \
+       $(AXTLS_SSL_PATH)tls1.obj \
+       $(AXTLS_SSL_PATH)tls1_svr.obj \
+       $(AXTLS_SSL_PATH)tls1_clnt.obj
+
+$(AXTLS_HOME)/$(STAGE)/perf_bigint.exe: perf_bigint.obj
+       $(LD) $(LDFLAGS) /out:$@ $? $(CRYPTO_OBJ) $(OBJ)
+
+$(AXTLS_HOME)/$(STAGE)/ssltest.exe: ssltest.obj
+       $(LD) $(LDFLAGS) /out:$@ $? $(CRYPTO_OBJ) $(OBJ)
+endif
+
+clean::
+       -@rm -f $(AXTLS_HOME)/$(STAGE)/perf_bigint* $(AXTLS_HOME)/$(STAGE)/ssltest*
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem
new file mode 100644 (file)
index 0000000..7c8ac8a
--- /dev/null
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCnZdk20fYWh8O6kDTt0AuJWyp0YIrb7W1UNNMPXI5wA4J59IVj
+Nmk5wocm9+Hqzbg7rORAN/mHPBhzLAjhnm1HODs36hW15DtbDkkH4wCM/Tsyv79m
+n0xq1V6peK3t9vi2D4p/IRjHkYR2jm+BeknopijhY0kHHfpGTHa2DnVirwIDAQAB
+AoGAd4Ia5SxYiBU9A0BYyT8yPUm8sYELIaAL4YYk+F6Xwhh/Whnb8MyzquzaGFP4
+Ee30jYYNHlvX5VheDDtvy8OTN5FgKNNdzvW15iA4Hxje04ZI7W87G7OIxm7aYRid
+sG4XqZBtsOdj33IRd9hgozywGJ2qRqS6nn2KxRv1w07RniECQQDZAlKxijdn+vQ7
+8/8mXzC+FwQtzeTUCuLrBJcos9I/591ABoxYkWcYLxpFqgCEVwb1qfPBJkL07JPt
+Fu6CTnBFAkEAxXmUBs47x5QM99qyBO5UwW0Ksrm/WD4guaaxzQShMt/HzgJl613z
+/x4FtxiQJHAr6r2K0t5xTJx89LVKuouYYwJAImue6DAvJ5wDfzrtXo28snn+HLHK
+uONdKL/apgcXszE4w74GJsoxWwGlniUf3d3b6b1iP2GtPyIDOJjpjduZLQJAE4jS
+VtYB3d1MZxxQLeKxqayyuTlcr0r+C79sqT5C//hZGIzuLhlOMLd0k0cvwxsBjSgQ
+2ok8pfp49fAVI1z5xwJAVmJgLc/mSti5A2q3c8HW8qvMJEDPWbpb7p8pg4ePtpa8
+EE3TO4O4J2H+k40C397km4yZXdkNQsiT1zVljJZpiw==
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer
new file mode 100644 (file)
index 0000000..9c9936b
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem
new file mode 100644 (file)
index 0000000..86f6597
--- /dev/null
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB3zCCAUgCCQCdbnM4pjqlWjANBgkqhkiG9w0BAQUFADA0MTIwMAYDVQQKEylh
+eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2
+MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMDQxMjAwBgNVBAoTKWF4VExTIFByb2pl
+Y3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQCnZdk20fYWh8O6kDTt0AuJWyp0YIrb7W1UNNMPXI5wA4J59IVj
+Nmk5wocm9+Hqzbg7rORAN/mHPBhzLAjhnm1HODs36hW15DtbDkkH4wCM/Tsyv79m
+n0xq1V6peK3t9vi2D4p/IRjHkYR2jm+BeknopijhY0kHHfpGTHa2DnVirwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAB0LgNo0oCcwIie5plgwwFybQ8x95q6e3wndM/Mp
+3gjcAFbGuchpo3dfFlTcRI0KyERb3q1MVxPM4sff9nT7EdHVyK9s8/ITkP2dcTKc
+flbcTEfJVIeM8L2P5F41Hvn9GuGcMW8EmsC06gdbp1LLnqsdrXdMNBsAUBXfgPrU
++UcZ
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key
new file mode 100644 (file)
index 0000000..4e981d1
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem
new file mode 100644 (file)
index 0000000..2bcf5e3
--- /dev/null
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDUIg4NEiu/diDAlbsWbTAhMKw4iBf2X5ohGJdTO6vhGQdEkhBR
+Bgzdl9+0LbVDJY8YStUghwnuztT+IpNCrUtXtRK8Cn3QP+buzSe2ZGPVoEJIbvV/
+QudK/WuUDyTNSRTtW4S3RO36KqtbT6xh1QGTXV3I8sp7qwmcysklqZW8GwIDAQAB
+AoGBAKBEDkuPw9+Ftp7pQIxj963LoQGgyEHJ3p9Mfd9TQLrydsw2cf9Uy9mKiWcN
+9VkCgkZ/Gt/VRgrW1pIduxXv6O+8S14An+2mTayy3Ga1N6MulD7OHQP9kqR4j8TT
+xaYPR/1skjhQ+Y0Uw4NEa3OkQp6lAUEp1aVX/mTfIZBguaUxAkEA/H543Ha6wbUV
+iB+pHaBgj1nzarmuEey6kqqs7X0zoZory1X6bdpJ6l0/4qICa6aq+pt/7ywJCNoI
+CPK3mL2zGQJBANcUHRBe7/HRWrJNIqB2WDA/gJshq4xOAiIBXWk1wpabvpkCnUjQ
+rip5CAL3hXDnCQswZxRN/v7B4IlSxkKiY1MCQQCsL0MUdRMejfLFBXI6defjWiAZ
+I86FAr6oziNnQP44sf4zh8pjp3zIihbK4lhsORhYFjrES29NzgG0uHBjhNnhAj97
+gBEwVVNyh8SMnb5EZbA+BDjU24CmECUpYZ9Bypzx3nyTX+zw4uMfgGAZVAhLzF5l
+DmYiQqcpoipMsDsoCBcCQQCxBYSicXIPG8G6ZuFbgXFcZR7llgq74mbhfGuVEGbP
+qS6ldhJb/IG9O3MFlRwdU44YyJ8QGpBKWF94OpIduF6w
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8
new file mode 100644 (file)
index 0000000..8b0a7eb
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8
new file mode 100644 (file)
index 0000000..19ca3c5
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBfTAcBgoqhkiG9w0BDAEBMA4ECN+YmhCv0ILdAgIIAASCAVu0QEfMkp0xUsNq
+0Ek4Nsa/uxcs8N/2P7Ae7qCakkvsdRvvPPH0y+wuj5NgrG6WpPeeEx9fI2oNNTfC
+pwncH0Xm99ofVrgMX6XC45LDZtzXNSZd4TdBP6xvlYXbuGegp5GPJ8emzscHCFhC
+JfPHemRAcB7DhiWukPosuSUr5R8OluEMJrQLHuQtlDAvMjLEI98lSchPxF8LKCk3
+SS2uCcmc+4WiR0nHG9BOaGi38+PytHAnbfo1mfVSQzLfgLicMAVGysfQ9QOgpQOO
+ygYfM/s7Duwbl0rshyXVJP+7BpYJnPtHvO4BTiizU7ZEr4WBiEnnANDrupSdsxeH
++cxZo70YJVdoPdgMd2ke6EIkUhp7HughFg+okldlEtJA4muKeEzwAxZu0TqxOtZ8
+UYRS4Ygk+rN7Y0qTKSYwSkrFBwUDkpctYjRUOeAZ/mYMKWmMn1ejAb5Is7bjEIxl
+tw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024
new file mode 100644 (file)
index 0000000..5b6ba1d
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024.pem
new file mode 100644 (file)
index 0000000..4f5ad4e
--- /dev/null
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDY4L8V3uqv6NX9C6ios9dGXacmbAy12bzG+MB40PZWZfgpSA57
+C6Ylfuh7eW845bW39OCckWD0BvNAHvmRGakvR0O1mx7c9qocSXkhKMuqSXPZCQVM
+AvJMTWwcgKcUkUT8ErPh5+NPRLqMw3Q56EzQ1EwkYbRAlYzACrcCOTGFkwIDAQAB
+AoGBAJQHcuW+rXk79zMsjgX4GmvQ6JH1FgfZglxc1SKhnkICf4vNvvSFUvYs1QnS
+LPQs9geFgPnc0Mw/IjEV80nyteJpmQQESSHbn6FUWvrk2fkHBf+aZaTr8kfOVsdy
+SUhc6BTXjyXMSSkGalR7F9ye1FPw9Z6FJaHrPekvuZz24YCBAkEA7gJ4x3iFBJfM
+Nr3WEeLHOdk0UXJvig/NiDIzm8enA3fZgjW23R/CwRNAg1XrYOuBjgwWYrS0POsI
+gJx50zjK8QJBAOlFXy4WzJNQQLZ5vDjgVmhQ0y9zjIwqDoFKirvM8GQ0Rp8HfSK2
++UasVyOMHuvTBU2og2pn9qaxq47B7+998MMCQC/GWT4Y6AJzAe/fDTBL6BepjMHo
+iZEZ+PSktw1G9zRQA14KsCkUrgAZgDKctYGf5EKCFKA9i4xK1UsTnbSTStECQGSM
+g3dhWnMRP6OoG4rEoFo8pJsqimWMZ04xrFVBBEmdAuffmX/SMObWuITZDCcIgZu0
+zFicUYQOx200iVDJD3MCQQDa3l4arB0d17llJgD11OQohIYvAJxBAFLhR5HAUgVO
+Dy8Nyps9iUG/7p+h5p2k60V/48ukawrifrCHXECxUREd
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048
new file mode 100644 (file)
index 0000000..0af642d
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048.pem
new file mode 100644 (file)
index 0000000..beddb72
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAwqC/2/rPcAZEs5/ejT3ZL8Q3Pfdna2WC44i6HYCnCnbOIcW+
+6Xub2IXGwRwQBFy+mRE9WjqJ8kuOEkSt6e+8wAhLdag7WXJ6cxoag110t5FEHSyd
+GfvFFyUNjMJhLd+EmaQTTpEv9MJPJj0Zdruh1EjyRxa4HJmiD9t7XmWyCfSmM0qM
+kgJ0J6s62rRMBX+l/NEEX2VzJugdZAU671RWYOncuxX/2jUYlvIqI1l3SP8acMU5
+BtfLsYMj08lNHOjgZCPRwkdjsl6U5EqIizKZygw1FNugVEDHnL2MAYXwqzX3pGr/
+72Biy+J4TSH6lt0stszS5m8BirMgYr2FFHslrQIDAQABAoIBAQDBTa0gzEupJOCp
+UvhUagBDO+vuBMJX3XuRh6PqV3QQpYz36BJEjXttIvkTpU6XNpIrLv8zlX6bAsW5
+iTL+bRiX1eU0l4FSxqutlFiO7oxVIdd37m6edvv6j9eUXR7t09k8S8TNPNBXlYHN
+JdQbpCIH2OehCYSVC1X1z/UI/ZJF5VSn7UsYgwReK102svfHtll85K0TgHMir9Rx
+Dlh0vYx3IJi2nDOTyJ4JekkyEAcYd3D6JUd0JujcN3Ev3EOsns5GXzN6KYvinmYf
+Z1bA/HEMNb9ZS9bdsoAvyeJAeGp8ejzuJVHGL0kATgrAamb58fPS+A8Guk5eN5KY
+5zvzNrJVAoGBAPVWvPrDOJX2ZI7poJ269xFteTWWIYA+r+YRRkhMBMcD08H5gs6e
+QMWU9w8qjgSmbNkx8skkhn/gV5R3CbVYYRR2osrZIoOayWAsJmY0bHFTIvooYhfp
+3lPVNIPzUpRObFksamtrsK+zpx5qOdigNhComXLsGWKfrN9Yvkb7YzIDAoGBAMsV
+4UVH9WH0IKV1vx3QtrGEb69SZMpbmM8ZsPvaPgq00In9udY4w5V2ZygfTiq0ChUY
+fYy6BeO6Gyp2DSABdz1AUH+0wcnNrHJghFtxtsq4Thu4MHU6ftc+JCGfSeWUapfh
+KiHS0TEguRFcYSHnM1IDEiU4aTHY59FRUWMI2hKPAoGAIVfviTk9GIyLMC0qaiV9
+7L1vKsxDs1VRvLf+UFcckxu/DO7nS0OQ1Amh5krHUHR5+K7kK1gue3S3EnN3O1FO
+qGRTTbRjD3XbBpoZgeyADIrbBxqz8kITuFsSrxhD0eoyqY/yyrSxJ8AH54dSY1Gq
+52qyqD7UWGYRLa229pi165cCgYAd7/rGWMY+i1toqMPkpEjaQFiqcq3y+q+7D+F8
+Lv7oWyFGxkVn4/RJCyxHyN2gA+xckcCoRx/pIx0wFDj5F945BEsZmE7c7dnW/o1k
+YY39sk+pXGygS2A5YKq43h9pnYhdHU81rzsxT86YVZLoCYoSM+uv2vH+7Ce4PpGN
+1Nc41wKBgDUrYyfDB1RzdB63FwPRax5uLjewnuMXyZhy70ZkiGh0XBuQt2aCLeCZ
+HpAyGcJryxdDFYA+UwJoSWjaW9ku0lp+GxX1F+cResrRHTi70w9czwGVaKmcG3kI
+fFjG7w8nkiw5J7IRH7SxmNbmAv8L0Iy6jvoWLFB+EdUGWllkjCmJ
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096
new file mode 100644 (file)
index 0000000..c205382
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem
new file mode 100644 (file)
index 0000000..9929467
--- /dev/null
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEA/Ce0mV0qytAwDPrjXRBlUh2gdKs2thDw3N18owXVrSUFq9Sw
+AaMNrmep9DR9MEALcdMm3GCEJ7sOOiEQcqTz25di36WJDe+jo1z5nD2XZsPIsp9+
+k51Vz+W3B4vsXJAgzV+XZbmv9L0598VEwkpeI3Uc9et8ZhGvDPoHZyBQG1KAj6h3
+AKZ1+NthrhajxlrndQZ5Du/R5DSUQOBcCHHdzZgihdfF97Yn/kp1mele1ElZMlqg
+BtpDi1TEQJ9XBtjCW0epFAm5THQ3gMx5DCcqB/cNYdZWqpZ0AuwATm61+46m4fFK
+g3YAYPOi/74aKFuIQBw/lc8W//SV1x8SL/hf2XIdvSa9QhroNN0d3Xu2EUQzXZxo
+PRMKzOqKfwlZW7ozT6hFBwPMh8yfhoPugq2TvqBjke1s3gmvwTgEcf+gY97qXiZC
+X5bh/ehmnZ7vIblYFUD2yMlsKaXGJYweh3WKJlQnh71wQUg2Mxa6ig8ijrEozNlw
+YfPCQFrNLqQfJOwdx90dy7hpUyUn1wo39p6wmC6n9ex4zeKbO4ndSp+/AJ+d5Qp8
+zoMzwneYV9LBQG8ry4uwzDkSWKb/WghsEbQ9O3sGIuI13SlT/B64v3bLb5AHagI8
+zS3kPsshjKhkcc2W9MKRBU2wIeCsNS052kaUq3rPMSBROrALmLk3en/Dq48CAwEA
+AQKCAgEArPMy7So5Cqjm/FAtGI0BYeRORReWTCSsgGEudsauu7a0ABq+qjDDVodl
+y8kgwLJ85xKUCf3tRy8G4BoDpQ688DYSrCFnMvbWP1urHV4ldWf+RX4eHHODAzil
+ZHi1ovt8dEEHn89P/8a2dtqIgdbuYNWYCpj9Vyjz7yujXjmMmGDrKx26meiS7CDV
+C8odhRSewuawq+0UArmJokIA/g3Tu4uIylKoR3JaVhGOPgYSc/rnQiFkt66HO47l
+mQlxcJHGJUOulb7hqK3hz+bvc8V9D7+FH0EbaqANbF+hCirniWZb0odku2x5cAZM
+G6uxV1MIzihR+Jf1R5PkHowCNoLegfM45tnuadP1+8Kezv1SsqkrkMEwfb0QN19C
+2+bmnwYXagUgg/A2q2Shg9h4/3cpwdrDzGHD8IttGlzLR8HnlHkcAK3qRNqy9h60
+JDEW/tOurUSZBXjU9ZyoZSukcK3+yUjCDWS92wMOBlUQGh4/HCOOizahe6lhn2nT
++jkBvl38c+7GBKR0VyCisFi++FukMBbyU/hNNFByZxOj0b/+YVYI0qwM5oDzLhJH
+69/VhxMx0xVt9/kOOO3yhdGjKCZztPZZm5mg2OzzXmf4im+hPSg0/OrdXrVNk4v/
+w7ouUQHSa3+rAAu8BJFF2rTWA7rjecVEnk6c77I6dEVYXdCfz8kCggEBAP+IJLHo
+7Cs51qPcRKQc633phJa3pFGf6O8xN6pl8z1ZQX0voZyROKJLTytSH+zmPdmggUeg
+7CRoV8BKY49YiOxO2Kx8BPfftItS9yvA3O9ztcdzQa72nYusMWwvj0yFU8DbYfnx
+yYw59F/1pdPKFN83Sj4MJAOb4nAxBP1GiZvsPAgcTpf/197NLNHwUDdk/TXDtTLa
+lx4uTn/SJDQuvsCCLBKyx7FdN5NPRN2kIKUWZLd7HRu2EhcSlATwf4TUPZz7atKN
+2FD0svErpPOAspNPtnNj3RgeunGVqS2oi/XueuveNNCYLkcV8/UaZm85LBrPoEre
+23qK9/ZN0SD534sCggEBAPyd+nD71pScrM0TI4Lc3jMNUKeZj3sT5rlhlkWlARhQ
+WPEWYYg5vs3zDiRpG4Xy3n9ey+M6Tuw+/XpcJZxhrLYFOqparxXPP4qc+3EvtzpF
+OskLR/2/bVnESf6+pQspmwW6G4IJ9vOmIJeUj9zeU0txuxKkjhAmInCnMxJOlYRm
+xeLymuo5LZxrXmSXcX4cyZ0/4bF2L3IE5vH7ffdWXWYzW9wP7M4sFp+0iKjHuhC1
+gB6Qg0Mp0TVNUt0ZEelFLEJdA2lbbZ5yHhNXuhOxW/l3ASSe9tjTpy7yBSwBOpFG
+l7QGISfJVEFfjyn7yWBYj5LDGnitlP4TtN8zyy6cJI0CggEAPRwY8ncqq7e8Thmq
+TLkh1E3ZSJYIdQDSGwnhLx4MirpiwAZ5FtFgAugRueF9AxGY7wfEgxXIA3j0q2be
+4nQg4qqEhNNv+LuGGN+xfsQz0gwRB+7XYXlW+gUnGKFTGtCz0+ZjSvv44FEn0R8V
+Fk44qZ02YxpSLo7EG2KNt+h7lk9rl+D1JsKnpH/a3SYkeOrs50OzfMLr6urWGRlv
+UQ9wzOcUlTAuM4uAc/k8FelfaTuuwHZv4qWrM9tcjMXbKS/8wCMcS9hiSBINDUIL
+w7QegL5KetQCFveaTPmmqOWq+xiaSvgsF0qdnqBwZEh5ANZiZtMKmX0sbeT4Ie5A
+OiunuwKCAQBlSlrvDqu9rwzCtdfZUwJtaftbGIGlkhdDYdPFXSIRQ7ZGBPlai/zr
+y3dyNgrpLLb2T2ZlWC3pIGC2vVf/WlLMMVCSmgX2MsGBrOxNOBq57KRjlHhrUGRi
+SAh7cqnuzeHw6+y3uZMhow0Semks4KB5ccLW+NBVvVS14vThdE0TZ7oVA74GCKM3
+Qv34S5kgPh7BRKoUZBUmHL0VbgfWMvUEU7eTh3cmPBteMh9RvbPnmz8iAkP/nDbc
+roJ5UOITrL7QZUdG6XgMvik9DEH6P3Vnk8YLjwnfaw5wDm7wdBWtxqZxcru8nkeA
+ZvaamPDoBtqauExW8xL4xaISlUv1BnrJAoIBAQCiEZk93GeRzYJFCO1YafsGYueX
+Pffgd9wM2TpObgaEw8OIfEpGQKDiR35fb0uVzNyI5fVU5D5tP0b3LfvtQXV12ryQ
+sVTA5YJcb8mRuUGy/AkjL54kNiZthUnlGHQjY3lqSyI1r5WxRIZBBRn5+g1eSZVq
+CYCGjEryKm7vw8Qcvy1+H2crcZ0rRyLTcfFCr1ZXlyEZu48ScOtxcIDHc7j4J0LO
+Peq2z0tbBojGkxFLX94J7zpRkWMPX9VHorEavDv7ZJwtgoXn3Lom0xHhO+JQaxY9
+FtJ79Ps9+SquXAnkhna4bbkrqrPM3+MAAV/S7bd1T1/8d4YiRQyaMHGS4Yr8
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512
new file mode 100644 (file)
index 0000000..7ae50f2
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem
new file mode 100644 (file)
index 0000000..1e2fb41
--- /dev/null
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBPQIBAAJBANE7MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOw
+cPygat7sQYiE/lQVa2HFFmK4k0HxTz3/Lr0CAwEAAQJBAJF5xO2ONajX3GK2+B8W
+VVO+BYNK71DfranJCX46BxXI/Ra7wOSY0UWZYHVsZGWJxx41os0UBTg5FRq4DwWW
+AQECIQDo69eo39iQqjwhpAQxatMh2CWYT7gokyu56V+5o2V3fQIhAOX2b+tQxDsB
+w0J9UDN6CdwI5XbzveoP5fHTPS9j4rhBAiEA3c+y6Zx6dZHYf8TdRV5QwDtB2iGY
+4/L7Qimvwm6Lc1UCIQDDXWrVsocTTjsReJ6zLOHFcjVnqklU2W7T1E8tvKE3QQIh
+AMRpCFM7MrS2axuc8/HzGkqW/3AlIBqdZbilj5zHd2R0
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem
new file mode 100644 (file)
index 0000000..8961bd9
--- /dev/null
@@ -0,0 +1,12 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,B3A0D2BCEF4DE916D0BBA30A6885251B
+
+v8y74AGReaPLmDt6O8wir6hX1Ze8K4fVNkrLqfDMdW5E7jBXKO8riCMNmSjQ9fyh
+eTicej93+8krcIvSXKW18TdO+EWezQevgnLrAZQWaNPH2j4B+K5gm701uiiKFKVa
+1zngAOByePYlN6z4JLbiCyJRhxSo5zCaUYkKC2eGh8mlE64QmokPSCAj0wcCDzGh
+hdhBg1vm0GmaQwIDVn+8zMfahscXVMtBmyQf5YP4PQW2nqOt7aZHjBNdg9qnBpGw
+b6YuY7eZ4FgQvYcsNCi34NroJb9pkTrrF2F9Meb6+3So7jtMFG/YaJdCuXtf01g/
+Qm+XA5pJUtIUr/hLQjhkaOVUtXv/k0o/MR4k5CbAmboLt6YHf5V8+01vk0bvv5dI
+70pVdXMmx26xDZOGmjYzd93PWc+75jak3GN2fbWryQs=
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem
new file mode 100644 (file)
index 0000000..7671a30
--- /dev/null
@@ -0,0 +1,12 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,F076229CDC2BCB3B8722E3865855B45C
+
+WFV9QWzr4tNmD+1OeQ7BceQg5LVQHp20Jo1Ax29lq8JTPzeObhtaU2MUHlcPKHUS
+vK4FyQxJ25CyMubbnaZqCCz9pNbseFuJ1tob9UqRmXkZ8HV3snRjJRbcctD+V9x+
+Ymi1GreXoDQtMp0FtMiFjPvIYciBQnaRv2ChMAnGXNbZXCxWWA9E5S3a+yWzo+gd
+wEcowL+SUac1PEDGHokhKn7nctvI9cC4hE6JmKM1sD68/U3rRPXMGqmC7umqyT5P
+gjWBb1uu0iRjFC9eQUsaKPxey5Be710GFlyf/Ff/tep7RhkryIWEPvIzYCBf6rhk
+3pysFgTjfiUuBYUNumjXr/q5hgdtb75788XUDxKwAoUx+m8gi0nJg35CN2nmQ054
+VJxcZlNv0wqnJ+GTTZeN6fiAhTpVtHsqHQomRSfaBiw=
+-----END RSA PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12
new file mode 100644 (file)
index 0000000..9d27999
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted.p8
new file mode 100644 (file)
index 0000000..d04694b
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted.p8 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8
new file mode 100644 (file)
index 0000000..e07375a
--- /dev/null
@@ -0,0 +1,10 @@
+-----BEGIN PRIVATE KEY-----
+MIIBVwIBADANBgkqhkiG9w0BAQEFAASCAUEwggE9AgEAAkEA0TswX6kBQj2GbXK+
+QG5RwUl/V3WhLTblwT0PIBrRI236dNI+I7Bw/KBq3uxBiIT+VBVrYcUWYriTQfFP
+Pf8uvQIDAQABAkEAkXnE7Y41qNfcYrb4HxZVU74Fg0rvUN+tqckJfjoHFcj9FrvA
+5JjRRZlgdWxkZYnHHjWizRQFODkVGrgPBZYBAQIhAOjr16jf2JCqPCGkBDFq0yHY
+JZhPuCiTK7npX7mjZXd9AiEA5fZv61DEOwHDQn1QM3oJ3AjldvO96g/l8dM9L2Pi
+uEECIQDdz7LpnHp1kdh/xN1FXlDAO0HaIZjj8vtCKa/CbotzVQIhAMNdatWyhxNO
+OxF4nrMs4cVyNWeqSVTZbtPUTy28oTdBAiEAxGkIUzsytLZrG5zz8fMaSpb/cCUg
+Gp1luKWPnMd3ZHQ=
+-----END PRIVATE KEY-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12
new file mode 100644 (file)
index 0000000..ae029de
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withoutCA.p12 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withoutCA.p12
new file mode 100644 (file)
index 0000000..c4eb54c
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withoutCA.p12 differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer
new file mode 100644 (file)
index 0000000..fc92d05
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.pem
new file mode 100644 (file)
index 0000000..81f3eaf
--- /dev/null
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIB1zCCAUACCQDxw4fA1PRXwzANBgkqhkiG9w0BAQUFADA0MTIwMAYDVQQKEylh
+eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2
+MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMCwxFjAUBgNVBAoTDWF4VExTIFByb2pl
+Y3QxEjAQBgNVBAMTCTEyNy4wLjAuMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
+gYEA2OC/Fd7qr+jV/QuoqLPXRl2nJmwMtdm8xvjAeND2VmX4KUgOewumJX7oe3lv
+OOW1t/TgnJFg9AbzQB75kRmpL0dDtZse3PaqHEl5ISjLqklz2QkFTALyTE1sHICn
+FJFE/BKz4efjT0S6jMN0OehM0NRMJGG0QJWMwAq3AjkxhZMCAwEAATANBgkqhkiG
+9w0BAQUFAAOBgQALRyRSfbZjeLyA3YdskEwzw1ynlwkcCU+bbrNaPkaSGseHFVnh
+iFzOauKWqjLswu14i+CQZpMUw5irMzXTfV1RCpy5EFhHepiVZP9MXYIZ+eoPXprL
+Midkym9YitDANvS5YzSl2jZQNknStzohM1s+1l8MmYO3sveLRMRec0GpAg==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.cer
new file mode 100644 (file)
index 0000000..c0badf7
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem
new file mode 100644 (file)
index 0000000..1ed0141
--- /dev/null
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE-----
+MIICWzCCAcQCCQDxw4fA1PRXxDANBgkqhkiG9w0BAQQFADA0MTIwMAYDVQQKEylh
+eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2
+MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMCwxFjAUBgNVBAoTDWF4VExTIFByb2pl
+Y3QxEjAQBgNVBAMTCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAMKgv9v6z3AGRLOf3o092S/ENz33Z2tlguOIuh2Apwp2ziHFvul7m9iF
+xsEcEARcvpkRPVo6ifJLjhJErenvvMAIS3WoO1lyenMaGoNddLeRRB0snRn7xRcl
+DYzCYS3fhJmkE06RL/TCTyY9GXa7odRI8kcWuByZog/be15lsgn0pjNKjJICdCer
+Otq0TAV/pfzRBF9lcyboHWQFOu9UVmDp3LsV/9o1GJbyKiNZd0j/GnDFOQbXy7GD
+I9PJTRzo4GQj0cJHY7JelORKiIsymcoMNRTboFRAx5y9jAGF8Ks196Rq/+9gYsvi
+eE0h+pbdLLbM0uZvAYqzIGK9hRR7Ja0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQA8
+L1Zz9K6M/PQCYWrfnTjbPKY2rTB1OvSV0Uwy5KKPQRS1+oK9dx4K0miX+1ZvI1bo
+f7/1aFXOsW3dpTwYUSjJvTMjSwNUPKiB/q/xwA1mzsbIZsbnhIITU95mOJ3xFhgc
+YFdJ4saL7pppTzfOxZ+h9jWbDwgJJAwx/q+O72uE5w==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer
new file mode 100644 (file)
index 0000000..40bbe94
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem
new file mode 100644 (file)
index 0000000..b7aed1c
--- /dev/null
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDWzCCAsQCCQDxw4fA1PRXxTANBgkqhkiG9w0BAQQFADA0MTIwMAYDVQQKEylh
+eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2
+MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMCwxFjAUBgNVBAoTDWF4VExTIFByb2pl
+Y3QxEjAQBgNVBAMTCTEyNy4wLjAuMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
+AgoCggIBAPwntJldKsrQMAz6410QZVIdoHSrNrYQ8NzdfKMF1a0lBavUsAGjDa5n
+qfQ0fTBAC3HTJtxghCe7DjohEHKk89uXYt+liQ3vo6Nc+Zw9l2bDyLKffpOdVc/l
+tweL7FyQIM1fl2W5r/S9OffFRMJKXiN1HPXrfGYRrwz6B2cgUBtSgI+odwCmdfjb
+Ya4Wo8Za53UGeQ7v0eQ0lEDgXAhx3c2YIoXXxfe2J/5KdZnpXtRJWTJaoAbaQ4tU
+xECfVwbYwltHqRQJuUx0N4DMeQwnKgf3DWHWVqqWdALsAE5utfuOpuHxSoN2AGDz
+ov++GihbiEAcP5XPFv/0ldcfEi/4X9lyHb0mvUIa6DTdHd17thFEM12caD0TCszq
+in8JWVu6M0+oRQcDzIfMn4aD7oKtk76gY5HtbN4Jr8E4BHH/oGPe6l4mQl+W4f3o
+Zp2e7yG5WBVA9sjJbCmlxiWMHod1iiZUJ4e9cEFINjMWuooPIo6xKMzZcGHzwkBa
+zS6kHyTsHcfdHcu4aVMlJ9cKN/aesJgup/XseM3imzuJ3UqfvwCfneUKfM6DM8J3
+mFfSwUBvK8uLsMw5Elim/1oIbBG0PTt7BiLiNd0pU/weuL92y2+QB2oCPM0t5D7L
+IYyoZHHNlvTCkQVNsCHgrDUtOdpGlKt6zzEgUTqwC5i5N3p/w6uPAgMBAAEwDQYJ
+KoZIhvcNAQEEBQADgYEAcrCtPXmZyPX01uNMh2X1VkgmUn/zLemierou7WD/h7xL
+dOl4eeKjFBqIiC19382m1DK4h1F8MceqaMgTueCJpLM7A2cwN3ta8/pGP2yEVhdp
+h10PkdRPF/AU8JmxnFaADsc6+6xWbbrdNv5xcvP1bJKWWW+30EhRF9PxjXiETXc=
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer
new file mode 100644 (file)
index 0000000..48c6e13
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem
new file mode 100644 (file)
index 0000000..8191e48
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBkjCB/AIJAPHDh8DU9FfCMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4
+VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw
+NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj
+dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7
+MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV
+a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQAKRT6LwFr1xedJ
+b4qrvjB+EwV/0p4TNNXUS9S30rMSFvRar7VxvLP1lpYj9PR1JGSZMG/B6hR4yumF
+Rjwel9FPgNcWCW4DXAWqz3UQF7oZtJL6K+XJpQ0gwC+Nxc+RRGNLMlK7dLiqFh/V
+qZLej5Xy93M0JyZBiLV88P+c08gd7A==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem
new file mode 100644 (file)
index 0000000..9a75fe9
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBkjCB/AIJAPHDh8DU9FfHMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4
+VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw
+NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj
+dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDo
+g6K2iXFftW+Qk+rrzkMGWrtfY6YSxPstPRrI7akluUEoyWGITXbK6L3QfERrf2eu
+CnWyciQiHVRoHC0EgZUCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBT6YhR8x/bBteK
+lr8E0l4mATOnYlsmge+z/SFYs4bDBofqlwQCVJXNSBA4ZsEjgP9qIWTu/85QrVGq
+LrkewSM6Oeh95LGnE+uhJVtIX++O+Hsex3H1UL067dCG99XmDhqbEU9AI6YSZu2p
+cjoSowFELtOoG667+id9QObfV3EQoQ==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem
new file mode 100644 (file)
index 0000000..4f3074e
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBkjCB/AIJAPHDh8DU9FfIMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4
+VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw
+NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj
+dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANAW
+9PdXa5u4gWi5VB5p/eQmOtteRq9/54JkiEs8cVNrTQgZsjjU1LGedE3JwBqZ1EIW
+HGPjcGg5dVxFjkn7RekCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBmJMt0Crdd/BPn
+EdmzsVXou0zTizTC8wyUPMVpg/KzzP7fhZux/ZIrH9/RVcJd9y+B2/mXc3C+K99+
+TXQoYKsLGArfDPzmpy1wPrdEcB1A9gkWDl1Uq6xRyvrVm3gX8NTITRuGKL9njgWx
+2SrApIBtOOUOinYtfH3745cVVl5HOA==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem
new file mode 100644 (file)
index 0000000..79eb9cc
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBkjCB/AIJAPHDh8DU9FfKMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4
+VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw
+NzExNDQzMloXDTA1MDYwNzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj
+dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7
+MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV
+a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQCmPSs9EceViMZD
+ZTXDZpQWJFcXaeInrXWgYWyVgnHBY/eSuqNCxkV/ehv/Wc5pWBGnrX+4cSvQ+TpQ
+FdZegeOjvgipjtJb/0TJCcvgcdHTntEM0h7VXjfbsJXAHwJPFzWIKxV4jeFXnaaw
+W+YHrj9GQ8PnFmapPuh4h/y6LyHAcg==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem
new file mode 100644 (file)
index 0000000..fe72b54
--- /dev/null
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBkjCB/AIJAPHDh8DU9FfJMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4
+VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTI0MTIz
+MTE0MDAwMFoXDTI1MTIzMTE0MDAwMFowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj
+dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7
+MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV
+a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQApbldYefE8A0ez
+SYvAuCtYxx/2KHwBRD/cR0q7widl9WGjVC/dsnbFo109vHEr3FP1HVYSI0aweiaK
+XZmpUyJ9DprbbWQqaLuDnqIH8X7kfiMuO7/LGQc812iDJI2Akxp9cIlPBFBD8GVx
++0EphzSodDDlLD8bPqLaWTE+8Ydtjw==
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer
new file mode 100644 (file)
index 0000000..c966743
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.pem
new file mode 100644 (file)
index 0000000..e9cbaaf
--- /dev/null
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIBjTCCATcCCQDxw4fA1PRXxjANBgkqhkiG9w0BAQUFADAsMRYwFAYDVQQKEw1h
+eFRMUyBQcm9qZWN0MRIwEAYDVQQDEwkxMjcuMC4wLjEwHhcNMDYwNjA3MTE0NDMy
+WhcNMzMxMDIzMTE0NDMyWjArMSkwJwYDVQQKEyBheFRMUyBQcm9qZWN0IERldmlj
+ZSBDZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1CIODRIr
+v3YgwJW7Fm0wITCsOIgX9l+aIRiXUzur4RkHRJIQUQYM3ZfftC21QyWPGErVIIcJ
+7s7U/iKTQq1LV7USvAp90D/m7s0ntmRj1aBCSG71f0LnSv1rlA8kzUkU7VuEt0Tt
++iqrW0+sYdUBk11dyPLKe6sJnMrJJamVvBsCAwEAATANBgkqhkiG9w0BAQUFAANB
+ABC3Uc6uImIpcLl1WYu8K8qkGnVT4K9JkdXHQFbhFZs37lvITrOHQ3j2oGXTbdAx
+JFJ3II9xXkm+nc7oLHqhXlc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB3zCCAUgCCQCdbnM4pjqlWjANBgkqhkiG9w0BAQUFADA0MTIwMAYDVQQKEylh
+eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2
+MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMDQxMjAwBgNVBAoTKWF4VExTIFByb2pl
+Y3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQCnZdk20fYWh8O6kDTt0AuJWyp0YIrb7W1UNNMPXI5wA4J59IVj
+Nmk5wocm9+Hqzbg7rORAN/mHPBhzLAjhnm1HODs36hW15DtbDkkH4wCM/Tsyv79m
+n0xq1V6peK3t9vi2D4p/IRjHkYR2jm+BeknopijhY0kHHfpGTHa2DnVirwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAB0LgNo0oCcwIie5plgwwFybQ8x95q6e3wndM/Mp
+3gjcAFbGuchpo3dfFlTcRI0KyERb3q1MVxPM4sff9nT7EdHVyK9s8/ITkP2dcTKc
+flbcTEfJVIeM8L2P5F41Hvn9GuGcMW8EmsC06gdbp1LLnqsdrXdMNBsAUBXfgPrU
++UcZ
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c
new file mode 100644 (file)
index 0000000..2a5e836
--- /dev/null
@@ -0,0 +1,43 @@
+
+#include <string.h>
+#include <stdlib.h>
+#include "ssl.h"
+
+int main(int argc, char *argv[])
+{
+    bigint *m1, *m2, *d;
+    BI_CTX *ctx = bi_initialize();
+    char cmp1[1024], cmp2[1024];
+
+    const char *plaintext = /* 128 byte number */
+        "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee"
+        "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee";
+    d = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    memset(cmp1, 0, sizeof(cmp1));
+
+    while (1)
+    {
+        bi_set_mod(ctx, bi_clone(ctx, d), 0);
+        m1 = bi_square(ctx, bi_copy(d));
+        m2 = bi_residue(ctx, m1);
+        bi_free_mod(ctx, 0);
+
+        //bi_export(ctx, bi_copy(d), cmp1, sizeof(cmp1));
+        bi_export(ctx, m2, cmp2, sizeof(cmp2));
+
+        if (memcmp(cmp1, cmp2, sizeof(cmp1)) != 0)
+        {
+            printf("Error!\n"); TTY_FLUSH();
+            break;
+        }
+
+        d = bi_add(ctx, d, int_to_bi(ctx, 1));
+    }
+
+    bi_free(ctx, d);
+    bi_terminate(ctx);
+    printf("all good\n"); TTY_FLUSH();
+    return 0;
+
+}
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old
new file mode 100644 (file)
index 0000000..a5703fb
--- /dev/null
@@ -0,0 +1,280 @@
+#include "crypto.h"
+
+#include <string.h>
+#include <stdlib.h>
+//#define DEBUG_TEST 
+
+typedef enum {
+    encrypt, decrypt
+} CryptoMode;
+
+void hex_dump(const char* header, const unsigned char* data, const unsigned int data_length)
+{
+    unsigned int byte_count;
+    printf("%s (%d bytes):\n", header, data_length);
+    for(byte_count = 0; byte_count < data_length; ++byte_count)
+    {
+        printf("%02X", data[byte_count]);
+    }
+    printf("\n");
+}
+
+void do_rsa(const CryptoMode crypto_mode,
+            const unsigned char* data, const unsigned int data_length,
+            const unsigned char* modulus, const unsigned int modulus_length,
+            const unsigned char* exponent, const unsigned int exponent_length,
+            unsigned char* result, const unsigned int result_length)
+{
+    RSA_CTX* rsa_context = NULL;
+    BI_CTX *bi_ctx;
+    bigint *plaintext_bi;
+    bigint *enc_data_bi, *dec_data_bi;
+
+#ifdef DEBUG_TEST
+    printf("do_rsa:\n");
+    hex_dump("data", data, data_length);
+    hex_dump("modulus", modulus, modulus_length);
+    hex_dump("exponent", exponent, exponent_length);
+#endif
+
+    RSA_priv_key_new(&rsa_context, modulus, modulus_length, exponent, exponent_length, exponent, exponent_length);
+    memset(result, 0, result_length);
+    bi_ctx = rsa_context->bi_ctx;
+
+    switch(crypto_mode)
+    {
+    case encrypt:
+#ifdef DEBUG_TEST
+        printf("encrypt\n");
+#endif
+        plaintext_bi = bi_import(bi_ctx, data, data_length);
+        enc_data_bi = RSA_public(rsa_context, plaintext_bi);
+        bi_export(bi_ctx, enc_data_bi, result, result_length);
+        break;
+
+    case decrypt:
+
+#ifdef DEBUG_TEST
+        printf("decrypt\n");
+#endif
+        plaintext_bi = bi_import(bi_ctx, data, data_length);
+        dec_data_bi = RSA_private(rsa_context, plaintext_bi);
+        bi_export(bi_ctx, dec_data_bi, result, result_length);
+        break;
+    }
+#ifdef DEBUG_TEST
+    hex_dump("result", result, result_length);
+#endif
+
+    RSA_free(rsa_context);
+}
+
+void test_matching(char* test_description, 
+                   const unsigned char* expected, const unsigned int expected_length,
+                   const unsigned char* result, const unsigned int result_length)
+{
+    int test_result = memcmp(expected, result, expected_length);
+    printf("Testing %s ... ", test_description);
+    if(test_result == 0)
+    {
+        printf("ok.\n");
+    }
+    else
+    {
+        printf("failed!\n");
+        hex_dump("should be", expected, expected_length);
+        hex_dump("but is", result, result_length);
+    }
+}
+
+void encrypt_decrypt_should_yield_original(char* test_description,
+                                           const unsigned char* data, const unsigned int data_length,
+                                           const unsigned char* modulus, const unsigned int modulus_length,
+                                           const unsigned char* private_exponent, const unsigned int private_exponent_length,
+                                           const unsigned char* public_exponent, const unsigned int public_exponent_length,
+                                           const unsigned char* cryptogram, const unsigned int cryptogram_length)
+{
+    const unsigned int calculated_cryptogram_length = modulus_length;
+    unsigned char* calculated_cryptogram = malloc(calculated_cryptogram_length);
+    const unsigned int decrypted_data_length = modulus_length;
+    unsigned char* decrypted_data = malloc(decrypted_data_length);
+
+    printf("\nRunning \"%s\" ...\n", test_description);
+
+#ifdef DEBUG_TEST
+    printf("encrypt_decrypt_should_yield_original:\n");
+    hex_dump("data", data, data_length);
+    hex_dump("modulus", modulus, modulus_length);
+    hex_dump("private_exponent", private_exponent, private_exponent_length);
+    hex_dump("public_exponent", public_exponent, public_exponent_length);
+    hex_dump("cryptogram", cryptogram, cryptogram_length);
+#endif
+
+    do_rsa(encrypt, data, data_length,
+           modulus, modulus_length,
+           private_exponent, private_exponent_length,
+           calculated_cryptogram, calculated_cryptogram_length);
+
+#ifdef DEBUG_TEST
+    hex_dump("calculated_cryptogram", calculated_cryptogram, calculated_cryptogram_length);
+#endif
+
+    if(cryptogram != NULL)
+    {
+        test_matching("cryptogram", cryptogram, cryptogram_length, 
+                                    calculated_cryptogram, calculated_cryptogram_length);
+    }
+
+    do_rsa(decrypt, calculated_cryptogram, calculated_cryptogram_length,
+           modulus, modulus_length,
+           public_exponent, public_exponent_length,
+           decrypted_data, decrypted_data_length);
+
+    test_matching("decrypted plaintext", data, data_length,
+                                         decrypted_data, decrypted_data_length);
+
+    free(calculated_cryptogram);
+    free(decrypted_data);
+}
+
+/* configure without CRT!
+
+   prepare data with: 
+   > echo "<string>" |
+     ruby -ne '$_.gsub!(/ /, "").scan(/../).each_with_index \
+      { |b, i| print "\"\n\"" if i % 16 == 0; print "\\x" + b;}' */
+int main(int argc, char *argv[])
+{
+#if 0
+    unsigned char stuff[] = { 
+        0x22, 0x33, 0x44, 0x81, 
+        0xF1, 0xFF, 0xAA, 0xBB, 
+        0xCC, 0xDD, 0xEE , 0x01,
+        0x45, 0x44, 0xfa, 0x8d,
+        0xfa, 0x20, 0x99, 0xFF,
+        0xab, 0xda, 0xac, 0x40 };
+    unsigned char resA[sizeof(stuff)*2], resB[sizeof(stuff)*2];
+
+    BI_CTX *bi_ctx = bi_initialize();
+    bigint *bi_data1, *bi_data2, *res1, *res2;
+    bi_data1 = bi_import(bi_ctx, stuff, sizeof(stuff));
+    bi_data2 = bi_import(bi_ctx, stuff, sizeof(stuff));
+
+    res1 = bi_multiply(bi_ctx, bi_copy(bi_data1), bi_copy(bi_data2));
+    res2 = bi_multiply(bi_ctx, bi_data1, bi_data2);
+    bi_print("MULTIPLY", res1);
+    bi_print("SQUARE", res2);
+    bi_export(bi_ctx, res1, resA, sizeof(resA));
+    bi_export(bi_ctx, res2, resB, sizeof(resB));
+    if (memcmp(resA, resB, sizeof(resA)))
+        printf("OUCH - difference!\n");
+    bi_terminate(bi_ctx);
+
+    exit(0);
+#endif
+    encrypt_decrypt_should_yield_original("Works only with Montgomery",
+        (const unsigned char*) /* data */
+        "\xBC\xD3\x12\x6C\x93\x13\x14\x4C\x00\x5D\xFD\xBF\xDE\xE4\xD3\x60"
+        "\x29\xB8\xAE\x47\xBE\x0B\xB6\x0A\x39\x88\xB7\x93\x19\x14\xE8\x88"
+        "\x4A\xDE\x00\x46\x89\x5A\x11\x1A\xC4\x8F\xE8\xF7\x27\xAC\x59\x80"
+        "\x03\xC1\x93\x14\x01\x00\x93\x15\x07\x00\x00\x00\x01\x01\x05\x20"
+        "\x93\x16\x0F\x42\x34\x33\x3A\x58\x30\x30\x30\x31\x30\x31\x30\x30"
+        "\x30\x31\x92\x6B\x10\x6C\x69\x62\x65\x6C\x6D\x65\x74\x72\x65\x65"
+        "\x2E\x73\x6F\x2E\x30\x93\x18\x02\xA5\x92\x92\x6C\x03\x96\xE3\x0C"
+        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xB7\xBE", 128,
+        (const unsigned char*) /* modulus */
+        "\xc4\x5a\xcb\x35\x95\xad\x32\x4a\xcf\x9c\x82\x45\x13\xb7\x42\x35"
+        "\x22\x32\x6d\x2e\x6d\x26\x2e\x6d\x00\x9b\xae\x2d\x9e\x78\x1e\xdd"
+        "\x40\x23\x17\xa8\xbb\xa1\x07\x86\xb4\x3c\xbc\xe8\xd5\xfc\xd9\xeb"
+        "\x3c\xad\x63\x11\xf3\x1d\x64\x81\x96\xf2\xf5\xfe\xca\x5a\xf7\x8a"
+        "\x15\xcb\x90\x81\x68\xae\x59\xb4\xe1\xa4\x41\x99\xcd\xf3\x98\xbd"
+        "\x3c\x48\x37\xdb\xa1\xc3\x1c\x6f\x43\xd1\x89\x23\xe5\x3d\xa3\xa5"
+        "\x92\x7b\x19\x14\x1e\x7a\xf3\x88\x8a\x36\x21\x3e\x16\x40\x3c\xd7"
+        "\xd3\xdb\x13\xaf\xc9\x68\x45\x84\xb3\x39\x8f\x02\xed\x28\x02\x5f", 128,
+        (const unsigned char*) /* private exponent */
+        "\x5d\x19\xb7\xb4\x66\x8d\xc2\x84\xda\x3f\x99\x3c\xeb\x86\x3e\xec"
+        "\x36\x94\xb6\x54\x07\x08\xcd\x86\x7d\x7d\x53\x6e\xe9\xee\x86\xa3"
+        "\xdd\x5f\x46\x3e\x89\x08\x67\x2b\x25\x96\x8e\xf3\xcf\x52\x9e\x78"
+        "\xfd\x42\x30\xf1\x37\xd6\xbd\xea\xfc\x09\xa3\x3d\xf5\xf0\x7f\xe1"
+        "\xb1\xe0\x69\x13\x44\xf9\x8b\x95\x58\x2a\x81\xb3\xa8\x15\xce\x7e"
+        "\xd3\xea\x97\x0a\xa2\x14\xd4\xae\xc7\x75\xbb\x9f\x68\xa5\x53\x0e"
+        "\x85\x29\x88\x48\x6c\xc9\xcc\xde\x72\x40\x3a\x4c\x82\xde\x3c\xfb"
+        "\x08\xf8\x2c\x26\xb5\xd4\xea\xc4\xca\x98\x6e\x43\x3e\x67\x54\xc1", 128,
+        (const unsigned char*) /* public exponent */
+        "\x01\x00\x01", 3,
+        (const unsigned char*) /* precalculated encrypted data */
+        "\x93\xE8\x1F\xF9\x70\xFA\xAA\xED\x54\xFD\x48\x37\xC9\x71\x9A\x11"
+        "\x69\x80\xB4\x22\x0C\xAD\x5A\x95\x65\xCA\x7C\xF7\x70\x56\x92\xCB"
+        "\x45\x6D\x58\x84\x21\x80\x23\x76\x21\x4A\x61\x99\xC1\x11\x9C\x0F"
+        "\x40\xED\x80\x9C\x8F\x3A\x4F\x01\xB5\x72\xC3\x24\xAE\xF3\x6B\x98"
+        "\xA8\x60\xAC\xAF\x95\x98\x9A\xAA\xA4\x28\xF2\x02\x05\xFC\xF3\xDD"
+        "\xB0\x5A\x4E\xDE\x3C\x41\x4B\x1C\x5B\x1F\xF6\x3D\xAF\x93\x43\xCB"
+        "\xD8\xC7\x24\x97\x8F\x49\xE5\x5B\x10\x51\x3B\x1E\xA6\x39\xEA\x4E"
+        "\xA5\xE0\x71\x8C\xCA\x34\x8C\x2F\x6C\x5C\x78\x34\x86\x7C\x54\x6A", 128);
+
+    encrypt_decrypt_should_yield_original("Works only with Barrett",
+        (const unsigned char*) /* data */
+        "\x36\x42\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c"
+        "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64"
+        "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b"
+        "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96"
+        "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb"
+        "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87"
+        "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5"
+        "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128,
+        (const unsigned char*) /* modulus */
+        "\x37\x0c\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c"
+        "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64"
+        "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b"
+        "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96"
+        "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb"
+        "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87"
+        "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5"
+        "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128,
+        (const unsigned char*) /* private exponent */
+        "\x16\x3a\x76\xd2\x66\xfb\x4f\x0d\x2d\xb6\x7a\x2b\x64\x3b\xca\x7b"
+        "\x58\x5f\x79\x33\x2b\x96\x2a\xfd\xd2\xc4\xa5\x15\xa7\xfb\x3a\x22"
+        "\x8c\xf0\x90\x09\x11\x2a\x32\xcc\xe8\xf7\x9e\x25\x53\x29\x9d\xc8"
+        "\x45\x1e\xce\x6c\x9c\x0d\xe8\x1d\x3f\xcf\xd5\xe0\xe0\x0f\x09\x69"
+        "\x2d\xe7\xd5\xe6\xe5\x10\xd9\x4e\x20\xdb\xbd\xa1\x04\x6b\xe6\x1d"
+        "\x4c\x79\x28\x47\x30\x11\xde\x14\xb4\x6e\x35\x98\x38\x50\x44\x82"
+        "\xbd\xc4\xfb\x03\xb3\xf6\x5e\x5a\x29\xfa\x29\xaa\xde\xe4\xfd\x15"
+        "\xbe\xed\x4f\x93\x9d\x0d\x29\xe8\xd7\xa3\xf4\x18\xc8\x98\xb1\x01", 128, 
+        (const unsigned char*) /* public exponent */
+        "\x01\x00\x01", 3,
+        NULL, 0);
+
+    encrypt_decrypt_should_yield_original("Works always",
+        (const unsigned char*) /* data */
+        "\xB9\x42\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c"
+        "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64"
+        "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b"
+        "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96"
+        "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb"
+        "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87"
+        "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5"
+        "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128,
+        (const unsigned char*) /* modulus */
+        "\xB9\x77\xEC\x83\x95\xAF\xB1\xF8\x21\x21\xFF\x05\x5E\x0C\x91\x0C"
+        "\x2E\xD5\xD2\x94\x1C\x38\x5E\xED\x5A\xCF\x84\xD0\x12\x8B\xAA\x4B"
+        "\x3A\x63\x65\x78\x13\xED\x24\x4E\x83\xF2\xF5\x02\x66\x5D\xFC\xC1"
+        "\x80\x5B\x78\x78\xB4\x0B\x45\xE5\x22\xC6\xCD\xEB\xCC\x74\x0B\x0B"
+        "\xD8\x8B\x91\x99\x48\x8E\x74\xA9\xD0\x1A\x39\x94\xC2\xD4\x2E\x9A"
+        "\x8C\x0C\x35\x0D\x97\x8F\xC4\x62\x20\xE9\x78\x40\x97\x05\x98\xE6"
+        "\x22\x48\x3D\x3D\xCA\x6A\x3F\xEF\xB0\x23\x14\x30\xDA\x35\x46\x65"
+        "\x55\xEF\xEB\xA1\xA9\xCF\x83\xE7\xEF\xF2\x83\x6D\x38\xEA\x88\xED", 128,
+        (const unsigned char*) /* private exponent */
+        "\x52\x2A\x68\xE3\x9A\xAA\xED\xA3\x49\xBA\x6F\xEA\x86\xD1\xF6\x68"
+        "\x79\x4F\x4D\x2D\x44\x9B\x4C\xA2\xC6\xBA\x6C\xD2\x69\x84\xEA\x7A"
+        "\xCD\x71\x3F\x80\xC5\x03\x28\x34\x88\x8C\x58\x33\x29\xFA\xB5\x81"
+        "\x5C\x46\x29\xC6\xFF\xAC\x86\xD8\x8E\x61\x98\xD4\xC0\x0D\x20\xDE"
+        "\xEB\x61\x1C\x0C\x3C\x19\xA3\x75\x10\x7D\xDA\xA9\x55\xA7\x64\x5F"
+        "\xE0\xB6\x35\x62\x00\xD9\xD2\xF7\xA4\xDF\x85\xFF\xDF\x86\x75\x29"
+        "\x66\x16\x03\x8C\xC0\xB0\x3F\xAB\xBA\x41\xB3\x3C\x76\x58\xB6\xE2"
+        "\x1F\x36\x47\x5F\x1F\x0E\x4C\xB5\x29\x90\xDC\xA1\xF8\xFA\x58\x19", 128,
+        (const unsigned char*) /* public exponent */
+        "\x01\x00\x01", 3,
+        NULL, 0);
+
+    return 0;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca
new file mode 100644 (file)
index 0000000..0f4b96a
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca
new file mode 100644 (file)
index 0000000..79b0a3f
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/gnutls.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/gnutls.cer
new file mode 100755 (executable)
index 0000000..312e365
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/gnutls.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat
new file mode 100755 (executable)
index 0000000..a48d23d
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh
new file mode 100755 (executable)
index 0000000..17950fb
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+ps -ef|grep openssl | /usr/bin/awk '{print $2}' |xargs kill -9
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh
new file mode 100755 (executable)
index 0000000..dfc39d4
--- /dev/null
@@ -0,0 +1,174 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Generate the certificates and keys for testing.
+#
+
+PROJECT_NAME="axTLS Project"
+
+# Generate the openssl configuration files.
+cat > ca_cert.conf << EOF  
+[ req ]
+distinguished_name     = req_distinguished_name
+prompt                 = no
+
+[ req_distinguished_name ]
+ O                      = $PROJECT_NAME Dodgy Certificate Authority
+EOF
+
+cat > certs.conf << EOF  
+[ req ]
+distinguished_name     = req_distinguished_name
+prompt                 = no
+
+[ req_distinguished_name ]
+ O                      = $PROJECT_NAME
+ CN                     = 127.0.0.1
+EOF
+
+cat > device_cert.conf << EOF  
+[ req ]
+distinguished_name     = req_distinguished_name
+prompt                 = no
+
+[ req_distinguished_name ]
+ O                      = $PROJECT_NAME Device Certificate
+EOF
+
+# private key generation
+openssl genrsa -out axTLS.ca_key.pem 1024
+openssl genrsa -out axTLS.key_512.pem 512
+openssl genrsa -out axTLS.key_1024.pem 1024
+openssl genrsa -out axTLS.key_2048.pem 2048
+openssl genrsa -out axTLS.key_4096.pem 4096
+openssl genrsa -out axTLS.device_key.pem 1024
+openssl genrsa -aes128 -passout pass:abcd -out axTLS.key_aes128.pem 512
+openssl genrsa -aes256 -passout pass:abcd -out axTLS.key_aes256.pem 512
+
+# convert private keys into DER format
+openssl rsa -in axTLS.key_512.pem -out axTLS.key_512 -outform DER
+openssl rsa -in axTLS.key_1024.pem -out axTLS.key_1024 -outform DER
+openssl rsa -in axTLS.key_2048.pem -out axTLS.key_2048 -outform DER
+openssl rsa -in axTLS.key_4096.pem -out axTLS.key_4096 -outform DER
+openssl rsa -in axTLS.device_key.pem -out axTLS.device_key -outform DER
+
+# cert requests
+openssl req -out axTLS.ca_x509.req -key axTLS.ca_key.pem -new \
+            -config ./ca_cert.conf 
+openssl req -out axTLS.x509_512.req -key axTLS.key_512.pem -new \
+            -config ./certs.conf 
+openssl req -out axTLS.x509_1024.req -key axTLS.key_1024.pem -new \
+            -config ./certs.conf 
+openssl req -out axTLS.x509_2048.req -key axTLS.key_2048.pem -new \
+            -config ./certs.conf 
+openssl req -out axTLS.x509_4096.req -key axTLS.key_4096.pem -new \
+            -config ./certs.conf 
+openssl req -out axTLS.x509_device.req -key axTLS.device_key.pem -new \
+            -config ./device_cert.conf
+openssl req -out axTLS.x509_aes128.req -key axTLS.key_aes128.pem \
+            -new -config ./certs.conf -passin pass:abcd
+openssl req -out axTLS.x509_aes256.req -key axTLS.key_aes256.pem \
+            -new -config ./certs.conf -passin pass:abcd
+
+# generate the actual certs.
+openssl x509 -req -in axTLS.ca_x509.req -out axTLS.ca_x509.pem \
+            -sha1 -days 10000 -signkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_512.pem \
+            -sha1 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_1024.req -out axTLS.x509_1024.pem \
+            -sha1 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_2048.req -out axTLS.x509_2048.pem \
+            -md5 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_4096.req -out axTLS.x509_4096.pem \
+            -md5 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_device.req -out axTLS.x509_device.pem \
+            -sha1 -CAcreateserial -days 10000 \
+            -CA axTLS.x509_512.pem -CAkey axTLS.key_512.pem
+openssl x509 -req -in axTLS.x509_aes128.req \
+            -out axTLS.x509_aes128.pem \
+            -sha1 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+openssl x509 -req -in axTLS.x509_aes256.req \
+            -out axTLS.x509_aes256.pem \
+            -sha1 -CAcreateserial -days 10000 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+
+# note: must be root to do this
+DATE_NOW=`date`
+if date -s "Jan 1 2025"; then
+openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_before.pem \
+            -sha1 -CAcreateserial -days 365 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+date -s "$DATE_NOW"
+touch axTLS.x509_bad_before.pem
+fi
+openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_after.pem \
+            -sha1 -CAcreateserial -days -365 \
+            -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
+
+# some cleanup
+rm axTLS*.req
+rm axTLS.srl
+rm *.conf
+
+# need this for the client tests
+openssl x509 -in axTLS.ca_x509.pem -outform DER -out axTLS.ca_x509.cer 
+openssl x509 -in axTLS.x509_512.pem -outform DER -out axTLS.x509_512.cer
+openssl x509 -in axTLS.x509_1024.pem -outform DER -out axTLS.x509_1024.cer
+openssl x509 -in axTLS.x509_2048.pem -outform DER -out axTLS.x509_2048.cer
+openssl x509 -in axTLS.x509_4096.pem -outform DER -out axTLS.x509_4096.cer
+openssl x509 -in axTLS.x509_device.pem -outform DER -out axTLS.x509_device.cer
+
+# generate pkcs8 files (use RC4-128 for encryption)
+openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted_pem.p8
+openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -outform DER -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted.p8
+openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -out axTLS.unencrypted_pem.p8
+openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -outform DER -out axTLS.unencrypted.p8
+
+# generate pkcs12 files (use RC4-128 for encryption)
+openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -certfile axTLS.ca_x509.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_with_CA" -out axTLS.withCA.p12 -password pass:abcd
+openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_without_CA" -out axTLS.withoutCA.p12 -password pass:abcd
+openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -out axTLS.noname.p12 -password pass:abcd
+
+# PEM certificate chain
+cat axTLS.ca_x509.pem >> axTLS.x509_device.pem
+
+# set default key/cert for use in the server
+xxd -i axTLS.x509_1024.cer | sed -e \
+        "s/axTLS_x509_1024_cer/default_certificate/" > ../../ssl/cert.h
+xxd -i axTLS.key_1024 | sed -e \
+        "s/axTLS_key_1024/default_private_key/" > ../../ssl/private_key.h
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca
new file mode 100644 (file)
index 0000000..b908034
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem
new file mode 100644 (file)
index 0000000..478e60b
--- /dev/null
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEEjCCAvqgAwIBAgIPAMEAizw8iBHRPvZj7N9AMA0GCSqGSIb3DQEBBAUAMHAx
+KzApBgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAc
+BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0
+IFJvb3QgQXV0aG9yaXR5MB4XDTk3MDExMDA3MDAwMFoXDTIwMTIzMTA3MDAwMFow
+cDErMCkGA1UECxMiQ29weXJpZ2h0IChjKSAxOTk3IE1pY3Jvc29mdCBDb3JwLjEe
+MBwGA1UECxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3Nv
+ZnQgUm9vdCBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCpAr3BcOY78k4bKJ+XeF4w6qKpjSVf+P6VTKO3/p2iID58UaKboo9gMmvRQmR5
+7qx2yVTa8uuchhyPn4Rms8VremIj1h083g8BkuiWxL8tZpqaaCaZ0Dosvwy1WCbB
+RucKPjiWLKkoOajsSYNC44QPu5psVWGsgnyhYC13TOmZtGQ7mlAcMQgkFJ+p55Er
+GOY9mGMUYFgFZZ8dN1KH96fvlALGG9O/VUWziYC/OuxUlE6u/ad6bXROrxjMlgko
+IQBXkGBpN7tLEgc8Vv9b+6RmCgim0oFWV++2O14WgXcE2va+roCV/rDNf9anGnJc
+PMq88AijIjCzBoXJsyB3E4XfAgMBAAGjgagwgaUwgaIGA1UdAQSBmjCBl4AQW9Bw
+72lyniNRfhSyTY7/y6FyMHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBN
+aWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEh
+MB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5gg8AwQCLPDyIEdE+9mPs
+30AwDQYJKoZIhvcNAQEEBQADggEBAJXoC8CN85cYNe24ASTYdxHzXGAyn54Lyz4F
+kYiPyTrmIfLwV5MstaBHyGLv/NfMOztaqTZUaf4kbT/JzKreBXzdMY09nxBwarv+
+Ek8YacD80EPjEVogT+pie6+qGcgrNyUtvmWhEoolD2Oj91Qc+SHJ1hXzUqxuQzIH
+/YIX+OVnbA1R9r3xUse958Qw/CAxCYgdlSkaTdUdAqXxgOADtFv0sd3IV+5lScdS
+VLa0AygS/5DW8AiPfriXxas3LOR65Kh343agANBqP8HSNorgQRKoNWobats14dQc
+BOSoRQTIWjM4bk0cDWK3CqKM09VUP0bNHFWmcNsSOoeTdZ+n0qA=
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer
new file mode 100755 (executable)
index 0000000..250b926
--- /dev/null
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----\r
+MIIB5jCCAVOgAwIBAgIQWPe7KyA+U7lLUohulwW2HDAJBgUrDgMCHQUAMCExHzAd\r
+BgNVBAMTFmF4dGxzLmNlcm9jY2x1Yi5jb20uYXUwHhcNMDgwMzE3MTAyMTA2WhcN\r
+MDkwMzE3MTAyMTA2WjAhMR8wHQYDVQQDExZheHRscy5jZXJvY2NsdWIuY29tLmF1\r
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9JqHlQjrQMt3JW8yxcGhFagDa\r
+D4QiIY8+KItTt13fIBt5g1AG4VXniaylSqKKYNPwVzqSWl7WhxMmoFU73veF8o4M\r
+G0Zc5qbVB6ukrSV4WaTgHrIO6pWkyiaQ4L/eYfCo/2pByhl0IUKkf/TMN346/rFg\r
+JgrElx01l6QHNQrzVQIDAQABoycwJTATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNV\r
+HQ8EBwMFALAAAAAwCQYFKw4DAh0FAAOBgQAbH94H1fryngROJ//Oa0D3vvTO8CJ3\r
+8VW+3gQEwrPBOWmN6RV8OM0dE6pf8wD3s7PTCcM5+/HI1Qk53nUGrNiOmKM1s0JB\r
+bvsO9RT+UF8mtdbo/n30M0MHMWPCC76baW3R+ANBp/V/z4l1ytpUTt+MHvz0VlUs\r
+J4uJA3s3uh23Tg==\r
+-----END CERTIFICATE-----\r
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c
new file mode 100644 (file)
index 0000000..a4ffab6
--- /dev/null
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Some performance testing of bigint.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "ssl.h"
+
+/**************************************************************************
+ * BIGINT tests 
+ *
+ **************************************************************************/
+
+int main(int argc, char *argv[])
+{
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    RSA_CTX *rsa_ctx;
+    BI_CTX *ctx;
+    bigint *bi_data, *bi_res;
+    int diff, res = 1;
+    struct timeval tv_old, tv_new;
+    const char *plaintext;
+    uint8_t compare[MAX_KEY_BYTE_SIZE];
+    int i, max_biggie = 10;    /* really crank performance */
+    int len; 
+    uint8_t *buf;
+
+    /**
+     * 512 bit key
+     */
+    plaintext = /* 64 byte number */
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^";
+
+    len = get_file("../ssl/test/axTLS.key_512", &buf);
+    asn1_get_private_key(buf, len, &rsa_ctx);
+    ctx = rsa_ctx->bi_ctx;
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    bi_res = RSA_public(rsa_ctx, bi_data);
+    bi_data = bi_res;   /* reuse again */
+
+    gettimeofday(&tv_old, NULL);
+    for (i = 0; i < max_biggie; i++)
+    {
+        bi_res = RSA_private(rsa_ctx, bi_copy(bi_data));
+        if (i < max_biggie-1)
+        {
+            bi_free(ctx, bi_res);
+        }
+    }
+
+    gettimeofday(&tv_new, NULL);
+    bi_free(ctx, bi_data);
+
+    diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 +
+                (tv_new.tv_usec-tv_old.tv_usec)/1000;
+    printf("512 bit decrypt time: %dms\n", diff/max_biggie);
+    TTY_FLUSH();
+    bi_export(ctx, bi_res, compare, 64);
+    RSA_free(rsa_ctx);
+    free(buf);
+    if (memcmp(plaintext, compare, 64) != 0)
+        goto end;
+
+    /**
+     * 1024 bit key
+     */
+    plaintext = /* 128 byte number */
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^";
+
+    len = get_file("../ssl/test/axTLS.key_1024", &buf);
+    asn1_get_private_key(buf, len, &rsa_ctx);
+    ctx = rsa_ctx->bi_ctx;
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    bi_res = RSA_public(rsa_ctx, bi_data);
+    bi_data = bi_res;   /* reuse again */
+
+    gettimeofday(&tv_old, NULL);
+    for (i = 0; i < max_biggie; i++)
+    {
+        bi_res = RSA_private(rsa_ctx, bi_copy(bi_data));
+        if (i < max_biggie-1)
+        {
+            bi_free(ctx, bi_res);
+        }
+    }
+
+    gettimeofday(&tv_new, NULL);
+    bi_free(ctx, bi_data);
+
+    diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 +
+                (tv_new.tv_usec-tv_old.tv_usec)/1000;
+    printf("1024 bit decrypt time: %dms\n", diff/max_biggie);
+    TTY_FLUSH();
+    bi_export(ctx, bi_res, compare, 128);
+    RSA_free(rsa_ctx);
+    free(buf);
+    if (memcmp(plaintext, compare, 128) != 0)
+        goto end;
+
+    /**
+     * 2048 bit key
+     */
+    plaintext = /* 256 byte number */
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^";
+
+    len = get_file("../ssl/test/axTLS.key_2048", &buf);
+    asn1_get_private_key(buf, len, &rsa_ctx);
+    ctx = rsa_ctx->bi_ctx;
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    bi_res = RSA_public(rsa_ctx, bi_data);
+    bi_data = bi_res;   /* reuse again */
+
+    gettimeofday(&tv_old, NULL);
+    for (i = 0; i < max_biggie; i++)
+    {
+        bi_res = RSA_private(rsa_ctx, bi_copy(bi_data));
+        if (i < max_biggie-1)
+        {
+            bi_free(ctx, bi_res);
+        }
+    }
+    gettimeofday(&tv_new, NULL);
+    bi_free(ctx, bi_data);
+
+    diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 +
+                (tv_new.tv_usec-tv_old.tv_usec)/1000;
+    printf("2048 bit decrypt time: %dms\n", diff/max_biggie);
+    TTY_FLUSH();
+    bi_export(ctx, bi_res, compare, 256);
+    RSA_free(rsa_ctx);
+    free(buf);
+    if (memcmp(plaintext, compare, 256) != 0)
+        goto end;
+
+    /**
+     * 4096 bit key
+     */
+    plaintext = /* 512 byte number */
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"
+        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^";
+
+    len = get_file("../ssl/test/axTLS.key_4096", &buf);
+    asn1_get_private_key(buf, len, &rsa_ctx);
+    ctx = rsa_ctx->bi_ctx;
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    gettimeofday(&tv_old, NULL);
+    bi_res = RSA_public(rsa_ctx, bi_data);
+    gettimeofday(&tv_new, NULL);
+    diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 +
+                (tv_new.tv_usec-tv_old.tv_usec)/1000;
+    printf("4096 bit encrypt time: %dms\n", diff);
+    TTY_FLUSH();
+    bi_data = bi_res;   /* reuse again */
+
+    gettimeofday(&tv_old, NULL);
+    for (i = 0; i < max_biggie; i++)
+    {
+        bi_res = RSA_private(rsa_ctx, bi_copy(bi_data));
+        if (i < max_biggie-1)
+        {
+            bi_free(ctx, bi_res);
+        }
+    }
+
+    gettimeofday(&tv_new, NULL);
+    bi_free(ctx, bi_data);
+
+    diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 +
+                (tv_new.tv_usec-tv_old.tv_usec)/1000;
+    printf("4096 bit decrypt time: %dms\n", diff/max_biggie);
+    TTY_FLUSH();
+    bi_export(ctx, bi_res, compare, 512);
+    RSA_free(rsa_ctx);
+    free(buf);
+    if (memcmp(plaintext, compare, 512) != 0)
+        goto end;
+
+    /* done */
+    printf("Bigint performance testing complete\n");
+    res = 0;
+
+end:
+    return res;
+#else
+    return 0;
+#endif
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer
new file mode 100755 (executable)
index 0000000..a427870
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c
new file mode 100644 (file)
index 0000000..d525e1a
--- /dev/null
@@ -0,0 +1,1983 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * The testing of the crypto and ssl stuff goes here. Keeps the individual code
+ * modules from being uncluttered with test code.
+ *
+ * This is test code - I make no apologies for the quality!
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifndef WIN32
+#include <pthread.h>
+#endif
+
+#include "ssl.h"
+
+#define DEFAULT_CERT            "../ssl/test/axTLS.x509_512.cer"
+#define DEFAULT_KEY             "../ssl/test/axTLS.key_512"     
+//#define DEFAULT_SVR_OPTION      SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES
+#define DEFAULT_SVR_OPTION      0
+#define DEFAULT_CLNT_OPTION     0
+//#define DEFAULT_CLNT_OPTION      SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES
+
+static int g_port = 19001;
+
+/**************************************************************************
+ * AES tests 
+ * 
+ * Run through a couple of the RFC3602 tests to verify that AES is correct.
+ **************************************************************************/
+#define TEST1_SIZE  16
+#define TEST2_SIZE  32
+
+static int AES_test(BI_CTX *bi_ctx)
+{
+    AES_CTX aes_key;
+    int res = 1;
+    uint8_t key[TEST1_SIZE];
+    uint8_t iv[TEST1_SIZE];
+
+    {
+        /*
+            Case #1: Encrypting 16 bytes (1 block) using AES-CBC
+            Key       : 0x06a9214036b8a15b512e03d534120006
+            IV        : 0x3dafba429d9eb430b422da802c9fac41
+            Plaintext : "Single block msg"
+            Ciphertext: 0xe353779c1079aeb82708942dbe77181a
+
+        */
+        char *in_str =  "Single block msg";
+        uint8_t ct[TEST1_SIZE];
+        uint8_t enc_data[TEST1_SIZE];
+        uint8_t dec_data[TEST1_SIZE];
+
+        bigint *key_bi = bi_str_import(
+                bi_ctx, "06A9214036B8A15B512E03D534120006");
+        bigint *iv_bi = bi_str_import(
+                bi_ctx, "3DAFBA429D9EB430B422DA802C9FAC41");
+        bigint *ct_bi = bi_str_import(
+                bi_ctx, "E353779C1079AEB82708942DBE77181A");
+        bi_export(bi_ctx, key_bi, key, TEST1_SIZE);
+        bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE);
+        bi_export(bi_ctx, ct_bi, ct, TEST1_SIZE);
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_cbc_encrypt(&aes_key, (const uint8_t *)in_str, 
+                enc_data, sizeof(enc_data));
+        if (memcmp(enc_data, ct, sizeof(ct)))
+        {
+            printf("Error: AES ENCRYPT #1 failed\n");
+            goto end;
+        }
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_convert_key(&aes_key);
+        AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data));
+
+        if (memcmp(dec_data, in_str, sizeof(dec_data)))
+        {
+            printf("Error: AES DECRYPT #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        /*
+            Case #2: Encrypting 32 bytes (2 blocks) using AES-CBC 
+            Key       : 0xc286696d887c9aa0611bbb3e2025a45a
+            IV        : 0x562e17996d093d28ddb3ba695a2e6f58
+            Plaintext : 0x000102030405060708090a0b0c0d0e0f
+                          101112131415161718191a1b1c1d1e1f
+            Ciphertext: 0xd296cd94c2cccf8a3a863028b5e1dc0a
+                          7586602d253cfff91b8266bea6d61ab1
+        */
+        uint8_t in_data[TEST2_SIZE];
+        uint8_t ct[TEST2_SIZE];
+        uint8_t enc_data[TEST2_SIZE];
+        uint8_t dec_data[TEST2_SIZE];
+
+        bigint *in_bi = bi_str_import(bi_ctx,
+            "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F");
+        bigint *key_bi = bi_str_import(
+                bi_ctx, "C286696D887C9AA0611BBB3E2025A45A");
+        bigint *iv_bi = bi_str_import(
+                bi_ctx, "562E17996D093D28DDB3BA695A2E6F58");
+        bigint *ct_bi = bi_str_import(bi_ctx,
+            "D296CD94C2CCCF8A3A863028B5E1DC0A7586602D253CFFF91B8266BEA6D61AB1");
+        bi_export(bi_ctx, in_bi, in_data, TEST2_SIZE);
+        bi_export(bi_ctx, key_bi, key, TEST1_SIZE);
+        bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE);
+        bi_export(bi_ctx, ct_bi, ct, TEST2_SIZE);
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_cbc_encrypt(&aes_key, (const uint8_t *)in_data, 
+                enc_data, sizeof(enc_data));
+
+        if (memcmp(enc_data, ct, sizeof(ct)))
+        {
+            printf("Error: ENCRYPT #2 failed\n");
+            goto end;
+        }
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_convert_key(&aes_key);
+        AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data));
+        if (memcmp(dec_data, in_data, sizeof(dec_data)))
+        {
+            printf("Error: DECRYPT #2 failed\n");
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All AES tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * RC4 tests 
+ *
+ * ARC4 tests vectors from OpenSSL (crypto/rc4/rc4test.c)
+ **************************************************************************/
+static const uint8_t keys[7][30]=
+{
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
+    {4,0xef,0x01,0x23,0x45},
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {4,0xef,0x01,0x23,0x45},
+};
+
+static const uint8_t data_len[7]={8,8,8,20,28,10};
+static uint8_t data[7][30]=
+{
+    {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+        0x00,0x00,0x00,0x00,0xff},
+        {0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0xff},
+            {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+            {0},
+};
+
+static const uint8_t output[7][30]=
+{
+    {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00},
+    {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00},
+    {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00},
+    {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,
+        0xbd,0x61,0x5a,0x11,0x62,0xe1,0xc7,0xba,
+        0x36,0xb6,0x78,0x58,0x00},
+        {0x66,0xa0,0x94,0x9f,0x8a,0xf7,0xd6,0x89,
+            0x1f,0x7f,0x83,0x2b,0xa8,0x33,0xc0,0x0c,
+            0x89,0x2e,0xbe,0x30,0x14,0x3c,0xe2,0x87,
+            0x40,0x01,0x1e,0xcf,0x00},
+            {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,0xbd,0x61,0x00},
+            {0},
+};
+
+static int RC4_test(BI_CTX *bi_ctx)
+{
+    int i, res = 1;
+    RC4_CTX s;
+
+    for (i = 0; i < 6; i++)
+    {
+        RC4_setup(&s, &keys[i][1], keys[i][0]);
+        RC4_crypt(&s, data[i], data[i], data_len[i]);
+
+        if (memcmp(data[i], output[i], data_len[i]))
+        {
+            printf("Error: RC4 CRYPT #%d failed\n", i);
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All RC4 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * SHA1 tests 
+ *
+ * Run through a couple of the RFC3174 tests to verify that SHA1 is correct.
+ **************************************************************************/
+static int SHA1_test(BI_CTX *bi_ctx)
+{
+    SHA1_CTX ctx;
+    uint8_t ct[SHA1_SIZE];
+    uint8_t digest[SHA1_SIZE];
+    int res = 1;
+
+    {
+        const char *in_str = "abc";
+        bigint *ct_bi = bi_str_import(bi_ctx,
+                "A9993E364706816ABA3E25717850C26C9CD0D89D");
+        bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+        SHA1_Init(&ctx);
+        SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        SHA1_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: SHA1 #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        const char *in_str =
+            "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
+        bigint *ct_bi = bi_str_import(bi_ctx,
+                "84983E441C3BD26EBAAE4AA1F95129E5E54670F1");
+        bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+        SHA1_Init(&ctx);
+        SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        SHA1_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: SHA1 #2 failed\n");
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All SHA1 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * MD5 tests 
+ *
+ * Run through a couple of the RFC1321 tests to verify that MD5 is correct.
+ **************************************************************************/
+static int MD5_test(BI_CTX *bi_ctx)
+{
+    MD5_CTX ctx;
+    uint8_t ct[MD5_SIZE];
+    uint8_t digest[MD5_SIZE];
+    int res = 1;
+
+    {
+        const char *in_str =  "abc";
+        bigint *ct_bi = bi_str_import(bi_ctx, 
+                "900150983CD24FB0D6963F7D28E17F72");
+        bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+
+        MD5_Init(&ctx);
+        MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        MD5_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: MD5 #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        const char *in_str =
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        bigint *ct_bi = bi_str_import(
+                bi_ctx, "D174AB98D277D9F5A5611C2C9F419D9F");
+        bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+
+        MD5_Init(&ctx);
+        MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        MD5_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: MD5 #2 failed\n");
+            goto end;
+        }
+    }
+    res = 0;
+    printf("All MD5 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * HMAC tests 
+ *
+ * Run through a couple of the RFC2202 tests to verify that HMAC is correct.
+ **************************************************************************/
+static int HMAC_test(BI_CTX *bi_ctx)
+{
+    uint8_t key[SHA1_SIZE];
+    uint8_t ct[SHA1_SIZE];
+    uint8_t dgst[SHA1_SIZE];
+    int res = 1;
+    const char *key_str;
+
+    const char *data_str = "Hi There";
+    bigint *key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B");
+    bigint *ct_bi = bi_str_import(bi_ctx, "9294727A3638BB1C13F48EF8158BFC9D");
+    bi_export(bi_ctx, key_bi, key, MD5_SIZE);
+    bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+    hmac_md5((const uint8_t *)data_str, 8, key, MD5_SIZE, dgst);
+    if (memcmp(dgst, ct, MD5_SIZE))
+    {
+        printf("HMAC MD5 #1 failed\n");
+        goto end;
+    }
+
+    data_str = "what do ya want for nothing?";
+    key_str = "Jefe";
+    ct_bi = bi_str_import(bi_ctx, "750C783E6AB0B503EAA86E310A5DB738");
+    bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+    hmac_md5((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 4, dgst);
+    if (memcmp(dgst, ct, MD5_SIZE))
+    {
+        printf("HMAC MD5 #2 failed\n");
+        goto end;
+    }
+   
+    data_str = "Hi There";
+    key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B");
+    bi_export(bi_ctx, key_bi, key, SHA1_SIZE);
+    ct_bi = bi_str_import(bi_ctx, "B617318655057264E28BC0B6FB378C8EF146BE00");
+    bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+    hmac_sha1((const uint8_t *)data_str, 8, 
+            (const uint8_t *)key, SHA1_SIZE, dgst);
+    if (memcmp(dgst, ct, SHA1_SIZE))
+    {
+        printf("HMAC SHA1 #1 failed\n");
+        goto end;
+    }
+
+    data_str = "what do ya want for nothing?";
+    key_str = "Jefe";
+    ct_bi = bi_str_import(bi_ctx, "EFFCDF6AE5EB2FA2D27416D5F184DF9C259A7C79");
+    bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+    hmac_sha1((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 5, dgst);
+    if (memcmp(dgst, ct, SHA1_SIZE))
+    {
+        printf("HMAC SHA1 failed\n");
+        exit(1);
+    }
+
+    res = 0;
+    printf("All HMAC tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * BIGINT tests 
+ *
+ **************************************************************************/
+static int BIGINT_test(BI_CTX *ctx)
+{
+    int res = 1;
+    bigint *bi_data, *bi_exp, *bi_res;
+    const char *expnt, *plaintext, *mod;
+    uint8_t compare[MAX_KEY_BYTE_SIZE];
+
+    /**
+     * 512 bit key
+     */
+    plaintext = /* 64 byte number */
+        "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee";
+
+    mod = "C30773C8ABE09FCC279EE0E5343370DE"
+          "8B2FFDB6059271E3005A7CEEF0D35E0A"
+          "1F9915D95E63560836CC2EB2C289270D"
+          "BCAE8CAF6F5E907FC2759EE220071E1B";
+
+    expnt = "A1E556CD1738E10DF539E35101334E97"
+          "BE8D391C57A5C89A7AD9A2EA2ACA1B3D"
+          "F3140F5091CC535CBAA47CEC4159EE1F"
+          "B6A3661AFF1AB758426EAB158452A9B9";
+
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    bi_exp = int_to_bi(ctx, 0x10001);
+    bi_set_mod(ctx, bi_str_import(ctx, mod), 0);
+    bi_res = bi_mod_power(ctx, bi_data, bi_exp);
+
+    bi_data = bi_res;   /* resuse again - see if we get the original */
+
+    bi_exp = bi_str_import(ctx, expnt);
+    bi_res = bi_mod_power(ctx, bi_data, bi_exp);
+    bi_free_mod(ctx, 0);
+
+    bi_export(ctx, bi_res, compare, 64);
+    if (memcmp(plaintext, compare, 64) != 0)
+        goto end;
+
+    printf("All BIGINT tests passed\n");
+    res = 0;
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * RSA tests 
+ *
+ * Use the results from openssl to verify PKCS1 etc 
+ **************************************************************************/
+static int RSA_test(void)
+{
+    int res = 1;
+    const char *plaintext = /* 128 byte hex number */
+        "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee2"
+        "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeee2\012";
+    uint8_t enc_data[128], dec_data[128];
+    RSA_CTX *rsa_ctx = NULL;
+    BI_CTX *bi_ctx;
+    bigint *plaintext_bi;
+    bigint *enc_data_bi, *dec_data_bi;
+    uint8_t enc_data2[128], dec_data2[128];
+    int size;
+    int len; 
+    uint8_t *buf;
+
+    /* extract the private key elements */
+    len = get_file("../ssl/test/axTLS.key_1024", &buf);
+    if (asn1_get_private_key(buf, len, &rsa_ctx) < 0)
+    {
+        goto end;
+    }
+
+    free(buf);
+    bi_ctx = rsa_ctx->bi_ctx;
+    plaintext_bi = bi_import(bi_ctx, 
+            (const uint8_t *)plaintext, strlen(plaintext));
+
+    /* basic rsa encrypt */
+    enc_data_bi = RSA_public(rsa_ctx, plaintext_bi);
+    bi_export(bi_ctx, bi_copy(enc_data_bi), enc_data, sizeof(enc_data));
+
+    /* basic rsa decrypt */
+    dec_data_bi = RSA_private(rsa_ctx, enc_data_bi);
+    bi_export(bi_ctx, dec_data_bi, dec_data, sizeof(dec_data));
+
+    if (memcmp(dec_data, plaintext, strlen(plaintext)))
+    {
+        printf("Error: DECRYPT #1 failed\n");
+        goto end;
+    }
+
+    RSA_encrypt(rsa_ctx, (const uint8_t *)"abc", 3, enc_data2, 0);
+    size = RSA_decrypt(rsa_ctx, enc_data2, dec_data2, 1);
+    if (memcmp("abc", dec_data2, 3))
+    {
+        printf("Error: ENCRYPT/DECRYPT #2 failed\n");
+        goto end;
+    }
+
+    RSA_free(rsa_ctx);
+    res = 0;
+    printf("All RSA tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * Cert Testing
+ *
+ **************************************************************************/
+static int cert_tests(void)
+{
+    int res = -1, len;
+    X509_CTX *x509_ctx;
+    SSL_CTX *ssl_ctx;
+    uint8_t *buf;
+
+    /* check a bunch of 3rd party certificates */
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/microsoft.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #1\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/thawte.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #2\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/deutsche_telecom.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #3\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/equifax.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #4\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/gnutls.cer", &buf);
+    if ((res = add_cert(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #5\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/socgen.cer", &buf);
+    if ((res = add_cert(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #6\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/verisign.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) <0)
+    {
+        printf("Cert #7\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    if (get_file("../ssl/test/verisign.x509_my_cert", &buf) < 0 ||
+                                    x509_new(buf, &len, &x509_ctx))
+    {
+        printf("Cert #8\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    x509_free(x509_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    if ((res = ssl_obj_load(ssl_ctx, 
+              SSL_OBJ_X509_CERT, "../ssl/test/ms_iis.cer", NULL)) != SSL_OK)
+    {
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    res = 0;        /* all ok */
+    printf("All Certificate tests passed\n");
+
+bad_cert:
+    if (res)
+        printf("Error: A certificate test failed\n");
+    return res;
+}
+
+/**
+ * init a server socket.
+ */
+static int server_socket_init(int *port)
+{
+    struct sockaddr_in serv_addr;
+    int server_fd;
+    char yes = 1;
+
+    /* Create socket for incoming connections */
+    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+    {
+        return -1;
+    }
+      
+    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
+
+go_again:
+    /* Construct local address structure */
+    memset(&serv_addr, 0, sizeof(serv_addr));      /* Zero out structure */
+    serv_addr.sin_family = AF_INET;                /* Internet address family */
+    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+    serv_addr.sin_port = htons(*port);              /* Local port */
+
+    /* Bind to the local address */
+    if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
+    {
+        (*port)++;
+        goto go_again;
+    }
+    /* Mark the socket so it will listen for incoming connections */
+    if (listen(server_fd, 3000) < 0)
+    {
+        return -1;
+    }
+
+    return server_fd;
+}
+
+/**
+ * init a client socket.
+ */
+static int client_socket_init(uint16_t port)
+{
+    struct sockaddr_in address;
+    int client_fd;
+
+    address.sin_family = AF_INET;
+    address.sin_port = htons(port);
+    address.sin_addr.s_addr =  inet_addr("127.0.0.1");
+    client_fd = socket(AF_INET, SOCK_STREAM, 0);
+    if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)
+    {
+        perror("socket");
+        SOCKET_CLOSE(client_fd);
+        client_fd = -1;
+    }
+
+    return client_fd;
+}
+
+/**************************************************************************
+ * SSL Server Testing
+ *
+ **************************************************************************/
+typedef struct
+{
+    /* not used as yet */
+    int dummy;
+} SVR_CTX;
+
+typedef struct
+{
+    const char *testname;
+    const char *openssl_option;
+} client_t;
+
+static void do_client(client_t *clnt)
+{
+    char openssl_buf[2048];
+
+    /* make sure the main thread goes first */
+    sleep(0);
+
+    /* show the session ids in the reconnect test */
+    if (strcmp(clnt->testname, "Session Reuse") == 0)
+    {
+        sprintf(openssl_buf, "echo \"hello client\" | openssl s_client "
+            "-connect localhost:%d %s 2>&1 | grep \"Session-ID:\"", 
+            g_port, clnt->openssl_option);
+    }
+    else
+    {
+        sprintf(openssl_buf, "echo \"hello client\" | openssl s_client "
+#ifdef WIN32
+            "-connect localhost:%d -quiet %s",
+#else
+            "-connect localhost:%d -quiet %s > /dev/null 2>&1",
+#endif
+        g_port, clnt->openssl_option);
+    }
+
+    system(openssl_buf);
+}
+
+static int SSL_server_test(
+        const char *testname, 
+        const char *openssl_option, 
+        const char *device_cert, 
+        const char *product_cert, 
+        const char *private_key,
+        const char *ca_cert,
+        const char *password,
+        int axtls_option)
+{
+    int server_fd, ret = 0;
+    SSL_CTX *ssl_ctx = NULL;
+    struct sockaddr_in client_addr;
+    uint8_t *read_buf;
+    socklen_t clnt_len = sizeof(client_addr);
+    client_t client_data;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+    g_port++;
+
+    client_data.testname = testname;
+    client_data.openssl_option = openssl_option;
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    if (private_key)
+    {
+        axtls_option |= SSL_NO_DEFAULT_KEY;
+    }
+
+    if ((ssl_ctx = ssl_ctx_new(axtls_option, SSL_DEFAULT_SVR_SESS)) == NULL)
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto error;
+    }
+
+    if (private_key)
+    {
+        int obj_type = SSL_OBJ_RSA_KEY;
+
+        if (strstr(private_key, ".p8"))
+            obj_type = SSL_OBJ_PKCS8;
+        else if (strstr(private_key, ".p12"))
+            obj_type = SSL_OBJ_PKCS12;
+
+        if (ssl_obj_load(ssl_ctx, obj_type, private_key, password))
+        {
+            ret = SSL_ERROR_INVALID_KEY;
+            goto error;
+        }
+    }
+
+    if (device_cert)             /* test chaining */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, device_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+    if (product_cert)             /* test chaining */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, product_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+    if (ca_cert)                  /* test adding certificate authorities */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CACERT, ca_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_client, (void *)&client_data);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_client, 
+            (LPVOID)&client_data, 0, NULL);
+#endif
+
+    for (;;)
+    {
+        int client_fd, size = 0; 
+        SSL *ssl;
+
+        /* Wait for a client to connect */
+        if ((client_fd = accept(server_fd, 
+                        (struct sockaddr *)&client_addr, &clnt_len)) < 0)
+        {
+            ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+            goto error;
+        }
+        
+        /* we are ready to go */
+        ssl = ssl_server_new(ssl_ctx, client_fd);
+        while ((size = ssl_read(ssl, &read_buf)) == SSL_OK);
+        SOCKET_CLOSE(client_fd);
+        
+        if (size < SSL_OK) /* got some alert or something nasty */
+        {
+            ret = size;
+
+            if (ret == SSL_ERROR_CONN_LOST)
+            {
+                ret = SSL_OK;
+                continue;
+            }
+
+            break;  /* we've got a problem */
+        }
+        else /* looks more promising */
+        {
+            if (strstr("hello client", (char *)read_buf) == NULL)
+            {
+                printf("SSL server test \"%s\" passed\n", testname);
+                TTY_FLUSH();
+                ret = 0;
+                break;
+            }
+        }
+
+        ssl_free(ssl);
+    }
+
+    SOCKET_CLOSE(server_fd);
+
+error:
+    ssl_ctx_free(ssl_ctx);
+    return ret;
+}
+
+int SSL_server_tests(void)
+{
+    int ret = -1;
+    struct stat stat_buf;
+    SVR_CTX svr_test_ctx;
+    memset(&svr_test_ctx, 0, sizeof(SVR_CTX));
+
+    printf("### starting server tests\n"); TTY_FLUSH();
+
+    /* Go through the algorithms */
+
+    /* 
+     * TLS1 client hello 
+     */
+    if ((ret = SSL_server_test("TLSv1", "-cipher RC4-SHA -tls1", 
+                    NULL, NULL, NULL, NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * AES128-SHA
+     */
+    if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * AES256-SHA
+     */
+    if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * RC4-SHA
+     */
+    if ((ret = SSL_server_test("RC4-SHA", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * RC4-MD5
+     */
+    if ((ret = SSL_server_test("RC4-MD5", "-cipher RC4-MD5", 
+                DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * Session Reuse
+     * all the session id's should match for session resumption.
+     */
+    if ((ret = SSL_server_test("Session Reuse", 
+                    "-cipher RC4-SHA -reconnect", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 512 bit RSA key 
+     */
+    if ((ret = SSL_server_test("512 bit key", "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.cer", NULL, 
+                    "../ssl/test/axTLS.key_512",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 1024 bit RSA key (check certificate chaining)
+     */
+    if ((ret = SSL_server_test("1024 bit key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_device.cer", 
+                    "../ssl/test/axTLS.x509_512.cer", 
+                    "../ssl/test/axTLS.device_key",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 2048 bit RSA key 
+     */
+    if ((ret = SSL_server_test("2048 bit key", 
+                    "-cipher RC4-SHA",
+                    "../ssl/test/axTLS.x509_2048.cer", NULL, 
+                    "../ssl/test/axTLS.key_2048",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 4096 bit RSA key 
+     */
+    if ((ret = SSL_server_test("4096 bit key", 
+                    "-cipher RC4-SHA",
+                    "../ssl/test/axTLS.x509_4096.cer", NULL, 
+                    "../ssl/test/axTLS.key_4096",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Client Verification
+     */
+    if ((ret = SSL_server_test("Client Verification", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)))
+        goto cleanup;
+
+    /* this test should fail */
+    if (stat("../ssl/test/axTLS.x509_bad_before.pem", &stat_buf) >= 0)
+    {
+        if ((ret = SSL_server_test("Error: Bad Before Cert", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_bad_before.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_NOT_YET_VALID))
+            goto cleanup;
+
+        printf("SSL server test \"%s\" passed\n", "Bad Before Cert");
+        TTY_FLUSH();
+        ret = 0;    /* is ok */
+    }
+
+    /* this test should fail */
+    if ((ret = SSL_server_test("Error: Bad After Cert", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", "Bad After Cert");
+    TTY_FLUSH();
+
+    /*
+     * No trusted cert
+     */
+    if ((ret = SSL_server_test("Error: No trusted certificate", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_512.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    NULL, NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_NO_TRUSTED_CERT))
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", "No trusted certificate");
+    TTY_FLUSH();
+
+    /*
+     * Self-signed (from the server)
+     */
+    if ((ret = SSL_server_test("Error: Self-signed certificate (from server)", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_512.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem "
+                    "-CAfile ../ssl/test/axTLS.ca_x509.pem ",
+                    NULL, NULL, NULL, 
+                    NULL, NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_SELF_SIGNED))
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", 
+                            "Self-signed certificate (from server)");
+    TTY_FLUSH();
+
+    /*
+     * Self-signed (from the client)
+     */
+    if ((ret = SSL_server_test("Self-signed certificate (from client)", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_512.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer",
+                    NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)))
+        goto cleanup;
+
+    /* 
+     * Key in PEM format
+     */
+    if ((ret = SSL_server_test("Key in PEM format",
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.cer", NULL, 
+                    "../ssl/test/axTLS.key_512.pem", NULL,
+                    NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Cert in PEM format
+     */
+    if ((ret = SSL_server_test("Cert in PEM format", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.pem", NULL, 
+                    "../ssl/test/axTLS.key_512.pem", NULL,
+                    NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Cert chain in PEM format
+     */
+    if ((ret = SSL_server_test("Cert chain in PEM format", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_device.pem", 
+                    NULL, "../ssl/test/axTLS.device_key.pem",
+                    "../ssl/test/axTLS.ca_x509.pem", NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES128 Encrypted key 
+     */
+    if ((ret = SSL_server_test("AES128 encrypted key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes128.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes128.pem",
+                    NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES256 Encrypted key 
+     */
+    if ((ret = SSL_server_test("AES256 encrypted key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes256.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes256.pem",
+                    NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES128 Encrypted invalid key 
+     */
+    if ((ret = SSL_server_test("AES128 encrypted invalid key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes128.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes128.pem",
+                    NULL, "xyz", DEFAULT_SVR_OPTION)) != SSL_ERROR_INVALID_KEY)
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", "AES128 encrypted invalid key");
+    TTY_FLUSH();
+
+    /*
+     * PKCS#8 key (encrypted)
+     */
+    if ((ret = SSL_server_test("pkcs#8 encrypted", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.encrypted.p8", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * PKCS#8 key (unencrypted)
+     */
+    if ((ret = SSL_server_test("pkcs#8 unencrypted", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.unencrypted.p8", 
+                NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * PKCS#12 key/certificate
+     */
+    if ((ret = SSL_server_test("pkcs#12 with CA", "-cipher RC4-SHA", 
+                NULL, NULL, "../ssl/test/axTLS.withCA.p12", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    if ((ret = SSL_server_test("pkcs#12 no CA", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.withoutCA.p12", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    ret = 0;
+
+cleanup:
+    if (ret)
+    {
+        printf("Error: A server test failed\n");
+        ssl_display_error(ret);
+        exit(1);
+    }
+    else
+    {
+        printf("All server tests passed\n"); TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+/**************************************************************************
+ * SSL Client Testing
+ *
+ **************************************************************************/
+typedef struct
+{
+    uint8_t session_id[SSL_SESSION_ID_SIZE];
+#ifndef WIN32
+    pthread_t server_thread;
+#endif
+    int start_server;
+    int stop_server;
+    int do_reneg;
+} CLNT_SESSION_RESUME_CTX;
+
+typedef struct
+{
+    const char *testname;
+    const char *openssl_option;
+} server_t;
+
+static void do_server(server_t *svr)
+{
+    char openssl_buf[2048];
+#ifndef WIN32
+    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif
+    sprintf(openssl_buf, "openssl s_server -tls1 " 
+            "-accept %d -quiet %s ", g_port, svr->openssl_option);
+    system(openssl_buf);
+}
+
+static int SSL_client_test(
+        const char *test,
+        SSL_CTX **ssl_ctx,
+        const char *openssl_option, 
+        CLNT_SESSION_RESUME_CTX *sess_resume,
+        uint32_t client_options,
+        const char *private_key,
+        const char *password,
+        const char *cert)
+{
+    server_t server_data;
+    SSL *ssl = NULL;
+    int client_fd = -1;
+    uint8_t *session_id = NULL;
+    int ret = 1;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+
+    if (sess_resume == NULL || sess_resume->start_server)
+    {
+        g_port++;
+        server_data.openssl_option = openssl_option;
+
+#ifndef WIN32
+        pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_server, (void *)&server_data);
+        pthread_detach(thread);
+#else
+        CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_server, 
+            (LPVOID)&server_data, 0, NULL);
+#endif
+    }
+    
+    usleep(200000);           /* allow server to start */
+
+    if (*ssl_ctx == NULL)
+    {
+        if (private_key)
+        {
+            client_options |= SSL_NO_DEFAULT_KEY;
+        }
+
+        if ((*ssl_ctx = ssl_ctx_new(
+                            client_options, SSL_DEFAULT_CLNT_SESS)) == NULL)
+        {
+            ret = SSL_ERROR_INVALID_KEY;
+            goto client_test_exit;
+        }
+
+        if (private_key)
+        {
+            int obj_type = SSL_OBJ_RSA_KEY;
+
+            if (strstr(private_key, ".p8"))
+                obj_type = SSL_OBJ_PKCS8;
+            else if (strstr(private_key, ".p12"))
+                obj_type = SSL_OBJ_PKCS12;
+
+            if (ssl_obj_load(*ssl_ctx, obj_type, private_key, password))
+            {
+                ret = SSL_ERROR_INVALID_KEY;
+                goto client_test_exit;
+            }
+        }
+
+        if (cert)                  
+        {
+            if ((ret = ssl_obj_load(*ssl_ctx, 
+                            SSL_OBJ_X509_CERT, cert, NULL)) != SSL_OK)
+            {
+                printf("could not add cert %s (%d)\n", cert, ret);
+                TTY_FLUSH();
+                goto client_test_exit;
+            }
+        }
+
+       if (ssl_obj_load(*ssl_ctx, SSL_OBJ_X509_CACERT, 
+                               "../ssl/test/axTLS.ca_x509.cer", NULL))
+        {
+            printf("could not add cert auth\n"); TTY_FLUSH();
+            goto client_test_exit;
+        }
+    }
+    
+    if (sess_resume && !sess_resume->start_server) 
+    {
+        session_id = sess_resume->session_id;
+    }
+
+    if ((client_fd = client_socket_init(g_port)) < 0)
+    {
+        printf("could not start socket on %d\n", g_port); TTY_FLUSH();
+        goto client_test_exit;
+    }
+
+    ssl = ssl_client_new(*ssl_ctx, client_fd, session_id, sizeof(session_id));
+
+    /* check the return status */
+    if ((ret = ssl_handshake_status(ssl)))
+        goto client_test_exit;
+
+    /* renegotiate client */
+    if (sess_resume && sess_resume->do_reneg) 
+    {
+        if (ssl_renegotiate(ssl) < 0)
+            goto client_test_exit;
+    }
+
+    if (sess_resume)
+    {
+        memcpy(sess_resume->session_id, 
+                ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE);
+    }
+
+    if (IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER) && 
+                                            (ret = ssl_verify_cert(ssl)))
+    {
+        goto client_test_exit;
+    }
+
+    ssl_write(ssl, (uint8_t *)"hello world\n", 13);
+    if (sess_resume)
+    {
+        const uint8_t *sess_id = ssl_get_session_id(ssl);
+        int i;
+
+        printf("    Session-ID: ");
+        for (i = 0; i < SSL_SESSION_ID_SIZE; i++)
+        {
+            printf("%02X", sess_id[i]);
+        }
+        printf("\n");
+        TTY_FLUSH();
+    }
+
+    ret = 0;
+
+client_test_exit:
+    ssl_free(ssl);
+    SOCKET_CLOSE(client_fd);
+    usleep(200000);           /* allow openssl to say something */
+
+    if (sess_resume)
+    {
+        if (sess_resume->stop_server)
+        {
+            ssl_ctx_free(*ssl_ctx);
+            *ssl_ctx = NULL;
+#ifndef WIN32
+            pthread_cancel(sess_resume->server_thread);
+#endif
+        }
+        else if (sess_resume->start_server)
+        {
+#ifndef WIN32
+           sess_resume->server_thread = thread;
+#endif
+        }
+    }
+    else
+    {
+        ssl_ctx_free(*ssl_ctx);
+        *ssl_ctx = NULL;
+#ifndef WIN32
+        pthread_cancel(thread);
+#endif
+    }
+
+    if (ret == 0)
+    {
+        printf("SSL client test \"%s\" passed\n", test);
+        TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+int SSL_client_tests(void)
+{
+    int ret =  -1;
+    SSL_CTX *ssl_ctx = NULL;
+    CLNT_SESSION_RESUME_CTX sess_resume;
+    memset(&sess_resume, 0, sizeof(CLNT_SESSION_RESUME_CTX));
+
+    sess_resume.start_server = 1;
+    printf("### starting client tests\n");
+   
+    if ((ret = SSL_client_test("512 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_512.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    /* all the session id's should match for session resumption */
+    sess_resume.start_server = 0;
+    if ((ret = SSL_client_test("Client session resumption #1", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    sess_resume.do_reneg = 1;
+    if ((ret = SSL_client_test("Client renegotiation", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+    sess_resume.do_reneg = 0;
+
+    sess_resume.stop_server = 1;
+    if ((ret = SSL_client_test("Client session resumption #2", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("1024 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_1024.pem "
+                    "-key ../ssl/test/axTLS.key_1024.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("2048 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem",  NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("4096 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_4096.pem "
+                    "-key ../ssl/test/axTLS.key_4096.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("Server cert chaining", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_device.pem "
+                    "-key ../ssl/test/axTLS.device_key.pem "
+                    "-CAfile ../ssl/test/axTLS.x509_512.pem ", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    /* Check the server can verify the client */
+    if ((ret = SSL_client_test("Client peer authentication",
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem "
+                    "-CAfile ../ssl/test/axTLS.ca_x509.pem "
+                    "-verify 1 ", NULL, DEFAULT_CLNT_OPTION, 
+                    "../ssl/test/axTLS.key_1024", NULL,
+                    "../ssl/test/axTLS.x509_1024.cer")))
+        goto cleanup;
+
+    /* Should get an "ERROR" from openssl (as the handshake fails as soon as
+     * the certificate verification fails) */
+    if ((ret = SSL_client_test("Error: Expired cert (verify now)",
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)) != 
+                            SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+    {
+        printf("*** Error: %d\n", ret);
+        goto cleanup;
+    }
+
+    printf("SSL client test \"Expired cert (verify now)\" passed\n");
+
+    /* There is no "ERROR" from openssl */
+    if ((ret = SSL_client_test("Error: Expired cert (verify later)", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", NULL,
+                    DEFAULT_CLNT_OPTION|SSL_SERVER_VERIFY_LATER, NULL, 
+                    NULL, NULL)) != SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+    {
+        printf("*** Error: %d\n", ret);
+        goto cleanup;
+    }
+
+    printf("SSL client test \"Expired cert (verify later)\" passed\n");
+    ret = 0;
+
+cleanup:
+    if (ret)
+    {
+        ssl_display_error(ret);
+        printf("Error: A client test failed\n");
+        exit(1);
+    }
+    else
+    {
+        printf("All client tests passed\n"); TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+/**************************************************************************
+ * SSL Basic Testing (test a big packet handshake)
+ *
+ **************************************************************************/
+static uint8_t basic_buf[256*1024];
+
+static void do_basic(void)
+{
+    int client_fd;
+    SSL *ssl_clnt;
+    SSL_CTX *ssl_clnt_ctx = ssl_ctx_new(
+                            DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS);
+    usleep(200000);           /* allow server to start */
+
+    if ((client_fd = client_socket_init(g_port)) < 0)
+        goto error;
+
+    if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, 
+                                        "../ssl/test/axTLS.ca_x509.cer", NULL))
+        goto error;
+
+    ssl_clnt = ssl_client_new(ssl_clnt_ctx, client_fd, NULL, 0);
+
+    /* check the return status */
+    if (ssl_handshake_status(ssl_clnt) < 0)
+    {
+        printf("YA YA\n");
+        ssl_display_error(ssl_handshake_status(ssl_clnt));
+        goto error;
+    }
+
+    ssl_write(ssl_clnt, basic_buf, sizeof(basic_buf));
+    ssl_free(ssl_clnt);
+
+error:
+    ssl_ctx_free(ssl_clnt_ctx);
+    SOCKET_CLOSE(client_fd);
+
+    /* exit this thread */
+}
+
+static int SSL_basic_test(void)
+{
+    int server_fd, client_fd, ret = 0, size = 0, offset = 0;
+    SSL_CTX *ssl_svr_ctx = NULL;
+    struct sockaddr_in client_addr;
+    uint8_t *read_buf;
+    socklen_t clnt_len = sizeof(client_addr);
+    SSL *ssl_svr;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+    memset(basic_buf, 0xA5, sizeof(basic_buf)/2);
+    memset(&basic_buf[sizeof(basic_buf)/2], 0x5A, sizeof(basic_buf)/2);
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    ssl_svr_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS);
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_basic, NULL);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_basic, NULL, 0, NULL);
+#endif
+
+    /* Wait for a client to connect */
+    if ((client_fd = accept(server_fd, 
+                    (struct sockaddr *) &client_addr, &clnt_len)) < 0)
+    {
+        ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+        goto error;
+    }
+    
+    /* we are ready to go */
+    ssl_svr = ssl_server_new(ssl_svr_ctx, client_fd);
+    
+    do
+    {
+        while ((size = ssl_read(ssl_svr, &read_buf)) == SSL_OK);
+
+        if (size < SSL_OK) /* got some alert or something nasty */
+        {
+            printf("Server ");
+            ssl_display_error(size);
+            ret = size;
+            break;
+        }
+        else /* looks more promising */
+        {
+            if (memcmp(read_buf, &basic_buf[offset], size) != 0)
+            {
+                ret = SSL_NOT_OK;
+                break;
+            }
+        }
+
+        offset += size;
+    } while (offset < sizeof(basic_buf));
+
+    printf(ret == SSL_OK && offset == sizeof(basic_buf) ? 
+                            "SSL basic test passed\n" :
+                            "SSL basic test failed\n");
+    TTY_FLUSH();
+
+    ssl_free(ssl_svr);
+    SOCKET_CLOSE(server_fd);
+    SOCKET_CLOSE(client_fd);
+
+error:
+    ssl_ctx_free(ssl_svr_ctx);
+    return ret;
+}
+
+#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING)
+/**************************************************************************
+ * Multi-Threading Tests
+ *
+ **************************************************************************/
+#define NUM_THREADS         100
+
+typedef struct
+{
+    SSL_CTX *ssl_clnt_ctx;
+    int port;
+    int thread_id;
+} multi_t;
+
+void do_multi_clnt(multi_t *multi_data)
+{
+    int res = 1, client_fd, i;
+    SSL *ssl = NULL;
+    char tmp[5];
+
+    if ((client_fd = client_socket_init(multi_data->port)) < 0)
+        goto client_test_exit;
+
+    sleep(1);
+    ssl = ssl_client_new(multi_data->ssl_clnt_ctx, client_fd, NULL, 0);
+
+    if ((res = ssl_handshake_status(ssl)))
+    {
+        printf("Client ");
+        ssl_display_error(res);
+        goto client_test_exit;
+    }
+
+    sprintf(tmp, "%d\n", multi_data->thread_id);
+    for (i = 0; i < 10; i++)
+        ssl_write(ssl, (uint8_t *)tmp, strlen(tmp)+1);
+
+client_test_exit:
+    ssl_free(ssl);
+    SOCKET_CLOSE(client_fd);
+    free(multi_data);
+}
+
+void do_multi_svr(SSL *ssl)
+{
+    uint8_t *read_buf;
+    int *res_ptr = malloc(sizeof(int));
+    int res;
+
+    for (;;)
+    {
+        res = ssl_read(ssl, &read_buf);
+
+        /* kill the client */
+        if (res != SSL_OK)
+        {
+            if (res == SSL_ERROR_CONN_LOST)
+            {
+                SOCKET_CLOSE(ssl->client_fd);
+                ssl_free(ssl);
+                break;
+            }
+            else if (res > 0)
+            {
+                /* do nothing */
+            }
+            else /* some problem */
+            {
+                printf("Server ");
+                ssl_display_error(res);
+                goto error;
+            }
+        }
+    }
+
+    res = SSL_OK;
+error:
+    *res_ptr = res;
+    pthread_exit(res_ptr);
+}
+
+int multi_thread_test(void)
+{
+    int server_fd = -1;
+    SSL_CTX *ssl_server_ctx;
+    SSL_CTX *ssl_clnt_ctx;
+    pthread_t clnt_threads[NUM_THREADS];
+    pthread_t svr_threads[NUM_THREADS];
+    int i, res = 0;
+    struct sockaddr_in client_addr;
+    socklen_t clnt_len = sizeof(client_addr);
+
+    printf("Do multi-threading test (takes a minute)\n");
+
+    ssl_server_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS);
+    ssl_clnt_ctx = ssl_ctx_new(DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS);
+
+    if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, 
+                                        "../ssl/test/axTLS.ca_x509.cer", NULL))
+        goto error;
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    for (i = 0; i < NUM_THREADS; i++)
+    {
+        multi_t *multi_data = (multi_t *)malloc(sizeof(multi_t));
+        multi_data->ssl_clnt_ctx = ssl_clnt_ctx;
+        multi_data->port = g_port;
+        multi_data->thread_id = i+1;
+        pthread_create(&clnt_threads[i], NULL, 
+                (void *(*)(void *))do_multi_clnt, (void *)multi_data);
+        pthread_detach(clnt_threads[i]);
+    }
+
+    for (i = 0; i < NUM_THREADS; i++)
+    { 
+        SSL *ssl_svr;
+        int client_fd = accept(server_fd, 
+                      (struct sockaddr *)&client_addr, &clnt_len);
+
+        if (client_fd < 0)
+            goto error;
+
+        ssl_svr = ssl_server_new(ssl_server_ctx, client_fd);
+
+        pthread_create(&svr_threads[i], NULL, 
+                        (void *(*)(void *))do_multi_svr, (void *)ssl_svr);
+    }
+
+    /* make sure we've run all of the threads */
+    for (i = 0; i < NUM_THREADS; i++)
+    {
+        void *thread_res;
+        pthread_join(svr_threads[i], &thread_res);
+
+        if (*((int *)thread_res) != 0)
+            res = 1;
+
+        free(thread_res);
+    } 
+
+    if (res) 
+        goto error;
+
+    printf("Multi-thread test passed (%d)\n", NUM_THREADS);
+error:
+    ssl_ctx_free(ssl_server_ctx);
+    ssl_ctx_free(ssl_clnt_ctx);
+    SOCKET_CLOSE(server_fd);
+    return res;
+}
+#endif /* !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) */ 
+
+/**************************************************************************
+ * Header issue
+ *
+ **************************************************************************/
+static void do_header_issue(void)
+{
+    char axtls_buf[2048];
+#ifndef WIN32
+    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif
+    sprintf(axtls_buf, "./axssl s_client -connect localhost:%d", g_port);
+    system(axtls_buf);
+}
+
+static int header_issue(void)
+{
+    FILE *f = fopen("../ssl/test/header_issue.dat", "r");
+    int server_fd = -1, client_fd = -1, ret = 1;
+    uint8_t buf[2048];
+    int size = 0;
+    struct sockaddr_in client_addr;
+    socklen_t clnt_len = sizeof(client_addr);
+#ifndef WIN32
+    pthread_t thread;
+#endif
+
+    if (f == NULL || (server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_header_issue, NULL);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_header_issue, 
+                NULL, 0, NULL);
+#endif
+    if ((client_fd = accept(server_fd, 
+                    (struct sockaddr *) &client_addr, &clnt_len)) < 0)
+    {
+        ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+        goto error;
+    }
+
+    size = fread(buf, 1, sizeof(buf), f);
+    SOCKET_WRITE(client_fd, buf, size);
+    usleep(200000);
+
+    ret = 0;
+error:
+    fclose(f);
+    SOCKET_CLOSE(client_fd);
+    SOCKET_CLOSE(server_fd);
+    TTY_FLUSH();
+    system("killall axssl");
+    return ret;
+}
+
+/**************************************************************************
+ * main()
+ *
+ **************************************************************************/
+int main(int argc, char *argv[])
+{
+    int ret = 1;
+    BI_CTX *bi_ctx;
+    int fd;
+
+#ifdef WIN32
+    WSADATA wsaData;
+    WORD wVersionRequested = MAKEWORD(2, 2);
+    WSAStartup(wVersionRequested, &wsaData);
+    fd = _open("test_result.txt", O_WRONLY|O_TEMPORARY|O_CREAT, _S_IWRITE);
+    dup2(fd, 2);                        /* write stderr to this file */
+#else
+    fd = open("/dev/null", O_WRONLY);   /* write stderr to /dev/null */
+    signal(SIGPIPE, SIG_IGN);           /* ignore pipe errors */
+    dup2(fd, 2);
+#endif
+
+    /* can't do testing in this mode */
+#if defined CONFIG_SSL_GENERATE_X509_CERT
+    printf("Error: Must compile with default key/certificates\n");
+    exit(1);
+#endif
+
+    bi_ctx = bi_initialize();
+
+    if (AES_test(bi_ctx))
+    {
+        printf("AES tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (RC4_test(bi_ctx))
+    {
+        printf("RC4 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (MD5_test(bi_ctx))
+    {
+        printf("MD5 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (SHA1_test(bi_ctx))
+    {
+        printf("SHA1 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (HMAC_test(bi_ctx))
+    {
+        printf("HMAC tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (BIGINT_test(bi_ctx))
+    {
+        printf("BigInt tests failed!\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    bi_terminate(bi_ctx);
+
+    if (RSA_test())
+    {
+        printf("RSA tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (cert_tests())
+    {
+        printf("CERT tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING)
+    if (multi_thread_test())
+        goto cleanup;
+#endif
+
+    if (SSL_basic_test())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (SSL_client_tests())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (SSL_server_tests())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (header_issue())
+    {
+        printf("Header tests failed\n"); TTY_FLUSH();
+        goto cleanup;
+    }
+
+    ret = 0;        /* all ok */
+    printf("**** ALL TESTS PASSED ****\n"); TTY_FLUSH();
+cleanup:
+
+    if (ret)
+        printf("Error: Some tests failed!\n");
+
+    close(fd);
+    return ret;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak
new file mode 100644 (file)
index 0000000..ca9637f
--- /dev/null
@@ -0,0 +1,1940 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * The testing of the crypto and ssl stuff goes here. Keeps the individual code
+ * modules from being uncluttered with test code.
+ *
+ * This is test code - I make no apologies for the quality!
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifndef WIN32
+#include <pthread.h>
+#endif
+
+#include "ssl.h"
+
+#define DEFAULT_CERT            "../ssl/test/axTLS.x509_512.cer"
+#define DEFAULT_KEY             "../ssl/test/axTLS.key_512"     
+//#define DEFAULT_SVR_OPTION      SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES
+#define DEFAULT_SVR_OPTION      0
+#define DEFAULT_CLNT_OPTION     0
+//#define DEFAULT_CLNT_OPTION      SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES
+
+static int g_port = 19001;
+
+/**************************************************************************
+ * AES tests 
+ * 
+ * Run through a couple of the RFC3602 tests to verify that AES is correct.
+ **************************************************************************/
+#define TEST1_SIZE  16
+#define TEST2_SIZE  32
+
+static int AES_test(BI_CTX *bi_ctx)
+{
+    AES_CTX aes_key;
+    int res = 1;
+    uint8_t key[TEST1_SIZE];
+    uint8_t iv[TEST1_SIZE];
+
+    {
+        /*
+            Case #1: Encrypting 16 bytes (1 block) using AES-CBC
+            Key       : 0x06a9214036b8a15b512e03d534120006
+            IV        : 0x3dafba429d9eb430b422da802c9fac41
+            Plaintext : "Single block msg"
+            Ciphertext: 0xe353779c1079aeb82708942dbe77181a
+
+        */
+        char *in_str =  "Single block msg";
+        uint8_t ct[TEST1_SIZE];
+        uint8_t enc_data[TEST1_SIZE];
+        uint8_t dec_data[TEST1_SIZE];
+
+        bigint *key_bi = bi_str_import(
+                bi_ctx, "06A9214036B8A15B512E03D534120006");
+        bigint *iv_bi = bi_str_import(
+                bi_ctx, "3DAFBA429D9EB430B422DA802C9FAC41");
+        bigint *ct_bi = bi_str_import(
+                bi_ctx, "E353779C1079AEB82708942DBE77181A");
+        bi_export(bi_ctx, key_bi, key, TEST1_SIZE);
+        bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE);
+        bi_export(bi_ctx, ct_bi, ct, TEST1_SIZE);
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_cbc_encrypt(&aes_key, (const uint8_t *)in_str, 
+                enc_data, sizeof(enc_data));
+        if (memcmp(enc_data, ct, sizeof(ct)))
+        {
+            printf("Error: AES ENCRYPT #1 failed\n");
+            goto end;
+        }
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_convert_key(&aes_key);
+        AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data));
+
+        if (memcmp(dec_data, in_str, sizeof(dec_data)))
+        {
+            printf("Error: AES DECRYPT #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        /*
+            Case #2: Encrypting 32 bytes (2 blocks) using AES-CBC 
+            Key       : 0xc286696d887c9aa0611bbb3e2025a45a
+            IV        : 0x562e17996d093d28ddb3ba695a2e6f58
+            Plaintext : 0x000102030405060708090a0b0c0d0e0f
+                          101112131415161718191a1b1c1d1e1f
+            Ciphertext: 0xd296cd94c2cccf8a3a863028b5e1dc0a
+                          7586602d253cfff91b8266bea6d61ab1
+        */
+        uint8_t in_data[TEST2_SIZE];
+        uint8_t ct[TEST2_SIZE];
+        uint8_t enc_data[TEST2_SIZE];
+        uint8_t dec_data[TEST2_SIZE];
+
+        bigint *in_bi = bi_str_import(bi_ctx,
+            "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F");
+        bigint *key_bi = bi_str_import(
+                bi_ctx, "C286696D887C9AA0611BBB3E2025A45A");
+        bigint *iv_bi = bi_str_import(
+                bi_ctx, "562E17996D093D28DDB3BA695A2E6F58");
+        bigint *ct_bi = bi_str_import(bi_ctx,
+            "D296CD94C2CCCF8A3A863028B5E1DC0A7586602D253CFFF91B8266BEA6D61AB1");
+        bi_export(bi_ctx, in_bi, in_data, TEST2_SIZE);
+        bi_export(bi_ctx, key_bi, key, TEST1_SIZE);
+        bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE);
+        bi_export(bi_ctx, ct_bi, ct, TEST2_SIZE);
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_cbc_encrypt(&aes_key, (const uint8_t *)in_data, 
+                enc_data, sizeof(enc_data));
+
+        if (memcmp(enc_data, ct, sizeof(ct)))
+        {
+            printf("Error: ENCRYPT #2 failed\n");
+            goto end;
+        }
+
+        AES_set_key(&aes_key, key, iv, AES_MODE_128);
+        AES_convert_key(&aes_key);
+        AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data));
+        if (memcmp(dec_data, in_data, sizeof(dec_data)))
+        {
+            printf("Error: DECRYPT #2 failed\n");
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All AES tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * RC4 tests 
+ *
+ * ARC4 tests vectors from OpenSSL (crypto/rc4/rc4test.c)
+ **************************************************************************/
+static const uint8_t keys[7][30]=
+{
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
+    {4,0xef,0x01,0x23,0x45},
+    {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
+    {4,0xef,0x01,0x23,0x45},
+};
+
+static const uint8_t data_len[7]={8,8,8,20,28,10};
+static uint8_t data[7][30]=
+{
+    {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+        0x00,0x00,0x00,0x00,0xff},
+        {0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0,
+            0x12,0x34,0x56,0x78,0xff},
+            {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
+            {0},
+};
+
+static const uint8_t output[7][30]=
+{
+    {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00},
+    {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00},
+    {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00},
+    {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,
+        0xbd,0x61,0x5a,0x11,0x62,0xe1,0xc7,0xba,
+        0x36,0xb6,0x78,0x58,0x00},
+        {0x66,0xa0,0x94,0x9f,0x8a,0xf7,0xd6,0x89,
+            0x1f,0x7f,0x83,0x2b,0xa8,0x33,0xc0,0x0c,
+            0x89,0x2e,0xbe,0x30,0x14,0x3c,0xe2,0x87,
+            0x40,0x01,0x1e,0xcf,0x00},
+            {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,0xbd,0x61,0x00},
+            {0},
+};
+
+static int RC4_test(BI_CTX *bi_ctx)
+{
+    int i, res = 1;
+    RC4_CTX s;
+
+    for (i = 0; i < 6; i++)
+    {
+        RC4_setup(&s, &keys[i][1], keys[i][0]);
+        RC4_crypt(&s, data[i], data[i], data_len[i]);
+
+        if (memcmp(data[i], output[i], data_len[i]))
+        {
+            printf("Error: RC4 CRYPT #%d failed\n", i);
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All RC4 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * SHA1 tests 
+ *
+ * Run through a couple of the RFC3174 tests to verify that SHA1 is correct.
+ **************************************************************************/
+static int SHA1_test(BI_CTX *bi_ctx)
+{
+    SHA1_CTX ctx;
+    uint8_t ct[SHA1_SIZE];
+    uint8_t digest[SHA1_SIZE];
+    int res = 1;
+
+    {
+        const char *in_str = "abc";
+        bigint *ct_bi = bi_str_import(bi_ctx,
+                "A9993E364706816ABA3E25717850C26C9CD0D89D");
+        bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+        SHA1_Init(&ctx);
+        SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        SHA1_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: SHA1 #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        const char *in_str =
+            "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
+        bigint *ct_bi = bi_str_import(bi_ctx,
+                "84983E441C3BD26EBAAE4AA1F95129E5E54670F1");
+        bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+        SHA1_Init(&ctx);
+        SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        SHA1_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: SHA1 #2 failed\n");
+            goto end;
+        }
+    }
+
+    res = 0;
+    printf("All SHA1 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * MD5 tests 
+ *
+ * Run through a couple of the RFC1321 tests to verify that MD5 is correct.
+ **************************************************************************/
+static int MD5_test(BI_CTX *bi_ctx)
+{
+    MD5_CTX ctx;
+    uint8_t ct[MD5_SIZE];
+    uint8_t digest[MD5_SIZE];
+    int res = 1;
+
+    {
+        const char *in_str =  "abc";
+        bigint *ct_bi = bi_str_import(bi_ctx, 
+                "900150983CD24FB0D6963F7D28E17F72");
+        bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+
+        MD5_Init(&ctx);
+        MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        MD5_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: MD5 #1 failed\n");
+            goto end;
+        }
+    }
+
+    {
+        const char *in_str =
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        bigint *ct_bi = bi_str_import(
+                bi_ctx, "D174AB98D277D9F5A5611C2C9F419D9F");
+        bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+
+        MD5_Init(&ctx);
+        MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str));
+        MD5_Final(digest, &ctx);
+
+        if (memcmp(digest, ct, sizeof(ct)))
+        {
+            printf("Error: MD5 #2 failed\n");
+            goto end;
+        }
+    }
+    res = 0;
+    printf("All MD5 tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * HMAC tests 
+ *
+ * Run through a couple of the RFC2202 tests to verify that HMAC is correct.
+ **************************************************************************/
+static int HMAC_test(BI_CTX *bi_ctx)
+{
+    uint8_t key[SHA1_SIZE];
+    uint8_t ct[SHA1_SIZE];
+    uint8_t dgst[SHA1_SIZE];
+    int res = 1;
+    const char *key_str;
+
+    const char *data_str = "Hi There";
+    bigint *key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B");
+    bigint *ct_bi = bi_str_import(bi_ctx, "9294727A3638BB1C13F48EF8158BFC9D");
+    bi_export(bi_ctx, key_bi, key, MD5_SIZE);
+    bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+    hmac_md5((const uint8_t *)data_str, 8, key, MD5_SIZE, dgst);
+    if (memcmp(dgst, ct, MD5_SIZE))
+    {
+        printf("HMAC MD5 #1 failed\n");
+        goto end;
+    }
+
+    data_str = "what do ya want for nothing?";
+    key_str = "Jefe";
+    ct_bi = bi_str_import(bi_ctx, "750C783E6AB0B503EAA86E310A5DB738");
+    bi_export(bi_ctx, ct_bi, ct, MD5_SIZE);
+    hmac_md5((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 4, dgst);
+    if (memcmp(dgst, ct, MD5_SIZE))
+    {
+        printf("HMAC MD5 #2 failed\n");
+        goto end;
+    }
+   
+    data_str = "Hi There";
+    key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B");
+    bi_export(bi_ctx, key_bi, key, SHA1_SIZE);
+    ct_bi = bi_str_import(bi_ctx, "B617318655057264E28BC0B6FB378C8EF146BE00");
+    bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+    hmac_sha1((const uint8_t *)data_str, 8, 
+            (const uint8_t *)key, SHA1_SIZE, dgst);
+    if (memcmp(dgst, ct, SHA1_SIZE))
+    {
+        printf("HMAC SHA1 #1 failed\n");
+        goto end;
+    }
+
+    data_str = "what do ya want for nothing?";
+    key_str = "Jefe";
+    ct_bi = bi_str_import(bi_ctx, "EFFCDF6AE5EB2FA2D27416D5F184DF9C259A7C79");
+    bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE);
+
+    hmac_sha1((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 5, dgst);
+    if (memcmp(dgst, ct, SHA1_SIZE))
+    {
+        printf("HMAC SHA1 failed\n");
+        exit(1);
+    }
+
+    res = 0;
+    printf("All HMAC tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * BIGINT tests 
+ *
+ **************************************************************************/
+static int BIGINT_test(BI_CTX *ctx)
+{
+    int res = 1;
+    bigint *bi_data, *bi_exp, *bi_res;
+    const char *expnt, *plaintext, *mod;
+    uint8_t compare[MAX_KEY_BYTE_SIZE];
+
+    /**
+     * 512 bit key
+     */
+    plaintext = /* 64 byte number */
+        "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee";
+
+    mod = "C30773C8ABE09FCC279EE0E5343370DE"
+          "8B2FFDB6059271E3005A7CEEF0D35E0A"
+          "1F9915D95E63560836CC2EB2C289270D"
+          "BCAE8CAF6F5E907FC2759EE220071E1B";
+
+    expnt = "A1E556CD1738E10DF539E35101334E97"
+          "BE8D391C57A5C89A7AD9A2EA2ACA1B3D"
+          "F3140F5091CC535CBAA47CEC4159EE1F"
+          "B6A3661AFF1AB758426EAB158452A9B9";
+
+    bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext));
+    bi_exp = int_to_bi(ctx, 0x10001);
+    bi_set_mod(ctx, bi_str_import(ctx, mod), 0);
+    bi_res = bi_mod_power(ctx, bi_data, bi_exp);
+
+    bi_data = bi_res;   /* resuse again - see if we get the original */
+
+    bi_exp = bi_str_import(ctx, expnt);
+    bi_res = bi_mod_power(ctx, bi_data, bi_exp);
+    bi_free_mod(ctx, 0);
+
+    bi_export(ctx, bi_res, compare, 64);
+    if (memcmp(plaintext, compare, 64) != 0)
+        goto end;
+
+    printf("All BIGINT tests passed\n");
+    res = 0;
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * RSA tests 
+ *
+ * Use the results from openssl to verify PKCS1 etc 
+ **************************************************************************/
+static int RSA_test(void)
+{
+    int res = 1;
+    const char *plaintext = /* 128 byte hex number */
+        "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee2"
+        "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeee2\012";
+    uint8_t enc_data[128], dec_data[128];
+    RSA_CTX *rsa_ctx = NULL;
+    BI_CTX *bi_ctx;
+    bigint *plaintext_bi;
+    bigint *enc_data_bi, *dec_data_bi;
+    uint8_t enc_data2[128], dec_data2[128];
+    int size;
+    int len; 
+    uint8_t *buf;
+
+    /* extract the private key elements */
+    len = get_file("../ssl/test/axTLS.key_1024", &buf);
+    if (asn1_get_private_key(buf, len, &rsa_ctx) < 0)
+    {
+        goto end;
+    }
+
+    free(buf);
+    bi_ctx = rsa_ctx->bi_ctx;
+    plaintext_bi = bi_import(bi_ctx, 
+            (const uint8_t *)plaintext, strlen(plaintext));
+
+    /* basic rsa encrypt */
+    enc_data_bi = RSA_public(rsa_ctx, plaintext_bi);
+    bi_export(bi_ctx, bi_copy(enc_data_bi), enc_data, sizeof(enc_data));
+
+    /* basic rsa decrypt */
+    dec_data_bi = RSA_private(rsa_ctx, enc_data_bi);
+    bi_export(bi_ctx, dec_data_bi, dec_data, sizeof(dec_data));
+
+    if (memcmp(dec_data, plaintext, strlen(plaintext)))
+    {
+        printf("Error: DECRYPT #1 failed\n");
+        goto end;
+    }
+
+    RSA_encrypt(rsa_ctx, (const uint8_t *)"abc", 3, enc_data2, 0);
+    size = RSA_decrypt(rsa_ctx, enc_data2, dec_data2, 1);
+    if (memcmp("abc", dec_data2, 3))
+    {
+        printf("Error: ENCRYPT/DECRYPT #2 failed\n");
+        goto end;
+    }
+
+    RSA_free(rsa_ctx);
+    res = 0;
+    printf("All RSA tests passed\n");
+
+end:
+    return res;
+}
+
+/**************************************************************************
+ * Cert Testing
+ *
+ **************************************************************************/
+static int cert_tests(void)
+{
+    int res = -1, len;
+    X509_CTX *x509_ctx;
+    SSL_CTX *ssl_ctx;
+    uint8_t *buf;
+
+    /* check a bunch of 3rd party certificates */
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/microsoft.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #1\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/thawte.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #2\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/deutsche_telecom.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #3\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/equifax.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #4\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/gnutls.cer", &buf);
+    if ((res = add_cert(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #5\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/socgen.cer", &buf);
+    if ((res = add_cert(ssl_ctx, buf, len)) < 0)
+    {
+        printf("Cert #6\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    len = get_file("../ssl/test/verisign.x509_ca", &buf);
+    if ((res = add_cert_auth(ssl_ctx, buf, len)) <0)
+    {
+        printf("Cert #7\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    free(buf);
+
+    if (get_file("../ssl/test/verisign.x509_my_cert", &buf) < 0 ||
+                                    x509_new(buf, &len, &x509_ctx))
+    {
+        printf("Cert #8\n");
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    x509_free(x509_ctx);
+    free(buf);
+
+    ssl_ctx = ssl_ctx_new(0, 0);
+    if ((res = ssl_obj_load(ssl_ctx, 
+              SSL_OBJ_X509_CERT, "../ssl/test/ms_iis.cer", NULL)) != SSL_OK)
+    {
+        ssl_display_error(res);
+        goto bad_cert;
+    }
+
+    ssl_ctx_free(ssl_ctx);
+    res = 0;        /* all ok */
+    printf("All Certificate tests passed\n");
+
+bad_cert:
+    if (res)
+        printf("Error: A certificate test failed\n");
+    return res;
+}
+
+/**
+ * init a server socket.
+ */
+static int server_socket_init(int *port)
+{
+    struct sockaddr_in serv_addr;
+    int server_fd;
+    char yes = 1;
+
+    /* Create socket for incoming connections */
+    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+    {
+        return -1;
+    }
+      
+    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
+
+go_again:
+    /* Construct local address structure */
+    memset(&serv_addr, 0, sizeof(serv_addr));      /* Zero out structure */
+    serv_addr.sin_family = AF_INET;                /* Internet address family */
+    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+    serv_addr.sin_port = htons(*port);              /* Local port */
+
+    /* Bind to the local address */
+    if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
+    {
+        (*port)++;
+        goto go_again;
+    }
+    /* Mark the socket so it will listen for incoming connections */
+    if (listen(server_fd, 3000) < 0)
+    {
+        return -1;
+    }
+
+    return server_fd;
+}
+
+/**
+ * init a client socket.
+ */
+static int client_socket_init(uint16_t port)
+{
+    struct sockaddr_in address;
+    int client_fd;
+
+    address.sin_family = AF_INET;
+    address.sin_port = htons(port);
+    address.sin_addr.s_addr =  inet_addr("127.0.0.1");
+    client_fd = socket(AF_INET, SOCK_STREAM, 0);
+    if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)
+    {
+        perror("socket");
+        SOCKET_CLOSE(client_fd);
+        client_fd = -1;
+    }
+
+    return client_fd;
+}
+
+/**************************************************************************
+ * SSL Server Testing
+ *
+ **************************************************************************/
+typedef struct
+{
+    /* not used as yet */
+    int dummy;
+} SVR_CTX;
+
+typedef struct
+{
+    const char *testname;
+    const char *openssl_option;
+} client_t;
+
+static void do_client(client_t *clnt)
+{
+    char openssl_buf[2048];
+
+    /* make sure the main thread goes first */
+    sleep(0);
+
+    /* show the session ids in the reconnect test */
+    if (strcmp(clnt->testname, "Session Reuse") == 0)
+    {
+        sprintf(openssl_buf, "echo \"hello client\" | openssl s_client "
+            "-connect localhost:%d %s 2>&1 | grep \"Session-ID:\"", 
+            g_port, clnt->openssl_option);
+    }
+    else
+    {
+        sprintf(openssl_buf, "echo \"hello client\" | openssl s_client "
+#ifdef WIN32
+            "-connect localhost:%d -quiet %s",
+#else
+            "-connect localhost:%d -quiet %s > /dev/null 2>&1",
+#endif
+        g_port, clnt->openssl_option);
+    }
+
+    system(openssl_buf);
+}
+
+static int SSL_server_test(
+        const char *testname, 
+        const char *openssl_option, 
+        const char *device_cert, 
+        const char *product_cert, 
+        const char *private_key,
+        const char *ca_cert,
+        const char *password,
+        int axolotls_option)
+{
+    int server_fd, ret = 0;
+    SSL_CTX *ssl_ctx = NULL;
+    struct sockaddr_in client_addr;
+    uint8_t *read_buf;
+    socklen_t clnt_len = sizeof(client_addr);
+    client_t client_data;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+    g_port++;
+
+    client_data.testname = testname;
+    client_data.openssl_option = openssl_option;
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    if (private_key)
+    {
+        axolotls_option |= SSL_NO_DEFAULT_KEY;
+    }
+
+    if ((ssl_ctx = ssl_ctx_new(axolotls_option, SSL_DEFAULT_SVR_SESS)) == NULL)
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto error;
+    }
+
+    if (private_key)
+    {
+        int obj_type = SSL_OBJ_RSA_KEY;
+
+        if (strstr(private_key, ".p8"))
+            obj_type = SSL_OBJ_PKCS8;
+        else if (strstr(private_key, ".p12"))
+            obj_type = SSL_OBJ_PKCS12;
+
+        if (ssl_obj_load(ssl_ctx, obj_type, private_key, password))
+        {
+            ret = SSL_ERROR_INVALID_KEY;
+            goto error;
+        }
+    }
+
+    if (device_cert)             /* test chaining */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, device_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+    if (product_cert)             /* test chaining */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CERT, product_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+    if (ca_cert)                  /* test adding certificate authorities */
+    {
+        if ((ret = ssl_obj_load(ssl_ctx, 
+                        SSL_OBJ_X509_CACERT, ca_cert, NULL)) != SSL_OK)
+            goto error;
+    }
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_client, (void *)&client_data);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_client, 
+            (LPVOID)&client_data, 0, NULL);
+#endif
+
+    for (;;)
+    {
+        int client_fd, size = 0; 
+        SSL *ssl;
+
+        /* Wait for a client to connect */
+        if ((client_fd = accept(server_fd, 
+                        (struct sockaddr *)&client_addr, &clnt_len)) < 0)
+        {
+            ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+            goto error;
+        }
+        
+        /* we are ready to go */
+        ssl = ssl_server_new(ssl_ctx, client_fd);
+        while ((size = ssl_read(ssl, &read_buf)) == SSL_OK);
+        SOCKET_CLOSE(client_fd);
+        
+        if (size < SSL_OK) /* got some alert or something nasty */
+        {
+            ret = size;
+
+            if (ret == SSL_ERROR_CONN_LOST)
+            {
+                ret = SSL_OK;
+                continue;
+            }
+
+            break;  /* we've got a problem */
+        }
+        else /* looks more promising */
+        {
+            if (strstr("hello client", (char *)read_buf) == NULL)
+            {
+                printf("SSL server test \"%s\" passed\n", testname);
+                TTY_FLUSH();
+                ret = 0;
+                break;
+            }
+        }
+
+        ssl_free(ssl);
+    }
+
+    SOCKET_CLOSE(server_fd);
+
+error:
+    ssl_ctx_free(ssl_ctx);
+    return ret;
+}
+
+int SSL_server_tests(void)
+{
+    int ret = -1;
+    struct stat stat_buf;
+    SVR_CTX svr_test_ctx;
+    memset(&svr_test_ctx, 0, sizeof(SVR_CTX));
+
+    printf("### starting server tests\n"); TTY_FLUSH();
+
+    /* Go through the algorithms */
+
+    /* 
+     * TLS1 client hello 
+     */
+    if ((ret = SSL_server_test("TLSv1", "-cipher RC4-SHA -tls1", 
+                    NULL, NULL, NULL, NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * AES128-SHA
+     */
+    if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * AES256-SHA
+     */
+    if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * RC4-SHA
+     */
+    if ((ret = SSL_server_test("RC4-SHA", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * RC4-MD5
+     */
+    if ((ret = SSL_server_test("RC4-MD5", "-cipher RC4-MD5", 
+                DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * Session Reuse
+     * all the session id's should match for session resumption.
+     */
+    if ((ret = SSL_server_test("Session Reuse", 
+                    "-cipher RC4-SHA -reconnect", 
+                    DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL,
+                    DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 512 bit RSA key 
+     */
+    if ((ret = SSL_server_test("512 bit key", "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.cer", NULL, 
+                    "../ssl/test/axTLS.key_512",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 1024 bit RSA key (check certificate chaining)
+     */
+    if ((ret = SSL_server_test("1024 bit key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_device.cer", 
+                    "../ssl/test/axTLS.x509_512.cer", 
+                    "../ssl/test/axTLS.device_key",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 2048 bit RSA key 
+     */
+    if ((ret = SSL_server_test("2048 bit key", 
+                    "-cipher RC4-SHA",
+                    "../ssl/test/axTLS.x509_2048.cer", NULL, 
+                    "../ssl/test/axTLS.key_2048",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * 4096 bit RSA key 
+     */
+    if ((ret = SSL_server_test("4096 bit key", 
+                    "-cipher RC4-SHA",
+                    "../ssl/test/axTLS.x509_4096.cer", NULL, 
+                    "../ssl/test/axTLS.key_4096",
+                    NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Client Verification
+     */
+    if ((ret = SSL_server_test("Client Verification", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)))
+        goto cleanup;
+
+    /* this test should fail */
+    if (stat("../ssl/test/axTLS.x509_bad_before.pem", &stat_buf) >= 0)
+    {
+        if ((ret = SSL_server_test("Bad Before Cert", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_bad_before.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_NOT_YET_VALID))
+            goto cleanup;
+
+        printf("SSL server test \"%s\" passed\n", "Bad Before Cert");
+        TTY_FLUSH();
+        ret = 0;    /* is ok */
+    }
+
+    /* this test should fail */
+    if ((ret = SSL_server_test("Bad After Cert", 
+                    "-cipher RC4-SHA -tls1 "
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem ",
+                    NULL, NULL, NULL, 
+                    "../ssl/test/axTLS.ca_x509.cer", NULL,
+                    DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) !=
+                            SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", "Bad After Cert");
+    TTY_FLUSH();
+
+    /* 
+     * Key in PEM format
+     */
+    if ((ret = SSL_server_test("Key in PEM format",
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.cer", NULL, 
+                    "../ssl/test/axTLS.key_512.pem", NULL,
+                    NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Cert in PEM format
+     */
+    if ((ret = SSL_server_test("Cert in PEM format", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_512.pem", NULL, 
+                    "../ssl/test/axTLS.key_512.pem", NULL,
+                    NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * Cert chain in PEM format
+     */
+    if ((ret = SSL_server_test("Cert chain in PEM format", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_device.pem", 
+                    NULL, "../ssl/test/axTLS.device_key.pem",
+                    "../ssl/test/axTLS.ca_x509.pem", NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES128 Encrypted key 
+     */
+    if ((ret = SSL_server_test("AES128 encrypted key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes128.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes128.pem",
+                    NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES256 Encrypted key 
+     */
+    if ((ret = SSL_server_test("AES256 encrypted key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes256.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes256.pem",
+                    NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /* 
+     * AES128 Encrypted invalid key 
+     */
+    if ((ret = SSL_server_test("AES128 encrypted invalid key", 
+                    "-cipher RC4-SHA", 
+                    "../ssl/test/axTLS.x509_aes128.pem", NULL, 
+                    "../ssl/test/axTLS.key_aes128.pem",
+                    NULL, "xyz", DEFAULT_SVR_OPTION)) != SSL_ERROR_INVALID_KEY)
+        goto cleanup;
+
+    printf("SSL server test \"%s\" passed\n", "AES128 encrypted invalid key");
+    TTY_FLUSH();
+
+    /*
+     * PKCS#8 key (encrypted)
+     */
+    if ((ret = SSL_server_test("pkcs#8 encrypted", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.encrypted.p8", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * PKCS#8 key (unencrypted)
+     */
+    if ((ret = SSL_server_test("pkcs#8 unencrypted", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.unencrypted.p8", 
+                NULL, NULL, DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     * PKCS#12 key/certificate
+     */
+    if ((ret = SSL_server_test("pkcs#12 with CA", "-cipher RC4-SHA", 
+                NULL, NULL, "../ssl/test/axTLS.withCA.p12", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    if ((ret = SSL_server_test("pkcs#12 no CA", "-cipher RC4-SHA", 
+                DEFAULT_CERT, NULL, "../ssl/test/axTLS.withoutCA.p12", 
+                NULL, "abcd", DEFAULT_SVR_OPTION)))
+        goto cleanup;
+
+    /*
+     *
+     */
+
+    ret = 0;
+
+cleanup:
+    if (ret)
+    {
+        printf("Error: A server test failed\n");
+        ssl_display_error(ret);
+        exit(1);
+    }
+    else
+    {
+        printf("All server tests passed\n"); TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+/**************************************************************************
+ * SSL Client Testing
+ *
+ **************************************************************************/
+typedef struct
+{
+    uint8_t session_id[SSL_SESSION_ID_SIZE];
+#ifndef WIN32
+    pthread_t server_thread;
+#endif
+    int start_server;
+    int stop_server;
+    int do_reneg;
+} CLNT_SESSION_RESUME_CTX;
+
+typedef struct
+{
+    const char *testname;
+    const char *openssl_option;
+} server_t;
+
+static void do_server(server_t *svr)
+{
+    char openssl_buf[2048];
+#ifndef WIN32
+    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif
+    sprintf(openssl_buf, "openssl s_server -tls1 " 
+            "-accept %d -quiet %s ", g_port, svr->openssl_option);
+    system(openssl_buf);
+}
+
+static int SSL_client_test(
+        const char *test,
+        SSL_CTX **ssl_ctx,
+        const char *openssl_option, 
+        CLNT_SESSION_RESUME_CTX *sess_resume,
+        uint32_t client_options,
+        const char *private_key,
+        const char *password,
+        const char *cert)
+{
+    server_t server_data;
+    SSL *ssl = NULL;
+    int client_fd = -1;
+    uint8_t *session_id = NULL;
+    int ret = 1;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+
+    if (sess_resume == NULL || sess_resume->start_server)
+    {
+        g_port++;
+        server_data.openssl_option = openssl_option;
+
+#ifndef WIN32
+        pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_server, (void *)&server_data);
+        pthread_detach(thread);
+#else
+        CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_server, 
+            (LPVOID)&server_data, 0, NULL);
+#endif
+    }
+    
+    usleep(200000);           /* allow server to start */
+
+    if (*ssl_ctx == NULL)
+    {
+        if (private_key)
+        {
+            client_options |= SSL_NO_DEFAULT_KEY;
+        }
+
+        if ((*ssl_ctx = ssl_ctx_new(
+                            client_options, SSL_DEFAULT_CLNT_SESS)) == NULL)
+        {
+            ret = SSL_ERROR_INVALID_KEY;
+            goto client_test_exit;
+        }
+
+        if (private_key)
+        {
+            int obj_type = SSL_OBJ_RSA_KEY;
+
+            if (strstr(private_key, ".p8"))
+                obj_type = SSL_OBJ_PKCS8;
+            else if (strstr(private_key, ".p12"))
+                obj_type = SSL_OBJ_PKCS12;
+
+            if (ssl_obj_load(*ssl_ctx, obj_type, private_key, password))
+            {
+                ret = SSL_ERROR_INVALID_KEY;
+                goto client_test_exit;
+            }
+        }
+
+        if (cert)                  
+        {
+            if ((ret = ssl_obj_load(*ssl_ctx, 
+                            SSL_OBJ_X509_CERT, cert, NULL)) != SSL_OK)
+            {
+                printf("could not add cert %s (%d)\n", cert, ret);
+                TTY_FLUSH();
+                goto client_test_exit;
+            }
+        }
+
+       if (ssl_obj_load(*ssl_ctx, SSL_OBJ_X509_CACERT, 
+                               "../ssl/test/axTLS.ca_x509.cer", NULL))
+        {
+            printf("could not add cert auth\n"); TTY_FLUSH();
+            goto client_test_exit;
+        }
+    }
+    
+    if (sess_resume && !sess_resume->start_server) 
+    {
+        session_id = sess_resume->session_id;
+    }
+
+    if ((client_fd = client_socket_init(g_port)) < 0)
+    {
+        printf("could not start socket on %d\n", g_port); TTY_FLUSH();
+        goto client_test_exit;
+    }
+
+    ssl = ssl_client_new(*ssl_ctx, client_fd, session_id, sizeof(session_id));
+
+    /* check the return status */
+    if ((ret = ssl_handshake_status(ssl)))
+        goto client_test_exit;
+
+    /* renegotiate client */
+    if (sess_resume && sess_resume->do_reneg) 
+    {
+        if (ssl_renegotiate(ssl) < 0)
+            goto client_test_exit;
+    }
+
+    if (sess_resume)
+    {
+        memcpy(sess_resume->session_id, 
+                ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE);
+    }
+
+    if (IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER) && 
+                                            (ret = ssl_verify_cert(ssl)))
+    {
+        goto client_test_exit;
+    }
+
+    ssl_write(ssl, (uint8_t *)"hello world\n", 13);
+    if (sess_resume)
+    {
+        const uint8_t *sess_id = ssl_get_session_id(ssl);
+        int i;
+
+        printf("    Session-ID: ");
+        for (i = 0; i < SSL_SESSION_ID_SIZE; i++)
+        {
+            printf("%02X", sess_id[i]);
+        }
+        printf("\n");
+        TTY_FLUSH();
+    }
+
+    ret = 0;
+
+client_test_exit:
+    ssl_free(ssl);
+    SOCKET_CLOSE(client_fd);
+    usleep(200000);           /* allow openssl to say something */
+
+    if (sess_resume)
+    {
+        if (sess_resume->stop_server)
+        {
+            ssl_ctx_free(*ssl_ctx);
+            *ssl_ctx = NULL;
+#ifndef WIN32
+            pthread_cancel(sess_resume->server_thread);
+#endif
+        }
+        else if (sess_resume->start_server)
+        {
+#ifndef WIN32
+           sess_resume->server_thread = thread;
+#endif
+        }
+    }
+    else
+    {
+        ssl_ctx_free(*ssl_ctx);
+        *ssl_ctx = NULL;
+#ifndef WIN32
+        pthread_cancel(thread);
+#endif
+    }
+
+    if (ret == 0)
+    {
+        printf("SSL client test \"%s\" passed\n", test);
+        TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+int SSL_client_tests(void)
+{
+    int ret =  -1;
+    SSL_CTX *ssl_ctx = NULL;
+    CLNT_SESSION_RESUME_CTX sess_resume;
+    memset(&sess_resume, 0, sizeof(CLNT_SESSION_RESUME_CTX));
+
+    sess_resume.start_server = 1;
+    printf("### starting client tests\n");
+   
+    if ((ret = SSL_client_test("512 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_512.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    /* all the session id's should match for session resumption */
+    sess_resume.start_server = 0;
+    if ((ret = SSL_client_test("Client session resumption #1", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    sess_resume.do_reneg = 1;
+    if ((ret = SSL_client_test("Client renegotiation", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+    sess_resume.do_reneg = 0;
+
+    sess_resume.stop_server = 1;
+    if ((ret = SSL_client_test("Client session resumption #2", 
+                    &ssl_ctx, NULL, &sess_resume, 
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("1024 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_1024.pem "
+                    "-key ../ssl/test/axTLS.key_1024.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("2048 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem",  NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("4096 bit key", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_4096.pem "
+                    "-key ../ssl/test/axTLS.key_4096.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    if ((ret = SSL_client_test("Server cert chaining", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_device.pem "
+                    "-key ../ssl/test/axTLS.device_key.pem "
+                    "-CAfile ../ssl/test/axTLS.x509_512.pem ", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)))
+        goto cleanup;
+
+    /* Check the server can verify the client */
+    if ((ret = SSL_client_test("Client peer authentication",
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_2048.pem "
+                    "-key ../ssl/test/axTLS.key_2048.pem "
+                    "-CAfile ../ssl/test/axTLS.ca_x509.pem "
+                    "-verify 1 ", NULL, DEFAULT_CLNT_OPTION, 
+                    "../ssl/test/axTLS.key_1024", NULL,
+                    "../ssl/test/axTLS.x509_1024.cer")))
+        goto cleanup;
+
+    /* Should get an "ERROR" from openssl (as the handshake fails as soon as
+     * the certificate verification fails) */
+    if ((ret = SSL_client_test("Error: Expired cert (verify now)",
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", NULL,
+                    DEFAULT_CLNT_OPTION, NULL, NULL, NULL)) != 
+                            SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+    {
+        printf("*** Error: %d\n", ret);
+        goto cleanup;
+    }
+
+    printf("SSL client test \"Expired cert (verify now)\" passed\n");
+
+    /* There is no "ERROR" from openssl */
+    if ((ret = SSL_client_test("Error: Expired cert (verify later)", 
+                    &ssl_ctx,
+                    "-cert ../ssl/test/axTLS.x509_bad_after.pem "
+                    "-key ../ssl/test/axTLS.key_512.pem", NULL,
+                    DEFAULT_CLNT_OPTION|SSL_SERVER_VERIFY_LATER, NULL, 
+                    NULL, NULL)) != SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED))
+    {
+        printf("*** Error: %d\n", ret);
+        goto cleanup;
+    }
+
+    printf("SSL client test \"Expired cert (verify later)\" passed\n");
+    ret = 0;
+
+cleanup:
+    if (ret)
+    {
+        ssl_display_error(ret);
+        printf("Error: A client test failed\n");
+        exit(1);
+    }
+    else
+    {
+        printf("All client tests passed\n"); TTY_FLUSH();
+    }
+
+    return ret;
+}
+
+/**************************************************************************
+ * SSL Basic Testing (test a big packet handshake)
+ *
+ **************************************************************************/
+static uint8_t basic_buf[256*1024];
+
+static void do_basic(void)
+{
+    int client_fd;
+    SSL *ssl_clnt;
+    SSL_CTX *ssl_clnt_ctx = ssl_ctx_new(
+                            DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS);
+    usleep(200000);           /* allow server to start */
+
+    if ((client_fd = client_socket_init(g_port)) < 0)
+        goto error;
+
+    if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, 
+                                        "../ssl/test/axTLS.ca_x509.cer", NULL))
+        goto error;
+
+    ssl_clnt = ssl_client_new(ssl_clnt_ctx, client_fd, NULL, 0);
+
+    /* check the return status */
+    if (ssl_handshake_status(ssl_clnt) < 0)
+    {
+        printf("YA YA\n");
+        ssl_display_error(ssl_handshake_status(ssl_clnt));
+        goto error;
+    }
+
+    ssl_write(ssl_clnt, basic_buf, sizeof(basic_buf));
+    ssl_free(ssl_clnt);
+
+error:
+    ssl_ctx_free(ssl_clnt_ctx);
+    SOCKET_CLOSE(client_fd);
+
+    /* exit this thread */
+}
+
+static int SSL_basic_test(void)
+{
+    int server_fd, client_fd, ret = 0, size = 0, offset = 0;
+    SSL_CTX *ssl_svr_ctx = NULL;
+    struct sockaddr_in client_addr;
+    uint8_t *read_buf;
+    socklen_t clnt_len = sizeof(client_addr);
+    SSL *ssl_svr;
+#ifndef WIN32
+    pthread_t thread;
+#endif
+    memset(basic_buf, 0xA5, sizeof(basic_buf)/2);
+    memset(&basic_buf[sizeof(basic_buf)/2], 0x5A, sizeof(basic_buf)/2);
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    ssl_svr_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS);
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_basic, NULL);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_basic, NULL, 0, NULL);
+#endif
+
+    /* Wait for a client to connect */
+    if ((client_fd = accept(server_fd, 
+                    (struct sockaddr *) &client_addr, &clnt_len)) < 0)
+    {
+        ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+        goto error;
+    }
+    
+    /* we are ready to go */
+    ssl_svr = ssl_server_new(ssl_svr_ctx, client_fd);
+    
+    do
+    {
+        while ((size = ssl_read(ssl_svr, &read_buf)) == SSL_OK);
+
+        if (size < SSL_OK) /* got some alert or something nasty */
+        {
+            printf("Server ");
+            ssl_display_error(size);
+            ret = size;
+            break;
+        }
+        else /* looks more promising */
+        {
+            if (memcmp(read_buf, &basic_buf[offset], size) != 0)
+            {
+                ret = SSL_NOT_OK;
+                break;
+            }
+        }
+
+        offset += size;
+    } while (offset < sizeof(basic_buf));
+
+    printf(ret == SSL_OK && offset == sizeof(basic_buf) ? 
+                            "SSL basic test passed\n" :
+                            "SSL basic test failed\n");
+    TTY_FLUSH();
+
+    ssl_free(ssl_svr);
+    SOCKET_CLOSE(server_fd);
+    SOCKET_CLOSE(client_fd);
+
+error:
+    ssl_ctx_free(ssl_svr_ctx);
+    return ret;
+}
+
+#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING)
+/**************************************************************************
+ * Multi-Threading Tests
+ *
+ **************************************************************************/
+#define NUM_THREADS         100
+
+typedef struct
+{
+    SSL_CTX *ssl_clnt_ctx;
+    int port;
+    int thread_id;
+} multi_t;
+
+void do_multi_clnt(multi_t *multi_data)
+{
+    int res = 1, client_fd, i;
+    SSL *ssl = NULL;
+    char tmp[5];
+
+    if ((client_fd = client_socket_init(multi_data->port)) < 0)
+        goto client_test_exit;
+
+    sleep(1);
+    ssl = ssl_client_new(multi_data->ssl_clnt_ctx, client_fd, NULL, 0);
+
+    if ((res = ssl_handshake_status(ssl)))
+    {
+        printf("Client ");
+        ssl_display_error(res);
+        goto client_test_exit;
+    }
+
+    sprintf(tmp, "%d\n", multi_data->thread_id);
+    for (i = 0; i < 10; i++)
+        ssl_write(ssl, (uint8_t *)tmp, strlen(tmp)+1);
+
+client_test_exit:
+    ssl_free(ssl);
+    SOCKET_CLOSE(client_fd);
+    free(multi_data);
+}
+
+void do_multi_svr(SSL *ssl)
+{
+    uint8_t *read_buf;
+    int *res_ptr = malloc(sizeof(int));
+    int res;
+
+    for (;;)
+    {
+        res = ssl_read(ssl, &read_buf);
+
+        /* kill the client */
+        if (res != SSL_OK)
+        {
+            if (res == SSL_ERROR_CONN_LOST)
+            {
+                SOCKET_CLOSE(ssl->client_fd);
+                ssl_free(ssl);
+                break;
+            }
+            else if (res > 0)
+            {
+                /* do nothing */
+            }
+            else /* some problem */
+            {
+                printf("Server ");
+                ssl_display_error(res);
+                goto error;
+            }
+        }
+    }
+
+    res = SSL_OK;
+error:
+    *res_ptr = res;
+    pthread_exit(res_ptr);
+}
+
+int multi_thread_test(void)
+{
+    int server_fd = -1;
+    SSL_CTX *ssl_server_ctx;
+    SSL_CTX *ssl_clnt_ctx;
+    pthread_t clnt_threads[NUM_THREADS];
+    pthread_t svr_threads[NUM_THREADS];
+    int i, res = 0;
+    struct sockaddr_in client_addr;
+    socklen_t clnt_len = sizeof(client_addr);
+
+    printf("Do multi-threading test (takes a minute)\n");
+
+    ssl_server_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS);
+    ssl_clnt_ctx = ssl_ctx_new(DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS);
+
+    if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, 
+                                        "../ssl/test/axTLS.ca_x509.cer", NULL))
+        goto error;
+
+    if ((server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+    for (i = 0; i < NUM_THREADS; i++)
+    {
+        multi_t *multi_data = (multi_t *)malloc(sizeof(multi_t));
+        multi_data->ssl_clnt_ctx = ssl_clnt_ctx;
+        multi_data->port = g_port;
+        multi_data->thread_id = i+1;
+        pthread_create(&clnt_threads[i], NULL, 
+                (void *(*)(void *))do_multi_clnt, (void *)multi_data);
+        pthread_detach(clnt_threads[i]);
+    }
+
+    for (i = 0; i < NUM_THREADS; i++)
+    { 
+        SSL *ssl_svr;
+        int client_fd = accept(server_fd, 
+                      (struct sockaddr *)&client_addr, &clnt_len);
+
+        if (client_fd < 0)
+            goto error;
+
+        ssl_svr = ssl_server_new(ssl_server_ctx, client_fd);
+
+        pthread_create(&svr_threads[i], NULL, 
+                        (void *(*)(void *))do_multi_svr, (void *)ssl_svr);
+    }
+
+    /* make sure we've run all of the threads */
+    for (i = 0; i < NUM_THREADS; i++)
+    {
+        void *thread_res;
+        pthread_join(svr_threads[i], &thread_res);
+
+        if (*((int *)thread_res) != 0)
+            res = 1;
+
+        free(thread_res);
+    } 
+
+    if (res) 
+        goto error;
+
+    printf("Multi-thread test passed (%d)\n", NUM_THREADS);
+error:
+    ssl_ctx_free(ssl_server_ctx);
+    ssl_ctx_free(ssl_clnt_ctx);
+    SOCKET_CLOSE(server_fd);
+    return res;
+}
+#endif /* !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) */ 
+
+/**************************************************************************
+ * Header issue
+ *
+ **************************************************************************/
+static void do_header_issue(void)
+{
+    char axtls_buf[2048];
+#ifndef WIN32
+    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif
+    sprintf(axtls_buf, "./axssl s_client -connect localhost:%d", g_port);
+    system(axtls_buf);
+}
+
+static int header_issue(void)
+{
+    FILE *f = fopen("../ssl/test/header_issue.dat", "r");
+    int server_fd = -1, client_fd = -1, ret = 1;
+    uint8_t buf[2048];
+    int size = 0;
+    struct sockaddr_in client_addr;
+    socklen_t clnt_len = sizeof(client_addr);
+#ifndef WIN32
+    pthread_t thread;
+#endif
+
+    if (f == NULL || (server_fd = server_socket_init(&g_port)) < 0)
+        goto error;
+
+#ifndef WIN32
+    pthread_create(&thread, NULL, 
+                (void *(*)(void *))do_header_issue, NULL);
+    pthread_detach(thread);
+#else
+    CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_header_issue, 
+                NULL, 0, NULL);
+#endif
+    if ((client_fd = accept(server_fd, 
+                    (struct sockaddr *) &client_addr, &clnt_len)) < 0)
+    {
+        ret = SSL_ERROR_SOCK_SETUP_FAILURE;
+        goto error;
+    }
+
+    size = fread(buf, 1, sizeof(buf), f);
+    SOCKET_WRITE(client_fd, buf, size);
+    usleep(200000);
+
+    ret = 0;
+error:
+    fclose(f);
+    SOCKET_CLOSE(client_fd);
+    SOCKET_CLOSE(server_fd);
+    TTY_FLUSH();
+    system("killall axssl");
+    return ret;
+}
+
+/**************************************************************************
+ * main()
+ *
+ **************************************************************************/
+int main(int argc, char *argv[])
+{
+    int ret = 1;
+    BI_CTX *bi_ctx;
+    int fd;
+
+#ifdef WIN32
+    WSADATA wsaData;
+    WORD wVersionRequested = MAKEWORD(2, 2);
+    WSAStartup(wVersionRequested, &wsaData);
+    fd = _open("test_result.txt", O_WRONLY|O_TEMPORARY|O_CREAT, _S_IWRITE);
+    dup2(fd, 2);                        /* write stderr to this file */
+#else
+    fd = open("/dev/null", O_WRONLY);   /* write stderr to /dev/null */
+    signal(SIGPIPE, SIG_IGN);           /* ignore pipe errors */
+    dup2(fd, 2);
+#endif
+
+    /* can't do testing in this mode */
+#if defined CONFIG_SSL_GENERATE_X509_CERT
+    printf("Error: Must compile with default key/certificates\n");
+    exit(1);
+#endif
+
+    bi_ctx = bi_initialize();
+
+    if (AES_test(bi_ctx))
+    {
+        printf("AES tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (RC4_test(bi_ctx))
+    {
+        printf("RC4 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (MD5_test(bi_ctx))
+    {
+        printf("MD5 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (SHA1_test(bi_ctx))
+    {
+        printf("SHA1 tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (HMAC_test(bi_ctx))
+    {
+        printf("HMAC tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (BIGINT_test(bi_ctx))
+    {
+        printf("BigInt tests failed!\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    bi_terminate(bi_ctx);
+
+    if (RSA_test())
+    {
+        printf("RSA tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+    if (cert_tests())
+    {
+        printf("CERT tests failed\n");
+        goto cleanup;
+    }
+    TTY_FLUSH();
+
+#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING)
+    if (multi_thread_test())
+        goto cleanup;
+#endif
+
+    if (SSL_basic_test())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (SSL_client_tests())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (SSL_server_tests())
+        goto cleanup;
+
+    system("sh ../ssl/test/killopenssl.sh");
+
+    if (header_issue())
+    {
+        printf("Header tests failed\n"); TTY_FLUSH();
+        goto cleanup;
+    }
+
+    ret = 0;        /* all ok */
+    printf("**** ALL TESTS PASSED ****\n"); TTY_FLUSH();
+cleanup:
+
+    if (ret)
+        printf("Error: Some tests failed!\n");
+
+    close(fd);
+    return ret;
+}
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh
new file mode 100755 (executable)
index 0000000..acf11a6
--- /dev/null
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2007, Cameron Rich
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# * Neither the name of the axTLS project nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#
+# Test the various axssl bindings. To run it, got to the _install directory
+# and run this script from there.
+#
+
+if grep "CONFIG_PLATFORM_WIN32=y" "../config/.config"  > /dev/null; then
+    JAVA_EXE="$JAVA_HOME/bin/java.exe"
+    PERL_BIN="/cygdrive/c/Perl/bin/perl"
+    KILL_AXSSL="kill %1"
+    KILL_CSHARP="kill %1"
+    KILL_PERL="kill %1"
+    KILL_JAVA="kill %1"
+    KILL_LUA="kill %1"
+else
+    if grep "CONFIG_PLATFORM_CYGWIN=y" "../config/.config"  > /dev/null; then
+        # no .net or java on cygwin
+        PERL_BIN=/usr/bin/perl
+        KILL_AXSSL="killall axssl"
+        KILL_PERL="killall /usr/bin/perl"
+        KILL_LUA="killall /usr/local/bin/lua"
+    else     # Linux
+        JAVA_EXE=/usr/java/default/bin/java
+        PERL_BIN=/usr/bin/perl
+        KILL_AXSSL="killall axssl"
+        KILL_CSHARP="killall mono"
+        KILL_PERL="killall /usr/bin/perl"
+        RUN_CSHARP="mono"
+        KILL_JAVA="killall $JAVA_EXE"
+        KILL_LUA="killall /usr/local/bin/lua"
+    fi
+fi
+
+BASE=..
+SERVER_ARGS="s_server -accept 15001 -verify -CAfile $BASE/ssl/test/axTLS.ca_x509.cer"
+CLIENT_ARGS="s_client -reconnect -connect localhost:15001 -verify -CAfile $BASE/ssl/test/axTLS.ca_x509.cer -key $BASE/ssl/test/axTLS.key_1024 -cert $BASE/ssl/test/axTLS.x509_1024.cer"
+
+# check pem arguments
+SERVER_PEM_ARGS="s_server -accept 15001 -pass abcd -key $BASE/ssl/test/axTLS.key_aes128.pem -cert $BASE/ssl/test/axTLS.x509_aes128.pem"
+CLIENT_PEM_ARGS="s_client -connect localhost:15001 -CAfile $BASE/ssl/test/axTLS.ca_x509.pem -key $BASE/ssl/test/axTLS.key_1024.pem -cert $BASE/ssl/test/axTLS.x509_1024.pem"
+
+export LD_LIBRARY_PATH=.:`perl -e 'use Config; print $Config{archlib};'`/CORE
+
+if [ -x ./axssl ]; then
+echo "############################# C SAMPLE ###########################"
+./axssl $SERVER_ARGS &
+echo "C Test passed" | ./axssl $CLIENT_ARGS
+$KILL_AXSSL
+sleep 1
+
+./axssl $SERVER_PEM_ARGS &
+echo "C Test passed" | ./axssl $CLIENT_PEM_ARGS
+$KILL_AXSSL
+sleep 1
+echo "### C tests complete"
+fi
+
+if [ -f ./axtls.jar ]; then
+echo "########################## JAVA SAMPLE ###########################"
+"$JAVA_EXE" -jar ./axtls.jar $SERVER_ARGS &
+echo "Java Test passed" | "$JAVA_EXE" -jar ./axtls.jar $CLIENT_ARGS
+$KILL_JAVA
+sleep 1
+
+"$JAVA_EXE" -jar ./axtls.jar $SERVER_PEM_ARGS &
+echo "Java Test passed" | "$JAVA_EXE" -jar ./axtls.jar $CLIENT_PEM_ARGS
+$KILL_JAVA
+sleep 1
+
+echo "### Java tests complete"
+fi
+
+if [ -x ./axssl.csharp.exe ]; then
+echo "############################ C# SAMPLE ###########################"
+$RUN_CSHARP ./axssl.csharp.exe $SERVER_ARGS &
+echo "C# Test passed" | $RUN_CSHARP ./axssl.csharp.exe $CLIENT_ARGS
+$KILL_CSHARP
+sleep 1
+
+$RUN_CSHARP ./axssl.csharp.exe $SERVER_PEM_ARGS &
+echo "C# Test passed" | $RUN_CSHARP ./axssl.csharp.exe $CLIENT_PEM_ARGS
+$KILL_CSHARP
+sleep 1
+
+echo "### C# tests complete"
+fi
+
+if [ -x ./axssl.vbnet.exe ]; then
+echo "######################## VB.NET SAMPLE ###########################"
+echo $SERVER_ARGS
+echo $CLIENT_ARGS
+./axssl.vbnet $SERVER_ARGS &
+echo "VB.NET Test passed" | ./axssl.vbnet.exe $CLIENT_ARGS
+kill %1
+sleep 1
+
+./axssl.vbnet $SERVER_PEM_ARGS &
+echo "VB.NET Test passed" | ./axssl.vbnet.exe $CLIENT_PEM_ARGS
+kill %1
+sleep 1
+echo "### VB.NET tests complete"
+fi
+
+if [ -f ./axssl.pl ]; then
+echo "########################## PERL SAMPLE ###########################"
+"$PERL_BIN" ./axssl.pl $SERVER_ARGS &
+echo "Perl Test passed" | "$PERL_BIN" ./axssl.pl $CLIENT_ARGS
+$KILL_PERL
+sleep 1
+
+"$PERL_BIN" ./axssl.pl $SERVER_PEM_ARGS &
+echo "Perl Test passed" | "$PERL_BIN" ./axssl.pl $CLIENT_PEM_ARGS
+$KILL_PERL
+sleep 1
+echo "### Perl tests complete"
+fi
+
+if [ -f ./axssl.lua ]; then
+echo "########################## LUA SAMPLE ###########################"
+./axssl.lua $SERVER_ARGS &
+echo "Lua Test passed" | ./axssl.lua $CLIENT_ARGS
+$KILL_LUA
+sleep 1
+
+./axssl.lua $SERVER_PEM_ARGS &
+echo "Lua Test passed" | ./axssl.lua $CLIENT_PEM_ARGS
+$KILL_LUA
+sleep 1
+echo "### Lua tests complete"
+fi
+
+echo "########################## ALL TESTS COMPLETE ###########################"
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca
new file mode 100644 (file)
index 0000000..59b1059
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca
new file mode 100644 (file)
index 0000000..d2ea128
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca.pem
new file mode 100644 (file)
index 0000000..d5ef5d2
--- /dev/null
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICmDCCAgECECCol67bggLewTagTia9h3MwDQYJKoZIhvcNAQECBQAwgYwxCzAJ
+BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEwMC4GA1UECxMnRm9y
+IFRlc3QgUHVycG9zZXMgT25seS4gIE5vIGFzc3VyYW5jZXMuMTIwMAYDVQQDEylW
+ZXJpU2lnbiBUcmlhbCBTZWN1cmUgU2VydmVyIFRlc3QgUm9vdCBDQTAeFw0wNTAy
+MDkwMDAwMDBaFw0yNTAyMDgyMzU5NTlaMIGMMQswCQYDVQQGEwJVUzEXMBUGA1UE
+ChMOVmVyaVNpZ24sIEluYy4xMDAuBgNVBAsTJ0ZvciBUZXN0IFB1cnBvc2VzIE9u
+bHkuICBObyBhc3N1cmFuY2VzLjEyMDAGA1UEAxMpVmVyaVNpZ24gVHJpYWwgU2Vj
+dXJlIFNlcnZlciBUZXN0IFJvb3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAJ8h98U7klaZH5cEn6CSEKmGWVBsTwHIaMAAVqGqCUn7Q9C10sEOIHBznyLy
+eSDjMs5M1nC/iAA7KCASf/yHz0AdlU+1IRSijwHTF/2dYSoTTxP2GCmtL1Ga4i7+
+zDDo086V7+NiFAGJj+CYey47ue4Xa33o/4YOA9PGL87oqFe7AgMBAAEwDQYJKoZI
+hvcNAQECBQADgYEAOq447rP5EDqFEl3vhLhgTbnyaskNYwPvxk+0grnQyDA4sF/q
+gK8nFlnvLmAOF3DmfuqW6WSr4zqTYzpwmJlsn48Om/yWirL8GuWRftit2POxTfHS
+B8VmR+PZx2k24UgWUZyojDGxJtiHd3tjCdqFgTit4NK429cWOcZrh47xeOI=
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert
new file mode 100644 (file)
index 0000000..426c9ff
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert.pem
new file mode 100644 (file)
index 0000000..5b6c1ff
--- /dev/null
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEQzCCA6ygAwIBAgIQR/dXCzC/x5Ta5RvL6hKEojANBgkqhkiG9w0BAQUFADCB
+jDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTAwLgYDVQQL
+EydGb3IgVGVzdCBQdXJwb3NlcyBPbmx5LiAgTm8gYXNzdXJhbmNlcy4xMjAwBgNV
+BAMTKVZlcmlTaWduIFRyaWFsIFNlY3VyZSBTZXJ2ZXIgVGVzdCBSb290IENBMB4X
+DTA2MDExNjAwMDAwMFoXDTA2MDEzMDIzNTk1OVowgbkxCzAJBgNVBAYTAkFVMQww
+CgYDVQQIEwNRbGQxETAPBgNVBAcUCEJyaXNiYW5lMRkwFwYDVQQKFBBheG9sb1RM
+UyBQcm9qZWN0MRUwEwYDVQQLFAwxMDI0IGJpdCBrZXkxOjA4BgNVBAsUMVRlcm1z
+IG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL2Nwcy90ZXN0Y2EgKGMpMDUxGzAZ
+BgNVBAMUEnd3dy5heG9sb3Rscy5jby5ucjCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
+gYkCgYEAttzj5S7qfOZIrh9xg8bgjTOKbSIbLBuMnxAwfGRcUrQO2EQOHd6kMjXR
+hqY/cG2IG4G8AeqdV3nHlKbrbHbRa1lFgP6b0BQCE8TyxmP+tIAqn5L6/HTm+EEi
+Ad1Pxjeok6e7F6UXHxJltSGHmOhAf3C5kPq/FQ6QZeG4yD/uzPkCAwEAAaOCAXUw
+ggFxMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMEcGA1UdHwRAMD4wPKA6oDiGNmh0
+dHA6Ly9TVlJTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9TVlJUcmlhbFJvb3QyMDA1
+LmNybDBKBgNVHSAEQzBBMD8GCmCGSAGG+EUBBxUwMTAvBggrBgEFBQcCARYjaHR0
+cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nwcy90ZXN0Y2EwHQYDVR0lBBYwFAYIKwYB
+BQUHAwEGCCsGAQUFBwMCMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
+cDovL29jc3AudmVyaXNpZ24uY29tMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUW
+CWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUW
+I2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEB
+BQUAA4GBACtlCTJFENCcHCQLHJfiotqr2XR+oWu0MstNm8dG6WB+zYprrT+kOPDn
+1rMO7YLx76f67fC+lIXz720kQHk6LsZ8hPBQvIXnfIsKjng73DeFzBmTMFz6Qxjd
++E0FUCKplqrdwUkmR4kH6O4pdGE4AlXJNiUI2903yYdSRVMOuLuR
+-----END CERTIFICATE-----
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.c
new file mode 100755 (executable)
index 0000000..658c2c1
--- /dev/null
@@ -0,0 +1,2057 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * Common ssl/tlsv1 code to both the client and server implementations.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include "ssl.h"
+
+/* The session expiry time */
+#define SSL_EXPIRY_TIME     (CONFIG_SSL_EXPIRY_TIME*3600)
+
+static const uint8_t g_hello_request[] = { HS_HELLO_REQUEST, 0, 0, 0 };
+static const uint8_t g_chg_cipher_spec_pkt[] = { 1 };
+static const char * server_finished = "server finished";
+static const char * client_finished = "client finished";
+
+static int do_handshake(SSL *ssl, uint8_t *buf, int read_len);
+static void set_key_block(SSL *ssl, int is_write);
+static int verify_digest(SSL *ssl, int mode, const uint8_t *buf, int read_len);
+static void *crypt_new(SSL *ssl, uint8_t *key, uint8_t *iv, int is_decrypt);
+static int send_raw_packet(SSL *ssl, uint8_t protocol);
+
+/**
+ * The server will pick the cipher based on the order that the order that the
+ * ciphers are listed. This order is defined at compile time.
+ */
+#ifdef CONFIG_SSL_SKELETON_MODE
+const uint8_t ssl_prot_prefs[NUM_PROTOCOLS] = 
+{ SSL_RC4_128_SHA };
+#else
+static void session_free(SSL_SESSION *ssl_sessions[], int sess_index);
+
+const uint8_t ssl_prot_prefs[NUM_PROTOCOLS] = 
+#ifdef CONFIG_SSL_PROT_LOW                  /* low security, fast speed */
+{ SSL_RC4_128_SHA, SSL_AES128_SHA, SSL_AES256_SHA, SSL_RC4_128_MD5 };
+#elif CONFIG_SSL_PROT_MEDIUM                /* medium security, medium speed */
+{ SSL_AES128_SHA, SSL_AES256_SHA, SSL_RC4_128_SHA, SSL_RC4_128_MD5 };    
+#else /* CONFIG_SSL_PROT_HIGH */            /* high security, low speed */
+{ SSL_AES256_SHA, SSL_AES128_SHA, SSL_RC4_128_SHA, SSL_RC4_128_MD5 };
+#endif
+#endif /* CONFIG_SSL_SKELETON_MODE */
+
+/**
+ * The cipher map containing all the essentials for each cipher.
+ */
+#ifdef CONFIG_SSL_SKELETON_MODE
+static const cipher_info_t cipher_info[NUM_PROTOCOLS] = 
+{
+    {   /* RC4-SHA */
+        SSL_RC4_128_SHA,                /* RC4-SHA */
+        16,                             /* key size */
+        0,                              /* iv size */ 
+        2*(SHA1_SIZE+16),               /* key block size */
+        0,                              /* no padding */
+        SHA1_SIZE,                      /* digest size */
+        hmac_sha1,                      /* hmac algorithm */
+        (crypt_func)RC4_crypt,          /* encrypt */
+        (crypt_func)RC4_crypt           /* decrypt */
+    },
+};
+#else
+static const cipher_info_t cipher_info[NUM_PROTOCOLS] = 
+{
+    {   /* AES128-SHA */
+        SSL_AES128_SHA,                 /* AES128-SHA */
+        16,                             /* key size */
+        16,                             /* iv size */ 
+        2*(SHA1_SIZE+16+16),            /* key block size */
+        16,                             /* block padding size */
+        SHA1_SIZE,                      /* digest size */
+        hmac_sha1,                      /* hmac algorithm */
+        (crypt_func)AES_cbc_encrypt,    /* encrypt */
+        (crypt_func)AES_cbc_decrypt     /* decrypt */
+    },
+    {   /* AES256-SHA */
+        SSL_AES256_SHA,                 /* AES256-SHA */
+        32,                             /* key size */
+        16,                             /* iv size */ 
+        2*(SHA1_SIZE+32+16),            /* key block size */
+        16,                             /* block padding size */
+        SHA1_SIZE,                      /* digest size */
+        hmac_sha1,                      /* hmac algorithm */
+        (crypt_func)AES_cbc_encrypt,    /* encrypt */
+        (crypt_func)AES_cbc_decrypt     /* decrypt */
+    },       
+    {   /* RC4-SHA */
+        SSL_RC4_128_SHA,                /* RC4-SHA */
+        16,                             /* key size */
+        0,                              /* iv size */ 
+        2*(SHA1_SIZE+16),               /* key block size */
+        0,                              /* no padding */
+        SHA1_SIZE,                      /* digest size */
+        hmac_sha1,                      /* hmac algorithm */
+        (crypt_func)RC4_crypt,          /* encrypt */
+        (crypt_func)RC4_crypt           /* decrypt */
+    },
+    /*
+     * This protocol is from SSLv2 days and is unlikely to be used - but was
+     * useful for testing different possible digest algorithms.
+     */
+    {   /* RC4-MD5 */
+        SSL_RC4_128_MD5,                /* RC4-MD5 */
+        16,                             /* key size */
+        0,                              /* iv size */ 
+        2*(MD5_SIZE+16),                /* key block size */
+        0,                              /* no padding */
+        MD5_SIZE,                       /* digest size */
+        hmac_md5,                       /* hmac algorithm */
+        (crypt_func)RC4_crypt,          /* encrypt */
+        (crypt_func)RC4_crypt           /* decrypt */
+    },
+};
+#endif
+
+static void prf(const uint8_t *sec, int sec_len, uint8_t *seed, int seed_len,
+        uint8_t *out, int olen);
+static const cipher_info_t *get_cipher_info(uint8_t cipher);
+static void increment_read_sequence(SSL *ssl);
+static void increment_write_sequence(SSL *ssl);
+static void add_hmac_digest(SSL *ssl, int snd, uint8_t *hmac_header,
+        const uint8_t *buf, int buf_len, uint8_t *hmac_buf);
+
+/* win32 VC6.0 doesn't have variadic macros */
+#if defined(WIN32) && !defined(CONFIG_SSL_FULL_MODE)
+void DISPLAY_BYTES(SSL *ssl, const char *format, 
+        const uint8_t *data, int size, ...) {}
+#endif
+
+/**
+ * Establish a new client/server context.
+ */
+EXP_FUNC SSL_CTX *STDCALL ssl_ctx_new(uint32_t options, int num_sessions)
+{
+    SSL_CTX *ssl_ctx = (SSL_CTX *)calloc(1, sizeof (SSL_CTX));
+    ssl_ctx->options = options;
+
+    if (load_key_certs(ssl_ctx) < 0)
+    {
+        free(ssl_ctx);  /* can't load our key/certificate pair, so die */
+        return NULL;
+    }
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    ssl_ctx->num_sessions = num_sessions;
+#endif
+
+    SSL_CTX_MUTEX_INIT(ssl_ctx->mutex);
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    if (num_sessions)
+    {
+        ssl_ctx->ssl_sessions = (SSL_SESSION **)
+                        calloc(1, num_sessions*sizeof(SSL_SESSION *));
+    }
+#endif
+
+    return ssl_ctx;
+}
+
+/*
+ * Remove a client/server context.
+ */
+EXP_FUNC void STDCALL ssl_ctx_free(SSL_CTX *ssl_ctx)
+{
+    SSL *ssl;
+    int i;
+
+    if (ssl_ctx == NULL)
+        return;
+
+    ssl = ssl_ctx->head;
+
+    /* clear out all the ssl entries */
+    while (ssl)
+    {
+        SSL *next = ssl->next;
+        ssl_free(ssl);
+        ssl = next;
+    }
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    /* clear out all the sessions */
+    for (i = 0; i < ssl_ctx->num_sessions; i++)
+        session_free(ssl_ctx->ssl_sessions, i);
+
+    free(ssl_ctx->ssl_sessions);
+#endif
+
+    i = 0;
+    while (i < CONFIG_SSL_MAX_CERTS && ssl_ctx->certs[i].buf)
+    {
+        free(ssl_ctx->certs[i].buf);
+        ssl_ctx->certs[i++].buf = NULL;
+    }
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    remove_ca_certs(ssl_ctx->ca_cert_ctx);
+#endif
+    ssl_ctx->chain_length = 0;
+    SSL_CTX_MUTEX_DESTROY(ssl_ctx->mutex);
+    RSA_free(ssl_ctx->rsa_ctx);
+    RNG_terminate();
+    free(ssl_ctx);
+}
+
+/*
+ * Free any used resources used by this connection.
+ */
+EXP_FUNC void STDCALL ssl_free(SSL *ssl)
+{
+    SSL_CTX *ssl_ctx;
+
+    if (ssl == NULL)        /* just ignore null pointers */
+        return;
+
+    /* spec says we must notify when we are dying */
+    send_alert(ssl, SSL_ALERT_CLOSE_NOTIFY);
+
+    ssl_ctx = ssl->ssl_ctx;
+
+    SSL_CTX_LOCK(ssl_ctx->mutex);
+
+    /* adjust the server SSL list */
+    if (ssl->prev)
+        ssl->prev->next = ssl->next;
+    else
+        ssl_ctx->head = ssl->next;
+
+    if (ssl->next)
+        ssl->next->prev = ssl->prev;
+    else
+        ssl_ctx->tail = ssl->prev;
+
+    SSL_CTX_UNLOCK(ssl_ctx->mutex);
+
+    /* may already be free - but be sure */
+    free(ssl->encrypt_ctx);
+    free(ssl->decrypt_ctx);
+    disposable_free(ssl);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    x509_free(ssl->x509_ctx);
+#endif
+
+    free(ssl);
+}
+
+/*
+ * Read the SSL connection and send any alerts for various errors.
+ */
+EXP_FUNC int STDCALL ssl_read(SSL *ssl, uint8_t **in_data)
+{
+    int ret = basic_read(ssl, in_data);
+
+    /* check for return code so we can send an alert */
+    if (ret < SSL_OK)
+    {
+        if (ret != SSL_ERROR_CONN_LOST)
+        {
+            send_alert(ssl, ret);
+#ifndef CONFIG_SSL_SKELETON_MODE
+            /* something nasty happened, so get rid of this session */
+            kill_ssl_session(ssl->ssl_ctx->ssl_sessions, ssl);
+#endif
+        }
+    }
+
+    return ret;
+}
+
+/*
+ * Write application data to the client
+ */
+EXP_FUNC int STDCALL ssl_write(SSL *ssl, const uint8_t *out_data, int out_len)
+{
+    int n = out_len, nw, i, tot = 0;
+
+    /* maximum size of a TLS packet is around 16kB, so fragment */
+    do 
+    {
+        nw = n;
+
+        if (nw > RT_MAX_PLAIN_LENGTH)    /* fragment if necessary */
+            nw = RT_MAX_PLAIN_LENGTH;
+
+        if ((i = send_packet(ssl, PT_APP_PROTOCOL_DATA, 
+                                            &out_data[tot], nw)) <= 0)
+        {
+            out_len = i;    /* an error */
+            break;
+        }
+
+        tot += i;
+        n -= i;
+    } while (n > 0);
+
+    return out_len;
+}
+
+/**
+ * Add a certificate to the certificate chain.
+ */
+int add_cert(SSL_CTX *ssl_ctx, const uint8_t *buf, int len)
+{
+    int ret = SSL_ERROR_NO_CERT_DEFINED, i = 0;
+    SSL_CERT *ssl_cert;
+    X509_CTX *cert = NULL;
+    int offset;
+
+    while (ssl_ctx->certs[i].buf && i < CONFIG_SSL_MAX_CERTS) 
+        i++;
+
+    if (i == CONFIG_SSL_MAX_CERTS) /* too many certs */
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: maximum number of certs added - change of "
+                "compile-time configuration required\n");
+#endif
+        goto error;
+    }
+
+    if ((ret = x509_new(buf, &offset, &cert)))
+        goto error;
+
+#if defined (CONFIG_SSL_FULL_MODE)
+    if (ssl_ctx->options & SSL_DISPLAY_CERTS)
+        x509_print(cert, NULL);
+#endif
+
+    ssl_cert = &ssl_ctx->certs[i];
+    ssl_cert->size = len;
+    ssl_cert->buf = (uint8_t *)malloc(len);
+    memcpy(ssl_cert->buf, buf, len);
+    ssl_ctx->chain_length++;
+    len -= offset;
+    ret = SSL_OK;           /* ok so far */
+
+    /* recurse? */
+    if (len > 0)
+    {
+        ret = add_cert(ssl_ctx, &buf[offset], len);
+    }
+
+error:
+    x509_free(cert);        /* don't need anymore */
+    return ret;
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * Add a certificate authority.
+ */
+int add_cert_auth(SSL_CTX *ssl_ctx, const uint8_t *buf, int len)
+{
+    int ret = SSL_ERROR_NO_CERT_DEFINED;
+    int i = 0;
+    int offset;
+    CA_CERT_CTX *ca_cert_ctx;
+
+    if (ssl_ctx->ca_cert_ctx == NULL)
+        ssl_ctx->ca_cert_ctx = (CA_CERT_CTX *)calloc(1, sizeof(CA_CERT_CTX));
+
+    ca_cert_ctx = ssl_ctx->ca_cert_ctx;
+
+    while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i]) 
+        i++;
+
+    if (i > CONFIG_X509_MAX_CA_CERTS)
+    {
+#ifdef CONFIG_SSL_FULL_MODE
+        printf("Error: maximum number of CA certs added - change of "
+                "compile-time configuration required\n");
+#endif
+        goto error;
+    }
+
+    if ((ret = x509_new(buf, &offset, &ca_cert_ctx->cert[i])))
+        goto error;
+
+    len -= offset;
+    ret = SSL_OK;           /* ok so far */
+
+    /* recurse? */
+    if (len > 0)
+        ret = add_cert_auth(ssl_ctx, &buf[offset], len);
+
+error:
+    return ret;
+}
+
+/*
+ * Retrieve an X.509 distinguished name component
+ */
+EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component)
+{
+    if (ssl->x509_ctx == NULL)
+        return NULL;
+
+    switch (component)
+    {
+        case SSL_X509_CERT_COMMON_NAME:
+            return ssl->x509_ctx->cert_dn[X509_COMMON_NAME];
+
+        case SSL_X509_CERT_ORGANIZATION:
+            return ssl->x509_ctx->cert_dn[X509_ORGANIZATION];
+
+        case SSL_X509_CERT_ORGANIZATIONAL_NAME:       
+            return ssl->x509_ctx->cert_dn[X509_ORGANIZATIONAL_UNIT];
+
+        case SSL_X509_CA_CERT_COMMON_NAME:
+            return ssl->x509_ctx->ca_cert_dn[X509_COMMON_NAME];
+
+        case SSL_X509_CA_CERT_ORGANIZATION:
+            return ssl->x509_ctx->ca_cert_dn[X509_ORGANIZATION];
+
+        case SSL_X509_CA_CERT_ORGANIZATIONAL_NAME:       
+            return ssl->x509_ctx->ca_cert_dn[X509_ORGANIZATIONAL_UNIT];
+
+        default:
+            return NULL;
+    }
+}
+
+#endif
+
+/*
+ * Find an ssl object based on the client's file descriptor.
+ */
+EXP_FUNC SSL * STDCALL ssl_find(SSL_CTX *ssl_ctx, int client_fd)
+{
+    SSL *ssl;
+
+    SSL_CTX_LOCK(ssl_ctx->mutex);
+    ssl = ssl_ctx->head;
+
+    /* search through all the ssl entries */
+    while (ssl)
+    {
+        if (ssl->client_fd == client_fd)
+        {
+            SSL_CTX_UNLOCK(ssl_ctx->mutex);
+            return ssl;
+        }
+
+        ssl = ssl->next;
+    }
+
+    SSL_CTX_UNLOCK(ssl_ctx->mutex);
+    return NULL;
+}
+
+/*
+ * Force the client to perform its handshake again.
+ */
+EXP_FUNC int STDCALL ssl_renegotiate(SSL *ssl)
+{
+    int ret = SSL_OK;
+
+    disposable_new(ssl);
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+    if (IS_SET_SSL_FLAG(SSL_IS_CLIENT))
+    {
+        ret = do_client_connect(ssl);
+    }
+    else
+#endif
+    {
+        send_packet(ssl, PT_HANDSHAKE_PROTOCOL, 
+                g_hello_request, sizeof(g_hello_request));
+        SET_SSL_FLAG(SSL_NEED_RECORD);
+    }
+
+    return ret;
+}
+
+/**
+ * @brief Get what we need for key info.
+ * @param cipher    [in]    The cipher information we are after
+ * @param key_size  [out]   The key size for the cipher
+ * @param iv_size   [out]   The iv size for the cipher
+ * @return  The amount of key information we need.
+ */
+static const cipher_info_t *get_cipher_info(uint8_t cipher)
+{
+    int i;
+
+    for (i = 0; i < NUM_PROTOCOLS; i++)
+    {
+        if (cipher_info[i].cipher == cipher)
+        {
+            return &cipher_info[i];
+        }
+    }
+
+    return NULL;  /* error */
+}
+
+/*
+ * Get a new ssl context for a new connection.
+ */
+SSL *ssl_new(SSL_CTX *ssl_ctx, int client_fd)
+{
+    SSL *ssl = (SSL *)calloc(1, sizeof(SSL));
+    ssl->ssl_ctx = ssl_ctx;
+    ssl->need_bytes = SSL_RECORD_SIZE;      /* need a record */
+    ssl->client_fd = client_fd;
+    ssl->flag = SSL_NEED_RECORD;
+    ssl->bm_data = ssl->bm_all_data+BM_RECORD_OFFSET; /* space at the start */
+    ssl->hs_status = SSL_NOT_OK;            /* not connected */
+#ifdef CONFIG_ENABLE_VERIFICATION
+    ssl->ca_cert_ctx = ssl_ctx->ca_cert_ctx;
+#endif
+    disposable_new(ssl);
+
+    /* a bit hacky but saves a few bytes of memory */
+    ssl->flag |= ssl_ctx->options;
+    SSL_CTX_LOCK(ssl_ctx->mutex);
+
+    if (ssl_ctx->head == NULL)
+    {
+        ssl_ctx->head = ssl;
+        ssl_ctx->tail = ssl;
+    }
+    else
+    {
+        ssl->prev = ssl_ctx->tail;
+        ssl_ctx->tail->next = ssl;
+        ssl_ctx->tail = ssl;
+    }
+
+    SSL_CTX_UNLOCK(ssl_ctx->mutex);
+    return ssl;
+}
+
+/*
+ * Add a private key to a context.
+ */
+int add_private_key(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj)
+{
+    int ret = SSL_OK;
+
+    /* get the private key details */
+    if (asn1_get_private_key(ssl_obj->buf, ssl_obj->len, &ssl_ctx->rsa_ctx))
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto error;
+    }
+
+error:
+    return ret;
+}
+
+/** 
+ * Increment the read sequence number (as a 64 bit endian indepenent #)
+ */     
+static void increment_read_sequence(SSL *ssl)
+{
+    int i;
+
+    for (i = 7; i >= 0; i--) 
+    {       
+        if (++ssl->read_sequence[i])
+            break;
+    }
+}
+            
+/**
+ * Increment the read sequence number (as a 64 bit endian indepenent #)
+ */      
+static void increment_write_sequence(SSL *ssl)
+{        
+    int i;                  
+         
+    for (i = 7; i >= 0; i--)
+    {                       
+        if (++ssl->write_sequence[i])
+            break;
+    }                       
+}
+
+/**
+ * Work out the HMAC digest in a packet.
+ */
+static void add_hmac_digest(SSL *ssl, int mode, uint8_t *hmac_header,
+        const uint8_t *buf, int buf_len, uint8_t *hmac_buf)
+{
+    int hmac_len = buf_len + 8 + SSL_RECORD_SIZE;
+    uint8_t *t_buf = (uint8_t *)alloca(hmac_len+10);
+
+    memcpy(t_buf, (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_WRITE) ? 
+                    ssl->write_sequence : ssl->read_sequence, 8);
+    memcpy(&t_buf[8], hmac_header, SSL_RECORD_SIZE);
+    memcpy(&t_buf[8+SSL_RECORD_SIZE], buf, buf_len);
+
+    ssl->cipher_info->hmac(t_buf, hmac_len, 
+            (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_READ) ? 
+                ssl->server_mac : ssl->client_mac, 
+            ssl->cipher_info->digest_size, hmac_buf);
+
+#if 0
+    print_blob("record", ssl->hmac_tx, SSL_RECORD_SIZE);
+    print_blob("buf", buf, buf_len);
+    if (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_WRITE)
+    {
+        print_blob("write seq", ssl->write_sequence, 8);
+    }
+    else
+    {
+        print_blob("read seq", ssl->read_sequence, 8);
+    }
+
+    if (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_READ)
+    {
+        print_blob("server mac", 
+                ssl->server_mac, ssl->cipher_info->digest_size);
+    }
+    else
+    {
+        print_blob("client mac", 
+                ssl->client_mac, ssl->cipher_info->digest_size);
+    }
+    print_blob("hmac", hmac_buf, SHA1_SIZE);
+#endif
+}
+
+/**
+ * Verify that the digest of a packet is correct.
+ */
+static int verify_digest(SSL *ssl, int mode, const uint8_t *buf, int read_len)
+{   
+    uint8_t hmac_buf[SHA1_SIZE];
+    int hmac_offset;
+   
+    if (ssl->cipher_info->padding_size)
+    {
+        hmac_offset = read_len-buf[read_len-1]-ssl->cipher_info->digest_size-1;
+    }
+    else
+    {
+        hmac_offset = read_len - ssl->cipher_info->digest_size;
+    }
+
+    /* sanity check the offset */
+    if (hmac_offset < 0)
+    {
+        return SSL_ERROR_INVALID_HMAC;
+    }
+
+    ssl->hmac_header[3] = hmac_offset >> 8;      /* insert size */
+    ssl->hmac_header[4] = hmac_offset & 0xff;
+    add_hmac_digest(ssl, mode, ssl->hmac_header, buf, hmac_offset, hmac_buf);
+
+    if (memcmp(hmac_buf, &buf[hmac_offset], ssl->cipher_info->digest_size))
+    {
+        return SSL_ERROR_INVALID_HMAC;
+    }
+
+    return hmac_offset;
+}
+
+/**
+ * Add a packet to the end of our sent and received packets, so that we may use
+ * it to calculate the hash at the end.
+ */
+void add_packet(SSL *ssl, const uint8_t *pkt, int len)
+{
+    MD5_Update(&ssl->dc->md5_ctx, pkt, len);
+    SHA1_Update(&ssl->dc->sha1_ctx, pkt, len);
+}
+
+/**
+ * Work out the MD5 PRF.
+ */
+static void p_hash_md5(const uint8_t *sec, int sec_len, 
+        uint8_t *seed, int seed_len, uint8_t *out, int olen)
+{
+    uint8_t a1[128];
+
+    /* A(1) */
+    hmac_md5(seed, seed_len, sec, sec_len, a1);
+    memcpy(&a1[MD5_SIZE], seed, seed_len);
+    hmac_md5(a1, MD5_SIZE+seed_len, sec, sec_len, out);
+
+    while (olen > MD5_SIZE)
+    {
+        uint8_t a2[MD5_SIZE];
+        out += MD5_SIZE;
+        olen -= MD5_SIZE;
+
+        /* A(N) */
+        hmac_md5(a1, MD5_SIZE, sec, sec_len, a2);
+        memcpy(a1, a2, MD5_SIZE);
+
+        /* work out the actual hash */
+        hmac_md5(a1, MD5_SIZE+seed_len, sec, sec_len, out);
+    }
+}
+
+/**
+ * Work out the SHA1 PRF.
+ */
+static void p_hash_sha1(const uint8_t *sec, int sec_len, 
+        uint8_t *seed, int seed_len, uint8_t *out, int olen)
+{
+    uint8_t a1[128];
+
+    /* A(1) */
+    hmac_sha1(seed, seed_len, sec, sec_len, a1);
+    memcpy(&a1[SHA1_SIZE], seed, seed_len);
+    hmac_sha1(a1, SHA1_SIZE+seed_len, sec, sec_len, out);
+
+    while (olen > SHA1_SIZE)
+    {
+        uint8_t a2[SHA1_SIZE];
+        out += SHA1_SIZE;
+        olen -= SHA1_SIZE;
+
+        /* A(N) */
+        hmac_sha1(a1, SHA1_SIZE, sec, sec_len, a2);
+        memcpy(a1, a2, SHA1_SIZE);
+
+        /* work out the actual hash */
+        hmac_sha1(a1, SHA1_SIZE+seed_len, sec, sec_len, out);
+    }
+}
+
+/**
+ * Work out the PRF.
+ */
+static void prf(const uint8_t *sec, int sec_len, uint8_t *seed, int seed_len,
+        uint8_t *out, int olen)
+{
+    int len, i;
+    const uint8_t *S1, *S2;
+    uint8_t xbuf[256]; /* needs to be > the amount of key data */
+    uint8_t ybuf[256]; /* needs to be > the amount of key data */
+
+    len = sec_len/2;
+    S1 = sec;
+    S2 = &sec[len];
+    len += (sec_len & 1); /* add for odd, make longer */
+
+    p_hash_md5(S1, len, seed, seed_len, xbuf, olen);
+    p_hash_sha1(S2, len, seed, seed_len, ybuf, olen);
+
+    for (i = 0; i < olen; i++)
+        out[i] = xbuf[i] ^ ybuf[i];
+}
+
+/**
+ * Generate a master secret based on the client/server random data and the
+ * premaster secret.
+ */
+void generate_master_secret(SSL *ssl, const uint8_t *premaster_secret)
+{
+    uint8_t buf[128];   /* needs to be > 13+32+32 in size */
+    strcpy((char *)buf, "master secret");
+    memcpy(&buf[13], ssl->dc->client_random, SSL_RANDOM_SIZE);
+    memcpy(&buf[45], ssl->dc->server_random, SSL_RANDOM_SIZE);
+    prf(premaster_secret, SSL_SECRET_SIZE, buf, 77, ssl->dc->master_secret,
+            SSL_SECRET_SIZE);
+}
+
+/**
+ * Generate a 'random' blob of data used for the generation of keys.
+ */
+static void generate_key_block(uint8_t *client_random, uint8_t *server_random,
+        uint8_t *master_secret, uint8_t *key_block, int key_block_size)
+{
+    uint8_t buf[128];
+    strcpy((char *)buf, "key expansion");
+    memcpy(&buf[13], server_random, SSL_RANDOM_SIZE);
+    memcpy(&buf[45], client_random, SSL_RANDOM_SIZE);
+    prf(master_secret, SSL_SECRET_SIZE, buf, 77, key_block, key_block_size);
+}
+
+/** 
+ * Calculate the digest used in the finished message. This function also
+ * doubles up as a certificate verify function.
+ */
+void finished_digest(SSL *ssl, const char *label, uint8_t *digest)
+{
+    uint8_t mac_buf[128]; 
+    uint8_t *q = mac_buf;
+    MD5_CTX md5_ctx = ssl->dc->md5_ctx;
+    SHA1_CTX sha1_ctx = ssl->dc->sha1_ctx;
+
+    if (label)
+    {
+        strcpy((char *)q, label);
+        q += strlen(label);
+    }
+
+    MD5_Final(q, &md5_ctx);
+    q += MD5_SIZE;
+    
+    SHA1_Final(q, &sha1_ctx);
+    q += SHA1_SIZE;
+
+    if (label)
+    {
+        prf(ssl->dc->master_secret, SSL_SECRET_SIZE, mac_buf, (int)(q-mac_buf),
+            digest, SSL_FINISHED_HASH_SIZE);
+    }
+    else    /* for use in a certificate verify */
+    {
+        memcpy(digest, mac_buf, MD5_SIZE + SHA1_SIZE);
+    }
+
+#if 0
+    printf("label: %s\n", label);
+    print_blob("master secret", ssl->dc->master_secret, 48);
+    print_blob("mac_buf", mac_buf, q-mac_buf);
+    print_blob("finished digest", digest, SSL_FINISHED_HASH_SIZE);
+#endif
+}   
+    
+/**
+ * Retrieve (and initialise) the context of a cipher.
+ */
+static void *crypt_new(SSL *ssl, uint8_t *key, uint8_t *iv, int is_decrypt)
+{
+    switch (ssl->cipher)
+    {
+#ifndef CONFIG_SSL_SKELETON_MODE
+        case SSL_AES128_SHA:
+            {
+                AES_CTX *aes_ctx = (AES_CTX *)malloc(sizeof(AES_CTX));
+                AES_set_key(aes_ctx, key, iv, AES_MODE_128);
+
+                if (is_decrypt)
+                {
+                    AES_convert_key(aes_ctx);
+                }
+
+                return (void *)aes_ctx;
+            }
+
+        case SSL_AES256_SHA:
+            {
+                AES_CTX *aes_ctx = (AES_CTX *)malloc(sizeof(AES_CTX));
+                AES_set_key(aes_ctx, key, iv, AES_MODE_256);
+
+                if (is_decrypt)
+                {
+                    AES_convert_key(aes_ctx);
+                }
+
+                return (void *)aes_ctx;
+            }
+            break;
+
+        case SSL_RC4_128_MD5:
+#endif
+        case SSL_RC4_128_SHA:
+            {
+                RC4_CTX *rc4_ctx = (RC4_CTX *)malloc(sizeof(RC4_CTX));
+                RC4_setup(rc4_ctx, key, 16);
+                return (void *)rc4_ctx;
+            }
+            break;
+    }
+
+    return NULL;    /* its all gone wrong */
+}
+
+/**
+ * Send a packet over the socket.
+ */
+static int send_raw_packet(SSL *ssl, uint8_t protocol)
+{
+    uint8_t *rec_buf = ssl->bm_all_data;
+    int pkt_size = SSL_RECORD_SIZE+ssl->bm_index;
+    int sent = 0;
+    int ret = SSL_OK;
+
+    rec_buf[0] = protocol;
+    rec_buf[1] = 0x03;      /* version = 3.1 (TLS) */
+    rec_buf[2] = 0x01;
+    rec_buf[3] = ssl->bm_index >> 8;
+    rec_buf[4] = ssl->bm_index & 0xff;
+
+    DISPLAY_BYTES(ssl, "sending %d bytes", ssl->bm_all_data, 
+                             pkt_size, pkt_size);
+
+    while (sent < pkt_size)
+    {
+        if ((ret = SOCKET_WRITE(ssl->client_fd, 
+                        &ssl->bm_all_data[sent], pkt_size)) < 0)
+        {
+            ret = SSL_ERROR_CONN_LOST;
+            break;
+        }
+
+        sent += ret;
+
+        /* keep going until the write buffer has some space */
+        if (sent != pkt_size)
+        {
+            fd_set wfds;
+            FD_ZERO(&wfds);
+            FD_SET(ssl->client_fd, &wfds);
+
+            if (select(ssl->client_fd + 1, NULL, &wfds, NULL, NULL) < 0)
+            {
+                ret = SSL_ERROR_CONN_LOST;
+                break;
+            }
+        }
+    }
+
+    SET_SSL_FLAG(SSL_NEED_RECORD);  /* reset for next time */
+    ssl->bm_index = 0;
+
+    if (protocol != PT_APP_PROTOCOL_DATA)  
+    {
+        /* always return SSL_OK during handshake */   
+        ret = SSL_OK;
+    }
+
+    return ret;
+}
+
+/**
+ * Send an encrypted packet with padding bytes if necessary.
+ */
+int send_packet(SSL *ssl, uint8_t protocol, const uint8_t *in, int length)
+{
+    int msg_length = length;
+    int ret, pad_bytes = 0;
+    ssl->bm_index = msg_length;
+
+    /* if our state is bad, don't bother */
+    if (ssl->hs_status == SSL_ERROR_DEAD)
+        return SSL_ERROR_CONN_LOST;
+
+    if (in) /* has the buffer already been initialised? */
+    {
+        memcpy(ssl->bm_data, in, length);
+    }
+
+    if (IS_SET_SSL_FLAG(SSL_TX_ENCRYPTED))
+    {
+        int mode = IS_SET_SSL_FLAG(SSL_IS_CLIENT) ? 
+                            SSL_CLIENT_WRITE : SSL_SERVER_WRITE;
+        uint8_t hmac_header[SSL_RECORD_SIZE];
+
+        hmac_header[0] = protocol;
+        hmac_header[1] = 0x03;
+        hmac_header[2] = 0x01;
+        hmac_header[3] = length >> 8; 
+        hmac_header[4] = length & 0xff;
+
+        if (protocol == PT_HANDSHAKE_PROTOCOL)
+        {
+            DISPLAY_STATE(ssl, 1, ssl->bm_data[0], 0);
+
+            if (ssl->bm_data[0] != HS_HELLO_REQUEST)
+            {
+                add_packet(ssl, ssl->bm_data, ssl->bm_index);
+            }
+        }
+
+        /* add the packet digest */
+        msg_length += ssl->cipher_info->digest_size;
+        ssl->bm_index = msg_length;
+        add_hmac_digest(ssl, mode, hmac_header, ssl->bm_data, length, 
+                                                &ssl->bm_data[length]);
+
+        /* add padding? */
+        if (ssl->cipher_info->padding_size)
+        {
+            int last_blk_size = msg_length%ssl->cipher_info->padding_size;
+            pad_bytes = ssl->cipher_info->padding_size - last_blk_size;
+
+            /* ensure we always have at least 1 padding byte */
+            if (pad_bytes == 0)
+                pad_bytes += ssl->cipher_info->padding_size;
+
+            memset(&ssl->bm_data[msg_length], pad_bytes-1, pad_bytes);
+            msg_length += pad_bytes;
+            ssl->bm_index = msg_length;
+        }
+
+        DISPLAY_BYTES(ssl, "unencrypted write", ssl->bm_data, msg_length);
+        increment_write_sequence(ssl);
+
+        /* now encrypt the packet */
+        ssl->cipher_info->encrypt(ssl->encrypt_ctx, ssl->bm_data, 
+                                            ssl->bm_data, msg_length);
+    }
+    else if (protocol == PT_HANDSHAKE_PROTOCOL)
+    {
+        DISPLAY_STATE(ssl, 1, ssl->bm_data[0], 0);
+
+        if (ssl->bm_data[0] != HS_HELLO_REQUEST)
+        {
+            add_packet(ssl, ssl->bm_data, ssl->bm_index);
+        }
+    }
+
+    if ((ret = send_raw_packet(ssl, protocol)) <= 0)
+        return ret;
+
+    return length;  /* just return what we wanted to send */
+}
+
+/**
+ * Work out the cipher keys we are going to use for this session based on the
+ * master secret.
+ */
+static void set_key_block(SSL *ssl, int is_write)
+{
+    const cipher_info_t *ciph_info = get_cipher_info(ssl->cipher);
+    uint8_t *q;
+    uint8_t client_key[32], server_key[32]; /* big enough for AES256 */
+    uint8_t client_iv[16], server_iv[16];   /* big enough for AES128/256 */
+    int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT);
+
+    /* only do once in a handshake */
+    if (ssl->dc->key_block == NULL)
+    {
+        ssl->dc->key_block = (uint8_t *)malloc(ciph_info->key_block_size);
+
+#if 0
+        print_blob("client", ssl->dc->client_random, 32);
+        print_blob("server", ssl->dc->server_random, 32);
+        print_blob("master", ssl->dc->master_secret, SSL_SECRET_SIZE);
+#endif
+        generate_key_block(ssl->dc->client_random, ssl->dc->server_random,
+            ssl->dc->master_secret, ssl->dc->key_block, 
+            ciph_info->key_block_size);
+#if 0
+        print_blob("keyblock", ssl->key_block, ciph_info->key_block_size);
+#endif
+    }
+
+    q = ssl->dc->key_block;
+
+    if ((is_client && is_write) || (!is_client && !is_write))
+    {
+        memcpy(ssl->client_mac, q, ciph_info->digest_size);
+    }
+
+    q += ciph_info->digest_size;
+
+    if ((!is_client && is_write) || (is_client && !is_write))
+    {
+        memcpy(ssl->server_mac, q, ciph_info->digest_size);
+    }
+
+    q += ciph_info->digest_size;
+    memcpy(client_key, q, ciph_info->key_size);
+    q += ciph_info->key_size;
+    memcpy(server_key, q, ciph_info->key_size);
+    q += ciph_info->key_size;
+
+#ifndef CONFIG_SSL_SKELETON_MODE 
+    if (ciph_info->iv_size)    /* RC4 has no IV, AES does */
+    {
+        memcpy(client_iv, q, ciph_info->iv_size);
+        q += ciph_info->iv_size;
+        memcpy(server_iv, q, ciph_info->iv_size);
+        q += ciph_info->iv_size;
+    }
+#endif
+
+    free(is_write ? ssl->encrypt_ctx : ssl->decrypt_ctx);
+
+    /* now initialise the ciphers */
+    if (is_client)
+    {
+        finished_digest(ssl, server_finished, ssl->dc->final_finish_mac);
+
+        if (is_write)
+            ssl->encrypt_ctx = crypt_new(ssl, client_key, client_iv, 0);
+        else
+            ssl->decrypt_ctx = crypt_new(ssl, server_key, server_iv, 1);
+    }
+    else
+    {
+        finished_digest(ssl, client_finished, ssl->dc->final_finish_mac);
+
+        if (is_write)
+            ssl->encrypt_ctx = crypt_new(ssl, server_key, server_iv, 0);
+        else
+            ssl->decrypt_ctx = crypt_new(ssl, client_key, client_iv, 1);
+    }
+
+    ssl->cipher_info = ciph_info;
+}
+
+/**
+ * Read the SSL connection.
+ */
+int basic_read(SSL *ssl, uint8_t **in_data)
+{
+    int ret = SSL_OK;
+    int read_len, is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT);
+    uint8_t *buf = ssl->bm_data;
+
+    read_len = SOCKET_READ(ssl->client_fd, &buf[ssl->bm_read_index], 
+                            ssl->need_bytes-ssl->got_bytes);
+
+    /* connection has gone, so die */
+    if (read_len <= 0)
+    {
+        ret = SSL_ERROR_CONN_LOST;
+        ssl->hs_status = SSL_ERROR_DEAD;  /* make sure it stays dead */
+        goto error;
+    }
+
+    DISPLAY_BYTES(ssl, "received %d bytes", 
+            &ssl->bm_data[ssl->bm_read_index], read_len, read_len);
+
+    ssl->got_bytes += read_len;
+    ssl->bm_read_index += read_len;
+
+    /* haven't quite got what we want, so try again later */
+    if (ssl->got_bytes < ssl->need_bytes)
+        return SSL_OK;
+
+    read_len = ssl->got_bytes;
+    ssl->got_bytes = 0;
+
+    if (IS_SET_SSL_FLAG(SSL_NEED_RECORD))
+    {
+        /* check for sslv2 "client hello" */
+        if (buf[0] & 0x80 && buf[2] == 1 && buf[3] == 0x03)
+        {
+#ifdef CONFIG_SSL_ENABLE_V23_HANDSHAKE
+            DISPLAY_BYTES(ssl, "ssl2 record", buf, 5);
+            add_packet(ssl, &buf[2], 3);
+            ret = process_sslv23_client_hello(ssl); 
+#else
+            printf("Error: no SSLv23 handshaking allowed\n"); TTY_FLUSH();
+            ret = SSL_ERROR_NOT_SUPPORTED;
+#endif
+            goto error; /* not an error - just get out of here */
+        }
+
+        ssl->need_bytes = (buf[3] << 8) + buf[4];
+
+        /* do we violate the spec with the message size?  */
+        if (ssl->need_bytes > RT_MAX_PLAIN_LENGTH+RT_EXTRA-BM_RECORD_OFFSET)
+        {
+            ret = SSL_ERROR_INVALID_PROT_MSG;              
+            goto error;
+        }
+
+        CLR_SSL_FLAG(SSL_NEED_RECORD);
+        memcpy(ssl->hmac_header, buf, 3);       /* store for hmac */
+        ssl->record_type = buf[0];
+        goto error;                         /* no error, we're done */
+    }
+
+    /* for next time - just do it now in case of an error */
+    SET_SSL_FLAG(SSL_NEED_RECORD);
+    ssl->need_bytes = SSL_RECORD_SIZE;
+
+    /* decrypt if we need to */
+    if (IS_SET_SSL_FLAG(SSL_RX_ENCRYPTED))
+    {
+        ssl->cipher_info->decrypt(ssl->decrypt_ctx, buf, buf, read_len);
+        read_len = verify_digest(ssl, 
+                is_client ? SSL_CLIENT_READ : SSL_SERVER_READ, buf, read_len);
+
+        /* does the hmac work? */
+        if (read_len < 0)
+        {
+            ret = read_len;
+            goto error;
+        }
+
+        DISPLAY_BYTES(ssl, "decrypted", buf, read_len);
+        increment_read_sequence(ssl);
+    }
+
+    /* The main part of the SSL packet */
+    switch (ssl->record_type)
+    {
+        case PT_HANDSHAKE_PROTOCOL:
+            ssl->dc->bm_proc_index = 0;
+            ret = do_handshake(ssl, buf, read_len);
+            break;
+
+        case PT_CHANGE_CIPHER_SPEC:
+            if (ssl->next_state != HS_FINISHED)
+            {
+                ret = SSL_ERROR_INVALID_HANDSHAKE;
+                goto error;
+            }
+
+            /* all encrypted from now on */
+            SET_SSL_FLAG(SSL_RX_ENCRYPTED);
+            set_key_block(ssl, 0);
+            memset(ssl->read_sequence, 0, 8);
+            break;
+
+        case PT_APP_PROTOCOL_DATA:
+            if (in_data)
+            {
+                *in_data = ssl->bm_data;   /* point to the work buffer */
+                (*in_data)[read_len] = 0;  /* null terminate just in case */
+            }
+
+            ret = read_len;
+            break;
+
+        case PT_ALERT_PROTOCOL:
+            /* return the alert # with alert bit set */
+            ret = -buf[1]; 
+            DISPLAY_ALERT(ssl, buf[1]);
+            break;
+
+        default:
+            ret = SSL_ERROR_INVALID_PROT_MSG;
+            break;
+    }
+
+error:
+    ssl->bm_read_index = 0;          /* reset to go again */
+
+    if (ret < SSL_OK && in_data)/* if all wrong, then clear this buffer ptr */
+        *in_data = NULL;
+
+    return ret;
+}
+
+/**
+ * Do some basic checking of data and then perform the appropriate handshaking.
+ */
+static int do_handshake(SSL *ssl, uint8_t *buf, int read_len)
+{
+    int hs_len = (buf[2]<<8) + buf[3];
+    uint8_t handshake_type = buf[0];
+    int ret = SSL_OK;
+    int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT);
+
+    /* some integrity checking on the handshake */
+    PARANOIA_CHECK(read_len-SSL_HS_HDR_SIZE, hs_len);
+
+    if (handshake_type != ssl->next_state)
+    {
+        /* handle a special case on the client */
+        if (!is_client || handshake_type != HS_CERT_REQ ||
+                        ssl->next_state != HS_SERVER_HELLO_DONE)
+        {
+            ret = SSL_ERROR_INVALID_HANDSHAKE;
+            goto error;
+        }
+    }
+
+    hs_len += SSL_HS_HDR_SIZE;  /* adjust for when adding packets */
+    ssl->bm_index = hs_len;     /* store the size and check later */
+    DISPLAY_STATE(ssl, 0, handshake_type, 0);
+
+    if (handshake_type != HS_CERT_VERIFY && handshake_type != HS_HELLO_REQUEST)
+        add_packet(ssl, buf, hs_len); 
+
+#if defined(CONFIG_SSL_ENABLE_CLIENT)
+    ret = is_client ? 
+        do_clnt_handshake(ssl, handshake_type, buf, hs_len) :
+        do_svr_handshake(ssl, handshake_type, buf, hs_len);
+#else
+    ret = do_svr_handshake(ssl, handshake_type, buf, hs_len);
+#endif
+
+    /* just use recursion to get the rest */
+    if (hs_len < read_len && ret == SSL_OK)
+        ret = do_handshake(ssl, &buf[hs_len], read_len-hs_len);
+
+error:
+    return ret;
+}
+
+/**
+ * Sends the change cipher spec message. We have just read a finished message
+ * from the client.
+ */
+int send_change_cipher_spec(SSL *ssl)
+{
+    int ret = send_packet(ssl, PT_CHANGE_CIPHER_SPEC, 
+            g_chg_cipher_spec_pkt, sizeof(g_chg_cipher_spec_pkt));
+    SET_SSL_FLAG(SSL_TX_ENCRYPTED);
+    set_key_block(ssl, 1);
+    memset(ssl->write_sequence, 0, 8);
+    return ret;
+}
+
+/**
+ * Send a "finished" message
+ */
+int send_finished(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+
+    buf[0] = HS_FINISHED;
+    buf[1] = 0;
+    buf[2] = 0;
+    buf[3] = SSL_FINISHED_HASH_SIZE;
+
+    /* now add the finished digest mac (12 bytes) */
+    finished_digest(ssl, 
+        IS_SET_SSL_FLAG(SSL_IS_CLIENT) ?
+                    client_finished : server_finished, &buf[4]);
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    /* store in the session cache */
+    if (!IS_SET_SSL_FLAG(SSL_SESSION_RESUME) && ssl->ssl_ctx->num_sessions)
+    {
+        memcpy(ssl->session->master_secret,
+                ssl->dc->master_secret, SSL_SECRET_SIZE);
+    }
+#endif
+
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL,
+                                NULL, SSL_FINISHED_HASH_SIZE+4);
+}
+
+/**
+ * Send an alert message.
+ * Return 1 if the alert was an "error".
+ */
+int send_alert(SSL *ssl, int error_code)
+{
+    int alert_num = 0;
+    int is_warning = 0;
+    uint8_t buf[2];
+
+    /* Don't bother we're already dead */
+    if (ssl->hs_status == SSL_ERROR_DEAD)
+    {
+        return SSL_ERROR_CONN_LOST;
+    }
+
+#ifdef CONFIG_SSL_FULL_MODE
+    if (IS_SET_SSL_FLAG(SSL_DISPLAY_STATES))
+        ssl_display_error(error_code);
+#endif
+
+    switch (error_code)
+    {
+        case SSL_ALERT_CLOSE_NOTIFY:
+            is_warning = 1;
+            alert_num = SSL_ALERT_CLOSE_NOTIFY;
+            break;
+
+        case SSL_ERROR_CONN_LOST:       /* don't send alert just yet */
+            is_warning = 1;
+            break;
+
+        case SSL_ERROR_INVALID_HANDSHAKE:
+        case SSL_ERROR_INVALID_PROT_MSG:
+            alert_num = SSL_ALERT_HANDSHAKE_FAILURE;
+            break;
+
+        case SSL_ERROR_INVALID_HMAC:
+        case SSL_ERROR_FINISHED_INVALID:
+            alert_num = SSL_ALERT_BAD_RECORD_MAC;
+            break;
+
+        case SSL_ERROR_INVALID_VERSION:
+            alert_num = SSL_ALERT_INVALID_VERSION;
+            break;
+
+        case SSL_ERROR_INVALID_SESSION:
+        case SSL_ERROR_NO_CIPHER:
+        case SSL_ERROR_INVALID_KEY:
+            alert_num = SSL_ALERT_ILLEGAL_PARAMETER;
+            break;
+
+        case SSL_ERROR_BAD_CERTIFICATE:
+            alert_num = SSL_ALERT_BAD_CERTIFICATE;
+            break;
+
+        default:
+            /* a catch-all for any badly verified certificates */
+            alert_num = (error_code <= SSL_X509_OFFSET) ?  
+                SSL_ALERT_BAD_CERTIFICATE : SSL_ALERT_UNEXPECTED_MESSAGE;
+            break;
+    }
+
+    buf[0] = is_warning ? 1 : 2;
+    buf[1] = alert_num;
+    send_packet(ssl, PT_ALERT_PROTOCOL, buf, sizeof(buf));
+    DISPLAY_ALERT(ssl, alert_num);
+    return is_warning ? 0 : 1;
+}
+
+/**
+ * Process a client finished message.
+ */
+int process_finished(SSL *ssl, int hs_len)
+{
+    uint8_t *buf = ssl->bm_data;
+    int ret = SSL_OK;
+    int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT);
+    int resume = IS_SET_SSL_FLAG(SSL_SESSION_RESUME);
+
+    PARANOIA_CHECK(ssl->bm_index, SSL_FINISHED_HASH_SIZE+4);
+
+    /* check that we all work before we continue */
+    if (memcmp(ssl->dc->final_finish_mac, &buf[4], SSL_FINISHED_HASH_SIZE))
+        return SSL_ERROR_FINISHED_INVALID;
+
+    if ((!is_client && !resume) || (is_client && resume))
+    {
+        if ((ret = send_change_cipher_spec(ssl)) == SSL_OK)
+            ret = send_finished(ssl);
+    }
+
+    /* if we ever renegotiate */
+    ssl->next_state = is_client ? HS_HELLO_REQUEST : HS_CLIENT_HELLO;  
+    ssl->hs_status = ret;  /* set the final handshake status */
+
+error:
+    return ret;
+}
+
+/**
+ * Send a certificate.
+ */
+int send_certificate(SSL *ssl)
+{
+    int i = 0;
+    uint8_t *buf = ssl->bm_data;
+    int offset = 7;
+    int chain_length;
+
+    buf[0] = HS_CERTIFICATE;
+    buf[1] = 0;
+    buf[4] = 0;
+
+    while (i < ssl->ssl_ctx->chain_length)
+    {
+        SSL_CERT *cert = &ssl->ssl_ctx->certs[i];
+        buf[offset++] = 0;        
+        buf[offset++] = cert->size >> 8;        /* cert 1 length */
+        buf[offset++] = cert->size & 0xff;
+        memcpy(&buf[offset], cert->buf, cert->size);
+        offset += cert->size;
+        i++;
+    }
+
+    chain_length = offset - 7;
+    buf[5] = chain_length >> 8;        /* cert chain length */
+    buf[6] = chain_length & 0xff;
+    chain_length += 3;
+    buf[2] = chain_length >> 8;        /* handshake length */
+    buf[3] = chain_length & 0xff;
+    ssl->bm_index = offset;
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset);
+}
+
+/**
+ * Create a blob of memory that we'll get rid of once the handshake is
+ * complete.
+ */
+void disposable_new(SSL *ssl)
+{
+    if (ssl->dc == NULL)
+    {
+        ssl->dc = (DISPOSABLE_CTX *)calloc(1, sizeof(DISPOSABLE_CTX));
+        MD5_Init(&ssl->dc->md5_ctx);
+        SHA1_Init(&ssl->dc->sha1_ctx);
+    }
+}
+
+/**
+ * Remove the temporary blob of memory.
+ */
+void disposable_free(SSL *ssl)
+{
+    if (ssl->dc)
+    {
+           free(ssl->dc->key_block);
+        memset(ssl->dc, 0, sizeof(DISPOSABLE_CTX));
+        free(ssl->dc);
+        ssl->dc = NULL;
+    }
+
+}
+
+#ifndef CONFIG_SSL_SKELETON_MODE     /* no session resumption in this mode */
+/**
+ * Find if an existing session has the same session id. If so, use the
+ * master secret from this session for session resumption.
+ */
+SSL_SESSION *ssl_session_update(int max_sessions, SSL_SESSION *ssl_sessions[], 
+        SSL *ssl, const uint8_t *session_id)
+{
+    time_t tm = time(NULL);
+    time_t oldest_sess_time = tm;
+    SSL_SESSION *oldest_sess = NULL;
+    int i;
+
+    /* no sessions? Then bail */
+    if (max_sessions == 0)
+        return NULL;
+
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+    if (session_id)
+    {
+        for (i = 0; i < max_sessions; i++)
+        {
+            if (ssl_sessions[i])
+            {
+                /* kill off any expired sessions */
+                if (tm > ssl_sessions[i]->conn_time + SSL_EXPIRY_TIME)
+                {
+                    session_free(ssl_sessions, i);
+                    continue;
+                }
+
+                /* if the session id matches, it must still be less than 
+                   the expiry time */
+                if (memcmp(ssl_sessions[i]->session_id, session_id,
+                                                SSL_SESSION_ID_SIZE) == 0)
+                {
+                    ssl->session_index = i;
+                    memcpy(ssl->dc->master_secret, 
+                            ssl_sessions[i]->master_secret, SSL_SECRET_SIZE);
+                    SET_SSL_FLAG(SSL_SESSION_RESUME);
+                    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+                    return ssl_sessions[i];  /* a session was found */
+                }
+            }
+        }
+    }
+
+    /* If we've got here, no matching session was found - so create one */
+    for (i = 0; i < max_sessions; i++)
+    {
+        if (ssl_sessions[i] == NULL)
+        {
+            /* perfect, this will do */
+            ssl_sessions[i] = (SSL_SESSION *)calloc(1, sizeof(SSL_SESSION));
+            ssl_sessions[i]->conn_time = tm;
+            ssl->session_index = i;
+            SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+            return ssl_sessions[i]; /* return the session object */
+        }
+        else if (ssl_sessions[i]->conn_time <= oldest_sess_time)
+        {
+            /* find the oldest session */
+            oldest_sess_time = ssl_sessions[i]->conn_time;
+            oldest_sess = ssl_sessions[i];
+            ssl->session_index = i;
+        }
+    }
+
+    /* ok, we've used up all of our sessions. So blow the oldest session away */
+    oldest_sess->conn_time = tm;
+    memset(oldest_sess->session_id, 0, sizeof(SSL_SESSION_ID_SIZE));
+    memset(oldest_sess->master_secret, 0, sizeof(SSL_SECRET_SIZE));
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+    return oldest_sess;
+}
+
+/**
+ * Free an existing session.
+ */
+static void session_free(SSL_SESSION *ssl_sessions[], int sess_index)
+{
+    if (ssl_sessions[sess_index])
+    {
+        free(ssl_sessions[sess_index]);
+        ssl_sessions[sess_index] = NULL;
+    }
+}
+
+/**
+ * This ssl object doesn't want this session anymore.
+ */
+void kill_ssl_session(SSL_SESSION **ssl_sessions, SSL *ssl)
+{
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+
+    if (ssl->ssl_ctx->num_sessions)
+    {
+        session_free(ssl_sessions, ssl->session_index);
+        ssl->session = NULL;
+    }
+
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+}
+#endif /* CONFIG_SSL_SKELETON_MODE */
+
+/*
+ * Get the session id for a handshake. This will be a 32 byte sequence.
+ */
+EXP_FUNC const uint8_t * STDCALL ssl_get_session_id(const SSL *ssl)
+{
+    return ssl->session_id;
+}
+
+/*
+ * Get the session id size for a handshake. 
+ */
+EXP_FUNC uint8_t STDCALL ssl_get_session_id_size(const SSL *ssl)
+{
+    return ssl->sess_id_size;
+}
+
+/*
+ * Return the cipher id (in the SSL form).
+ */
+EXP_FUNC uint8_t STDCALL ssl_get_cipher_id(const SSL *ssl)
+{
+    return ssl->cipher;
+}
+
+/*
+ * Return the status of the handshake.
+ */
+EXP_FUNC int STDCALL ssl_handshake_status(const SSL *ssl)
+{
+    return ssl->hs_status;
+}
+
+/*
+ * Retrieve various parameters about the SSL engine.
+ */
+EXP_FUNC int STDCALL ssl_get_config(int offset)
+{
+    switch (offset)
+    {
+        /* return the appropriate build mode */
+        case SSL_BUILD_MODE:
+#if defined(CONFIG_SSL_FULL_MODE)
+            return SSL_BUILD_FULL_MODE;
+#elif defined(CONFIG_SSL_ENABLE_CLIENT)
+            return SSL_BUILD_ENABLE_CLIENT;
+#elif defined(CONFIG_ENABLE_VERIFICATION)
+            return SSL_BUILD_ENABLE_VERIFICATION;
+#elif defined(CONFIG_SSL_SERVER_ONLY )
+            return SSL_BUILD_SERVER_ONLY;
+#else 
+            return SSL_BUILD_SKELETON_MODE;
+#endif
+
+        case SSL_MAX_CERT_CFG_OFFSET:
+            return CONFIG_SSL_MAX_CERTS;
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+        case SSL_MAX_CA_CERT_CFG_OFFSET:
+            return CONFIG_X509_MAX_CA_CERTS;
+#endif
+#ifdef CONFIG_SSL_HAS_PEM
+        case SSL_HAS_PEM:
+            return 1;
+#endif
+        default:
+            return 0;
+    }
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * Authenticate a received certificate.
+ */
+EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl)
+{
+    int ret;
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+    ret = x509_verify(ssl->ssl_ctx->ca_cert_ctx, ssl->x509_ctx);
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+
+    if (ret)        /* modify into an SSL error type */
+    {
+        ret = SSL_X509_ERROR(ret);
+    }
+
+    return ret;
+}
+
+/**
+ * Process a certificate message.
+ */
+int process_certificate(SSL *ssl, X509_CTX **x509_ctx)
+{
+    int ret = SSL_OK;
+    uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index];
+    int pkt_size = ssl->bm_index;
+    int cert_size, offset = 5;
+    int total_cert_size = (buf[offset]<<8) + buf[offset+1];
+    int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT);
+    X509_CTX **chain = x509_ctx;
+    offset += 2;
+
+    PARANOIA_CHECK(total_cert_size, offset);
+
+    while (offset < total_cert_size)
+    {
+        offset++;       /* skip empty char */
+        cert_size = (buf[offset]<<8) + buf[offset+1];
+        offset += 2;
+        
+        if (x509_new(&buf[offset], NULL, chain))
+        {
+            ret = SSL_ERROR_BAD_CERTIFICATE;
+            goto error;
+        }
+
+        /* DISPLAY_CERT(ssl, *chain); */
+        chain = &((*chain)->next);
+        offset += cert_size;
+    }
+
+    PARANOIA_CHECK(pkt_size, offset);
+
+    /* if we are client we can do the verify now or later */
+    if (is_client && !IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER))
+    {
+        ret = ssl_verify_cert(ssl);
+    }
+
+    ssl->next_state = is_client ? HS_SERVER_HELLO_DONE : HS_CLIENT_KEY_XCHG;
+    ssl->dc->bm_proc_index += offset;
+error:
+    return ret;
+}
+
+#endif /* CONFIG_SSL_CERT_VERIFICATION */
+
+/**
+ * Debugging routine to display SSL handshaking stuff.
+ */
+#ifdef CONFIG_SSL_FULL_MODE
+/**
+ * Debugging routine to display SSL states.
+ */
+void DISPLAY_STATE(SSL *ssl, int is_send, uint8_t state, int not_ok)
+{
+    const char *str;
+
+    if (!IS_SET_SSL_FLAG(SSL_DISPLAY_STATES))
+        return;
+
+    printf(not_ok ? "Error - invalid State:\t" : "State:\t");
+    printf(is_send ? "sending " : "receiving ");
+
+    switch (state)
+    {
+        case HS_HELLO_REQUEST:
+            str = "Hello Request (0)";
+            break;
+
+        case HS_CLIENT_HELLO:
+            str = "Client Hello (1)";
+            break;
+
+        case HS_SERVER_HELLO:
+            str = "Server Hello (2)";
+            break;
+
+        case HS_CERTIFICATE:
+            str = "Certificate (11)";
+            break;
+
+        case HS_SERVER_KEY_XCHG:
+            str = "Certificate Request (12)";
+            break;
+
+        case HS_CERT_REQ:
+            str = "Certificate Request (13)";
+            break;
+
+        case HS_SERVER_HELLO_DONE:
+            str = "Server Hello Done (14)";
+            break;
+
+        case HS_CERT_VERIFY:
+            str = "Certificate Verify (15)";
+            break;
+
+        case HS_CLIENT_KEY_XCHG:
+            str = "Client Key Exchange (16)";
+            break;
+
+        case HS_FINISHED:
+            str = "Finished (16)";
+            break;
+
+        default:
+            str = "Error (Unknown)";
+            
+            break;
+    }
+
+    printf("%s\n", str);
+    TTY_FLUSH();
+}
+
+/**
+ * Debugging routine to display X509 certificates.
+ */
+void DISPLAY_CERT(SSL *ssl, const X509_CTX *x509_ctx)
+{
+    if (!IS_SET_SSL_FLAG(SSL_DISPLAY_CERTS))
+        return;
+
+    x509_print(x509_ctx, ssl->ssl_ctx->ca_cert_ctx);
+    TTY_FLUSH();
+}
+
+/**
+ * Debugging routine to display RSA objects
+ */
+void DISPLAY_RSA(SSL *ssl, const RSA_CTX *rsa_ctx)
+{
+    if (!IS_SET_SSL_FLAG(SSL_DISPLAY_RSA))
+        return;
+
+    RSA_print(rsa_ctx);
+    TTY_FLUSH();
+}
+
+/**
+ * Debugging routine to display SSL handshaking bytes.
+ */
+void DISPLAY_BYTES(SSL *ssl, const char *format, 
+        const uint8_t *data, int size, ...)
+{
+    va_list(ap);
+
+    if (!IS_SET_SSL_FLAG(SSL_DISPLAY_BYTES))
+        return;
+
+    va_start(ap, size);
+    print_blob(format, data, size, va_arg(ap, char *));
+    va_end(ap);
+    TTY_FLUSH();
+}
+
+/**
+ * Debugging routine to display SSL handshaking errors.
+ */
+EXP_FUNC void STDCALL ssl_display_error(int error_code)
+{
+    if (error_code == SSL_OK)
+        return;
+
+    printf("Error: ");
+
+    /* X509 error? */
+    if (error_code < SSL_X509_OFFSET)
+    {
+        printf("%s\n", x509_display_error(error_code - SSL_X509_OFFSET));
+        return;
+    }
+
+    /* SSL alert error code */
+    if (error_code > SSL_ERROR_CONN_LOST)
+    {
+        printf("SSL error %d\n", -error_code);
+        return;
+    }
+
+    switch (error_code)
+    {
+        case SSL_ERROR_DEAD:
+            printf("connection dead");
+            break;
+
+        case SSL_ERROR_INVALID_HANDSHAKE:
+            printf("invalid handshake");
+            break;
+
+        case SSL_ERROR_INVALID_PROT_MSG:
+            printf("invalid protocol message");
+            break;
+
+        case SSL_ERROR_INVALID_HMAC:
+            printf("invalid mac");
+            break;
+
+        case SSL_ERROR_INVALID_VERSION:
+            printf("invalid version");
+            break;
+
+        case SSL_ERROR_INVALID_SESSION:
+            printf("invalid session");
+            break;
+
+        case SSL_ERROR_NO_CIPHER:
+            printf("no cipher");
+            break;
+
+        case SSL_ERROR_CONN_LOST:
+            printf("connection lost");
+            break;
+
+        case SSL_ERROR_BAD_CERTIFICATE:
+            printf("bad certificate");
+            break;
+
+        case SSL_ERROR_INVALID_KEY:
+            printf("invalid key");
+            break;
+
+        case SSL_ERROR_FINISHED_INVALID:
+            printf("finished invalid");
+            break;
+
+        case SSL_ERROR_NO_CERT_DEFINED:
+            printf("no certificate defined");
+            break;
+
+        case SSL_ERROR_NOT_SUPPORTED:
+            printf("Option not supported");
+            break;
+
+        default:
+            printf("undefined as yet - %d", error_code);
+            break;
+    }
+
+    printf("\n");
+    TTY_FLUSH();
+}
+
+/**
+ * Debugging routine to display alerts.
+ */
+void DISPLAY_ALERT(SSL *ssl, int alert)
+{
+    if (!IS_SET_SSL_FLAG(SSL_DISPLAY_STATES))
+        return;
+
+    printf("Alert: ");
+
+    switch (alert)
+    {
+        case SSL_ALERT_CLOSE_NOTIFY:
+            printf("close notify");
+            break;
+
+        case SSL_ALERT_INVALID_VERSION:
+            printf("invalid version");
+            break;
+
+        case SSL_ALERT_BAD_CERTIFICATE:
+            printf("bad certificate");
+            break;
+
+        case SSL_ALERT_UNEXPECTED_MESSAGE:
+            printf("unexpected message");
+            break;
+
+        case SSL_ALERT_BAD_RECORD_MAC:
+            printf("bad record mac");
+            break;
+
+        case SSL_ALERT_HANDSHAKE_FAILURE:
+            printf("handshake failure");
+            break;
+
+        case SSL_ALERT_ILLEGAL_PARAMETER:
+            printf("illegal parameter");
+            break;
+
+        case SSL_ALERT_DECODE_ERROR:
+            printf("decode error");
+            break;
+
+        case SSL_ALERT_DECRYPT_ERROR:
+            printf("decrypt error");
+            break;
+
+        default:
+            printf("alert - (unknown %d)", alert);
+            break;
+    }
+
+    printf("\n");
+    TTY_FLUSH();
+}
+
+#endif /* CONFIG_SSL_FULL_MODE */
+
+/**
+ * Return the version of this library.
+ */
+EXP_FUNC const char  * STDCALL ssl_version()
+{
+    static const char * axtls_version = AXTLS_VERSION;
+    return axtls_version;
+}
+
+/**
+ * Enable the various language bindings to work regardless of the
+ * configuration - they just return an error statement and a bad return code.
+ */
+#if !defined(CONFIG_SSL_FULL_MODE)
+EXP_FUNC void STDCALL ssl_display_error(int error_code) {}
+#endif
+
+#ifdef CONFIG_BINDINGS
+#if !defined(CONFIG_SSL_ENABLE_CLIENT)
+EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const
+        uint8_t *session_id, uint8_t sess_id_size)
+{
+    printf(unsupported_str);
+    return NULL;
+}
+#endif
+
+#if !defined(CONFIG_SSL_CERT_VERIFICATION)
+EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl)
+{
+    printf(unsupported_str);
+    return -1;
+}
+
+EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component)
+{
+    printf(unsupported_str);
+    return NULL;
+}
+
+#endif  /* CONFIG_SSL_CERT_VERIFICATION */
+
+#endif /* CONFIG_BINDINGS */
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h
new file mode 100755 (executable)
index 0000000..b64b4fd
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file tls1.h
+ *
+ * @brief The definitions for the TLS library.
+ */
+#ifndef HEADER_SSL_LIB_H
+#define HEADER_SSL_LIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "version.h"
+#include "crypto.h"
+#include "os_port.h"
+#include "crypto_misc.h"
+
+#define SSL_RANDOM_SIZE             32
+#define SSL_SECRET_SIZE             48
+#define SSL_FINISHED_HASH_SIZE      12
+#define SSL_RECORD_SIZE             5
+#define SSL_SERVER_READ             0
+#define SSL_SERVER_WRITE            1
+#define SSL_CLIENT_READ             2
+#define SSL_CLIENT_WRITE            3
+#define SSL_HS_HDR_SIZE             4
+
+/* the flags we use while establishing a connection */
+#define SSL_NEED_RECORD             0x0001
+#define SSL_TX_ENCRYPTED            0x0002 
+#define SSL_RX_ENCRYPTED            0x0004
+#define SSL_SESSION_RESUME          0x0008
+#define SSL_IS_CLIENT               0x0010
+#define SSL_HAS_CERT_REQ            0x0020
+
+/* some macros to muck around with flag bits */
+#define SET_SSL_FLAG(A)             (ssl->flag |= A)
+#define CLR_SSL_FLAG(A)             (ssl->flag &= ~A)
+#define IS_SET_SSL_FLAG(A)          (ssl->flag & A)
+
+#define MAX_KEY_BYTE_SIZE           512     /* for a 4096 bit key */
+#define RT_MAX_PLAIN_LENGTH         16384
+#define RT_EXTRA                    1024
+#define BM_RECORD_OFFSET            5
+
+#ifdef CONFIG_SSL_SKELETON_MODE
+#define NUM_PROTOCOLS               1
+#else
+#define NUM_PROTOCOLS               4
+#endif
+
+#define PARANOIA_CHECK(A, B)        if (A < B) { \
+    ret = SSL_ERROR_INVALID_HANDSHAKE; goto error; }
+
+/* protocol types */
+enum
+{
+    PT_CHANGE_CIPHER_SPEC = 20,
+    PT_ALERT_PROTOCOL,
+    PT_HANDSHAKE_PROTOCOL,
+    PT_APP_PROTOCOL_DATA
+};
+
+/* handshaking types */
+enum
+{
+    HS_HELLO_REQUEST,
+    HS_CLIENT_HELLO,
+    HS_SERVER_HELLO,
+    HS_CERTIFICATE = 11,
+    HS_SERVER_KEY_XCHG,
+    HS_CERT_REQ,
+    HS_SERVER_HELLO_DONE,
+    HS_CERT_VERIFY,
+    HS_CLIENT_KEY_XCHG,
+    HS_FINISHED = 20
+};
+
+typedef struct 
+{
+    uint8_t cipher;
+    uint8_t key_size;
+    uint8_t iv_size;
+    uint8_t key_block_size;
+    uint8_t padding_size;
+    uint8_t digest_size;
+    hmac_func hmac;
+    crypt_func encrypt;
+    crypt_func decrypt;
+} cipher_info_t;
+
+struct _SSLObjLoader 
+{
+    uint8_t *buf;
+    int len;
+};
+
+typedef struct _SSLObjLoader SSLObjLoader;
+
+typedef struct 
+{
+    time_t conn_time;
+    uint8_t session_id[SSL_SESSION_ID_SIZE];
+    uint8_t master_secret[SSL_SECRET_SIZE];
+} SSL_SESSION;
+
+typedef struct
+{
+    uint8_t *buf;
+    int size;
+} SSL_CERT;
+
+typedef struct
+{
+    MD5_CTX md5_ctx;
+    SHA1_CTX sha1_ctx;
+    uint8_t final_finish_mac[SSL_FINISHED_HASH_SIZE];
+    uint8_t *key_block;
+    uint8_t master_secret[SSL_SECRET_SIZE];
+    uint8_t client_random[SSL_RANDOM_SIZE]; /* client's random sequence */
+    uint8_t server_random[SSL_RANDOM_SIZE]; /* server's random sequence */
+    uint16_t bm_proc_index;
+} DISPOSABLE_CTX;
+
+struct _SSL
+{
+    uint32_t flag;
+    uint16_t need_bytes;
+    uint16_t got_bytes;
+    uint8_t record_type;
+    uint8_t cipher;
+    uint8_t sess_id_size;
+    int16_t next_state;
+    int16_t hs_status;
+    DISPOSABLE_CTX *dc;         /* temporary data which we'll get rid of soon */
+    int client_fd;
+    const cipher_info_t *cipher_info;
+    void *encrypt_ctx;
+    void *decrypt_ctx;
+    uint8_t bm_all_data[RT_MAX_PLAIN_LENGTH+RT_EXTRA];
+    uint8_t *bm_data;
+    uint16_t bm_index;
+    uint16_t bm_read_index;
+    struct _SSL *next;                  /* doubly linked list */
+    struct _SSL *prev;
+    struct _SSL_CTX *ssl_ctx;           /* back reference to a clnt/svr ctx */
+#ifndef CONFIG_SSL_SKELETON_MODE
+    uint16_t session_index;
+    SSL_SESSION *session;
+#endif
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    X509_CTX *x509_ctx;
+#endif
+
+    uint8_t session_id[SSL_SESSION_ID_SIZE]; 
+    uint8_t client_mac[SHA1_SIZE];  /* for HMAC verification */
+    uint8_t server_mac[SHA1_SIZE];  /* for HMAC verification */
+    uint8_t read_sequence[8];       /* 64 bit sequence number */
+    uint8_t write_sequence[8];      /* 64 bit sequence number */
+    uint8_t hmac_header[SSL_RECORD_SIZE];    /* rx hmac */
+};
+
+typedef struct _SSL SSL;
+
+struct _SSL_CTX
+{
+    uint32_t options;
+    uint8_t chain_length;
+    RSA_CTX *rsa_ctx;
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    CA_CERT_CTX *ca_cert_ctx;
+#endif
+    SSL *head;
+    SSL *tail;
+    SSL_CERT certs[CONFIG_SSL_MAX_CERTS];
+#ifndef CONFIG_SSL_SKELETON_MODE
+    uint16_t num_sessions;
+    SSL_SESSION **ssl_sessions;
+#endif
+#ifdef CONFIG_SSL_CTX_MUTEXING
+    SSL_CTX_MUTEX_TYPE mutex;
+#endif
+#ifdef CONFIG_OPENSSL_COMPATIBLE
+    void *bonus_attr;
+#endif
+};
+
+typedef struct _SSL_CTX SSL_CTX;
+
+/* backwards compatibility */
+typedef struct _SSL_CTX SSLCTX;
+
+extern const uint8_t ssl_prot_prefs[NUM_PROTOCOLS];
+
+SSL *ssl_new(SSL_CTX *ssl_ctx, int client_fd);
+void disposable_new(SSL *ssl);
+void disposable_free(SSL *ssl);
+int send_packet(SSL *ssl, uint8_t protocol, 
+        const uint8_t *in, int length);
+int do_svr_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len);
+int do_clnt_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len);
+int process_finished(SSL *ssl, int hs_len);
+int process_sslv23_client_hello(SSL *ssl);
+int send_alert(SSL *ssl, int error_code);
+int send_finished(SSL *ssl);
+int send_certificate(SSL *ssl);
+int basic_read(SSL *ssl, uint8_t **in_data);
+int send_change_cipher_spec(SSL *ssl);
+void finished_digest(SSL *ssl, const char *label, uint8_t *digest);
+void generate_master_secret(SSL *ssl, const uint8_t *premaster_secret);
+void add_packet(SSL *ssl, const uint8_t *pkt, int len);
+int add_cert(SSL_CTX *ssl_ctx, const uint8_t *buf, int len);
+int add_private_key(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj);
+void ssl_obj_free(SSLObjLoader *ssl_obj);
+int pkcs8_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password);
+int pkcs12_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password);
+int load_key_certs(SSL_CTX *ssl_ctx);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+int add_cert_auth(SSL_CTX *ssl_ctx, const uint8_t *buf, int len);
+void remove_ca_certs(CA_CERT_CTX *ca_cert_ctx);
+#endif
+#ifdef CONFIG_SSL_ENABLE_CLIENT
+int do_client_connect(SSL *ssl);
+#endif
+
+#ifdef CONFIG_SSL_FULL_MODE
+void DISPLAY_STATE(SSL *ssl, int is_send, uint8_t state, int not_ok);
+void DISPLAY_BYTES(SSL *ssl, const char *format, 
+        const uint8_t *data, int size, ...);
+void DISPLAY_CERT(SSL *ssl, const X509_CTX *x509_ctx);
+void DISPLAY_RSA(SSL *ssl,  const RSA_CTX *rsa_ctx);
+void DISPLAY_ALERT(SSL *ssl, int alert);
+#else
+#define DISPLAY_STATE(A,B,C,D)
+#define DISPLAY_CERT(A,B)
+#define DISPLAY_RSA(A,B)
+#define DISPLAY_ALERT(A, B)
+#ifdef WIN32
+void DISPLAY_BYTES(SSL *ssl, const char *format,/* win32 has no variadic macros */
+        const uint8_t *data, int size, ...);
+#else
+#define DISPLAY_BYTES(A,B,C,D,...)
+#endif
+#endif
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+int process_certificate(SSL *ssl, X509_CTX **x509_ctx);
+#endif
+
+SSL_SESSION *ssl_session_update(int max_sessions, 
+        SSL_SESSION *ssl_sessions[], SSL *ssl,
+        const uint8_t *session_id);
+void kill_ssl_session(SSL_SESSION **ssl_sessions, SSL *ssl);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c
new file mode 100644 (file)
index 0000000..9131433
--- /dev/null
@@ -0,0 +1,386 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <stdio.h>
+
+#include "ssl.h"
+
+#ifdef CONFIG_SSL_ENABLE_CLIENT        /* all commented out if no client */
+
+static int send_client_hello(SSL *ssl);
+static int process_server_hello(SSL *ssl);
+static int process_server_hello_done(SSL *ssl);
+static int send_client_key_xchg(SSL *ssl);
+static int process_cert_req(SSL *ssl);
+static int send_cert_verify(SSL *ssl);
+
+/*
+ * Establish a new SSL connection to an SSL server.
+ */
+EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const
+        uint8_t *session_id, uint8_t sess_id_size)
+{
+    SSL *ssl;
+    int ret;
+
+    SOCKET_BLOCK(client_fd);    /* ensure blocking mode */
+    ssl = ssl_new(ssl_ctx, client_fd);
+
+    if (session_id && ssl_ctx->num_sessions)
+    {
+        if (sess_id_size > SSL_SESSION_ID_SIZE) /* validity check */
+        {
+            ssl_free(ssl);
+            return NULL;
+        }
+
+        memcpy(ssl->session_id, session_id, sess_id_size);
+        ssl->sess_id_size = sess_id_size;
+        SET_SSL_FLAG(SSL_SESSION_RESUME);   /* just flag for later */
+    }
+
+    SET_SSL_FLAG(SSL_IS_CLIENT);
+    ret = do_client_connect(ssl);
+    return ssl;
+}
+
+/*
+ * Process the handshake record.
+ */
+int do_clnt_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len)
+{
+    int ret = SSL_OK;
+
+    /* To get here the state must be valid */
+    switch (handshake_type)
+    {
+        case HS_SERVER_HELLO:
+            ret = process_server_hello(ssl);
+            break;
+
+        case HS_CERTIFICATE:
+            ret = process_certificate(ssl, &ssl->x509_ctx);
+            break;
+
+        case HS_SERVER_HELLO_DONE:
+            if ((ret = process_server_hello_done(ssl)) == SSL_OK)
+            {
+                if (IS_SET_SSL_FLAG(SSL_HAS_CERT_REQ))
+                {
+                    if ((ret = send_certificate(ssl)) == SSL_OK &&
+                        (ret = send_client_key_xchg(ssl)) == SSL_OK)
+                    {
+                        send_cert_verify(ssl);
+                    }
+                }
+                else
+                {
+                    ret = send_client_key_xchg(ssl);
+                }
+
+                if (ret == SSL_OK && 
+                     (ret = send_change_cipher_spec(ssl)) == SSL_OK)
+                {
+                    ret = send_finished(ssl);
+                }
+            }
+            break;
+
+        case HS_CERT_REQ:
+            ret = process_cert_req(ssl);
+            break;
+
+        case HS_FINISHED:
+            ret = process_finished(ssl, hs_len);
+            disposable_free(ssl);   /* free up some memory */
+            break;
+
+        case HS_HELLO_REQUEST:
+            disposable_new(ssl);
+            ret = do_client_connect(ssl);
+            break;
+    }
+
+    return ret;
+}
+
+/*
+ * Do the handshaking from the beginning.
+ */
+int do_client_connect(SSL *ssl)
+{
+    int ret = SSL_OK;
+
+    send_client_hello(ssl);                 /* send the client hello */
+    ssl->bm_read_index = 0;
+    ssl->next_state = HS_SERVER_HELLO;
+    ssl->hs_status = SSL_NOT_OK;            /* not connected */
+    x509_free(ssl->x509_ctx);
+
+    /* sit in a loop until it all looks good */
+    while (ssl->hs_status != SSL_OK)
+    {
+        ret = basic_read(ssl, NULL);
+        
+        if (ret < SSL_OK)
+        { 
+            if (ret != SSL_ERROR_CONN_LOST)
+            {
+                /* let the server know we are dying and why */
+                if (send_alert(ssl, ret))
+                {
+                    /* something nasty happened, so get rid of it */
+                    kill_ssl_session(ssl->ssl_ctx->ssl_sessions, ssl);
+                }
+            }
+
+            break;
+        }
+    }
+
+    ssl->hs_status = ret;            /* connected? */
+    return ret;
+}
+
+/*
+ * Send the initial client hello.
+ */
+static int send_client_hello(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    time_t tm = time(NULL);
+    uint8_t *tm_ptr = &buf[6]; /* time will go here */
+    int i, offset;
+
+    buf[0] = HS_CLIENT_HELLO;
+    buf[1] = 0;
+    buf[2] = 0;
+    /* byte 3 is calculated later */
+    buf[4] = 0x03;
+    buf[5] = 0x01;
+
+    /* client random value - spec says that 1st 4 bytes are big endian time */
+    *tm_ptr++ = (uint8_t)(((long)tm & 0xff000000) >> 24);
+    *tm_ptr++ = (uint8_t)(((long)tm & 0x00ff0000) >> 16);
+    *tm_ptr++ = (uint8_t)(((long)tm & 0x0000ff00) >> 8);
+    *tm_ptr++ = (uint8_t)(((long)tm & 0x000000ff));
+    get_random(SSL_RANDOM_SIZE-4, &buf[10]);
+    memcpy(ssl->dc->client_random, &buf[6], SSL_RANDOM_SIZE);
+    offset = 6 + SSL_RANDOM_SIZE;
+
+    /* give session resumption a go */
+    if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME))    /* set initially by user */
+    {
+        buf[offset++] = ssl->sess_id_size;
+        memcpy(&buf[offset], ssl->session_id, ssl->sess_id_size);
+        offset += ssl->sess_id_size;
+        CLR_SSL_FLAG(SSL_SESSION_RESUME);       /* clear so we can set later */
+    }
+    else
+    {
+        /* no session id - because no session resumption just yet */
+        buf[offset++] = 0;
+    }
+
+    buf[offset++] = 0;              /* number of ciphers */
+    buf[offset++] = NUM_PROTOCOLS*2;/* number of ciphers */
+
+    /* put all our supported protocols in our request */
+    for (i = 0; i < NUM_PROTOCOLS; i++)
+    {
+        buf[offset++] = 0;          /* cipher we are using */
+        buf[offset++] = ssl_prot_prefs[i];
+    }
+
+    buf[offset++] = 1;              /* no compression */
+    buf[offset++] = 0;
+    buf[3] = offset - 4;            /* handshake size */
+
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset);
+}
+
+/*
+ * Process the server hello.
+ */
+static int process_server_hello(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    int pkt_size = ssl->bm_index;
+    int version = (buf[4] << 4) + buf[5];
+    int num_sessions = ssl->ssl_ctx->num_sessions;
+    uint8_t sess_id_size;
+    int offset, ret = SSL_OK;
+
+    /* check that we are talking to a TLSv1 server */
+    if (version != 0x31)
+        return SSL_ERROR_INVALID_VERSION;
+
+    /* get the server random value */
+    memcpy(ssl->dc->server_random, &buf[6], SSL_RANDOM_SIZE);
+    offset = 6 + SSL_RANDOM_SIZE; /* skip of session id size */
+    sess_id_size = buf[offset++];
+
+    if (num_sessions)
+    {
+        ssl->session = ssl_session_update(num_sessions,
+                ssl->ssl_ctx->ssl_sessions, ssl, &buf[offset]);
+        memcpy(ssl->session->session_id, &buf[offset], sess_id_size);
+
+        /* pad the rest with 0's */
+        if (sess_id_size < SSL_SESSION_ID_SIZE)
+        {
+            memset(&ssl->session->session_id[sess_id_size], 0,
+                SSL_SESSION_ID_SIZE-sess_id_size);
+        }
+    }
+
+    memcpy(ssl->session_id, &buf[offset], sess_id_size);
+    ssl->sess_id_size = sess_id_size;
+    offset += sess_id_size;
+
+    /* get the real cipher we are using */
+    ssl->cipher = buf[++offset];
+    ssl->next_state = IS_SET_SSL_FLAG(SSL_SESSION_RESUME) ? 
+                                        HS_FINISHED : HS_CERTIFICATE;
+
+    offset++;   // skip the compr
+    PARANOIA_CHECK(pkt_size, offset);
+    ssl->dc->bm_proc_index = offset+1; 
+
+error:
+    return ret;
+}
+
+/**
+ * Process the server hello done message.
+ */
+static int process_server_hello_done(SSL *ssl)
+{
+    ssl->next_state = HS_FINISHED;
+    return SSL_OK;
+}
+
+/*
+ * Send a client key exchange message.
+ */
+static int send_client_key_xchg(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    uint8_t premaster_secret[SSL_SECRET_SIZE];
+    int enc_secret_size = -1;
+
+    buf[0] = HS_CLIENT_KEY_XCHG;
+    buf[1] = 0;
+
+    premaster_secret[0] = 0x03; /* encode the version number */
+    premaster_secret[1] = 0x01;
+    get_random(SSL_SECRET_SIZE-2, &premaster_secret[2]);
+    DISPLAY_RSA(ssl, ssl->x509_ctx->rsa_ctx);
+
+    /* rsa_ctx->bi_ctx is not thread-safe */
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+    enc_secret_size = RSA_encrypt(ssl->x509_ctx->rsa_ctx, premaster_secret,
+            SSL_SECRET_SIZE, &buf[6], 0);
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+
+    buf[2] = (enc_secret_size + 2) >> 8;
+    buf[3] = (enc_secret_size + 2) & 0xff;
+    buf[4] = enc_secret_size >> 8;
+    buf[5] = enc_secret_size & 0xff;
+
+    generate_master_secret(ssl, premaster_secret);
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, enc_secret_size+6);
+}
+
+/*
+ * Process the certificate request.
+ */
+static int process_cert_req(SSL *ssl)
+{
+    uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index];
+    int ret = SSL_OK;
+    int offset = (buf[2] << 4) + buf[3];
+    int pkt_size = ssl->bm_index;
+
+    /* don't do any processing - we will send back an RSA certificate anyway */
+    ssl->next_state = HS_SERVER_HELLO_DONE;
+    SET_SSL_FLAG(SSL_HAS_CERT_REQ);
+    ssl->dc->bm_proc_index += offset;
+    PARANOIA_CHECK(pkt_size, offset);
+error:
+    return ret;
+}
+
+/*
+ * Send a certificate verify message.
+ */
+static int send_cert_verify(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    uint8_t dgst[MD5_SIZE+SHA1_SIZE];
+    RSA_CTX *rsa_ctx = ssl->ssl_ctx->rsa_ctx;
+    int n = 0, ret;
+
+    DISPLAY_RSA(ssl, rsa_ctx);
+
+    buf[0] = HS_CERT_VERIFY;
+    buf[1] = 0;
+
+    finished_digest(ssl, NULL, dgst);   /* calculate the digest */
+
+    /* rsa_ctx->bi_ctx is not thread-safe */
+    if (rsa_ctx)
+    {
+        SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+        n = RSA_encrypt(rsa_ctx, dgst, sizeof(dgst), &buf[6], 1);
+        SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+
+        if (n == 0)
+        {
+            ret = SSL_ERROR_INVALID_KEY;
+            goto error;
+        }
+    }
+    
+    buf[4] = n >> 8;        /* add the RSA size (not officially documented) */
+    buf[5] = n & 0xff;
+    n += 2;
+    buf[2] = n >> 8;
+    buf[3] = n & 0xff;
+    ret = send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, n+4);
+
+error:
+    return ret;
+}
+
+#endif      /* CONFIG_SSL_ENABLE_CLIENT */
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c
new file mode 100644 (file)
index 0000000..45b9bec
--- /dev/null
@@ -0,0 +1,476 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "ssl.h"
+
+static const uint8_t g_hello_done[] = { HS_SERVER_HELLO_DONE, 0, 0, 0 };
+
+static int process_client_hello(SSL *ssl);
+static int send_server_hello_sequence(SSL *ssl);
+static int send_server_hello(SSL *ssl);
+static int send_server_hello_done(SSL *ssl);
+static int process_client_key_xchg(SSL *ssl);
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+static int send_certificate_request(SSL *ssl);
+static int process_cert_verify(SSL *ssl);
+#endif
+
+/*
+ * Establish a new SSL connection to an SSL client.
+ */
+EXP_FUNC SSL * STDCALL ssl_server_new(SSL_CTX *ssl_ctx, int client_fd)
+{
+    SSL *ssl;
+
+    ssl = ssl_new(ssl_ctx, client_fd);
+    ssl->next_state = HS_CLIENT_HELLO;
+
+#ifdef CONFIG_SSL_FULL_MODE
+    if (ssl_ctx->chain_length == 0)
+        printf("Warning - no server certificate defined\n"); TTY_FLUSH();
+#endif
+
+    return ssl;
+}
+
+/*
+ * Process the handshake record.
+ */
+int do_svr_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len)
+{
+    int ret = SSL_OK;
+    ssl->hs_status = SSL_NOT_OK;            /* not connected */
+
+    /* To get here the state must be valid */
+    switch (handshake_type)
+    {
+        case HS_CLIENT_HELLO:
+            if ((ret = process_client_hello(ssl)) == SSL_OK)
+                ret = send_server_hello_sequence(ssl);
+            break;
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+        case HS_CERTIFICATE:/* the client sends its cert */
+            ret = process_certificate(ssl, &ssl->x509_ctx);
+
+            if (ret == SSL_OK)    /* verify the cert */
+            { 
+                int cert_res;
+                cert_res = x509_verify(
+                        ssl->ssl_ctx->ca_cert_ctx, ssl->x509_ctx);
+                ret = (cert_res == 0) ? SSL_OK : SSL_X509_ERROR(cert_res);
+            }
+            break;
+
+        case HS_CERT_VERIFY:    
+            ret = process_cert_verify(ssl);
+            add_packet(ssl, buf, hs_len);   /* needs to be done after */
+            break;
+#endif
+        case HS_CLIENT_KEY_XCHG:
+            ret = process_client_key_xchg(ssl);
+            break;
+
+        case HS_FINISHED:
+            ret = process_finished(ssl, hs_len);
+            disposable_free(ssl);   /* free up some memory */
+            break;
+    }
+
+    return ret;
+}
+
+/* 
+ * Process a client hello message.
+ */
+static int process_client_hello(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    uint8_t *record_buf = ssl->hmac_header;
+    int pkt_size = ssl->bm_index;
+    int i, j, cs_len, id_len, offset = 6 + SSL_RANDOM_SIZE;
+    int version = (record_buf[1] << 4) + record_buf[2];
+    int ret = SSL_OK;
+    
+    /* should be v3.1 (TLSv1) or better - we'll send in v3.1 mode anyway */
+    if (version < 0x31) 
+    {
+        ret = SSL_ERROR_INVALID_VERSION;
+        ssl_display_error(ret);
+        goto error;
+    }
+
+    memcpy(ssl->dc->client_random, &buf[6], SSL_RANDOM_SIZE);
+
+    /* process the session id */
+    id_len = buf[offset++];
+    if (id_len > SSL_SESSION_ID_SIZE)
+    {
+        return SSL_ERROR_INVALID_SESSION;
+    }
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    ssl->session = ssl_session_update(ssl->ssl_ctx->num_sessions,
+            ssl->ssl_ctx->ssl_sessions, ssl, id_len ? &buf[offset] : NULL);
+#endif
+
+    offset += id_len;
+    cs_len = (buf[offset]<<8) + buf[offset+1];
+    offset += 3;        /* add 1 due to all cipher suites being 8 bit */
+
+    PARANOIA_CHECK(pkt_size, offset);
+
+    /* work out what cipher suite we are going to use */
+    for (j = 0; j < NUM_PROTOCOLS; j++)
+    {
+        for (i = 0; i < cs_len; i += 2)
+        {
+            if (ssl_prot_prefs[j] == buf[offset+i])   /* got a match? */
+            {
+                ssl->cipher = ssl_prot_prefs[j];
+                goto do_state;
+            }
+        }
+    }
+
+    /* ouch! protocol is not supported */
+    ret = SSL_ERROR_NO_CIPHER;
+
+do_state:
+error:
+    return ret;
+}
+
+#ifdef CONFIG_SSL_ENABLE_V23_HANDSHAKE
+/*
+ * Some browsers use a hybrid SSLv2 "client hello" 
+ */
+int process_sslv23_client_hello(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    int bytes_needed = ((buf[0] & 0x7f) << 8) + buf[1];
+    int version = (buf[3] << 4) + buf[4];
+    int ret = SSL_OK;
+
+    /* we have already read 3 extra bytes so far */
+    int read_len = SOCKET_READ(ssl->client_fd, buf, bytes_needed-3);
+    int cs_len = buf[1];
+    int id_len = buf[3];
+    int ch_len = buf[5];
+    int i, j, offset = 8;   /* start at first cipher */
+    int random_offset = 0;
+
+    DISPLAY_BYTES(ssl, "received %d bytes", buf, read_len, read_len);
+    
+    /* should be v3.1 (TLSv1) or better - we'll send in v3.1 mode anyway */
+    if (version < 0x31)
+    {
+        return SSL_ERROR_INVALID_VERSION;
+    }
+
+    add_packet(ssl, buf, read_len);
+
+    /* connection has gone, so die */
+    if (bytes_needed < 0)
+    {
+        return SSL_ERROR_CONN_LOST;
+    }
+
+    /* now work out what cipher suite we are going to use */
+    for (j = 0; j < NUM_PROTOCOLS; j++)
+    {
+        for (i = 0; i < cs_len; i += 3)
+        {
+            if (ssl_prot_prefs[j] == buf[offset+i])
+            {
+                ssl->cipher = ssl_prot_prefs[j];
+                goto server_hello;
+            }
+        }
+    }
+
+    /* ouch! protocol is not supported */
+    ret = SSL_ERROR_NO_CIPHER;
+    goto error;
+
+server_hello:
+    /* get the session id */
+    offset += cs_len - 2;   /* we've gone 2 bytes past the end */
+#ifndef CONFIG_SSL_SKELETON_MODE
+    ssl->session = ssl_session_update(ssl->ssl_ctx->num_sessions,
+            ssl->ssl_ctx->ssl_sessions, ssl, id_len ? &buf[offset] : NULL);
+#endif
+
+    /* get the client random data */
+    offset += id_len;
+
+    /* random can be anywhere between 16 and 32 bytes long - so it is padded
+     * with 0's to the left */
+    if (ch_len == 0x10)
+    {
+        random_offset += 0x10;
+    }
+
+    memcpy(&ssl->dc->client_random[random_offset], &buf[offset], ch_len);
+    ret = send_server_hello_sequence(ssl);
+
+error:
+    return ret;
+}
+#endif
+
+/*
+ * Send the entire server hello sequence
+ */
+static int send_server_hello_sequence(SSL *ssl)
+{
+    int ret;
+
+    if ((ret = send_server_hello(ssl)) == SSL_OK)
+    {
+#ifndef CONFIG_SSL_SKELETON_MODE
+        /* resume handshake? */
+        if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME))
+        {
+            if ((ret = send_change_cipher_spec(ssl)) == SSL_OK)
+            {
+                ret = send_finished(ssl);
+                ssl->next_state = HS_FINISHED;
+            }
+        }
+        else 
+#endif
+        if ((ret = send_certificate(ssl)) == SSL_OK)
+        {
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+            /* ask the client for its certificate */
+            if (IS_SET_SSL_FLAG(SSL_CLIENT_AUTHENTICATION))
+            {
+                if ((ret = send_certificate_request(ssl)) == SSL_OK)
+                {
+                    ret = send_server_hello_done(ssl);
+                    ssl->next_state = HS_CERTIFICATE;
+                }
+            }
+            else
+#endif
+            {
+                ret = send_server_hello_done(ssl);
+                ssl->next_state = HS_CLIENT_KEY_XCHG;
+            }
+        }
+    }
+
+    return ret;
+}
+
+/*
+ * Send a server hello message.
+ */
+static int send_server_hello(SSL *ssl)
+{
+    uint8_t *buf = ssl->bm_data;
+    int offset = 0;
+
+    buf[0] = HS_SERVER_HELLO;
+    buf[1] = 0;
+    buf[2] = 0;
+    /* byte 3 is calculated later */
+    buf[4] = 0x03;
+    buf[5] = 0x01;
+
+    /* server random value */
+    get_random(SSL_RANDOM_SIZE, &buf[6]);
+    memcpy(ssl->dc->server_random, &buf[6], SSL_RANDOM_SIZE);
+    offset = 6 + SSL_RANDOM_SIZE;
+
+#ifndef CONFIG_SSL_SKELETON_MODE
+    if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME))
+    {
+        /* retrieve id from session cache */
+        buf[offset++] = SSL_SESSION_ID_SIZE;
+        memcpy(&buf[offset], ssl->session->session_id, SSL_SESSION_ID_SIZE);
+        memcpy(ssl->session_id, ssl->session->session_id, SSL_SESSION_ID_SIZE);
+        ssl->sess_id_size = SSL_SESSION_ID_SIZE;
+        offset += SSL_SESSION_ID_SIZE;
+    }
+    else    /* generate our own session id */
+#endif
+    {
+#ifndef CONFIG_SSL_SKELETON_MODE
+        buf[offset++] = SSL_SESSION_ID_SIZE;
+        get_random(SSL_SESSION_ID_SIZE, &buf[offset]);
+        memcpy(ssl->session_id, &buf[offset], SSL_SESSION_ID_SIZE);
+        ssl->sess_id_size = SSL_SESSION_ID_SIZE;
+
+        /* store id in session cache */
+        if (ssl->ssl_ctx->num_sessions)
+        {
+            memcpy(ssl->session->session_id, 
+                    ssl->session_id, SSL_SESSION_ID_SIZE);
+        }
+
+        offset += SSL_SESSION_ID_SIZE;
+#else
+        buf[offset++] = 0;  /* don't bother with session id in skelton mode */
+#endif
+    }
+
+    buf[offset++] = 0;      /* cipher we are using */
+    buf[offset++] = ssl->cipher;
+    buf[offset++] = 0;      /* no compression */
+    buf[3] = offset - 4;    /* handshake size */
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset);
+}
+
+/*
+ * Send the server hello done message.
+ */
+static int send_server_hello_done(SSL *ssl)
+{
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, 
+                            g_hello_done, sizeof(g_hello_done));
+}
+
+/*
+ * Pull apart a client key exchange message. Decrypt the pre-master key (using
+ * our RSA private key) and then work out the master key. Initialise the
+ * ciphers.
+ */
+static int process_client_key_xchg(SSL *ssl)
+{
+    uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index];
+    int pkt_size = ssl->bm_index;
+    int premaster_size, secret_length = (buf[2] << 8) + buf[3];
+    uint8_t premaster_secret[MAX_KEY_BYTE_SIZE];
+    RSA_CTX *rsa_ctx = ssl->ssl_ctx->rsa_ctx;
+    int offset = 4;
+    int ret = SSL_OK;
+    
+    if (rsa_ctx == NULL)
+    {
+        ret = SSL_ERROR_NO_CERT_DEFINED;
+        goto error;
+    }
+
+    /* is there an extra size field? */
+    if ((secret_length - 2) == rsa_ctx->num_octets)
+        offset += 2;
+
+    PARANOIA_CHECK(pkt_size, rsa_ctx->num_octets+offset);
+
+    /* rsa_ctx->bi_ctx is not thread-safe */
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+    premaster_size = RSA_decrypt(rsa_ctx, &buf[offset], premaster_secret, 1);
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+
+    if (premaster_size != SSL_SECRET_SIZE || 
+            premaster_secret[0] != 0x03 ||  /* check version is 3.1 (TLS) */
+            premaster_secret[1] != 0x01)
+    {
+        /* guard against a Bleichenbacher attack */
+        memset(premaster_secret, 0, SSL_SECRET_SIZE);
+        /* and continue - will die eventually when checking the mac */
+    }
+
+#if 0
+    print_blob("pre-master", premaster_secret, SSL_SECRET_SIZE);
+#endif
+
+    generate_master_secret(ssl, premaster_secret);
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+    ssl->next_state = IS_SET_SSL_FLAG(SSL_CLIENT_AUTHENTICATION) ?  
+                                            HS_CERT_VERIFY : HS_FINISHED;
+#else
+    ssl->next_state = HS_FINISHED; 
+#endif
+error:
+    ssl->dc->bm_proc_index += rsa_ctx->num_octets+offset;
+    return ret;
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+static const uint8_t g_cert_request[] = { HS_CERT_REQ, 0, 0, 4, 1, 0, 0, 0 };
+
+/*
+ * Send the certificate request message.
+ */
+static int send_certificate_request(SSL *ssl)
+{
+    return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, 
+            g_cert_request, sizeof(g_cert_request));
+}
+
+/*
+ * Ensure the client has the private key by first decrypting the packet and
+ * then checking the packet digests.
+ */
+static int process_cert_verify(SSL *ssl)
+{
+    uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index];
+    int pkt_size = ssl->bm_index;
+    uint8_t dgst_buf[MAX_KEY_BYTE_SIZE];
+    uint8_t dgst[MD5_SIZE+SHA1_SIZE];
+    X509_CTX *x509_ctx = ssl->x509_ctx;
+    int ret = SSL_OK;
+    int n;
+
+    PARANOIA_CHECK(pkt_size, x509_ctx->rsa_ctx->num_octets+6);
+    DISPLAY_RSA(ssl, x509_ctx->rsa_ctx);
+
+    /* rsa_ctx->bi_ctx is not thread-safe */
+    SSL_CTX_LOCK(ssl->ssl_ctx->mutex);
+    n = RSA_decrypt(x509_ctx->rsa_ctx, &buf[6], dgst_buf, 0);
+    SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex);
+
+    if (n != SHA1_SIZE + MD5_SIZE)
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+        goto end_cert_vfy;
+    }
+
+    finished_digest(ssl, NULL, dgst);       /* calculate the digest */
+    if (memcmp(dgst_buf, dgst, MD5_SIZE + SHA1_SIZE))
+    {
+        ret = SSL_ERROR_INVALID_KEY;
+    }
+
+end_cert_vfy:
+    ssl->next_state = HS_FINISHED;
+error:
+    return ret;
+}
+
+#endif
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h
new file mode 100644 (file)
index 0000000..72260bf
--- /dev/null
@@ -0,0 +1 @@
+#define AXTLS_VERSION    "1.2.1"
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c
new file mode 100644 (file)
index 0000000..37db7f4
--- /dev/null
@@ -0,0 +1,502 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ * 
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, 
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice, 
+ *   this list of conditions and the following disclaimer in the documentation 
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors 
+ *   may be used to endorse or promote products derived from this software 
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file x509.c
+ * 
+ * Certificate processing.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "os_port.h"
+#include "crypto_misc.h"
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * Retrieve the signature from a certificate.
+ */
+static const uint8_t *get_signature(const uint8_t *asn1_sig, int *len)
+{
+    int offset = 0;
+    const uint8_t *ptr = NULL;
+
+    if (asn1_next_obj(asn1_sig, &offset, ASN1_SEQUENCE) < 0 || 
+            asn1_skip_obj(asn1_sig, &offset, ASN1_SEQUENCE))
+        goto end_get_sig;
+
+    if (asn1_sig[offset++] != ASN1_OCTET_STRING)
+        goto end_get_sig;
+    *len = get_asn1_length(asn1_sig, &offset);
+    ptr = &asn1_sig[offset];          /* all ok */
+
+end_get_sig:
+    return ptr;
+}
+
+#endif
+
+/**
+ * Construct a new x509 object.
+ * @return 0 if ok. < 0 if there was a problem.
+ */
+int x509_new(const uint8_t *cert, int *len, X509_CTX **ctx)
+{
+    int begin_tbs, end_tbs;
+    int ret = X509_NOT_OK, offset = 0, cert_size = 0;
+    X509_CTX *x509_ctx;
+    BI_CTX *bi_ctx;
+
+    *ctx = (X509_CTX *)calloc(1, sizeof(X509_CTX));
+    x509_ctx = *ctx;
+
+    /* get the certificate size */
+    asn1_skip_obj(cert, &cert_size, ASN1_SEQUENCE); 
+
+    if (asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0)
+        goto end_cert;
+
+    begin_tbs = offset;         /* start of the tbs */
+    end_tbs = begin_tbs;        /* work out the end of the tbs */
+    asn1_skip_obj(cert, &end_tbs, ASN1_SEQUENCE);
+
+    if (asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0)
+        goto end_cert;
+
+    if (cert[offset] == ASN1_EXPLICIT_TAG)   /* optional version */
+    {
+        if (asn1_version(cert, &offset, x509_ctx))
+            goto end_cert;
+    }
+
+    if (asn1_skip_obj(cert, &offset, ASN1_INTEGER) || /* serial number */ 
+            asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0)
+        goto end_cert;
+
+    /* make sure the signature is ok */
+    if (asn1_signature_type(cert, &offset, x509_ctx))
+    {
+        ret = X509_VFY_ERROR_UNSUPPORTED_DIGEST;
+        goto end_cert;
+    }
+
+    if (asn1_name(cert, &offset, x509_ctx->ca_cert_dn) || 
+            asn1_validity(cert, &offset, x509_ctx) ||
+            asn1_name(cert, &offset, x509_ctx->cert_dn) ||
+            asn1_public_key(cert, &offset, x509_ctx))
+        goto end_cert;
+
+    bi_ctx = x509_ctx->rsa_ctx->bi_ctx;
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION /* only care if doing verification */
+    /* use the appropriate signature algorithm (SHA1/MD5/MD2) */
+    if (x509_ctx->sig_type == SIG_TYPE_MD5)
+    {
+        MD5_CTX md5_ctx;
+        uint8_t md5_dgst[MD5_SIZE];
+        MD5_Init(&md5_ctx);
+        MD5_Update(&md5_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
+        MD5_Final(md5_dgst, &md5_ctx);
+        x509_ctx->digest = bi_import(bi_ctx, md5_dgst, MD5_SIZE);
+    }
+    else if (x509_ctx->sig_type == SIG_TYPE_SHA1)
+    {
+        SHA1_CTX sha_ctx;
+        uint8_t sha_dgst[SHA1_SIZE];
+        SHA1_Init(&sha_ctx);
+        SHA1_Update(&sha_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
+        SHA1_Final(sha_dgst, &sha_ctx);
+        x509_ctx->digest = bi_import(bi_ctx, sha_dgst, SHA1_SIZE);
+    }
+    else if (x509_ctx->sig_type == SIG_TYPE_MD2)
+    {
+        MD2_CTX md2_ctx;
+        uint8_t md2_dgst[MD2_SIZE];
+        MD2_Init(&md2_ctx);
+        MD2_Update(&md2_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
+        MD2_Final(md2_dgst, &md2_ctx);
+        x509_ctx->digest = bi_import(bi_ctx, md2_dgst, MD2_SIZE);
+    }
+
+    offset = end_tbs;   /* skip the v3 data */
+    if (asn1_skip_obj(cert, &offset, ASN1_SEQUENCE) || 
+            asn1_signature(cert, &offset, x509_ctx))
+        goto end_cert;
+#endif
+
+    if (len)
+    {
+        *len = cert_size;
+    }
+
+    ret = X509_OK;
+end_cert:
+
+#ifdef CONFIG_SSL_FULL_MODE
+    if (ret)
+    {
+        printf("Error: Invalid X509 ASN.1 file\n");
+    }
+#endif
+
+    return ret;
+}
+
+/**
+ * Free an X.509 object's resources.
+ */
+void x509_free(X509_CTX *x509_ctx)
+{
+    X509_CTX *next;
+    int i;
+
+    if (x509_ctx == NULL)       /* if already null, then don't bother */
+        return;
+
+    for (i = 0; i < X509_NUM_DN_TYPES; i++)
+    {
+        free(x509_ctx->ca_cert_dn[i]);
+        free(x509_ctx->cert_dn[i]);
+    }
+
+    free(x509_ctx->signature);
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION 
+    if (x509_ctx->digest)
+    {
+        bi_free(x509_ctx->rsa_ctx->bi_ctx, x509_ctx->digest);
+    }
+#endif
+
+    RSA_free(x509_ctx->rsa_ctx);
+
+    next = x509_ctx->next;
+    free(x509_ctx);
+    x509_free(next);        /* clear the chain */
+}
+
+#ifdef CONFIG_SSL_CERT_VERIFICATION
+/**
+ * Take a signature and decrypt it.
+ */
+static bigint *sig_verify(BI_CTX *ctx, const uint8_t *sig, int sig_len,
+        bigint *modulus, bigint *pub_exp)
+{
+    int i, size;
+    bigint *decrypted_bi, *dat_bi;
+    bigint *bir = NULL;
+    uint8_t *block = (uint8_t *)alloca(sig_len);
+
+    /* decrypt */
+    dat_bi = bi_import(ctx, sig, sig_len);
+    ctx->mod_offset = BIGINT_M_OFFSET;
+
+    /* convert to a normal block */
+    decrypted_bi = bi_mod_power2(ctx, dat_bi, modulus, pub_exp);
+
+    bi_export(ctx, decrypted_bi, block, sig_len);
+    ctx->mod_offset = BIGINT_M_OFFSET;
+
+    i = 10; /* start at the first possible non-padded byte */
+    while (block[i++] && i < sig_len);
+    size = sig_len - i;
+
+    /* get only the bit we want */
+    if (size > 0)
+    {
+        int len;
+        const uint8_t *sig_ptr = get_signature(&block[i], &len);
+
+        if (sig_ptr)
+        {
+            bir = bi_import(ctx, sig_ptr, len);
+        }
+    }
+
+    /* save a few bytes of memory */
+    bi_clear_cache(ctx);
+    return bir;
+}
+
+/**
+ * Do some basic checks on the certificate chain.
+ *
+ * Certificate verification consists of a number of checks:
+ * - The date of the certificate is after the start date.
+ * - The date of the certificate is before the finish date.
+ * - A root certificate exists in the certificate store.
+ * - That the certificate(s) are not self-signed.
+ * - The certificate chain is valid.
+ * - The signature of the certificate is valid.
+ */
+int x509_verify(const CA_CERT_CTX *ca_cert_ctx, const X509_CTX *cert) 
+{
+    int ret = X509_OK, i = 0;
+    bigint *cert_sig;
+    X509_CTX *next_cert = NULL;
+    BI_CTX *ctx = NULL;
+    bigint *mod = NULL, *expn = NULL;
+    int match_ca_cert = 0;
+    struct timeval tv;
+    uint8_t is_self_signed = 0;
+
+    if (cert == NULL)
+    {
+        ret = X509_VFY_ERROR_NO_TRUSTED_CERT;       
+        goto end_verify;
+    }
+
+    /* a self-signed certificate that is not in the CA store - use this 
+       to check the signature */
+    if (asn1_compare_dn(cert->ca_cert_dn, cert->cert_dn) == 0)
+    {
+        is_self_signed = 1;
+        ctx = cert->rsa_ctx->bi_ctx;
+        mod = cert->rsa_ctx->m;
+        expn = cert->rsa_ctx->e;
+    }
+
+    gettimeofday(&tv, NULL);
+
+    /* check the not before date */
+    if (tv.tv_sec < cert->not_before)
+    {
+        ret = X509_VFY_ERROR_NOT_YET_VALID;
+        goto end_verify;
+    }
+
+    /* check the not after date */
+    if (tv.tv_sec > cert->not_after)
+    {
+        ret = X509_VFY_ERROR_EXPIRED;
+        goto end_verify;
+    }
+
+    next_cert = cert->next;
+
+    /* last cert in the chain - look for a trusted cert */
+    if (next_cert == NULL)
+    {
+       if (ca_cert_ctx != NULL) 
+       {
+            /* go thu the CA store */
+           while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i])
+            {
+                if (asn1_compare_dn(cert->ca_cert_dn,
+                                            ca_cert_ctx->cert[i]->cert_dn) == 0)
+                {
+                    /* use this CA certificate for signature verification */
+                    match_ca_cert = 1;
+                    ctx = ca_cert_ctx->cert[i]->rsa_ctx->bi_ctx;
+                    mod = ca_cert_ctx->cert[i]->rsa_ctx->m;
+                    expn = ca_cert_ctx->cert[i]->rsa_ctx->e;
+                    break;
+                }
+
+                i++;
+            }
+        }
+
+       /* couldn't find a trusted cert (& let self-signed errors be returned) */
+        if (!match_ca_cert && !is_self_signed)
+        {
+            ret = X509_VFY_ERROR_NO_TRUSTED_CERT;       
+            goto end_verify;
+        }
+    }
+    else if (asn1_compare_dn(cert->ca_cert_dn, next_cert->cert_dn) != 0)
+    {
+        /* check the chain */
+        ret = X509_VFY_ERROR_INVALID_CHAIN;
+        goto end_verify;
+    }
+    else /* use the next certificate in the chain for signature verify */
+    {
+        ctx = next_cert->rsa_ctx->bi_ctx;
+        mod = next_cert->rsa_ctx->m;
+        expn = next_cert->rsa_ctx->e;
+    }
+
+    /* cert is self signed */
+    if (!match_ca_cert && is_self_signed)
+    {
+        ret = X509_VFY_ERROR_SELF_SIGNED;
+        goto end_verify;
+    }
+
+    /* check the signature */
+    cert_sig = sig_verify(ctx, cert->signature, cert->sig_len, 
+                        bi_clone(ctx, mod), bi_clone(ctx, expn));
+
+    if (cert_sig && cert->digest)
+    {
+        if (bi_compare(cert_sig, cert->digest) != 0)
+            ret = X509_VFY_ERROR_BAD_SIGNATURE;
+
+
+        bi_free(ctx, cert_sig);
+    }
+    else
+    {
+        ret = X509_VFY_ERROR_BAD_SIGNATURE;
+    }
+
+    if (ret)
+        goto end_verify;
+
+    /* go down the certificate chain using recursion. */
+    if (next_cert != NULL)
+    {
+        ret = x509_verify(ca_cert_ctx, next_cert);
+    }
+
+end_verify:
+    return ret;
+}
+#endif
+
+#if defined (CONFIG_SSL_FULL_MODE)
+/**
+ * Used for diagnostics.
+ */
+static const char *not_part_of_cert = "<Not Part Of Certificate>";
+void x509_print(const X509_CTX *cert, CA_CERT_CTX *ca_cert_ctx) 
+{
+    if (cert == NULL)
+        return;
+
+    printf("=== CERTIFICATE ISSUED TO ===\n");
+    printf("Common Name (CN):\t\t");
+    printf("%s\n", cert->cert_dn[X509_COMMON_NAME] ?
+                    cert->cert_dn[X509_COMMON_NAME] : not_part_of_cert);
+
+    printf("Organization (O):\t\t");
+    printf("%s\n", cert->cert_dn[X509_ORGANIZATION] ?
+        cert->cert_dn[X509_ORGANIZATION] : not_part_of_cert);
+
+    printf("Organizational Unit (OU):\t");
+    printf("%s\n", cert->cert_dn[X509_ORGANIZATIONAL_UNIT] ?
+        cert->cert_dn[X509_ORGANIZATIONAL_UNIT] : not_part_of_cert);
+
+    printf("=== CERTIFICATE ISSUED BY ===\n");
+    printf("Common Name (CN):\t\t");
+    printf("%s\n", cert->ca_cert_dn[X509_COMMON_NAME] ?
+                    cert->ca_cert_dn[X509_COMMON_NAME] : not_part_of_cert);
+
+    printf("Organization (O):\t\t");
+    printf("%s\n", cert->ca_cert_dn[X509_ORGANIZATION] ?
+        cert->ca_cert_dn[X509_ORGANIZATION] : not_part_of_cert);
+
+    printf("Organizational Unit (OU):\t");
+    printf("%s\n", cert->ca_cert_dn[X509_ORGANIZATIONAL_UNIT] ?
+        cert->ca_cert_dn[X509_ORGANIZATIONAL_UNIT] : not_part_of_cert);
+
+    printf("Not Before:\t\t\t%s", ctime(&cert->not_before));
+    printf("Not After:\t\t\t%s", ctime(&cert->not_after));
+    printf("RSA bitsize:\t\t\t%d\n", cert->rsa_ctx->num_octets*8);
+    printf("Sig Type:\t\t\t");
+    switch (cert->sig_type)
+    {
+        case SIG_TYPE_MD5:
+            printf("MD5\n");
+            break;
+        case SIG_TYPE_SHA1:
+            printf("SHA1\n");
+            break;
+        case SIG_TYPE_MD2:
+            printf("MD2\n");
+            break;
+        default:
+            printf("Unrecognized: %d\n", cert->sig_type);
+            break;
+    }
+
+    if (ca_cert_ctx)
+    {
+        printf("Verify:\t\t\t\t%s\n",
+                x509_display_error(x509_verify(ca_cert_ctx, cert)));
+    }
+
+#if 0
+    print_blob("Signature", cert->signature, cert->sig_len);
+    bi_print("Modulus", cert->rsa_ctx->m);
+    bi_print("Pub Exp", cert->rsa_ctx->e);
+#endif
+
+    if (ca_cert_ctx)
+    {
+        x509_print(cert->next, ca_cert_ctx);
+    }
+
+    TTY_FLUSH();
+}
+
+const char * x509_display_error(int error)
+{
+    switch (error)
+    {
+        case X509_OK:
+            return "Certificate verify successful";
+
+        case X509_NOT_OK:
+            return "X509 not ok";
+
+        case X509_VFY_ERROR_NO_TRUSTED_CERT:
+            return "No trusted cert is available";
+
+        case X509_VFY_ERROR_BAD_SIGNATURE:
+            return "Bad signature";
+
+        case X509_VFY_ERROR_NOT_YET_VALID:
+            return "Cert is not yet valid";
+
+        case X509_VFY_ERROR_EXPIRED:
+            return "Cert has expired";
+
+        case X509_VFY_ERROR_SELF_SIGNED:
+            return "Cert is self-signed";
+
+        case X509_VFY_ERROR_INVALID_CHAIN:
+            return "Chain is invalid (check order of certs)";
+
+        case X509_VFY_ERROR_UNSUPPORTED_DIGEST:
+            return "Unsupported digest";
+
+        case X509_INVALID_PRIV_KEY:
+            return "Invalid private key";
+
+        default:
+            return "Unknown";
+    }
+}
+#endif      /* CONFIG_SSL_FULL_MODE */
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess
new file mode 100644 (file)
index 0000000..4496fa9
--- /dev/null
@@ -0,0 +1,2 @@
+Deny all
+
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico b/package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico
new file mode 100644 (file)
index 0000000..9f6f30e
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico differ
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/index.html
new file mode 100755 (executable)
index 0000000..25cd2e6
--- /dev/null
@@ -0,0 +1,7106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<script type="text/javascript">
+//<![CDATA[
+var version = {major: 2, minor: 1, revision: 3, date: new Date("Nov 3, 2006"), extensions: {}};
+//]]>
+</script>
+<!--
+TiddlyWiki 2.1.3 by Jeremy Ruston, (jeremy [at] osmosoft [dot] com)
+
+Copyright (c) Osmosoft Limited 2004-2006
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+Neither the name of the Osmosoft Limited nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+-->
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+<!--PRE-HEAD-START-->
+<!--{{{-->
+<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
+<!--}}}-->
+<!--PRE-HEAD-END-->
+<title> axTLS Embedded SSL - changes, notes and errata </title>
+<script type="text/javascript">
+//<![CDATA[
+// ---------------------------------------------------------------------------------
+// Configuration repository
+// ---------------------------------------------------------------------------------
+
+// Miscellaneous options
+var config = {
+       numRssItems: 20, // Number of items in the RSS feed
+       animFast: 0.12, // Speed for animations (lower == slower)
+       animSlow: 0.01, // Speed for EasterEgg animations
+       cascadeFast: 20, // Speed for cascade animations (higher == slower)
+       cascadeSlow: 60, // Speed for EasterEgg cascade animations
+       cascadeDepth: 5, // Depth of cascade animation
+       displayStartupTime: false // Whether to display startup time
+       };
+
+// Messages
+config.messages = {
+       messageClose: {},
+       dates: {}
+};
+
+// Options that can be set in the options panel and/or cookies
+config.options = {
+       chkRegExpSearch: false,
+       chkCaseSensitiveSearch: false,
+       chkAnimate: true,
+       chkSaveBackups: true,
+       chkAutoSave: false,
+       chkGenerateAnRssFeed: false,
+       chkSaveEmptyTemplate: false,
+       chkOpenInNewWindow: true,
+       chkToggleLinks: false,
+       chkHttpReadOnly: true,
+       chkForceMinorUpdate: false,
+       chkConfirmDelete: true,
+       chkInsertTabs: false,
+       txtBackupFolder: "",
+       txtMainTab: "tabTimeline",
+       txtMoreTab: "moreTabAll",
+       txtMaxEditRows: "30"
+       };
+       
+// List of notification functions to be called when certain tiddlers are changed or deleted
+config.notifyTiddlers = [
+       {name: "StyleSheetLayout", notify: refreshStyles},
+       {name: "StyleSheetColors", notify: refreshStyles},
+       {name: "StyleSheet", notify: refreshStyles},
+       {name: "StyleSheetPrint", notify: refreshStyles},
+       {name: "PageTemplate", notify: refreshPageTemplate},
+       {name: "SiteTitle", notify: refreshPageTitle},
+       {name: "SiteSubtitle", notify: refreshPageTitle},
+       {name: "ColorPalette", notify: refreshColorPalette},
+       {name: null, notify: refreshDisplay}
+       ];
+
+// Default tiddler templates
+var DEFAULT_VIEW_TEMPLATE = 1;
+var DEFAULT_EDIT_TEMPLATE = 2;
+config.tiddlerTemplates = {
+       1: "ViewTemplate",
+       2: "EditTemplate"
+       };
+
+// More messages (rather a legacy layout that shouldn't really be like this)
+config.views = {
+       wikified: {
+               tag: {}
+               },
+       editor: {
+               tagChooser: {}
+               }
+       };
+
+// Macros; each has a 'handler' member that is inserted later
+config.macros = {
+       today: {},
+       version: {},
+       search: {sizeTextbox: 15},
+       tiddler: {},
+       tag: {},
+       tags: {},
+       tagging: {},
+       timeline: {},
+       allTags: {},
+       list: {
+               all: {},
+               missing: {},
+               orphans: {},
+               shadowed: {}
+               },
+       closeAll: {},
+       permaview: {},
+       saveChanges: {},
+       slider: {},
+       option: {},
+       newTiddler: {},
+       newJournal: {},
+       sparkline: {},
+       tabs: {},
+       gradient: {},
+       message: {},
+       view: {},
+       edit: {},
+       tagChooser: {},
+       toolbar: {},
+       br: {},
+       plugins: {},
+       refreshDisplay: {},
+       importTiddlers: {}
+       };
+
+// Commands supported by the toolbar macro
+config.commands = {
+       closeTiddler: {},
+       closeOthers: {},
+       editTiddler: {},
+       saveTiddler: {hideReadOnly: true},
+       cancelTiddler: {},
+       deleteTiddler: {hideReadOnly: true},
+       permalink: {},
+       references: {},
+       jump: {}
+       };
+
+// Browser detection... In a very few places, there's nothing else for it but to
+// know what browser we're using.
+config.userAgent = navigator.userAgent.toLowerCase();
+config.browser = {
+       isIE: config.userAgent.indexOf("msie") != -1 && config.userAgent.indexOf("opera") == -1,
+       ieVersion: /MSIE (\d.\d)/i.exec(config.userAgent), // config.browser.ieVersion[1], if it exists, will be the IE version string, eg "6.0"
+       isSafari: config.userAgent.indexOf("applewebkit") != -1,
+       isBadSafari: !((new RegExp("[\u0150\u0170]","g")).test("\u0150")),
+       firefoxDate: /Gecko\/(\d{8})/i.exec(config.userAgent), // config.browser.firefoxDate[1], if it exists, will be Firefox release date as "YYYYMMDD"
+       isOpera: config.userAgent.indexOf("opera") != -1,
+       isLinux: config.userAgent.indexOf("linux") != -1,
+       isUnix: config.userAgent.indexOf("x11") != -1,
+       isMac: config.userAgent.indexOf("mac") != -1,
+       isWindows: config.userAgent.indexOf("win") != -1
+       };
+
+// Basic regular expressions
+config.textPrimitives = {
+       upperLetter: "[A-Z\u00c0-\u00de\u0150\u0170]",
+       lowerLetter: "[a-z0-9_\\-\u00df-\u00ff\u0151\u0171]",
+       anyLetter:   "[A-Za-z0-9_\\-\u00c0-\u00de\u00df-\u00ff\u0150\u0170\u0151\u0171]",
+       anyLetterStrict: "[A-Za-z0-9\u00c0-\u00de\u00df-\u00ff\u0150\u0170\u0151\u0171]"
+       };
+if(config.browser.isBadSafari)
+       config.textPrimitives = {
+               upperLetter: "[A-Z\u00c0-\u00de]",
+               lowerLetter: "[a-z0-9_\\-\u00df-\u00ff]",
+               anyLetter:   "[A-Za-z0-9_\\-\u00c0-\u00de\u00df-\u00ff]",
+               anyLetterStrict: "[A-Za-z0-9\u00c0-\u00de\u00df-\u00ff]"
+               }
+config.textPrimitives.sliceSeparator = "::";
+config.textPrimitives.urlPattern = "[a-z]{3,8}:[^\\s:'\"][^\\s'\"]*(?:/|\\b)";
+config.textPrimitives.unWikiLink = "~";
+config.textPrimitives.wikiLink = "(?:(?:" + config.textPrimitives.upperLetter + "+" +
+                                                                                               config.textPrimitives.lowerLetter + "+" +
+                                                                                               config.textPrimitives.upperLetter +
+                                                                                               config.textPrimitives.anyLetter + "*)|(?:" +
+                                                                                               config.textPrimitives.upperLetter + "{2,}" +
+                                                                                               config.textPrimitives.lowerLetter + "+))";
+
+config.textPrimitives.cssLookahead = "(?:(" + config.textPrimitives.anyLetter + "+)\\(([^\\)\\|\\n]+)(?:\\):))|(?:(" + config.textPrimitives.anyLetter + "+):([^;\\|\\n]+);)";
+config.textPrimitives.cssLookaheadRegExp = new RegExp(config.textPrimitives.cssLookahead,"mg");
+
+config.textPrimitives.brackettedLink = "\\[\\[([^\\]]+)\\]\\]";
+config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\]";
+config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" + config.textPrimitives.titledBrackettedLink + ")|(?:" +
+       config.textPrimitives.brackettedLink + ")|(?:" + 
+       config.textPrimitives.urlPattern + ")","mg");
+config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+ config.textPrimitives.wikiLink + ")|(?:" +
+       config.textPrimitives.titledBrackettedLink + ")|(?:" +
+       config.textPrimitives.brackettedLink + ")|(?:" +
+       config.textPrimitives.urlPattern + ")","mg");
+
+// ---------------------------------------------------------------------------------
+// Shadow tiddlers
+// ---------------------------------------------------------------------------------
+
+config.shadowTiddlers = {
+       ColorPalette: "Background: #fff\n" + 
+                                 "Foreground: #000\n" +
+                                 "PrimaryPale: #8cf\n" +
+                                 "PrimaryLight: #18f\n" +
+                                 "PrimaryMid: #04b\n" +
+                                 "PrimaryDark: #014\n" +
+                                 "SecondaryPale: #ffc\n" +
+                                 "SecondaryLight: #fe8\n" +
+                                 "SecondaryMid: #db4\n" +
+                                 "SecondaryDark: #841\n" +
+                                 "TertiaryPale: #eee\n" +
+                                 "TertiaryLight: #ccc\n" +
+                                 "TertiaryMid: #999\n" +
+                                 "TertiaryDark: #666\n" +
+                                 "Error: #f88\n",
+       StyleSheet: "",
+       StyleSheetColors: "/*{{{*/\nbody {\n    background: [[ColorPalette::Background]];\n     color: [[ColorPalette::Foreground]];\n}\n\na{\n color: [[ColorPalette::PrimaryMid]];\n}\n\na:hover{\n   background: [[ColorPalette::PrimaryMid]];\n     color: [[ColorPalette::Background]];\n}\n\na img{\n     border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n     color: [[ColorPalette::SecondaryDark]];\n       background: [[ColorPalette::PrimaryPale]];\n}\n\n.button {\n    color: [[ColorPalette::PrimaryDark]];\n border: 1px solid [[ColorPalette::Background]];\n}\n\n.button:hover {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::SecondaryLight]];\n border-color: [[ColorPalette::SecondaryMid]];\n}\n\n.button:active {\n  color: [[ColorPalette::Background]];\n  background: [[ColorPalette::SecondaryMid]];\n   border: 1px solid [[ColorPalette::SecondaryDark]];\n}\n\n.header {\n    background: [[ColorPalette::PrimaryMid]];\n}\n\n.headerShadow {\n       color: [[ColorPalette::Foreground]];\n}\n\n.headerShadow a {\n  font-weight: normal;\n  color: [[ColorPalette::Foreground]];\n}\n\n.headerForeground {\n        color: [[ColorPalette::Background]];\n}\n\n.headerForeground a {\n      font-weight: normal;\n  color: [[ColorPalette::PrimaryPale]];\n}\n\n.tabSelected{\n     color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n   border-left: 1px solid [[ColorPalette::TertiaryLight]];\n       border-top: 1px solid [[ColorPalette::TertiaryLight]];\n        border-right: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabUnselected {\n       color: [[ColorPalette::Background]];\n  background: [[ColorPalette::TertiaryMid]];\n}\n\n.tabContents {\n       color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n   border: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabContents .button {\n        border: 0;}\n\n#sidebar {\n}\n\n#sidebarOptions input {\n      border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel {\n  background: [[ColorPalette::PrimaryPale]];\n}\n\n#sidebarOptions .sliderPanel a {\n     border: none;\n color: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:hover {\n     color: [[ColorPalette::Background]];\n  background: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:active {\n       color: [[ColorPalette::PrimaryMid]];\n  background: [[ColorPalette::Background]];\n}\n\n.wizard {\n     background: [[ColorPalette::SecondaryLight]];\n border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard h1 {\n     color: [[ColorPalette::SecondaryDark]];\n}\n\n.wizard h2 {\n    color: [[ColorPalette::Foreground]];\n}\n\n.wizardStep {\n      background: [[ColorPalette::Background]];\n     border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-bottom: 1px solid [[ColorPalette::SecondaryMid]];\n      border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard .button {\n        color: [[ColorPalette::Background]];\n  background: [[ColorPalette::PrimaryMid]];\n     border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n        border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n       border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:hover {\n  color: [[ColorPalette::PrimaryLight]];\n        background: [[ColorPalette::PrimaryDark]];\n    border-color: [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:active {\n  color: [[ColorPalette::Background]];\n  background: [[ColorPalette::PrimaryMid]];\n     border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n        border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n       border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n#messageArea {\n   border: 1px solid [[ColorPalette::SecondaryDark]];\n    background: [[ColorPalette::SecondaryMid]];\n   color: [[ColorPalette::PrimaryDark]];\n}\n\n#messageArea .button {\n    padding: 0.2em 0.2em 0.2em 0.2em;\n     color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::Background]];\n}\n\n.popup {\n      background: [[ColorPalette::PrimaryLight]];\n   border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.popup hr {\n     color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::PrimaryDark]];\n    border-bottom: 1px;\n}\n\n.listBreak div{\n     border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n}\n\n.popup li.disabled {\n    color: [[ColorPalette::PrimaryMid]];\n}\n\n.popup li a, .popup li a:visited {\n color: [[ColorPalette::TertiaryPale]];\n        border: none;\n}\n\n.popup li a:hover {\n       background: [[ColorPalette::PrimaryDark]];\n    color: [[ColorPalette::Background]];\n  border: none;\n}\n\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n    color: [[ColorPalette::TertiaryDark]];\n}\n\n.title {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.subtitle {\n     color: [[ColorPalette::TertiaryDark]];\n}\n\n.toolbar {\n       color: [[ColorPalette::PrimaryMid]];\n}\n\n.tagging, .tagged {\n        border: 1px solid [[ColorPalette::TertiaryPale]];\n     background-color: [[ColorPalette::TertiaryPale]];\n}\n\n.selected .tagging, .selected .tagged {\n       background-color: [[ColorPalette::TertiaryLight]];\n    border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.tagging .listTitle, .tagged .listTitle {\n      color: [[ColorPalette::PrimaryDark]];\n}\n\n.tagging .button, .tagged .button {\n               border: none;\n}\n\n.footer {\n color: [[ColorPalette::TertiaryLight]];\n}\n\n.selected .footer {\n     color: [[ColorPalette::TertiaryMid]];\n}\n\n.sparkline {\n      background: [[ColorPalette::PrimaryPale]];\n    border: 0;\n}\n\n.sparktick {\n background: [[ColorPalette::PrimaryDark]];\n}\n\n.error, .errorButton {\n       color: [[ColorPalette::Foreground]];\n  background: [[ColorPalette::Error]];\n}\n\n.warning {\n color: [[ColorPalette::Foreground]];\n  background: [[ColorPalette::SecondaryPale]];\n}\n\n.cascade {\n background: [[ColorPalette::TertiaryPale]];\n   color: [[ColorPalette::TertiaryMid]];\n border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.imageLink, #displayArea .imageLink {\n  background: transparent;\n}\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n    border: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.viewer blockquote {\n  border-left: 3px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer table {\n  border: 2px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer th, thead td {\n        background: [[ColorPalette::SecondaryMid]];\n   border: 1px solid [[ColorPalette::TertiaryDark]];\n     color: [[ColorPalette::Background]];\n}\n\n.viewer td, .viewer tr {\n   border: 1px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer pre {\n border: 1px solid [[ColorPalette::SecondaryLight]];\n   background: [[ColorPalette::SecondaryPale]];\n}\n\n.viewer code {\n     color: [[ColorPalette::SecondaryDark]];\n}\n\n.viewer hr {\n    border: 0;\n    border-top: dashed 1px [[ColorPalette::TertiaryDark]];\n        color: [[ColorPalette::TertiaryDark]];\n}\n\n.highlight, .marked {\n    background: [[ColorPalette::SecondaryLight]];\n}\n\n.editor input {\n   border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.editor textarea {\n      border: 1px solid [[ColorPalette::PrimaryMid]];\n       width: 100%;\n}\n\n.editorFooter {\n    color: [[ColorPalette::TertiaryMid]];\n}\n\n/*}}}*/",
+       StyleSheetLayout: "/*{{{*/\n* html .tiddler {\n    height: 1%;\n}\n\nbody {\n   font-size: .75em;\n     font-family: arial,helvetica;\n margin: 0;\n    padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n    text-decoration: none;\n        padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n      height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n     width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n  border: 0;\n}\n\n.externalLink {\n      text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n      font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n     font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n   font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n            position: relative;\n}\n\n.header a:hover {\n   background: transparent;\n}\n\n.headerShadow {\n        position: relative;\n   padding: 4.5em 0em 1em 1em;\n   left: -1px;\n   top: -1px;\n}\n\n.headerForeground {\n  position: absolute;\n   padding: 4.5em 0em 1em 1em;\n   left: 0px;\n    top: 0px;\n}\n\n.siteTitle {\n  font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n   position: absolute;\n   left: 0;\n      width: 10em;\n  text-align: right;\n    line-height: 1.6em;\n   padding: 1.5em 0.5em 0.5em 0.5em;\n     font-size: 1.1em;\n}\n\n#sidebar {\n    position: absolute;\n   right: 3px;\n   width: 16em;\n  font-size: .9em;\n}\n\n#sidebarOptions {\n      padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n    padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n     margin-left: 1em;\n     padding: 0.5em;\n       font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n      font-weight: bold;\n    display: inline;\n      padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n        margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n  overflow: hidden;\n}\n\n.wizard {\n     padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n        font-size: 2em;\n       font-weight: bold;\n    background: none;\n     padding: 0em 0em 0em 0em;\n     margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n       font-size: 1.2em;\n     font-weight: bold;\n    background: none;\n     padding: 0em 0em 0em 0em;\n     margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n      padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n     margin: 0.5em 0em 0em 0em;\n    font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n        text-decoration: underline;\n}\n\n.popup {\n    font-size: .9em;\n      padding: 0.2em;\n       list-style: none;\n     margin: 0;\n}\n\n.popup hr {\n  display: block;\n       height: 1px;\n  width: auto;\n  padding: 0;\n   margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n       line-height: 1px;\n}\n\n.listBreak div {\n      margin: 2px 0;\n}\n\n.popup li.disabled {\n     padding: 0.2em;\n}\n\n.popup li a{\n    display: block;\n       padding: 0.2em;\n}\n\n.tabset {\n       padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n      margin: 0em 0em 0em 0.25em;\n   padding: 2px;\n}\n\n.tabContents {\n    padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n      margin: 0;\n    padding: 0;\n}\n\n.txtMainTab .tabContents li {\n       list-style: none;\n}\n\n.tabContents li.listLink {\n     margin-left: .75em;\n}\n\n#displayArea {\n     margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n    font-size: .9em;\n      visibility: hidden;\n}\n\n.selected .toolbar {\n        visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n    font-style: italic;\n}\n\n.title {\n    font-size: 1.6em;\n     font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n      font-size: 1.1em;\n}\n\n.tiddler .button {\n    padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n      font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n      width: 99%;\n   padding: 0 0 1em 0;\n}\n\n.viewer {\n   line-height: 1.4em;\n   padding-top: 0.5em;\n}\n\n.viewer .button {\n   margin: 0em 0.25em;\n   padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n       line-height: 1.5em;\n   padding-left: 0.8em;\n  margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n     margin-left: 0.5em;\n   padding-left: 1.5em;\n}\n\n.viewer table {\n    border-collapse: collapse;\n    margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n        padding: 3px;\n}\n\n.viewer table.listView {\n  font-size: 0.85em;\n    margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n  padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n       margin-left: 0.5em;\n   font-size: 1.2em;\n     line-height: 1.4em;\n   overflow: auto;\n}\n\n.viewer code {\n  font-size: 1.2em;\n     line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n        display: block;\n       width: 100%;\n  font: inherit;\n}\n\n.editorFooter {\n  padding: 0.25em 0em;\n  font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n  outline: 0;\n}\n\n.zoomer {\n   font-size: 1.1em;\n     position: absolute;\n   padding: 1em;\n}\n\n.cascade {\n        font-size: 1.1em;\n     position: absolute;\n   overflow: hidden;\n}\n/*}}}*/",
+       StyleSheetPrint: "/*{{{*/\n@media print {\n#mainMenu, #sidebar, #messageArea, .toolbar {display: none ! important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */\nnoscript {display:none;}\n}\n/*}}}*/",
+       PageTemplate: "<!--{{{-->\n<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->",
+       ViewTemplate: "<!--{{{-->\n<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->",
+       EditTemplate: "<!--{{{-->\n<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n<!--}}}-->",
+       MarkupPreHead: "<!--{{{-->\n<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>\n<!--}}}-->",
+       MarkupPostHead: "",
+       MarkupPreBody: "",
+       MarkupPostBody: ""
+       };
+
+// ---------------------------------------------------------------------------------
+// Translateable strings
+// ---------------------------------------------------------------------------------
+
+// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
+
+merge(config.options,{
+       txtUserName: "YourName"});
+
+merge(config.messages,{
+       customConfigError: "Problems were encountered loading plugins. See PluginManager for details",
+       pluginError: "Error: %0",
+       pluginDisabled: "Not executed because disabled via 'systemConfigDisable' tag",
+       pluginForced: "Executed because forced via 'systemConfigForce' tag",
+       pluginVersionError: "Not executed because this plugin needs a newer version of TiddlyWiki",
+       nothingSelected: "Nothing is selected. You must select one or more items first",
+       savedSnapshotError: "It appears that this TiddlyWiki has been incorrectly saved. Please see http://www.tiddlywiki.com/#DownloadSoftware for details",
+       subtitleUnknown: "(unknown)",
+       undefinedTiddlerToolTip: "The tiddler '%0' doesn't yet exist",
+       shadowedTiddlerToolTip: "The tiddler '%0' doesn't yet exist, but has a pre-defined shadow value",
+       tiddlerLinkTooltip: "%0 - %1, %2",
+       externalLinkTooltip: "External link to %0",
+       noTags: "There are no tagged tiddlers",
+       notFileUrlError: "You need to save this TiddlyWiki to a file before you can save changes",
+       cantSaveError: "It's not possible to save changes. This could be because your browser doesn't support saving (instead, use FireFox if you can), or because the pathname to your TiddlyWiki file contains illegal characters",
+       invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
+       backupSaved: "Backup saved",
+       backupFailed: "Failed to save backup file",
+       rssSaved: "RSS feed saved",
+       rssFailed: "Failed to save RSS feed file",
+       emptySaved: "Empty template saved",
+       emptyFailed: "Failed to save empty template file",
+       mainSaved: "Main TiddlyWiki file saved",
+       mainFailed: "Failed to save main TiddlyWiki file. Your changes have not been saved",
+       macroError: "Error in macro <<%0>>",
+       macroErrorDetails: "Error while executing macro <<%0>>:\n%1",
+       missingMacro: "No such macro",
+       overwriteWarning: "A tiddler named '%0' already exists. Choose OK to overwrite it",
+       unsavedChangesWarning: "WARNING! There are unsaved changes in TiddlyWiki\n\nChoose OK to save\nChoose CANCEL to discard",
+       confirmExit: "--------------------------------\n\nThere are unsaved changes in TiddlyWiki. If you continue you will lose those changes\n\n--------------------------------",
+       saveInstructions: "SaveChanges",
+       unsupportedTWFormat: "Unsupported TiddlyWiki format '%0'",
+       tiddlerSaveError: "Error when saving tiddler '%0'",
+       tiddlerLoadError: "Error when loading tiddler '%0'",
+       wrongSaveFormat: "Cannot save with storage format '%0'. Using standard format for save.",
+       invalidFieldName: "Invalid field name %0",
+       fieldCannotBeChanged: "Field '%0' cannot be changed"});
+
+merge(config.messages.messageClose,{
+       text: "close",
+       tooltip: "close this message area"});
+
+config.messages.dates.months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"];
+config.messages.dates.days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+config.messages.dates.shortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
+
+merge(config.views.wikified.tag,{
+       labelNoTags: "no tags",
+       labelTags: "tags: ",
+       openTag: "Open tag '%0'",
+       tooltip: "Show tiddlers tagged with '%0'",
+       openAllText: "Open all",
+       openAllTooltip: "Open all of these tiddlers",
+       popupNone: "No other tiddlers tagged with '%0'"});
+
+merge(config.views.wikified,{
+       defaultText: "The tiddler '%0' doesn't yet exist. Double-click to create it",
+       defaultModifier: "(missing)",
+       shadowModifier: "(built-in shadow tiddler)",
+       createdPrompt: "created"});
+
+merge(config.views.editor,{
+       tagPrompt: "Type tags separated with spaces, [[use double square brackets]] if necessary, or add existing",
+       defaultText: "Type the text for '%0'"});
+
+merge(config.views.editor.tagChooser,{
+       text: "tags",
+       tooltip: "Choose existing tags to add to this tiddler",
+       popupNone: "There are no tags defined",
+       tagTooltip: "Add the tag '%0'"});
+
+merge(config.macros.search,{
+       label: "search",
+       prompt: "Search this TiddlyWiki",
+       accessKey: "F",
+       successMsg: "%0 tiddlers found matching %1",
+       failureMsg: "No tiddlers found matching %0"});
+
+merge(config.macros.tagging,{
+       label: "tagging: ",
+       labelNotTag: "not tagging",
+       tooltip: "List of tiddlers tagged with '%0'"});
+
+merge(config.macros.timeline,{
+       dateFormat: "DD MMM YYYY"});
+
+merge(config.macros.allTags,{
+       tooltip: "Show tiddlers tagged with '%0'",
+       noTags: "There are no tagged tiddlers"});
+
+config.macros.list.all.prompt = "All tiddlers in alphabetical order";
+config.macros.list.missing.prompt = "Tiddlers that have links to them but are not defined";
+config.macros.list.orphans.prompt = "Tiddlers that are not linked to from any other tiddlers";
+config.macros.list.shadowed.prompt = "Tiddlers shadowed with default contents";
+
+merge(config.macros.closeAll,{
+       label: "close all",
+       prompt: "Close all displayed tiddlers (except any that are being edited)"});
+
+merge(config.macros.permaview,{
+       label: "permaview",
+       prompt: "Link to an URL that retrieves all the currently displayed tiddlers"});
+
+merge(config.macros.saveChanges,{
+       label: "save changes",
+       prompt: "Save all tiddlers to create a new TiddlyWiki",
+       accessKey: "S"});
+
+merge(config.macros.newTiddler,{
+       label: "new tiddler",
+       prompt: "Create a new tiddler",
+       title: "New Tiddler",
+       accessKey: "N"});
+
+merge(config.macros.newJournal,{
+       label: "new journal",
+       prompt: "Create a new tiddler from the current date and time",
+       accessKey: "J"});
+
+merge(config.macros.plugins,{
+       skippedText: "(This plugin has not been executed because it was added since startup)",
+       noPluginText: "There are no plugins installed",
+       confirmDeleteText: "Are you sure you want to delete these tiddlers:\n\n%0",
+       listViewTemplate : {
+               columns: [
+                       {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
+                       {name: 'Title', field: 'title', tiddlerLink: 'title', title: "Title", type: 'TiddlerLink'},
+                       {name: 'Forced', field: 'forced', title: "Forced", tag: 'systemConfigForce', type: 'TagCheckbox'},
+                       {name: 'Disabled', field: 'disabled', title: "Disabled", tag: 'systemConfigDisable', type: 'TagCheckbox'},
+                       {name: 'Executed', field: 'executed', title: "Loaded", type: 'Boolean', trueText: "Yes", falseText: "No"},
+                       {name: 'Error', field: 'error', title: "Status", type: 'Boolean', trueText: "Error", falseText: "OK"},
+                       {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
+                       ],
+               rowClasses: [
+                       {className: 'error', field: 'error'},
+                       {className: 'warning', field: 'warning'}
+                       ],
+               actions: [
+                       {caption: "More actions...", name: ''},
+                       {caption: "Remove systemConfig tag", name: 'remove'},
+                       {caption: "Delete these tiddlers forever", name: 'delete'}
+                       ]}
+       });
+
+merge(config.macros.refreshDisplay,{
+       label: "refresh",
+       prompt: "Redraw the entire TiddlyWiki display"
+       });
+
+merge(config.macros.importTiddlers,{
+       readOnlyWarning: "You cannot import tiddlers into a read-only TiddlyWiki. Try opening the TiddlyWiki file from a file:// URL",
+       defaultPath: "http://www.tiddlywiki.com/index.html",
+       fetchLabel: "fetch",
+       fetchPrompt: "Fetch the tiddlywiki file",
+       fetchError: "There were problems fetching the tiddlywiki file",
+       confirmOverwriteText: "Are you sure you want to overwrite these tiddlers:\n\n%0",
+       wizardTitle: "Import tiddlers from another TiddlyWiki file",
+       step1: "Step 1: Locate the TiddlyWiki file",
+       step1prompt: "Enter the URL or pathname here: ",
+       step1promptFile: "...or browse for a file: ",
+       step1promptFeeds: "...or select a pre-defined feed: ",
+       step1feedPrompt: "Choose...",
+       step2: "Step 2: Loading TiddlyWiki file",
+       step2Text: "Please wait while the file is loaded from: %0",
+       step3: "Step 3: Choose the tiddlers to import",
+       step4: "%0 tiddler(s) imported",
+       step5: "Done",
+       listViewTemplate: {
+               columns: [
+                       {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
+                       {name: 'Title', field: 'title', title: "Title", type: 'String'},
+                       {name: 'Snippet', field: 'text', title: "Snippet", type: 'String'},
+                       {name: 'Tags', field: 'tags', title: "Tags", type: 'Tags'}
+                       ],
+               rowClasses: [
+                       ],
+               actions: [
+                       {caption: "More actions...", name: ''},
+                       {caption: "Import these tiddlers", name: 'import'}
+                       ]}
+       });
+
+merge(config.commands.closeTiddler,{
+       text: "close",
+       tooltip: "Close this tiddler"});
+
+merge(config.commands.closeOthers,{
+       text: "close others",
+       tooltip: "Close all other tiddlers"});
+
+merge(config.commands.editTiddler,{
+       text: "edit",
+       tooltip: "Edit this tiddler",
+       readOnlyText: "view",
+       readOnlyTooltip: "View the source of this tiddler"});
+
+merge(config.commands.saveTiddler,{
+       text: "done",
+       tooltip: "Save changes to this tiddler"});
+
+merge(config.commands.cancelTiddler,{
+       text: "cancel",
+       tooltip: "Undo changes to this tiddler",
+       warning: "Are you sure you want to abandon your changes to '%0'?",
+       readOnlyText: "done",
+       readOnlyTooltip: "View this tiddler normally"});
+
+merge(config.commands.deleteTiddler,{
+       text: "delete",
+       tooltip: "Delete this tiddler",
+       warning: "Are you sure you want to delete '%0'?"});
+
+merge(config.commands.permalink,{
+       text: "permalink",
+       tooltip: "Permalink for this tiddler"});
+
+merge(config.commands.references,{
+       text: "references",
+       tooltip: "Show tiddlers that link to this one",
+       popupNone: "No references"});
+
+merge(config.commands.jump,{
+       text: "jump",
+       tooltip: "Jump to another open tiddler"});
+
+merge(config.shadowTiddlers,{
+       DefaultTiddlers: "GettingStarted",
+       MainMenu: "GettingStarted",
+       SiteTitle: "My TiddlyWiki",
+       SiteSubtitle: "a reusable non-linear personal web notebook",
+       SiteUrl: "http://www.tiddlywiki.com/",
+       GettingStarted: "To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>",
+       SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>",
+       OptionsPanel: "These InterfaceOptions for customising TiddlyWiki are saved in your browser\n\nYour username for signing your edits. Write it as a WikiWord (eg JoeBloggs)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> SaveBackups\n<<option chkAutoSave>> AutoSave\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> CaseSensitiveSearch\n<<option chkAnimate>> EnableAnimations\n\n----\nAdvancedOptions\nPluginManager\nImportTiddlers",
+       AdvancedOptions: "<<option chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmBeforeDeleting\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\nFolder name for backup files: <<option txtBackupFolder>>\n<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field",
+       SideBarTabs: "<<tabs txtMainTab Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>",
+       TabTimeline: "<<timeline>>",
+       TabAll: "<<list all>>",
+       TabTags: "<<allTags>>",
+       TabMore: "<<tabs txtMoreTab Missing 'Missing tiddlers' TabMoreMissing Orphans 'Orphaned tiddlers' TabMoreOrphans Shadowed 'Shadowed tiddlers' TabMoreShadowed>>",
+       TabMoreMissing: "<<list missing>>",
+       TabMoreOrphans: "<<list orphans>>",
+       TabMoreShadowed: "<<list shadowed>>",
+       PluginManager: "<<plugins>>",
+       ImportTiddlers: "<<importTiddlers>>"});
+
+// ---------------------------------------------------------------------------------
+// Main
+// ---------------------------------------------------------------------------------
+
+var params = null; // Command line parameters
+var store = null; // TiddlyWiki storage
+var story = null; // Main story
+var formatter = null; // Default formatters for the wikifier
+config.parsers = {}; // Hashmap of alternative parsers for the wikifier
+var anim = new Animator(); // Animation engine
+var readOnly = false; // Whether we're in readonly mode
+var highlightHack = null; // Embarrassing hack department...
+var hadConfirmExit = false; // Don't warn more than once
+var safeMode = false; // Disable all plugins and cookies
+var installedPlugins = []; // Information filled in when plugins are executed
+var startingUp = false; // Whether we're in the process of starting up
+var pluginInfo,tiddler; // Used to pass information to plugins in loadPlugins()
+
+// Whether to use the JavaSaver applet
+var useJavaSaver = config.browser.isSafari || config.browser.isOpera;
+
+// Starting up
+function main()
+{
+       var now, then = new Date();
+       startingUp = true;
+       window.onbeforeunload = function(e) {if(window.confirmExit) return confirmExit();};
+       params = getParameters();
+       if(params)
+               params = params.parseParams("open",null,false);
+       store = new TiddlyWiki();
+       invokeParamifier(params,"oninit");
+       story = new Story("tiddlerDisplay","tiddler");
+       addEvent(document,"click",Popup.onDocumentClick);
+       saveTest();
+       loadOptionsCookie();
+       for(var s=0; s<config.notifyTiddlers.length; s++)
+               store.addNotification(config.notifyTiddlers[s].name,config.notifyTiddlers[s].notify);
+       store.loadFromDiv("storeArea","store",true);
+       invokeParamifier(params,"onload");
+       var pluginProblem = loadPlugins();
+       formatter = new Formatter(config.formatters);
+       readOnly = (window.location.protocol == "file:") ? false : config.options.chkHttpReadOnly;
+       invokeParamifier(params,"onconfig");
+       store.notifyAll();
+       restart();
+       if(pluginProblem)
+               {
+               story.displayTiddler(null,"PluginManager");
+               displayMessage(config.messages.customConfigError);
+               }
+       now = new Date();
+       if(config.displayStartupTime)
+               displayMessage("TiddlyWiki startup in " + (now-then)/1000 + " seconds");
+       startingUp = false;
+}
+
+// Restarting
+function restart()
+{
+       invokeParamifier(params,"onstart");
+       if(story.isEmpty())
+               {
+               var defaultParams = store.getTiddlerText("DefaultTiddlers").parseParams("open",null,false);
+               invokeParamifier(defaultParams,"onstart");
+               }
+       window.scrollTo(0,0);
+}
+
+function saveTest()
+{
+       var saveTest = document.getElementById("saveTest");
+       if(saveTest.hasChildNodes())
+               alert(config.messages.savedSnapshotError);
+       saveTest.appendChild(document.createTextNode("savetest"));
+}
+
+function loadPlugins()
+{
+       if(safeMode)
+               return false;
+       var configTiddlers = store.getTaggedTiddlers("systemConfig");
+       installedPlugins = [];
+       var hadProblem = false;
+       for(var t=0; t<configTiddlers.length; t++)
+               {
+               tiddler = configTiddlers[t];
+               pluginInfo = getPluginInfo(tiddler);
+               if(isPluginExecutable(pluginInfo))
+                       {
+                       pluginInfo.executed = true;
+                       pluginInfo.error = false;
+                       try
+                               {
+                               if(tiddler.text && tiddler.text != "")
+                                       window.eval(tiddler.text);
+                               }
+                       catch(e)
+                               {
+                               pluginInfo.log.push(config.messages.pluginError.format([exceptionText(e)]));
+                               pluginInfo.error = true;
+                               hadProblem = true;
+                               }
+                       }
+               else
+                       pluginInfo.warning = true;
+               installedPlugins.push(pluginInfo);
+               }
+       return hadProblem;
+}
+
+function getPluginInfo(tiddler)
+{
+       var p = store.getTiddlerSlices(tiddler.title,["Name","Description","Version","CoreVersion","Date","Source","Author","License","Browsers"]);
+       p.tiddler = tiddler;
+       p.title = tiddler.title;
+       p.log = [];
+       return p;
+}
+
+// Check that a particular plugin is valid for execution
+function isPluginExecutable(plugin)
+{
+       if(plugin.tiddler.isTagged("systemConfigDisable"))
+               return verifyTail(plugin,false,config.messages.pluginDisabled);
+       if(plugin.tiddler.isTagged("systemConfigForce"))
+               return verifyTail(plugin,true,config.messages.pluginForced);
+       if(plugin["CoreVersion"])
+               {
+               var coreVersion = plugin["CoreVersion"].split(".");
+               var w = parseInt(coreVersion[0]) - version.major;
+               if(w == 0 && coreVersion[1])
+                       w = parseInt(coreVersion[1]) - version.minor;
+               if(w == 0 && coreVersion[2])
+                       w = parseInt(coreVersion[2]) - version.revision;
+               if(w > 0)
+                       return verifyTail(plugin,false,config.messages.pluginVersionError);
+               }
+       return true;
+}
+
+function verifyTail(plugin,result,message)
+{
+       plugin.log.push(message);
+       return result;
+}
+
+function invokeMacro(place,macro,params,wikifier,tiddler)
+{
+       try
+               {
+               var m = config.macros[macro];
+               if(m && m.handler)
+                       m.handler(place,macro,params.readMacroParams(),wikifier,params,tiddler);
+               else
+                       createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,config.messages.missingMacro]));
+               }
+       catch(ex)
+               {
+               createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,ex.toString()]));
+               }
+}
+
+// ---------------------------------------------------------------------------------
+// Paramifiers
+// ---------------------------------------------------------------------------------
+
+function getParameters()
+{
+       var p = null;
+       if(window.location.hash)
+               {
+               p = decodeURI(window.location.hash.substr(1));
+               if(config.browser.firefoxDate != null && config.browser.firefoxDate[1] < "20051111")
+                       p = convertUTF8ToUnicode(p);
+               }
+       return p;
+}
+
+function invokeParamifier(params,handler)
+{
+       if(!params || params.length == undefined || params.length <= 1)
+               return;
+       for(var t=1; t<params.length; t++)
+               {
+               var p = config.paramifiers[params[t].name];
+               if(p && p[handler] instanceof Function)
+                       p[handler](params[t].value);
+               }
+}
+
+config.paramifiers = {};
+
+config.paramifiers.start = {
+       oninit: function(v) {
+               safeMode = v.toLowerCase() == "safe";
+               }
+};
+
+config.paramifiers.open = {
+       onstart: function(v) {
+               story.displayTiddler("bottom",v,null,false,false);
+               }
+};
+
+config.paramifiers.story = {
+       onstart: function(v) {
+               var list = store.getTiddlerText(v,"").parseParams("open",null,false);
+               invokeParamifier(list,"onstart");
+               }
+};
+
+config.paramifiers.search = {
+       onstart: function(v) {
+               story.search(v,false,false);
+               }
+};
+
+config.paramifiers.searchRegExp = {
+       onstart: function(v) {
+               story.prototype.search(v,false,true);
+               }
+};
+
+config.paramifiers.tag = {
+       onstart: function(v) {
+               var tagged = store.getTaggedTiddlers(v,"title");
+               for(var t=0; t<tagged.length; t++)
+                       story.displayTiddler("bottom",tagged[t].title,null,false,false);
+               }
+};
+
+config.paramifiers.newTiddler = {
+       onstart: function(v) {
+               if(!readOnly)
+                       {
+                       story.displayTiddler(null,v,DEFAULT_EDIT_TEMPLATE);
+                       story.focusTiddler(v,"text");
+                       }
+               }
+};
+
+config.paramifiers.newJournal = {
+       onstart: function(v) {
+               if(!readOnly)
+                       {
+                       var now = new Date();
+                       var title = now.formatString(v.trim());
+                       story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
+                       story.focusTiddler(title,"text");
+                       }
+               }
+};
+
+// ---------------------------------------------------------------------------------
+// Formatter helpers
+// ---------------------------------------------------------------------------------
+
+function Formatter(formatters)
+{
+       this.formatters = [];
+       var pattern = [];
+       for(var n=0; n<formatters.length; n++)
+               {
+               pattern.push("(" + formatters[n].match + ")");
+               this.formatters.push(formatters[n]);
+               }
+       this.formatterRegExp = new RegExp(pattern.join("|"),"mg");
+}
+
+config.formatterHelpers = {
+
+       createElementAndWikify: function(w)
+       {
+               w.subWikifyTerm(createTiddlyElement(w.output,this.element),this.termRegExp);
+       },
+       
+       inlineCssHelper: function(w)
+       {
+               var styles = [];
+               config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
+               var lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
+               while(lookaheadMatch && lookaheadMatch.index == w.nextMatch)
+                       {
+                       var s,v;
+                       if(lookaheadMatch[1])
+                               {
+                               s = lookaheadMatch[1].unDash();
+                               v = lookaheadMatch[2];
+                               }
+                       else
+                               {
+                               s = lookaheadMatch[3].unDash();
+                               v = lookaheadMatch[4];
+                               }
+                       if (s=="bgcolor")
+                               s = "backgroundColor";
+                       styles.push({style: s, value: v});
+                       w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
+                       config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
+                       lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
+                       }
+               return styles;
+       },
+
+       applyCssHelper: function(e,styles)
+       {
+               for(var t=0; t< styles.length; t++)
+                       {
+                       try
+                               {
+                               e.style[styles[t].style] = styles[t].value;
+                               }
+                       catch (ex)
+                               {
+                               }
+                       }
+       },
+
+       enclosedTextHelper: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       {
+                       var text = lookaheadMatch[1];
+                       if(config.browser.isIE)
+                               text = text.replace(/\n/g,"\r");
+                       createTiddlyElement(w.output,this.element,null,null,text);
+                       w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
+                       }
+       },
+
+       isExternalLink: function(link)
+       {
+               if(store.tiddlerExists(link) || store.isShadowTiddler(link))
+                       {
+                       //# Definitely not an external link
+                       return false;
+                       }
+               var urlRegExp = new RegExp(config.textPrimitives.urlPattern,"mg");
+               if(urlRegExp.exec(link))
+                       {
+                       // Definitely an external link
+                       return true;
+                       }
+               if (link.indexOf(".")!=-1 || link.indexOf("\\")!=-1 || link.indexOf("/")!=-1)
+                       {
+                       //# Link contains . / or \ so is probably an external link
+                       return true;
+                       }
+               //# Otherwise assume it is not an external link
+               return false;
+       }
+
+};
+
+// ---------------------------------------------------------------------------------
+// Standard formatters
+// ---------------------------------------------------------------------------------
+
+config.formatters = [
+{
+       name: "table",
+       match: "^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",
+       lookaheadRegExp: /^\|([^\n]*)\|([fhck]?)$/mg,
+       rowTermRegExp: /(\|(?:[fhck]?)$\n?)/mg,
+       cellRegExp: /(?:\|([^\n\|]*)\|)|(\|[fhck]?$\n?)/mg,
+       cellTermRegExp: /((?:\x20*)\|)/mg,
+       rowTypes: {"c":"caption", "h":"thead", "":"tbody", "f":"tfoot"},
+
+       handler: function(w)
+       {
+               var table = createTiddlyElement(w.output,"table");
+               var prevColumns = [];
+               var currRowType = null;
+               var rowContainer;
+               var rowCount = 0;
+               w.nextMatch = w.matchStart;
+               this.lookaheadRegExp.lastIndex = w.nextMatch;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               while(lookaheadMatch && lookaheadMatch.index == w.nextMatch)
+                       {
+                       var nextRowType = lookaheadMatch[2];
+                       if(nextRowType == "k")
+                               {
+                               table.className = lookaheadMatch[1];
+                               w.nextMatch += lookaheadMatch[0].length+1;
+                               }
+                       else
+                               {
+                               if(nextRowType != currRowType)
+                                       {
+                                       rowContainer = createTiddlyElement(table,this.rowTypes[nextRowType]);
+                                       currRowType = nextRowType;
+                                       }
+                               if(currRowType == "c")
+                                       {
+                                       // Caption
+                                       w.nextMatch++;
+                                       if(rowContainer != table.firstChild)
+                                               table.insertBefore(rowContainer,table.firstChild);
+                                       rowContainer.setAttribute("align",rowCount == 0?"top":"bottom");
+                                       w.subWikifyTerm(rowContainer,this.rowTermRegExp);
+                                       }
+                               else
+                                       {
+                                       this.rowHandler(w,createTiddlyElement(rowContainer,"tr",null,(rowCount&1)?"oddRow":"evenRow"),prevColumns);
+                                       rowCount++;
+                                       }
+                               }
+                       this.lookaheadRegExp.lastIndex = w.nextMatch;
+                       lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+                       }
+       },
+       rowHandler: function(w,e,prevColumns)
+       {
+               var col = 0;
+               var colSpanCount = 1;
+               var prevCell = null;
+               this.cellRegExp.lastIndex = w.nextMatch;
+               var cellMatch = this.cellRegExp.exec(w.source);
+               while(cellMatch && cellMatch.index == w.nextMatch)
+                       {
+                       if(cellMatch[1] == "~")
+                               {
+                               // Rowspan
+                               var last = prevColumns[col];
+                               if(last)
+                                       {
+                                       last.rowSpanCount++;
+                                       last.element.setAttribute("rowspan",last.rowSpanCount);
+                                       last.element.setAttribute("rowSpan",last.rowSpanCount); // Needed for IE
+                                       last.element.valign = "center";
+                                       }
+                               w.nextMatch = this.cellRegExp.lastIndex-1;
+                               }
+                       else if(cellMatch[1] == ">")
+                               {
+                               // Colspan
+                               colSpanCount++;
+                               w.nextMatch = this.cellRegExp.lastIndex-1;
+                               }
+                       else if(cellMatch[2])
+                               {
+                               // End of row
+                               if(prevCell && colSpanCount > 1)
+                                       {
+                                       prevCell.setAttribute("colspan",colSpanCount);
+                                       prevCell.setAttribute("colSpan",colSpanCount); // Needed for IE
+                                       }
+                               w.nextMatch = this.cellRegExp.lastIndex;
+                               break;
+                               }
+                       else
+                               {
+                               // Cell
+                               w.nextMatch++;
+                               var styles = config.formatterHelpers.inlineCssHelper(w);
+                               var spaceLeft = false;
+                               var chr = w.source.substr(w.nextMatch,1);
+                               while(chr == " ")
+                                       {
+                                       spaceLeft = true;
+                                       w.nextMatch++;
+                                       chr = w.source.substr(w.nextMatch,1);
+                                       }
+                               var cell;
+                               if(chr == "!")
+                                       {
+                                       cell = createTiddlyElement(e,"th");
+                                       w.nextMatch++;
+                                       }
+                               else
+                                       cell = createTiddlyElement(e,"td");
+                               prevCell = cell;
+                               prevColumns[col] = {rowSpanCount:1, element:cell};
+                               if(colSpanCount > 1)
+                                       {
+                                       cell.setAttribute("colspan",colSpanCount);
+                                       cell.setAttribute("colSpan",colSpanCount); // Needed for IE
+                                       colSpanCount = 1;
+                                       }
+                               config.formatterHelpers.applyCssHelper(cell,styles);
+                               w.subWikifyTerm(cell,this.cellTermRegExp);
+                               if(w.matchText.substr(w.matchText.length-2,1) == " ") // spaceRight
+                                       cell.align = spaceLeft ? "center" : "left";
+                               else if(spaceLeft)
+                                       cell.align = "right";
+                               w.nextMatch--;
+                               }
+                       col++;
+                       this.cellRegExp.lastIndex = w.nextMatch;
+                       cellMatch = this.cellRegExp.exec(w.source);
+                       }
+       }
+},
+
+{
+       name: "heading",
+       match: "^!{1,5}",
+       termRegExp: /(\n)/mg,
+       handler: function(w)
+       {
+               w.subWikifyTerm(createTiddlyElement(w.output,"h" + w.matchLength),this.termRegExp);
+       }
+},
+
+{
+       name: "list",
+       match: "^(?:(?:(?:\\*)|(?:#)|(?:;)|(?::))+)",
+       lookaheadRegExp: /^(?:(?:(\*)|(#)|(;)|(:))+)/mg,
+       termRegExp: /(\n)/mg,
+       handler: function(w)
+       {
+               var placeStack = [w.output];
+               var currLevel = 0, currType = null;
+               var listLevel, listType, itemType;
+               w.nextMatch = w.matchStart;
+               this.lookaheadRegExp.lastIndex = w.nextMatch;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               while(lookaheadMatch && lookaheadMatch.index == w.nextMatch)
+                       {
+                       if(lookaheadMatch[1])
+                               {
+                               listType = "ul";
+                               itemType = "li";
+                               }
+                       else if(lookaheadMatch[2])
+                               {
+                               listType = "ol";
+                               itemType = "li";
+                               }
+                       else if(lookaheadMatch[3])
+                               {
+                               listType = "dl";
+                               itemType = "dt";
+                               }
+                       else if(lookaheadMatch[4])
+                               {
+                               listType = "dl";
+                               itemType = "dd";
+                               }
+                       listLevel = lookaheadMatch[0].length;
+                       w.nextMatch += lookaheadMatch[0].length;
+                       if(listLevel > currLevel)
+                               {
+                               for(var t=currLevel; t<listLevel; t++)
+                                       placeStack.push(createTiddlyElement(placeStack[placeStack.length-1],listType));
+                               }
+                       else if(listLevel < currLevel)
+                               {
+                               for(var t=currLevel; t>listLevel; t--)
+                                       placeStack.pop();
+                               }
+                       else if(listLevel == currLevel && listType != currType)
+                               {
+                               placeStack.pop();
+                               placeStack.push(createTiddlyElement(placeStack[placeStack.length-1],listType));
+                               }
+                       currLevel = listLevel;
+                       currType = listType;
+                       var e = createTiddlyElement(placeStack[placeStack.length-1],itemType);
+                       w.subWikifyTerm(e,this.termRegExp);
+                       this.lookaheadRegExp.lastIndex = w.nextMatch;
+                       lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               }
+       }
+},
+
+{
+       name: "quoteByBlock",
+       match: "^<<<\\n",
+       termRegExp: /(^<<<(\n|$))/mg,
+       element: "blockquote",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "quoteByLine",
+       match: "^>+",
+       lookaheadRegExp: /^>+/mg,
+       termRegExp: /(\n)/mg,
+       element: "blockquote",
+       handler: function(w)
+       {
+               var placeStack = [w.output];
+               var currLevel = 0;
+               var newLevel = w.matchLength;
+               var t;
+               do {
+                       if(newLevel > currLevel)
+                               {
+                               for(t=currLevel; t<newLevel; t++)
+                                       placeStack.push(createTiddlyElement(placeStack[placeStack.length-1],this.element));
+                               }
+                       else if(newLevel < currLevel)
+                               {
+                               for(t=currLevel; t>newLevel; t--)
+                                       placeStack.pop();
+                               }
+                       currLevel = newLevel;
+                       w.subWikifyTerm(placeStack[placeStack.length-1],this.termRegExp);
+                       createTiddlyElement(placeStack[placeStack.length-1],"br");
+                       this.lookaheadRegExp.lastIndex = w.nextMatch;
+                       var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+                       var matched = lookaheadMatch && lookaheadMatch.index == w.nextMatch;
+                       if(matched)
+                               {
+                               newLevel = lookaheadMatch[0].length;
+                               w.nextMatch += lookaheadMatch[0].length;
+                               }
+               } while(matched);
+       }
+},
+
+{
+       name: "rule",
+       match: "^----+$\\n?",
+       handler: function(w)
+       {
+               createTiddlyElement(w.output,"hr");
+       }
+},
+
+{
+       name: "monospacedByLine",
+       match: "^\\{\\{\\{\\n",
+       lookaheadRegExp: /^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/mg,
+       element: "pre",
+       handler: config.formatterHelpers.enclosedTextHelper
+},
+
+{
+       name: "monospacedByLineForCSS",
+       match: "^/\\*[\\{]{3}\\*/\\n",
+       lookaheadRegExp: /\/\*[\{]{3}\*\/\n*((?:^[^\n]*\n)+?)(\n*^\/\*[\}]{3}\*\/$\n?)/mg,
+       element: "pre",
+       handler: config.formatterHelpers.enclosedTextHelper
+},
+
+{
+       name: "monospacedByLineForPlugin",
+       match: "^//\\{\\{\\{\\n",
+       lookaheadRegExp: /^\/\/\{\{\{\n\n*((?:^[^\n]*\n)+?)(\n*^\/\/\}\}\}$\n?)/mg,
+       element: "pre",
+       handler: config.formatterHelpers.enclosedTextHelper
+},
+
+{
+       name: "monospacedByLineForTemplate",
+       match: "^<!--[\\{]{3}-->\\n",
+       lookaheadRegExp: /<!--[\{]{3}-->\n*((?:^[^\n]*\n)+?)(\n*^<!--[\}]{3}-->$\n?)/mg, 
+       element: "pre",
+       handler: config.formatterHelpers.enclosedTextHelper
+},
+
+{
+       name: "wikifyCommentForPlugin", 
+       match: "^/\\*\\*\\*\\n",
+       termRegExp: /(^\*\*\*\/\n)/mg,
+       handler: function(w)
+       {
+               w.subWikifyTerm(w.output,this.termRegExp);
+       }
+},
+
+{
+       name: "wikifyCommentForTemplate", 
+       match: "^<!---\\n",
+       termRegExp: /(^--->\n)/mg,
+       handler: function(w) 
+       {
+               w.subWikifyTerm(w.output,this.termRegExp);
+       }
+},
+
+{
+       name: "macro",
+       match: "<<",
+       lookaheadRegExp: /<<([^>\s]+)(?:\s*)((?:[^>]|(?:>(?!>)))*)>>/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[1])
+                       {
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       invokeMacro(w.output,lookaheadMatch[1],lookaheadMatch[2],w,w.tiddler);
+                       }
+       }
+},
+
+{
+       name: "prettyLink",
+       match: "\\[\\[",
+       lookaheadRegExp: /\[\[(.*?)(?:\|(~)?(.*?))?\]\]/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       {
+                       var e;
+                       var text = lookaheadMatch[1];
+                       if(lookaheadMatch[3])
+                               {
+                               // Pretty bracketted link
+                               var link = lookaheadMatch[3];
+                               e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
+                                               ? createExternalLink(w.output,link)
+                                               : createTiddlyLink(w.output,link,false,null,w.isStatic);
+                               }
+                       else
+                               {
+                               // Simple bracketted link
+                               e = createTiddlyLink(w.output,text,false,null,w.isStatic);
+                               }
+                       createTiddlyText(e,text);
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       }
+       }
+},
+
+{
+       name: "unWikiLink",
+       match: config.textPrimitives.unWikiLink+config.textPrimitives.wikiLink,
+       handler: function(w)
+       {
+               w.outputText(w.output,w.matchStart+1,w.nextMatch);
+       }
+},
+
+{
+       name: "wikiLink",
+       match: config.textPrimitives.wikiLink,
+       handler: function(w)
+       {
+               if(w.matchStart > 0)
+                       {
+                       var preRegExp = new RegExp(config.textPrimitives.anyLetterStrict,"mg");
+                       preRegExp.lastIndex = w.matchStart-1;
+                       var preMatch = preRegExp.exec(w.source);
+                       if(preMatch.index == w.matchStart-1)
+                               {
+                               w.outputText(w.output,w.matchStart,w.nextMatch);
+                               return;
+                               }
+                       }
+               if(w.autoLinkWikiWords == true || store.isShadowTiddler(w.matchText))
+                       {
+                       var link = createTiddlyLink(w.output,w.matchText,false,null,w.isStatic);
+                       w.outputText(link,w.matchStart,w.nextMatch);
+                       }
+               else
+                       {
+                       w.outputText(w.output,w.matchStart,w.nextMatch);
+                       }
+       }
+},
+
+{
+       name: "urlLink",
+       match: config.textPrimitives.urlPattern,
+       handler: function(w)
+       {
+               w.outputText(createExternalLink(w.output,w.matchText),w.matchStart,w.nextMatch);
+       }
+},
+
+{
+       name: "image",
+       match: "\\[[<>]?[Ii][Mm][Gg]\\[",
+       lookaheadRegExp: /\[(<?)(>?)[Ii][Mm][Gg]\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
+                       {
+                       var e = w.output;
+                       if(lookaheadMatch[5])
+                               {
+                               var link = lookaheadMatch[5];
+                               e = config.formatterHelpers.isExternalLink(link) ? createExternalLink(w.output,link) : createTiddlyLink(w.output,link,false,null,w.isStatic);
+                               addClass(e,"imageLink");
+                               }
+                       var img = createTiddlyElement(e,"img");
+                       if(lookaheadMatch[1])
+                               img.align = "left";
+                       else if(lookaheadMatch[2])
+                               img.align = "right";
+                       if(lookaheadMatch[3])
+                               img.title = lookaheadMatch[3];
+                       img.src = lookaheadMatch[4];
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       }
+       }
+},
+
+{
+       name: "html",
+       match: "<[Hh][Tt][Mm][Ll]>",
+       lookaheadRegExp: /<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       {
+                       createTiddlyElement(w.output,"span").innerHTML = lookaheadMatch[1];
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       }
+       }
+},
+
+{
+       name: "commentByBlock",
+       match: "/%",
+       lookaheadRegExp: /\/%((?:.|\n)*?)%\//mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+       }
+},
+
+{
+       name: "boldByChar",
+       match: "''",
+       termRegExp: /('')/mg,
+       element: "strong",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "italicByChar",
+       match: "//",
+       termRegExp: /(\/\/)/mg,
+       element: "em",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "underlineByChar",
+       match: "__",
+       termRegExp: /(__)/mg,
+       element: "u",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "strikeByChar",
+       match: "--(?!\\s|$)",
+       termRegExp: /((?!\s)--|(?=\n\n))/mg,
+       element: "strike",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "superscriptByChar",
+       match: "\\^\\^",
+       termRegExp: /(\^\^)/mg,
+       element: "sup",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "subscriptByChar",
+       match: "~~",
+       termRegExp: /(~~)/mg,
+       element: "sub",
+       handler: config.formatterHelpers.createElementAndWikify
+},
+
+{
+       name: "monospacedByChar",
+       match: "\\{\\{\\{",
+       lookaheadRegExp: /\{\{\{((?:.|\n)*?)\}\}\}/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       {
+                       createTiddlyElement(w.output,"code",null,null,lookaheadMatch[1]);
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       }
+       }
+},
+
+{
+       name: "styleByChar",
+       match: "@@",
+       termRegExp: /(@@)/mg,
+       handler:  function(w)
+       {
+               var e = createTiddlyElement(w.output,"span");
+               var styles = config.formatterHelpers.inlineCssHelper(w);
+               if(styles.length == 0)
+                       e.className = "marked";
+               else
+                       config.formatterHelpers.applyCssHelper(e,styles);
+               w.subWikifyTerm(e,this.termRegExp);
+       }
+},
+
+{
+       name: "lineBreak",
+       match: "\\n|<br ?/?>",
+       handler: function(w)
+       {
+               createTiddlyElement(w.output,"br");
+       }
+},
+
+{
+       name: "rawText",
+       match: "\\\"{3}|<nowiki>",
+       lookaheadRegExp: /(?:\"{3}|<nowiki>)((?:.|\n)*?)(?:\"{3}|<\/nowiki>)/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
+               if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+                       {
+                       createTiddlyElement(w.output,"span",null,null,lookaheadMatch[1]);
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       }
+       }
+},
+
+{
+       name: "mdash",
+       match: "--",
+       handler: function(w)
+               {
+               createTiddlyElement(w.output,"span").innerHTML = "&mdash;";
+               }
+},
+
+{
+       name: "htmlEntitiesEncoding",
+       match: "(?:(?:&#?[a-zA-Z0-9]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9a-fA-F]|1D[c-fC-F][0-9a-fA-F]|20[d-fD-F][0-9a-fA-F]|FE2[0-9a-fA-F])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[a-zA-Z0-9]{2,8};)",
+       handler: function(w)
+               {
+               createTiddlyElement(w.output,"span").innerHTML = w.matchText;
+               }
+},
+
+{
+       name: "customClasses",
+       match: "\\{\\{",
+       termRegExp: /(\}\}\})/mg,
+       lookaheadRegExp: /\{\{[\s]*([\w]+[\s\w]*)[\s]*\{(\n?)/mg,
+       handler: function(w)
+       {
+               this.lookaheadRegExp.lastIndex = w.matchStart;
+               var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
+               if(lookaheadMatch)
+                       {
+                       var e = createTiddlyElement(w.output,lookaheadMatch[2] == "\n" ? "div" : "span",null,lookaheadMatch[1]);
+                       w.nextMatch = this.lookaheadRegExp.lastIndex;
+                       w.subWikifyTerm(e,this.termRegExp);
+                       }
+       }
+}
+
+];
+
+// ---------------------------------------------------------------------------------
+// Wikifier
+// ---------------------------------------------------------------------------------
+
+function getParser(tiddler)
+{
+       var f = formatter;
+       if(tiddler!=null)
+               {
+               for(var i in config.parsers)
+                       {
+                       if(tiddler.isTagged(config.parsers[i].formatTag))
+                               {
+                               f = config.parsers[i];
+                               break;
+                               }
+                       }
+               }
+       return f;
+}
+
+function wikify(source,output,highlightRegExp,tiddler)
+{
+       if(source && source != "")
+               {
+               var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
+               wikifier.subWikifyUnterm(output);
+               }
+}
+
+function wikifyStatic(source,highlightRegExp,tiddler)
+{
+       var e = createTiddlyElement(document.body,"div");
+       e.style.display = "none";
+       var html = "";
+       if(source && source != "")
+               {
+               var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
+               wikifier.isStatic = true;
+               wikifier.subWikifyUnterm(e);
+               html = e.innerHTML;
+               e.parentNode.removeChild(e);
+               }
+       return html;
+}
+
+// Wikify a named tiddler to plain text
+function wikifyPlain(title)
+{
+       if(store.tiddlerExists(title) || store.isShadowTiddler(title))
+               {
+               var wikifier = new Wikifier(store.getTiddlerText(title),formatter,null,store.getTiddler(title));
+               return wikifier.wikifyPlain();
+               }
+       else
+               return "";
+}
+
+// Highlight plain text into an element
+function highlightify(source,output,highlightRegExp)
+{
+       if(source && source != "")
+               {
+               var wikifier = new Wikifier(source,formatter,highlightRegExp);
+               wikifier.outputText(output,0,source.length);
+               }
+}
+
+// Construct a wikifier object
+// source - source string that's going to be wikified
+// formatter - Formatter() object containing the list of formatters to be used
+// highlightRegExp - regular expression of the text string to highlight
+// tiddler - reference to the tiddler that's taken to be the container for this wikification
+function Wikifier(source,formatter,highlightRegExp,tiddler)
+{
+       this.source = source;
+       this.output = null;
+       this.formatter = formatter;
+       this.nextMatch = 0;
+       this.autoLinkWikiWords = tiddler && tiddler.autoLinkWikiWords() == false ? false : true;
+       this.highlightRegExp = highlightRegExp;
+       this.highlightMatch = null;
+       this.isStatic = false;
+       if(highlightRegExp)
+               {
+               highlightRegExp.lastIndex = 0;
+               this.highlightMatch = highlightRegExp.exec(source);
+               }
+       this.tiddler = tiddler;
+}
+
+Wikifier.prototype.wikifyPlain = function()
+{
+       var e = createTiddlyElement(document.body,"div");
+       e.style.display = "none";
+       this.subWikify(e);
+       var text = getPlainText(e);
+       e.parentNode.removeChild(e);
+       return text;
+}
+
+Wikifier.prototype.subWikify = function(output,terminator)
+{
+       // Handle the terminated and unterminated cases separately
+       if (terminator)
+               this.subWikifyTerm(output,new RegExp("(" + terminator + ")","mg"));
+       else
+               this.subWikifyUnterm(output);
+}
+
+Wikifier.prototype.subWikifyUnterm = function(output)
+{
+       // subWikify() can be indirectly recursive, so we need to save the old output pointer
+       var oldOutput = this.output;
+       this.output = output;
+       // Get the first match
+       this.formatter.formatterRegExp.lastIndex = this.nextMatch;
+       var formatterMatch = this.formatter.formatterRegExp.exec(this.source);
+       while(formatterMatch)
+               {
+               // Output any text before the match
+               if(formatterMatch.index > this.nextMatch)
+                       this.outputText(this.output,this.nextMatch,formatterMatch.index);
+               // Set the match parameters for the handler
+               this.matchStart = formatterMatch.index;
+               this.matchLength = formatterMatch[0].length;
+               this.matchText = formatterMatch[0];
+               this.nextMatch = this.formatter.formatterRegExp.lastIndex;
+               // Figure out which formatter matched and call its handler
+               for(var t=1; t<formatterMatch.length; t++)
+                       {
+                       if(formatterMatch[t])
+                               {
+                               this.formatter.formatters[t-1].handler(this);
+                               this.formatter.formatterRegExp.lastIndex = this.nextMatch;
+                               break;
+                               }
+                       }
+               // Get the next match
+               formatterMatch = this.formatter.formatterRegExp.exec(this.source);
+               }
+       // Output any text after the last match
+       if(this.nextMatch < this.source.length)
+               {
+               this.outputText(this.output,this.nextMatch,this.source.length);
+               this.nextMatch = this.source.length;
+               }
+       // Restore the output pointer
+       this.output = oldOutput;
+}
+
+Wikifier.prototype.subWikifyTerm = function(output,terminatorRegExp)
+{
+       // subWikify() can be indirectly recursive, so we need to save the old output pointer
+       var oldOutput = this.output;
+       this.output = output;
+       // Get the first matches for the formatter and terminator RegExps
+       terminatorRegExp.lastIndex = this.nextMatch;
+       var terminatorMatch = terminatorRegExp.exec(this.source);
+       this.formatter.formatterRegExp.lastIndex = this.nextMatch;
+       var formatterMatch = this.formatter.formatterRegExp.exec(terminatorMatch ? this.source.substr(0,terminatorMatch.index) : this.source);
+       while(terminatorMatch || formatterMatch)
+               {
+               // Check for a terminator match  before the next formatter match
+               if(terminatorMatch && (!formatterMatch || terminatorMatch.index <= formatterMatch.index))
+                       {
+                       // Output any text before the match
+                       if(terminatorMatch.index > this.nextMatch)
+                               this.outputText(this.output,this.nextMatch,terminatorMatch.index);
+                       // Set the match parameters
+                       this.matchText = terminatorMatch[1];
+                       this.matchLength = terminatorMatch[1].length;
+                       this.matchStart = terminatorMatch.index;
+                       this.nextMatch = this.matchStart + this.matchLength;
+                       // Restore the output pointer
+                       this.output = oldOutput;
+                       return;
+                       }
+               // It must be a formatter match; output any text before the match
+               if(formatterMatch.index > this.nextMatch)
+                       this.outputText(this.output,this.nextMatch,formatterMatch.index);
+               // Set the match parameters
+               this.matchStart = formatterMatch.index;
+               this.matchLength = formatterMatch[0].length;
+               this.matchText = formatterMatch[0];
+               this.nextMatch = this.formatter.formatterRegExp.lastIndex;
+               // Figure out which formatter matched and call its handler
+               for(var t=1; t<formatterMatch.length; t++)
+                       {
+                       if(formatterMatch[t])
+                               {
+                               this.formatter.formatters[t-1].handler(this);
+                               this.formatter.formatterRegExp.lastIndex = this.nextMatch;
+                               break;
+                               }
+                       }
+               // Get the next match
+               terminatorRegExp.lastIndex = this.nextMatch;
+               terminatorMatch = terminatorRegExp.exec(this.source);
+               formatterMatch = this.formatter.formatterRegExp.exec(terminatorMatch ? this.source.substr(0,terminatorMatch.index) : this.source);
+               }
+       // Output any text after the last match
+       if(this.nextMatch < this.source.length)
+               {
+               this.outputText(this.output,this.nextMatch,this.source.length);
+               this.nextMatch = this.source.length;
+               }
+       // Restore the output pointer
+       this.output = oldOutput;
+}
+
+Wikifier.prototype.outputText = function(place,startPos,endPos)
+{
+       // Check for highlights
+       while(this.highlightMatch && (this.highlightRegExp.lastIndex > startPos) && (this.highlightMatch.index < endPos) && (startPos < endPos))
+               {
+               // Deal with any plain text before the highlight
+               if(this.highlightMatch.index > startPos)
+                       {
+                       createTiddlyText(place,this.source.substring(startPos,this.highlightMatch.index));
+                       startPos = this.highlightMatch.index;
+                       }
+               // Deal with the highlight
+               var highlightEnd = Math.min(this.highlightRegExp.lastIndex,endPos);
+               var theHighlight = createTiddlyElement(place,"span",null,"highlight",this.source.substring(startPos,highlightEnd));
+               startPos = highlightEnd;
+               // Nudge along to the next highlight if we're done with this one
+               if(startPos >= this.highlightRegExp.lastIndex)
+                       this.highlightMatch = this.highlightRegExp.exec(this.source);
+               }
+       // Do the unhighlighted text left over
+       if(startPos < endPos)
+               {
+               createTiddlyText(place,this.source.substring(startPos,endPos));
+               }
+}
+
+// ---------------------------------------------------------------------------------
+// Macro definitions
+// ---------------------------------------------------------------------------------
+
+config.macros.today.handler = function(place,macroName,params)
+{
+       var now = new Date();
+       var text;
+       if(params[0])
+               text = now.formatString(params[0].trim());
+       else
+               text = now.toLocaleString();
+       createTiddlyElement(place,"span",null,null,text);
+}
+
+config.macros.version.handler = function(place)
+{
+       createTiddlyElement(place,"span",null,null,version.major + "." + version.minor + "." + version.revision + (version.beta ? " (beta " + version.beta + ")" : ""));
+}
+
+config.macros.list.handler = function(place,macroName,params)
+{
+       var type = params[0] ? params[0] : "all";
+       var theList = document.createElement("ul");
+       place.appendChild(theList);
+       if(this[type].prompt)
+               createTiddlyElement(theList,"li",null,"listTitle",this[type].prompt);
+       var results;
+       if(this[type].handler)
+               results = this[type].handler(params);
+       for(var t = 0; t < results.length; t++)
+               {
+               var theListItem = document.createElement("li")
+               theList.appendChild(theListItem);
+               if(typeof results[t] == "string")
+                       createTiddlyLink(theListItem,results[t],true);
+               else
+                       createTiddlyLink(theListItem,results[t].title,true);
+               }
+}
+
+config.macros.list.all.handler = function(params)
+{
+       return store.reverseLookup("tags","excludeLists",false,"title");
+}
+
+config.macros.list.missing.handler = function(params)
+{
+       return store.getMissingLinks();
+}
+
+config.macros.list.orphans.handler = function(params)
+{
+       return store.getOrphans();
+}
+
+config.macros.list.shadowed.handler = function(params)
+{
+       return store.getShadowed();
+}
+
+config.macros.allTags.handler = function(place,macroName,params)
+{
+       var tags = store.getTags();
+       var theDateList = createTiddlyElement(place,"ul");
+       if(tags.length == 0)
+               createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
+       for(var t=0; t<tags.length; t++)
+               {
+               var theListItem =createTiddlyElement(theDateList,"li");
+               var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
+               theTag.setAttribute("tag",tags[t][0]);
+               }
+}
+
+config.macros.timeline.handler = function(place,macroName,params)
+{
+       var field = params[0] ? params[0] : "modified";
+       var tiddlers = store.reverseLookup("tags","excludeLists",false,field);
+       var lastDay = "";
+       var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;
+       for(var t=tiddlers.length-1; t>=last; t--)
+               {
+               var tiddler = tiddlers[t];
+               var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
+               if(theDay != lastDay)
+                       {
+                       var theDateList = document.createElement("ul");
+                       place.appendChild(theDateList);
+                       createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
+                       lastDay = theDay;
+                       }
+               var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink");
+               theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
+               }
+}
+
+config.macros.search.handler = function(place,macroName,params)
+{
+       var searchTimeout = null;
+       var btn = createTiddlyButton(place,this.label,this.prompt,this.onClick);
+       var txt = createTiddlyElement(place,"input",null,"txtOptionInput");
+       if(params[0])
+               txt.value = params[0];
+       txt.onkeyup = this.onKeyPress;
+       txt.onfocus = this.onFocus;
+       txt.setAttribute("size",this.sizeTextbox);
+       txt.setAttribute("accessKey",this.accessKey);
+       txt.setAttribute("autocomplete","off");
+       txt.setAttribute("lastSearchText","");
+       if(config.browser.isSafari)
+               {
+               txt.setAttribute("type","search");
+               txt.setAttribute("results","5");
+               }
+       else
+               txt.setAttribute("type","text");
+}
+
+// Global because there's only ever one outstanding incremental search timer
+config.macros.search.timeout = null;
+
+config.macros.search.doSearch = function(txt)
+{
+       if(txt.value.length > 0)
+               {
+               story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
+               txt.setAttribute("lastSearchText",txt.value);
+               }
+}
+
+config.macros.search.onClick = function(e)
+{
+       config.macros.search.doSearch(this.nextSibling);
+       return false;
+}
+
+config.macros.search.onKeyPress = function(e)
+{
+       if(!e) var e = window.event;
+       switch(e.keyCode)
+               {
+               case 13: // Ctrl-Enter
+               case 10: // Ctrl-Enter on IE PC
+                       config.macros.search.doSearch(this);
+                       break;
+               case 27: // Escape
+                       this.value = "";
+                       clearMessage();
+                       break;
+               }
+       if(this.value.length > 2)
+               {
+               if(this.value != this.getAttribute("lastSearchText"))
+                       {
+                       if(config.macros.search.timeout)
+                               clearTimeout(config.macros.search.timeout);
+                       var txt = this;
+                       config.macros.search.timeout = setTimeout(function() {config.macros.search.doSearch(txt);},500);
+                       }
+               }
+       else
+               {
+               if(config.macros.search.timeout)
+                       clearTimeout(config.macros.search.timeout);
+               }
+}
+
+config.macros.search.onFocus = function(e)
+{
+       this.select();
+}
+
+config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       params = paramString.parseParams("name",null,true,false,true);
+       var names = params[0]["name"];
+       var tiddlerName = names[0];
+       var className = names[1] ? names[1] : null;
+       var args = params[0]["with"];
+       var wrapper = createTiddlyElement(place,"span",null,className);
+       if(!args)
+               {
+               wrapper.setAttribute("refresh","content");
+               wrapper.setAttribute("tiddler",tiddlerName);
+               }
+       var text = store.getTiddlerText(tiddlerName);
+       if(text)
+               {
+               var stack = config.macros.tiddler.tiddlerStack;
+               if(stack.indexOf(tiddlerName) !== -1)
+                       return;
+               stack.push(tiddlerName);
+               try
+                       {
+                       var n = args ? Math.min(args.length,9) : 0;
+                       for(var i=0; i<n; i++) 
+                               {
+                               var placeholderRE = new RegExp("\\$" + (i + 1),"mg");
+                               text = text.replace(placeholderRE,args[i]);
+                               }
+                       config.macros.tiddler.renderText(wrapper,text,tiddlerName,params);
+                       }
+               finally
+                       {
+                       stack.pop();
+                       }
+               }
+}
+
+config.macros.tiddler.renderText = function(place,text,tiddlerName,params) 
+{
+       wikify(text,place,null,store.getTiddler(tiddlerName));
+}
+
+config.macros.tiddler.tiddlerStack = [];
+
+config.macros.tag.handler = function(place,macroName,params)
+{
+       createTagButton(place,params[0]);
+}
+
+config.macros.tags.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       params = paramString.parseParams("anon",null,true,false,false);
+       var theList = createTiddlyElement(place,"ul");
+       var title = getParam(params,"anon","");
+       if(title && store.tiddlerExists(title))
+               tiddler = store.getTiddler(title);
+       var sep = getParam(params,"sep"," ");
+       var lingo = config.views.wikified.tag;
+       var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;
+       createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));
+       for(var t=0; t<tiddler.tags.length; t++)
+               {
+               createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);
+               if(t<tiddler.tags.length-1)
+                       createTiddlyText(theList,sep);
+               }
+}
+
+config.macros.tagging.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       params = paramString.parseParams("anon",null,true,false,false);
+       var theList = createTiddlyElement(place,"ul");
+       var title = getParam(params,"anon","");
+       if(title == "" && tiddler instanceof Tiddler)
+               title = tiddler.title;
+       var sep = getParam(params,"sep"," ");
+       theList.setAttribute("title",this.tooltip.format([title]));
+       var tagged = store.getTaggedTiddlers(title);
+       var prompt = tagged.length == 0 ? this.labelNotTag : this.label;
+       createTiddlyElement(theList,"li",null,"listTitle",prompt.format([title,tagged.length]));
+       for(var t=0; t<tagged.length; t++)
+               {
+               createTiddlyLink(createTiddlyElement(theList,"li"),tagged[t].title,true);
+               if(t<tagged.length-1)
+                       createTiddlyText(theList,sep);
+               }
+}
+
+config.macros.closeAll.handler = function(place)
+{
+       createTiddlyButton(place,this.label,this.prompt,this.onClick);
+}
+
+config.macros.closeAll.onClick = function(e)
+{
+       story.closeAllTiddlers();
+       return false;
+}
+
+config.macros.permaview.handler = function(place)
+{
+       createTiddlyButton(place,this.label,this.prompt,this.onClick);
+}
+
+config.macros.permaview.onClick = function(e)
+{
+       story.permaView();
+       return false;
+}
+
+config.macros.saveChanges.handler = function(place)
+{
+       if(!readOnly)
+               createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);
+}
+
+config.macros.saveChanges.onClick = function(e)
+{
+       saveChanges();
+       return false;
+}
+
+config.macros.slider.onClickSlider = function(e)
+{
+       if(!e) var e = window.event;
+       var n = this.nextSibling;
+       var cookie = n.getAttribute("cookie");
+       var isOpen = n.style.display != "none";
+       if(anim && config.options.chkAnimate)
+               anim.startAnimating(new Slider(n,!isOpen,e.shiftKey || e.altKey,"none"));
+       else
+               n.style.display = isOpen ? "none" : "block";
+       config.options[cookie] = !isOpen;
+       saveOptionCookie(cookie);
+       return false;
+}
+
+config.macros.slider.createSlider = function(place,cookie,title,tooltip)
+{
+       var cookie = cookie ? cookie : "";
+       var btn = createTiddlyButton(place,title,tooltip,this.onClickSlider);
+       var panel = createTiddlyElement(null,"div",null,"sliderPanel");
+       panel.setAttribute("cookie",cookie);
+       panel.style.display = config.options[cookie] ? "block" : "none";
+       place.appendChild(panel);
+       return panel;
+}
+
+config.macros.slider.handler = function(place,macroName,params)
+{
+       var panel = this.createSlider(place,params[0],params[2],params[3]);
+       var text = store.getTiddlerText(params[1]);
+       panel.setAttribute("refresh", "content");
+       panel.setAttribute("tiddler", params[1]);
+       if(text)
+               wikify(text,panel,null,store.getTiddler(params[1]));
+}
+
+config.macros.option.onChangeOption = function(e)
+{
+       var opt = this.getAttribute("option");
+       var elementType,valueField;
+       if(opt)
+               {
+               switch(opt.substr(0,3))
+                       {
+                       case "txt":
+                               elementType = "input";
+                               valueField = "value";
+                               break;
+                       case "chk":
+                               elementType = "input";
+                               valueField = "checked";
+                               break;
+                       }
+               config.options[opt] = this[valueField];
+               saveOptionCookie(opt);
+               var nodes = document.getElementsByTagName(elementType);
+               for(var t=0; t<nodes.length; t++)
+                       {
+                       var optNode = nodes[t].getAttribute("option");
+                       if(opt == optNode)
+                               nodes[t][valueField] = this[valueField];
+                       }
+               }
+       return(true);
+}
+
+config.macros.option.handler = function(place,macroName,params)
+{
+       var opt = params[0];
+       if(config.options[opt] == undefined)
+               return;
+       var c;
+       switch(opt.substr(0,3))
+               {
+               case "txt":
+                       c = document.createElement("input");
+                       c.onkeyup = this.onChangeOption;
+                       c.setAttribute("option",opt);
+                       c.className = "txtOptionInput";
+                       place.appendChild(c);
+                       c.value = config.options[opt];
+                       break;
+               case "chk":
+                       c = document.createElement("input");
+                       c.setAttribute("type","checkbox");
+                       c.onclick = this.onChangeOption;
+                       c.setAttribute("option",opt);
+                       c.className = "chkOptionInput";
+                       place.appendChild(c);
+                       c.checked = config.options[opt];
+                       break;
+               }
+}
+
+
+
+config.macros.newTiddler.createNewTiddlerButton = function(place,title,params,label,prompt,accessKey,newFocus,isJournal)
+{
+       var tags = [];
+       for(var t=1; t<params.length; t++)
+               if((params[t].name == "anon" && t != 1) || (params[t].name == "tag"))
+                       tags.push(params[t].value);
+       label = getParam(params,"label",label);
+       prompt = getParam(params,"prompt",prompt);
+       accessKey = getParam(params,"accessKey",accessKey);
+       newFocus = getParam(params,"focus",newFocus);
+       var btn = createTiddlyButton(place,label,prompt,this.onClickNewTiddler,null,null,accessKey);
+       btn.setAttribute("newTitle",title);
+       btn.setAttribute("isJournal",isJournal);
+       btn.setAttribute("params",tags.join("|"));
+       btn.setAttribute("newFocus",newFocus);
+       btn.setAttribute("newTemplate",getParam(params,"template",DEFAULT_EDIT_TEMPLATE));
+       var text = getParam(params,"text");
+       if(text !== undefined) 
+               btn.setAttribute("newText",text);
+       return btn;
+}
+
+config.macros.newTiddler.onClickNewTiddler = function()
+{
+       var title = this.getAttribute("newTitle");
+       if(this.getAttribute("isJournal"))
+               {
+               var now = new Date();
+               title = now.formatString(title.trim());
+               }
+       var params = this.getAttribute("params").split("|");
+       var focus = this.getAttribute("newFocus");
+       var template = this.getAttribute("newTemplate");
+       story.displayTiddler(null,title,template);
+       var text = this.getAttribute("newText");
+       if(typeof text == "string")
+               story.getTiddlerField(title,"text").value = text.format([title]);
+       for(var t=0;t<params.length;t++)
+               story.setTiddlerTag(title,params[t],+1);
+       story.focusTiddler(title,focus);
+       return false;
+}
+
+config.macros.newTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       if(!readOnly)
+               {
+               params = paramString.parseParams("anon",null,true,false,false);
+               var title = params[1] && params[1].name == "anon" ? params[1].value : this.title;
+               title = getParam(params,"title",title);
+               this.createNewTiddlerButton(place,title,params,this.label,this.prompt,this.accessKey,"title",false);
+               }
+}
+
+config.macros.newJournal.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       if(!readOnly)
+               {
+               params = paramString.parseParams("anon",null,true,false,false);
+               var title = params[1] && params[1].name == "anon" ? params[1].value : "";
+               title = getParam(params,"title",title);
+               config.macros.newTiddler.createNewTiddlerButton(place,title,params,this.label,this.prompt,this.accessKey,"text",true);
+               }
+}
+
+config.macros.sparkline.handler = function(place,macroName,params)
+{
+       var data = [];
+       var min = 0;
+       var max = 0;
+       for(var t=0; t<params.length; t++)
+               {
+               var v = parseInt(params[t]);
+               if(v < min)
+                       min = v;
+               if(v > max)
+                       max = v;
+               data.push(v);
+               }
+       if(data.length < 1)
+               return;
+       var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
+       box.title = data.join(",");
+       var w = box.offsetWidth;
+       var h = box.offsetHeight;
+       box.style.paddingRight = (data.length * 2 - w) + "px";
+       box.style.position = "relative";
+       for(var d=0; d<data.length; d++)
+               {
+               var tick = document.createElement("img");
+               tick.border = 0;
+               tick.className = "sparktick";
+               tick.style.position = "absolute";
+               tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
+               tick.style.left = d*2 + "px";
+               tick.style.width = "2px";
+               var v = Math.floor(((data[d] - min)/(max-min)) * h);
+               tick.style.top = (h-v) + "px";
+               tick.style.height = v + "px";
+               box.appendChild(tick);
+               }
+}
+
+config.macros.tabs.handler = function(place,macroName,params)
+{
+       var cookie = params[0];
+       var numTabs = (params.length-1)/3;
+       var wrapper = createTiddlyElement(null,"div",null,cookie);
+       var tabset = createTiddlyElement(wrapper,"div",null,"tabset");
+       tabset.setAttribute("cookie",cookie);
+       var validTab = false;
+       for(var t=0; t<numTabs; t++)
+               {
+               var label = params[t*3+1];
+               var prompt = params[t*3+2];
+               var content = params[t*3+3];
+               var tab = createTiddlyButton(tabset,label,prompt,this.onClickTab,"tab tabUnselected");
+               tab.setAttribute("tab",label);
+               tab.setAttribute("content",content);
+               tab.title = prompt;
+               if(config.options[cookie] == label)
+                       validTab = true;
+               }
+       if(!validTab)
+               config.options[cookie] = params[1];
+       place.appendChild(wrapper);
+       this.switchTab(tabset,config.options[cookie]);
+}
+
+config.macros.tabs.onClickTab = function(e)
+{
+       config.macros.tabs.switchTab(this.parentNode,this.getAttribute("tab"));
+       return false;
+}
+
+config.macros.tabs.switchTab = function(tabset,tab)
+{
+       var cookie = tabset.getAttribute("cookie");
+       var theTab = null
+       var nodes = tabset.childNodes;
+       for(var t=0; t<nodes.length; t++)
+               if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)
+                       {
+                       theTab = nodes[t];
+                       theTab.className = "tab tabSelected";
+                       }
+               else
+                       nodes[t].className = "tab tabUnselected"
+       if(theTab)
+               {
+               if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")
+                       tabset.parentNode.removeChild(tabset.nextSibling);
+               var tabContent = createTiddlyElement(null,"div",null,"tabContents");
+               tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);
+               var contentTitle = theTab.getAttribute("content");
+               wikify(store.getTiddlerText(contentTitle),tabContent,null,store.getTiddler(contentTitle));
+               if(cookie)
+                       {
+                       config.options[cookie] = tab;
+                       saveOptionCookie(cookie);
+                       }
+               }
+}
+
+// <<gradient [[tiddler name]] vert|horiz rgb rgb rgb rgb... >>
+config.macros.gradient.handler = function(place,macroName,params,wikifier)
+{
+       var terminator = ">>";
+       var panel;
+       if(wikifier)
+               panel = createTiddlyElement(place,"div",null,"gradient");
+       else
+               panel = place;
+       panel.style.position = "relative";
+       panel.style.overflow = "hidden";
+       panel.style.zIndex = "0";
+       var t;
+       if(wikifier)
+               {
+               var styles = config.formatterHelpers.inlineCssHelper(wikifier);
+               config.formatterHelpers.applyCssHelper(panel,styles);
+               }
+       var colours = [];
+       for(t=1; t<params.length; t++)
+               {
+               var c = new RGB(params[t]);
+               if(c)
+                       colours.push(c);
+               }
+       drawGradient(panel,params[0] != "vert",colours);
+       if(wikifier)
+               wikifier.subWikify(panel,terminator);
+       if(document.all)
+               {
+               panel.style.height = "100%";
+               panel.style.width = "100%";
+               }
+}
+
+config.macros.message.handler = function(place,macroName,params)
+{
+       if(params[0])
+               {
+               var m = config;
+               var p = params[0].split(".");
+               for(var t=0; t<p.length; t++)
+                       {
+                       if(p[t] in m)
+                               m = m[p[t]];
+                       else
+                               break;
+                       }
+               createTiddlyText(place,m.toString().format(params.splice(1)));
+               }
+}
+
+config.macros.view.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       if((tiddler instanceof Tiddler) && params[0])
+               {
+               var value = store.getValue(tiddler,params[0]);
+               if(value != undefined)
+                       switch(params[1])
+                               {
+                               case undefined:
+                                       highlightify(value,place,highlightHack);
+                                       break;
+                               case "link":
+                                       createTiddlyLink(place,value,true);
+                                       break;
+                               case "wikified":
+                                       wikify(value,place,highlightHack,tiddler);
+                                       break;
+                               case "date":
+                                       value = Date.convertFromYYYYMMDDHHMM(value);
+                                       if(params[2])
+                                               createTiddlyText(place,value.formatString(params[2]));
+                                       else
+                                               createTiddlyText(place,value);
+                                       break;
+                               }
+               }
+}
+
+config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       var field = params[0];
+       if((tiddler instanceof Tiddler) && field)
+               {
+               story.setDirty(tiddler.title,true);
+               if(field != "text")
+                       {
+                               var e = createTiddlyElement(null,"input");
+                               if(tiddler.isReadOnly())
+                                       e.setAttribute("readOnly","readOnly");
+                               e.setAttribute("edit",field);
+                               e.setAttribute("type","text");
+                               var v = store.getValue(tiddler,field);
+                               if(!v) 
+                                       v = "";
+                               e.value = v;
+                               e.setAttribute("size","40");
+                               e.setAttribute("autocomplete","off");
+                               place.appendChild(e);
+                       }
+               else
+                       {
+                               var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix");
+                               var wrapper2 = createTiddlyElement(wrapper1,"div");
+                               var e = createTiddlyElement(wrapper2,"textarea");
+                               if(tiddler.isReadOnly())
+                                       e.setAttribute("readOnly","readOnly");
+                               var v = store.getValue(tiddler,field);
+                               if(!v) 
+                                       v = "";
+                               e.value = v;
+                               var rows = 10;
+                               var lines = v.match(/\n/mg);
+                               var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);
+                               if(lines != null && lines.length > rows)
+                                       rows = lines.length + 5;
+                               rows = Math.min(rows,maxLines);
+                               e.setAttribute("rows",rows);
+                               e.setAttribute("edit",field);
+                               place.appendChild(wrapper1);
+                       }
+               }
+}
+
+config.macros.tagChooser.onClick = function(e)
+{
+       if(!e) var e = window.event;
+       var lingo = config.views.editor.tagChooser;
+       var popup = Popup.create(this);
+       var tags = store.getTags();
+       if(tags.length == 0)
+               createTiddlyText(createTiddlyElement(popup,"li"),lingo.popupNone);
+       for(var t=0; t<tags.length; t++)
+               {
+               var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tags[t][0],lingo.tagTooltip.format([tags[t][0]]),config.macros.tagChooser.onTagClick);
+               theTag.setAttribute("tag",tags[t][0]);
+               theTag.setAttribute("tiddler", this.getAttribute("tiddler"));
+               }
+       Popup.show(popup,false);
+       e.cancelBubble = true;
+       if(e.stopPropagation) e.stopPropagation();
+       return(false);
+}
+
+config.macros.tagChooser.onTagClick = function(e)
+{
+       if(!e) var e = window.event;
+       var tag = this.getAttribute("tag");
+       var title = this.getAttribute("tiddler");
+       if(!readOnly)
+               story.setTiddlerTag(title,tag,0);
+       return(false);
+}
+
+config.macros.tagChooser.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       if(tiddler instanceof Tiddler)
+               {
+               var title = tiddler.title;
+               var lingo = config.views.editor.tagChooser;
+               var btn = createTiddlyButton(place,lingo.text,lingo.tooltip,this.onClick);
+               btn.setAttribute("tiddler", title);
+               }
+}
+
+// Create a toolbar command button
+// place - parent DOM element
+// command - reference to config.commands[] member -or- name of member
+// tiddler - reference to tiddler that toolbar applies to
+// theClass - the class to give the button
+config.macros.toolbar.createCommand = function(place,commandName,tiddler,theClass)
+{
+       if(typeof commandName != "string")
+               {
+               var c = null;
+               for(var t in config.commands)
+                       if(config.commands[t] == commandName)
+                               c = t;
+               commandName = c;
+               }
+       if((tiddler instanceof Tiddler) && (typeof commandName == "string"))
+               {
+               var title = tiddler.title;
+               var command = config.commands[commandName];
+               var ro = tiddler.isReadOnly();
+               var shadow = store.isShadowTiddler(title) && !store.tiddlerExists(title);
+               var text = ro && command.readOnlyText ? command.readOnlyText : command.text;
+               var tooltip = ro && command.readOnlyTooltip ? command.readOnlyTooltip : command.tooltip;
+               if((!ro || (ro && !command.hideReadOnly)) && !(shadow && command.hideShadow))
+
+                       {
+                       var btn = createTiddlyButton(null,text,tooltip,this.onClickCommand);
+                       btn.setAttribute("commandName", commandName);
+                       btn.setAttribute("tiddler", title);
+                       if(theClass)
+                               addClass(btn,theClass);
+                       place.appendChild(btn);
+                       }
+               }
+}
+
+config.macros.toolbar.onClickCommand = function(e)
+{
+       if(!e) var e = window.event;
+       var command = config.commands[this.getAttribute("commandName")];
+       return command.handler(e,this,this.getAttribute("tiddler"));
+}
+
+// Invoke the first command encountered from a given place that is tagged with a specified class
+config.macros.toolbar.invokeCommand = function(place,theClass,event)
+{
+       var children = place.getElementsByTagName("a")
+       for(var t=0; t<children.length; t++)
+               {
+               var c = children[t];
+               if(hasClass(c,theClass) && c.getAttribute && c.getAttribute("commandName"))
+                       {
+                       if(c.onclick instanceof Function)
+                               c.onclick.call(c,event);
+                       break;
+                       }
+               }
+}
+
+config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       for(var t=0; t<params.length; t++)
+               {
+               var c = params[t];
+               var theClass = "";
+               switch(c.substr(0,1))
+                       {
+                       case "+":
+                               theClass = "defaultCommand";
+                               c = c.substr(1);
+                               break;
+                       case "-":
+                               theClass = "cancelCommand";
+                               c = c.substr(1);
+                               break;
+                       }
+               if(c in config.commands)
+                       this.createCommand(place,c,tiddler,theClass);
+               }
+}
+
+config.macros.plugins.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       var e = createTiddlyElement(place,"div");
+       e.setAttribute("refresh","macro");
+       e.setAttribute("macroName","plugins");
+       e.setAttribute("params",paramString);
+       this.refresh(e,paramString);
+}
+
+config.macros.plugins.refresh = function(place,params)
+{
+       var selectedRows = [];
+       ListView.forEachSelector(place,function(e,rowName) {
+                       if(e.checked)
+                               selectedRows.push(e.getAttribute("rowName"));
+               });
+       removeChildren(place);
+       params = params.parseParams("anon");
+       var plugins = installedPlugins.slice(0);
+       var t,tiddler,p;
+       var configTiddlers = store.getTaggedTiddlers("systemConfig");
+       for(t=0; t<configTiddlers.length; t++)
+               {
+               tiddler = configTiddlers[t];
+               if(plugins.findByField("title",tiddler.title) == null)
+                       {
+                       p = getPluginInfo(tiddler);
+                       p.executed = false;
+                       p.log.splice(0,0,this.skippedText);
+                       plugins.push(p);
+                       }
+               }
+       for(t=0; t<plugins.length; t++)
+               {
+               var p = plugins[t];
+               p.forced = p.tiddler.isTagged("systemConfigForce");
+               p.disabled = p.tiddler.isTagged("systemConfigDisable");
+               p.Selected = selectedRows.indexOf(plugins[t].title) != -1;
+               }
+       if(plugins.length == 0)
+               createTiddlyElement(place,"em",null,null,this.noPluginText);
+       else
+               ListView.create(place,plugins,this.listViewTemplate,this.onSelectCommand);
+}
+
+config.macros.plugins.onSelectCommand = function(command,rowNames)
+{
+       var t;
+       switch(command)
+               {
+               case "remove":
+                       for(t=0; t<rowNames.length; t++)
+                               store.setTiddlerTag(rowNames[t],false,"systemConfig");
+                       break;
+               case "delete":
+                       if(rowNames.length > 0 && confirm(config.macros.plugins.confirmDeleteText.format([rowNames.join(", ")])))
+                               {
+                               for(t=0; t<rowNames.length; t++)
+                                       {
+                                       store.removeTiddler(rowNames[t]);
+                                       story.closeTiddler(rowNames[t],true,false);
+                                       }
+                               }
+                       break;
+               }
+       if(config.options.chkAutoSave)
+               saveChanges(true);
+}
+
+config.macros.refreshDisplay.handler = function(place)
+{
+       createTiddlyButton(place,this.label,this.prompt,this.onClick);
+}
+
+config.macros.refreshDisplay.onClick = function(e)
+{
+       refreshAll();
+       return false;
+}
+
+config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler)
+{
+       if(readOnly)
+               {
+               createTiddlyElement(place,"div",null,"marked",this.readOnlyWarning);
+               return;
+               }
+       var importer = createTiddlyElement(null,"div",null,"importTiddler wizard");
+       createTiddlyElement(importer,"h1",null,null,this.wizardTitle);
+       createTiddlyElement(importer,"h2",null,"step1",this.step1);
+       var step = createTiddlyElement(importer,"div",null,"wizardStep");
+       createTiddlyText(step,this.step1prompt);
+       var input = createTiddlyElement(null,"input",null,"txtOptionInput");
+       input.type = "text";
+       input.size = 50;
+       step.appendChild(input);
+       importer.inputBox = input;
+       createTiddlyElement(step,"br");
+       createTiddlyText(step,this.step1promptFile);
+       var fileInput = createTiddlyElement(null,"input",null,"txtOptionInput");
+       fileInput.type = "file";
+       fileInput.size = 50;
+       fileInput.onchange = this.onBrowseChange;
+       fileInput.onkeyup = this.onBrowseChange;
+       step.appendChild(fileInput);
+       createTiddlyElement(step,"br");
+       createTiddlyText(step,this.step1promptFeeds);
+       var feeds = this.getFeeds([{caption: this.step1feedPrompt, name: ""}]);
+       createTiddlyDropDown(step,this.onFeedChange,feeds);
+       createTiddlyElement(step,"br");
+       createTiddlyButton(step,this.fetchLabel,this.fetchPrompt,this.onFetch,null,null,null);
+        place.appendChild(importer);
+}
+
+config.macros.importTiddlers.getFeeds = function(feeds)
+{
+       var tagged = store.getTaggedTiddlers("contentPublisher","title");
+       for(var t=0; t<tagged.length; t++)
+               feeds.push({caption: tagged[t].title, name: store.getTiddlerSlice(tagged[t].title,"URL")});
+       return feeds;
+}
+
+config.macros.importTiddlers.onFeedChange = function(e)
+{
+       var importer = findRelated(this,"importTiddler","className","parentNode");
+       importer.inputBox.value = this.value;
+       this.selectedIndex = 0;
+}
+
+config.macros.importTiddlers.onBrowseChange = function(e)
+{
+       var importer = findRelated(this,"importTiddler","className","parentNode");
+       importer.inputBox.value = "file://" + this.value;
+}
+
+config.macros.importTiddlers.onFetch = function(e)
+{
+       var importer = findRelated(this,"importTiddler","className","parentNode");
+       var url = importer.inputBox.value;
+       var cutoff = findRelated(importer.firstChild,"step2","className","nextSibling");
+       while(cutoff)
+               {
+               var temp = cutoff.nextSibling;
+               cutoff.parentNode.removeChild(cutoff);
+               cutoff = temp;
+               }
+       createTiddlyElement(importer,"h2",null,"step2",config.macros.importTiddlers.step2);
+       var step = createTiddlyElement(importer,"div",null,"wizardStep",config.macros.importTiddlers.step2Text.format([url]));
+       loadRemoteFile(url,config.macros.importTiddlers.onLoad,importer);
+}
+
+config.macros.importTiddlers.onLoad = function(status,params,responseText,url,xhr)
+{
+       if(!status)
+               {
+               displayMessage(this.fetchError);
+               return;
+               }
+       var importer = params;
+       // Check that the tiddler we're in hasn't been closed - doesn't work on IE
+//     var p = importer;
+//     while(p.parentNode)
+//             p = p.parentNode;
+//     if(!(p instanceof HTMLDocument))
+//             return;
+       // Crack out the content - (should be refactored)
+       var posOpeningDiv = responseText.indexOf(startSaveArea);
+       var limitClosingDiv = responseText.indexOf("<!--POST-BODY-START--"+">");
+       var posClosingDiv = responseText.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? responseText.length : limitClosingDiv);
+       if((posOpeningDiv == -1) || (posClosingDiv == -1))
+               {
+               alert(config.messages.invalidFileError.format([url]));
+               return;
+               }
+       var content = "<html><body>" + responseText.substring(posOpeningDiv,posClosingDiv + endSaveArea.length) + "</body></html>";
+       // Create the iframe
+       var iframe = document.createElement("iframe");
+       iframe.style.display = "none";
+       importer.insertBefore(iframe,importer.firstChild);
+       var doc = iframe.document;
+       if(iframe.contentDocument)
+               doc = iframe.contentDocument; // For NS6
+       else if(iframe.contentWindow)
+               doc = iframe.contentWindow.document; // For IE5.5 and IE6
+       // Put the content in the iframe
+       doc.open();
+       doc.writeln(content);
+       doc.close();
+       // Load the content into a TiddlyWiki() object
+       var storeArea = doc.getElementById("storeArea");
+       var importStore = new TiddlyWiki();
+       importStore.loadFromDiv(storeArea,"store");
+       // Get rid of the iframe
+       iframe.parentNode.removeChild(iframe);
+       // Extract data for the listview
+       var tiddlers = [];
+       importStore.forEachTiddler(function(title,tiddler)
+               {
+               var t = {};
+               t.title = title;
+               t.modified = tiddler.modified;
+               t.modifier = tiddler.modifier;
+               t.text = tiddler.text.substr(0,50);
+               t.tags = tiddler.tags;
+               tiddlers.push(t);
+               });
+       // Display the listview
+       createTiddlyElement(importer,"h2",null,"step3",config.macros.importTiddlers.step3);
+       var step = createTiddlyElement(importer,"div",null,"wizardStep");
+       ListView.create(step,tiddlers,config.macros.importTiddlers.listViewTemplate,config.macros.importTiddlers.onSelectCommand);
+       // Save the importer
+       importer.store = importStore;
+}
+
+config.macros.importTiddlers.onSelectCommand = function(listView,command,rowNames)
+{
+       var importer = findRelated(listView,"importTiddler","className","parentNode");
+       switch(command)
+               {
+               case "import":
+                       config.macros.importTiddlers.doImport(importer,rowNames);
+                       break;
+               }
+       if(config.options.chkAutoSave)
+               saveChanges(true);
+}
+
+config.macros.importTiddlers.doImport = function(importer,rowNames)
+{
+       var theStore = importer.store;
+       var overwrite = new Array();
+       var t;
+       for(t=0; t<rowNames.length; t++)
+               {
+               if(store.tiddlerExists(rowNames[t]))
+                       overwrite.push(rowNames[t]);
+       }
+       if(overwrite.length > 0)
+               if(!confirm(this.confirmOverwriteText.format([overwrite.join(", ")])))
+                       return;
+       for(t=0; t<rowNames.length; t++)
+               {
+               var inbound = theStore.fetchTiddler(rowNames[t]);
+               store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);
+               store.fetchTiddler(inbound.title).created = inbound.created;
+               store.notify(rowNames[t],false);
+               }
+       store.notifyAll();
+       store.setDirty(true);
+       createTiddlyElement(importer,"h2",null,"step4",this.step4.format([rowNames.length]));
+       var step = createTiddlyElement(importer,"div",null,"wizardStep");
+       for(t=0; t<rowNames.length; t++)
+               {
+               createTiddlyLink(step,rowNames[t],true);
+               createTiddlyElement(step,"br");
+               }
+       createTiddlyElement(importer,"h2",null,"step5",this.step5);
+}
+// ---------------------------------------------------------------------------------
+// Menu and toolbar commands
+// ---------------------------------------------------------------------------------
+
+config.commands.closeTiddler.handler = function(event,src,title)
+{
+       story.closeTiddler(title,true,event.shiftKey || event.altKey);
+       return false;
+}
+
+config.commands.closeOthers.handler = function(event,src,title)
+{
+       story.closeAllTiddlers(title);
+       return false;
+}
+
+config.commands.editTiddler.handler = function(event,src,title)
+{
+       clearMessage();
+       story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
+       story.focusTiddler(title,"text");
+       return false;
+}
+
+config.commands.saveTiddler.handler = function(event,src,title)
+{
+       var newTitle = story.saveTiddler(title,event.shiftKey);
+       if(newTitle)
+          story.displayTiddler(null,newTitle);
+       return false;
+}
+
+config.commands.cancelTiddler.handler = function(event,src,title)
+{
+       if(story.hasChanges(title) && !readOnly)
+               if(!confirm(this.warning.format([title])))
+                       return false;
+       story.setDirty(title,false);
+       story.displayTiddler(null,title);
+       return false;
+}
+
+config.commands.deleteTiddler.handler = function(event,src,title)
+{
+       var deleteIt = true;
+       if (config.options.chkConfirmDelete)
+               deleteIt = confirm(this.warning.format([title]));
+       if (deleteIt)
+               {
+               store.removeTiddler(title);
+               story.closeTiddler(title,true,event.shiftKey || event.altKey);
+               if(config.options.chkAutoSave)
+                       saveChanges();
+               }
+       return false;
+}
+
+config.commands.permalink.handler = function(event,src,title)
+{
+       var t = encodeURIComponent(String.encodeTiddlyLink(title));
+       if(window.location.hash != t)
+               window.location.hash = t;
+       return false;
+}
+
+config.commands.references.handler = function(event,src,title)
+{
+       var popup = Popup.create(src);
+       if(popup)
+               {
+               var references = store.getReferringTiddlers(title);
+               var c = false;
+               for(var r=0; r<references.length; r++)
+                       if(references[r].title != title && !references[r].isTagged("excludeLists"))
+                               {
+                               createTiddlyLink(createTiddlyElement(popup,"li"),references[r].title,true);
+                               c = true;
+                               }
+               if(!c)
+                       createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),this.popupNone);
+               }
+       Popup.show(popup,false);
+       event.cancelBubble = true;
+       if (event.stopPropagation) event.stopPropagation();
+       return false;
+}
+
+config.commands.jump.handler = function(event,src,title)
+{
+       var popup = Popup.create(src);
+       if(popup)
+               {
+               story.forEachTiddler(function(title,element) {
+                       createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
+                       });
+               }
+       Popup.show(popup,false);
+       event.cancelBubble = true;
+       if (event.stopPropagation) event.stopPropagation();
+       return false;
+}
+
+// ---------------------------------------------------------------------------------
+// Tiddler() object
+// ---------------------------------------------------------------------------------
+
+function Tiddler()
+{
+       this.title = null;
+       this.text = null;
+       this.modifier = null;
+       this.modified = new Date();
+       this.created = new Date();
+       this.links = [];
+       this.linksUpdated = false;
+       this.tags = [];
+       return this;
+}
+
+Tiddler.prototype.getLinks = function()
+{
+       if(this.linksUpdated==false)
+               this.changed();
+       return this.links;
+}
+
+// Format the text for storage in an RSS item
+Tiddler.prototype.saveToRss = function(url)
+{
+       var s = [];
+       s.push("<item>");
+       s.push("<title" + ">" + this.title.htmlEncode() + "</title" + ">");
+       s.push("<description>" + wikifyStatic(this.text,null,this).htmlEncode() + "</description>");
+       for(var t=0; t<this.tags.length; t++)
+               s.push("<category>" + this.tags[t] + "</category>");
+       s.push("<link>" + url + "#" + encodeURIComponent(String.encodeTiddlyLink(this.title)) + "</link>");
+       s.push("<pubDate>" + this.modified.toGMTString() + "</pubDate>");
+       s.push("</item>");
+       return(s.join("\n"));
+}
+
+// Change the text and other attributes of a tiddler
+Tiddler.prototype.set = function(title,text,modifier,modified,tags,created,fields)
+{
+       this.assign(title,text,modifier,modified,tags,created,fields);
+       this.changed();
+       return this;
+}
+
+// Change the text and other attributes of a tiddler without triggered a tiddler.changed() call
+Tiddler.prototype.assign = function(title,text,modifier,modified,tags,created,fields)
+{
+       if(title != undefined)
+               this.title = title;
+       if(text != undefined)
+               this.text = text;
+       if(modifier != undefined)
+               this.modifier = modifier;
+       if(modified != undefined)
+               this.modified = modified;
+       if(created != undefined)
+               this.created = created;
+       if(fields != undefined)
+               this.fields = fields;
+       if(tags != undefined)
+               this.tags = (typeof tags == "string") ? tags.readBracketedList() : tags;
+       else if(this.tags == undefined)
+               this.tags = [];
+       return this;
+}
+
+// Get the tags for a tiddler as a string (space delimited, using [[brackets]] for tags containing spaces)
+Tiddler.prototype.getTags = function()
+{
+       return String.encodeTiddlyLinkList(this.tags);
+}
+
+// Test if a tiddler carries a tag
+Tiddler.prototype.isTagged = function(tag)
+{
+       return this.tags.indexOf(tag) != -1;
+}
+
+// Static method to convert "\n" to newlines, "\s" to "\"
+Tiddler.unescapeLineBreaks = function(text)
+{
+       return text ? text.unescapeLineBreaks() : "";
+}
+
+// Convert newlines to "\n", "\" to "\s"
+Tiddler.prototype.escapeLineBreaks = function()
+{
+       return this.text.escapeLineBreaks();
+}
+
+// Updates the secondary information (like links[] array) after a change to a tiddler
+Tiddler.prototype.changed = function()
+{
+       this.links = [];
+       var t = this.autoLinkWikiWords() ? 0 : 1;
+       var tiddlerLinkRegExp = t==0 ? config.textPrimitives.tiddlerAnyLinkRegExp : config.textPrimitives.tiddlerForcedLinkRegExp;
+       tiddlerLinkRegExp.lastIndex = 0;
+       var formatMatch = tiddlerLinkRegExp.exec(this.text);
+       while(formatMatch)
+               {
+               if(t==0 && formatMatch[1] && formatMatch[1] != this.title) // wikiWordLink
+                       {
+                       if(formatMatch.index > 0)
+                               {
+                               var preRegExp = new RegExp(config.textPrimitives.unWikiLink+"|"+config.textPrimitives.anyLetter,"mg");
+                               preRegExp.lastIndex = formatMatch.index-1;
+                               var preMatch = preRegExp.exec(this.text);
+                               if(preMatch.index != formatMatch.index-1)
+                                       this.links.pushUnique(formatMatch[1]);
+                               }
+                       else
+                               this.links.pushUnique(formatMatch[1]);
+                       }
+               else if(formatMatch[2-t] && (store.tiddlerExists(formatMatch[3-t]) || store.isShadowTiddler(formatMatch[3-t]))) // titledBrackettedLink
+                       this.links.pushUnique(formatMatch[3-t]);
+               else if(formatMatch[4-t] && formatMatch[4-t] != this.title) // brackettedLink
+                       this.links.pushUnique(formatMatch[4-t]);
+               // Do not add link if match urlPattern (formatMatch[5-t])
+               formatMatch = tiddlerLinkRegExp.exec(this.text);
+               }
+       this.linksUpdated = true;
+       return;
+}
+
+Tiddler.prototype.getSubtitle = function()
+{
+       var theModifier = this.modifier;
+       if(!theModifier)
+               theModifier = config.messages.subtitleUnknown;
+       var theModified = this.modified;
+       if(theModified)
+               theModified = theModified.toLocaleString();
+       else
+               theModified = config.messages.subtitleUnknown;
+       return(config.messages.tiddlerLinkTooltip.format([this.title,theModifier,theModified]));
+}
+
+Tiddler.prototype.isReadOnly = function()
+{
+       return readOnly;
+}
+
+Tiddler.prototype.autoLinkWikiWords = function()
+{
+       return !(this.isTagged("systemConfig") || this.isTagged("excludeMissing"));
+}
+
+Tiddler.prototype.generateFingerprint = function()
+{
+       return "0x" + Crypto.hexSha1Str(this.text);
+}
+
+// ---------------------------------------------------------------------------------
+// TiddlyWiki() object contains Tiddler()s
+// ---------------------------------------------------------------------------------
+
+function TiddlyWiki()
+{
+       var tiddlers = {}; // Hashmap by name of tiddlers
+       this.tiddlersUpdated = false;
+       this.namedNotifications = []; // Array of {name:,notify:} of notification functions
+       this.notificationLevel = 0;
+       this.slices = {}; // map tiddlerName->(map sliceName->sliceValue). Lazy.
+       this.clear = function() {
+               tiddlers = {};
+               this.setDirty(false);
+               };
+       this.fetchTiddler = function(title) {
+               return tiddlers[title];
+               };
+       this.deleteTiddler = function(title) {
+               delete this.slices[title];
+               delete tiddlers[title];
+               };
+       this.addTiddler = function(tiddler) {
+               delete this.slices[tiddler.title];
+               tiddlers[tiddler.title] = tiddler;
+               };
+       this.forEachTiddler = function(callback) {
+               for(var t in tiddlers)
+                       {
+                       var tiddler = tiddlers[t];
+                       if(tiddler instanceof Tiddler)
+                               callback.call(this,t,tiddler);
+                       }
+               };
+}
+
+// Set the dirty flag
+TiddlyWiki.prototype.setDirty = function(dirty)
+{
+       this.dirty = dirty;
+}
+
+TiddlyWiki.prototype.isDirty = function()
+{
+       return this.dirty;
+}
+
+TiddlyWiki.prototype.suspendNotifications = function()
+{
+       this.notificationLevel--;
+}
+
+TiddlyWiki.prototype.resumeNotifications = function()
+{
+       this.notificationLevel++;
+}
+
+// Invoke the notification handlers for a particular tiddler
+TiddlyWiki.prototype.notify = function(title,doBlanket)
+{
+       if(!this.notificationLevel)
+               for(var t=0; t<this.namedNotifications.length; t++)
+                       {
+                       var n = this.namedNotifications[t];
+                       if((n.name == null && doBlanket) || (n.name == title))
+                               n.notify(title);
+                       }
+}
+
+// Invoke the notification handlers for all tiddlers
+TiddlyWiki.prototype.notifyAll = function()
+{
+       if(!this.notificationLevel)
+               for(var t=0; t<this.namedNotifications.length; t++)
+                       {
+                       var n = this.namedNotifications[t];
+                       if(n.name)
+                               n.notify(n.name);
+                       }
+}
+
+// Add a notification handler to a tiddler
+TiddlyWiki.prototype.addNotification = function(title,fn)
+{
+       for (var i=0; i<this.namedNotifications.length; i++)
+               if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))
+                       return this;
+       this.namedNotifications.push({name: title, notify: fn});
+       return this;
+}
+
+TiddlyWiki.prototype.removeTiddler = function(title)
+{
+       var tiddler = this.fetchTiddler(title);
+       if(tiddler)
+               {
+               this.deleteTiddler(title);
+               this.notify(title,true);
+               this.setDirty(true);
+               }
+}
+
+TiddlyWiki.prototype.tiddlerExists = function(title)
+{
+       var t = this.fetchTiddler(title);
+       return (t != undefined);
+}
+
+TiddlyWiki.prototype.isShadowTiddler = function(title)
+{
+       return typeof config.shadowTiddlers[title] == "string";
+}
+
+TiddlyWiki.prototype.getTiddler = function(title)
+{
+       var t = this.fetchTiddler(title);
+       if(t != undefined)
+               return t;
+       else
+               return null;
+}
+
+TiddlyWiki.prototype.getTiddlerText = function(title,defaultText)
+{
+       var tiddler = this.fetchTiddler(title);
+       if(tiddler)
+               return tiddler.text;
+       if(!title)
+               return defaultText;
+       var pos = title.indexOf(config.textPrimitives.sliceSeparator);
+       if(pos != -1)
+               {
+               var slice = this.getTiddlerSlice(title.substr(0,pos),title.substr(pos + config.textPrimitives.sliceSeparator.length));
+               if(slice)
+                       return slice;
+               }
+       if(this.isShadowTiddler(title))
+               return config.shadowTiddlers[title];
+       if(defaultText != undefined)
+               return defaultText;
+       return null;
+}
+
+TiddlyWiki.prototype.slicesRE = /(?:[\'\/]*~?(\w+)[\'\/]*\:[\'\/]*\s*(.*?)\s*$)|(?:\|[\'\/]*~?(\w+)\:?[\'\/]*\|\s*(.*?)\s*\|)/gm
+
+// @internal
+TiddlyWiki.prototype.calcAllSlices = function(title) 
+{
+       var slices = {};
+       var text = this.getTiddlerText(title,"");
+       this.slicesRE.lastIndex = 0;
+       do 
+               {
+                       var m = this.slicesRE.exec(text);
+                       if (m) 
+                               {
+                                       if (m[1])
+                                               slices[m[1]] = m[2];
+                                       else
+                                               slices[m[3]] = m[4];
+                               }
+               }
+       while(m);
+       return slices;
+}
+
+// Returns the slice of text of the given name
+//#
+//# A text slice is a substring in the tiddler's text that is defined
+//# either like this
+//#    aName:  textSlice
+//# or
+//#    |aName:| textSlice |
+//# or
+//#    |aName| textSlice |
+//#
+//# In the text the name (or name:) may be decorated with '' or //. I.e.
+//# this would also a possible text slice:
+//#
+//#    |''aName:''| textSlice |
+//#
+//# @param name should only contain "word characters" (i.e. "a-ZA-Z_0-9")
+//# @return [may be undefined] the (trimmed) text of the specified slice.
+TiddlyWiki.prototype.getTiddlerSlice = function(title,sliceName)
+{
+       var slices = this.slices[title];
+       if (!slices) {
+               slices = this.calcAllSlices(title);
+               this.slices[title] = slices;
+       }
+       return slices[sliceName];
+}
+
+// Build an hashmap of the specified named slices of a tiddler
+TiddlyWiki.prototype.getTiddlerSlices = function(title,sliceNames)
+{
+       var r = {};
+       for(var t=0; t<sliceNames.length; t++)
+               {
+               var slice = this.getTiddlerSlice(title,sliceNames[t]);
+               if(slice)
+                       r[sliceNames[t]] = slice;
+               }
+       return r;
+}
+
+TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth)
+{
+       var bracketRegExp = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])","mg");
+       var text = this.getTiddlerText(title,null);
+       if(text == null)
+               return defaultText;
+       var textOut = [];
+       var lastPos = 0;
+       do {
+               var match = bracketRegExp.exec(text);
+               if(match)
+                       {
+                       textOut.push(text.substr(lastPos,match.index-lastPos));
+                       if(match[1])
+                               {
+                               if(depth <= 0)
+                                       textOut.push(match[1]);
+                               else
+                                       textOut.push(this.getRecursiveTiddlerText(match[1],"[[" + match[1] + "]]",depth-1));
+                               }
+                       lastPos = match.index + match[0].length;
+                       }
+               else
+                       textOut.push(text.substr(lastPos));
+       } while(match);
+       return(textOut.join(""));
+}
+
+TiddlyWiki.prototype.setTiddlerTag = function(title,status,tag)
+{
+       var tiddler = this.fetchTiddler(title);
+       if(tiddler)
+               {
+               var t = tiddler.tags.indexOf(tag);
+               if(t != -1)
+                       tiddler.tags.splice(t,1);
+               if(status)
+                       tiddler.tags.push(tag);
+               tiddler.changed();
+               this.notify(title,true);
+               this.setDirty(true);
+               }
+}
+
+TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields)
+{
+       var tiddler = this.fetchTiddler(title);
+       var created;
+       if(tiddler)
+               {
+               created = tiddler.created; // Preserve created date
+               this.deleteTiddler(title);
+               }
+       else
+               {
+               tiddler = new Tiddler();
+               created = modified;
+               }
+       tiddler.set(newTitle,newBody,modifier,modified,tags,created,fields);
+       this.addTiddler(tiddler);
+       if(title != newTitle)
+               this.notify(title,true);
+       this.notify(newTitle,true);
+       this.setDirty(true);
+       return tiddler;
+}
+
+TiddlyWiki.prototype.createTiddler = function(title)
+{
+       var tiddler = this.fetchTiddler(title);
+       if(!tiddler)
+               {
+               tiddler = new Tiddler();
+               tiddler.title = title;
+               this.addTiddler(tiddler);
+               this.setDirty(true);
+               }
+       return tiddler;
+}
+
+// Load contents of a tiddlywiki from an HTML DIV
+TiddlyWiki.prototype.loadFromDiv = function(src,idPrefix,noUpdate)
+{
+       this.idPrefix = idPrefix;
+       var storeElem = (typeof src == "string") ? document.getElementById(src) : src;
+       var tiddlers = this.getLoader().loadTiddlers(this,storeElem.childNodes);
+       this.setDirty(false);
+       if(!noUpdate)
+               {
+               for(var i = 0;i<tiddlers.length; i++)
+                       tiddlers[i].changed();
+               }
+}
+
+TiddlyWiki.prototype.updateTiddlers = function()
+{
+       this.tiddlersUpdated = true;
+       this.forEachTiddler(function(title,tiddler) {
+               tiddler.changed();
+               });
+}
+
+// Return all tiddlers formatted as an HTML string
+TiddlyWiki.prototype.allTiddlersAsHtml = function()
+{
+       return store.getSaver().externalize(store);
+}
+
+// Return an array of tiddlers matching a search regular expression
+TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
+{
+       var candidates = this.reverseLookup("tags",excludeTag,false);
+       var results = [];
+       for(var t=0; t<candidates.length; t++)
+               {
+               if((candidates[t].title.search(searchRegExp) != -1) || (candidates[t].text.search(searchRegExp) != -1))
+                       results.push(candidates[t]);
+               }
+       if(!sortField)
+               sortField = "title";
+       results.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
+       return results;
+}
+
+// Return an array of all the tags in use. Each member of the array is another array where [0] is the name of the tag and [1] is the number of occurances
+TiddlyWiki.prototype.getTags = function()
+{
+       var results = [];
+       this.forEachTiddler(function(title,tiddler) {
+               for(var g=0; g<tiddler.tags.length; g++)
+                       {
+                       var tag = tiddler.tags[g];
+                       var f = false;
+                       for(var c=0; c<results.length; c++)
+                               if(results[c][0] == tag)
+                                       {
+                                       f = true;
+                                       results[c][1]++;
+                                       }
+                       if(!f)
+                               results.push([tag,1]);
+                       }
+               });
+       results.sort(function(a,b) {return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : (a[0].toLowerCase() == b[0].toLowerCase() ? 0 : +1);});
+       return results;
+}
+
+// Return an array of the tiddlers that are tagged with a given tag
+TiddlyWiki.prototype.getTaggedTiddlers = function(tag,sortField)
+{
+       return this.reverseLookup("tags",tag,true,sortField);
+}
+
+// Return an array of the tiddlers that link to a given tiddler
+TiddlyWiki.prototype.getReferringTiddlers = function(title,unusedParameter,sortField)
+{
+       if(!this.tiddlersUpdated)
+               this.updateTiddlers();
+       return this.reverseLookup("links",title,true,sortField);
+}
+
+// Return an array of the tiddlers that do or do not have a specified entry in the specified storage array (ie, "links" or "tags")
+// lookupMatch == true to match tiddlers, false to exclude tiddlers
+TiddlyWiki.prototype.reverseLookup = function(lookupField,lookupValue,lookupMatch,sortField)
+{
+       var results = [];
+       this.forEachTiddler(function(title,tiddler) {
+               var f = !lookupMatch;
+               for(var lookup=0; lookup<tiddler[lookupField].length; lookup++)
+                       if(tiddler[lookupField][lookup] == lookupValue)
+                               f = lookupMatch;
+               if(f)
+                       results.push(tiddler);
+               });
+       if(!sortField)
+               sortField = "title";
+       results.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
+       return results;
+}
+
+// Return the tiddlers as a sorted array
+TiddlyWiki.prototype.getTiddlers = function(field,excludeTag)
+{
+       var results = [];
+       this.forEachTiddler(function(title,tiddler) {
+               if(excludeTag == undefined || !tiddler.isTagged(excludeTag))
+                       results.push(tiddler);
+               });
+       if(field)
+               results.sort(function(a,b) {return a[field] < b[field] ? -1 : (a[field] == b[field] ? 0 : +1);});
+       return results;
+}
+
+// Return array of names of tiddlers that are referred to but not defined
+TiddlyWiki.prototype.getMissingLinks = function(sortField)
+{
+       if(!this.tiddlersUpdated)
+               this.updateTiddlers();
+       var results = [];
+       this.forEachTiddler(function (title,tiddler) {
+               for(var n=0; n<tiddler.links.length;n++)
+                       {
+                       var link = tiddler.links[n];
+                       if(this.fetchTiddler(link) == null && !this.isShadowTiddler(link))
+                               results.pushUnique(link);
+                       }
+               });
+       results.sort();
+       return results;
+}
+
+// Return an array of names of tiddlers that are defined but not referred to
+TiddlyWiki.prototype.getOrphans = function()
+{
+       var results = [];
+       this.forEachTiddler(function (title,tiddler) {
+               if(this.getReferringTiddlers(title).length == 0 && !tiddler.isTagged("excludeLists"))
+                       results.push(title);
+               });
+       results.sort();
+       return results;
+}
+
+// Return an array of names of all the shadow tiddlers
+TiddlyWiki.prototype.getShadowed = function()
+{
+       var results = [];
+       for(var t in config.shadowTiddlers)
+               if(typeof config.shadowTiddlers[t] == "string")
+                       results.push(t);
+       results.sort();
+       return results;
+}
+
+// Resolves a Tiddler reference or tiddler title into a Tiddler object, or null if it doesn't exist
+TiddlyWiki.prototype.resolveTiddler = function(tiddler) 
+{
+       var t = (typeof tiddler == 'string') ? this.getTiddler(tiddler) : tiddler;
+       return t instanceof Tiddler ? t : null;
+}
+
+TiddlyWiki.prototype.getLoader = function() 
+{
+       if (!this.loader) 
+               this.loader = new TW21Loader();
+       return this.loader;
+}
+TiddlyWiki.prototype.getSaver = function() 
+{
+       if (!this.saver) 
+               this.saver = new TW21Saver();
+       return this.saver;
+}
+
+// Returns true if path is a valid field name (path),
+// i.e. a sequence of identifiers, separated by '.'
+TiddlyWiki.isValidFieldName = function (name) {
+       var match = /[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)*/.exec(name);
+       return match && (match[0] == name);
+}
+
+// Throws an exception when name is not a valid field name.
+TiddlyWiki.checkFieldName = function(name) {
+       if (!TiddlyWiki.isValidFieldName(name))
+               throw config.messages.invalidFieldName.format([name]);
+}
+
+function StringFieldAccess(n, readOnly) {
+       this.set = readOnly 
+               ? function(t,v) {if (v != t[n]) throw config.messages.fieldCannotBeChanged.format([n]);}
+               : function(t,v) {if (v != t[n]) {t[n] = v; return true;}};
+       this.get = function(t) {return t[n];};
+}
+
+function DateFieldAccess(n) {
+       this.set = function(t,v) {
+                       var d = v instanceof Date ? v : Date.convertFromYYYYMMDDHHMM(v); 
+                       if (d != t[n]) {
+                               t[n] = d; return true;
+                       }
+               };
+       this.get = function(t)   {return t[n].convertToYYYYMMDDHHMM();}
+}
+
+function LinksFieldAccess(n) {
+       this.set = function(t,v) {
+                       var s = (typeof v == "string") ? v.readBracketedList() : v; 
+                       if (s.toString() != t[n].toString()) {
+                               t[n] = s; return true;
+                       }
+               };
+       this.get = function(t)   {return String.encodeTiddlyLinkList(t[n]);}
+}
+
+TiddlyWiki.standardFieldAccess = {
+       // The set functions return true when setting the data has changed the value.
+       
+       "title":    new StringFieldAccess("title", true),
+       // Handle the "tiddler" field name as the title
+       "tiddler":  new StringFieldAccess("title", true),
+       
+       "text":     new StringFieldAccess("text"),
+       "modifier": new StringFieldAccess("modifier"),
+       "modified": new DateFieldAccess("modified"),
+       "created":  new DateFieldAccess("created"),
+       "tags":     new LinksFieldAccess("tags")
+};
+
+TiddlyWiki.isStandardField = function(name) {
+       return TiddlyWiki.standardFieldAccess[name] != undefined;
+}
+
+// Sets the value of the given field of the tiddler to the value. 
+// Setting an ExtendedField's value to null or undefined removes the field. 
+// Setting a namespace to undefined removes all fields of that namespace.
+// The fieldName is case-insensitive.
+// All values will be converted to a string value.
+TiddlyWiki.prototype.setValue = function(tiddler, fieldName, value) {
+       TiddlyWiki.checkFieldName(fieldName);
+       var t = this.resolveTiddler(tiddler);
+       if (!t)
+               return;
+               
+       fieldName = fieldName.toLowerCase();
+
+       var isRemove = (value === undefined) || (value === null);
+
+       if (!t.fields) 
+               t.fields = {};
+               
+       var accessor = TiddlyWiki.standardFieldAccess[fieldName];
+       if (accessor) {
+               if (isRemove)
+                       // don't remove StandardFields
+                       return;
+               var h = TiddlyWiki.standardFieldAccess[fieldName];
+               if (!h.set(t, value))
+                       return;
+
+       } else {
+               var oldValue = t.fields[fieldName];
+               
+               if (isRemove) {
+                       if (oldValue !== undefined) {
+                               // deletes a single field
+                               delete t.fields[fieldName];
+                       } else {
+                               // no concrete value is defined for the fieldName
+                               // so we guess this is a namespace path.
+                               
+                               // delete all fields in a namespace
+                               var re = new RegExp('^'+fieldName+'\\.');
+                               var dirty = false;
+                               for (var n in t.fields) {
+                                       if (n.match(re)) {
+                                               delete t.fields[n];
+                                               dirty = true;
+                                       }
+                               }
+                               if (!dirty)
+                                       return
+                       }
+                               
+               } else {
+                       // the "normal" set case. value is defined (not null/undefined)
+                       // For convenience provide a nicer conversion Date->String
+                       value = value instanceof Date 
+                               ? value.convertToYYYYMMDDHHMMSSMMM() 
+                               : String(value);
+                       if (oldValue == value) 
+                               return;
+                       t.fields[fieldName] = value;
+               }
+       }
+       
+       // When we are here the tiddler/store really was changed.
+       this.notify(t.title,true);
+       if (!fieldName.match(/^temp\./))
+               this.setDirty(true);
+}
+
+// Returns the value of the given field of the tiddler. 
+// The fieldName is case-insensitive.
+// Will only return String values (or undefined).
+TiddlyWiki.prototype.getValue = function(tiddler, fieldName) {
+       var t = this.resolveTiddler(tiddler);
+       if (!t)
+               return undefined;
+
+       fieldName = fieldName.toLowerCase();
+
+       var accessor = TiddlyWiki.standardFieldAccess[fieldName];
+       if (accessor) {
+               return accessor.get(t);
+       }
+       
+       return t.fields ? t.fields[fieldName] : undefined;
+}
+
+// Calls the callback function for every field in the tiddler.
+//
+// When callback function returns a non-false value the iteration stops 
+// and that value is returned. 
+//
+// The order of the fields is not defined.
+// 
+// @param callback a function(tiddler, fieldName, value). 
+// 
+TiddlyWiki.prototype.forEachField = function(tiddler, callback, onlyExtendedFields) {
+       var t = this.resolveTiddler(tiddler);
+       if (!t)
+               return undefined;
+       
+       if (t.fields) {
+               for (var n in t.fields) {
+                       var result = callback(t, n, t.fields[n]);
+                       if (result)
+                               return result;
+               }
+       }
+       
+       if (onlyExtendedFields)
+               return undefined;
+
+       for (var n in TiddlyWiki.standardFieldAccess) {
+               if (n == "tiddler")
+                       // even though the "title" field can also be referenced through the name "tiddler"
+                       // we only visit this field once.
+                       continue;
+                       
+               var result = callback(t, n, TiddlyWiki.standardFieldAccess[n].get(t));
+               if (result)
+                       return result;
+       }
+
+       return undefined;
+};
+// ---------------------------------------------------------------------------------
+// Story functions
+// ---------------------------------------------------------------------------------
+
+// A story is a HTML div containing a sequence of tiddlers that can be manipulated
+// container - id of containing element
+// idPrefix - string prefix prepended to title to make ids for tiddlers in this story
+function Story(container,idPrefix)
+{
+       this.container = container;
+       this.idPrefix = idPrefix;
+       this.highlightRegExp = null;
+}
+
+// Iterate through all the tiddlers in a story
+// fn - callback function to be called for each tiddler. Arguments are:
+//             tiddler - reference to Tiddler object
+//             element - reference to tiddler display element
+Story.prototype.forEachTiddler = function(fn)
+{
+       var place = document.getElementById(this.container);
+       if(!place)
+               return;
+       var e = place.firstChild;
+       while(e)
+               {
+               var n = e.nextSibling;
+               var title = e.getAttribute("tiddler");
+               fn.call(this,title,e);
+               e = n;
+               }
+}
+
+// Display several tiddlers given their titles in an array. Parameters same as displayTiddler(), except:
+// titles - array of string titles
+Story.prototype.displayTiddlers = function(srcElement,titles,template,animate,slowly)
+{
+       for(var t = titles.length-1;t>=0;t--)
+               this.displayTiddler(srcElement,titles[t],template,animate,slowly);
+}
+
+// Display a given tiddler with a given template. If the tiddler is already displayed but with a different
+// template, it is switched to the specified template
+// srcElement - reference to element from which this one is being opened -or-
+//              special positions "top", "bottom"
+// title - title of tiddler to display
+// template - the name of the tiddler containing the template -or-
+//                       one of the constants DEFAULT_VIEW_TEMPLATE and DEFAULT_EDIT_TEMPLATE -or-
+//                       null or undefined to indicate the current template if there is one, DEFAULT_VIEW_TEMPLATE if not
+// animate - whether to perform animations
+// slowly - whether to perform animations in slomo
+Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
+{
+       var place = document.getElementById(this.container);
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem)
+               this.refreshTiddler(title,template);
+       else
+               {
+               var before = this.positionTiddler(srcElement);
+               tiddlerElem = this.createTiddler(place,before,title,template);
+               }
+       if(srcElement && typeof srcElement !== "string")
+               {
+               if(anim && config.options.chkAnimate && (animate == undefined || animate == true))
+                       anim.startAnimating(new Cascade(title,srcElement,tiddlerElem,slowly),new Scroller(tiddlerElem,slowly));
+               else
+                       window.scrollTo(0,ensureVisible(tiddlerElem));
+               }
+}
+
+// Figure out the appropriate position for a newly opened tiddler
+// srcElement - reference to the element containing the link to the tiddler -or-
+//              special positions "top", "bottom"
+// returns - reference to the tiddler that the new one should appear before (null for the bottom of the story)
+Story.prototype.positionTiddler = function(srcElement)
+{
+       var place = document.getElementById(this.container);
+       var before;
+       if(typeof srcElement == "string")
+               {
+               switch(srcElement)
+                       {
+                       case "top":
+                               before = place.firstChild;
+                               break;
+                       case "bottom":
+                               before = null;
+                               break;
+                       }
+               }
+       else
+               {
+               var after = this.findContainingTiddler(srcElement);
+               if(after == null)
+                       before = place.firstChild;
+               else if(after.nextSibling)
+                       before = after.nextSibling;
+               else
+                       before = null;
+               }
+       return before;
+}
+
+// Create a tiddler frame at the appropriate place in a story column
+// place - reference to parent element
+// before - null, or reference to element before which to insert new tiddler
+// title - title of new tiddler
+// template - the name of the tiddler containing the template or one of the constants DEFAULT_VIEW_TEMPLATE and DEFAULT_EDIT_TEMPLATE
+Story.prototype.createTiddler = function(place,before,title,template)
+{
+       var tiddlerElem = createTiddlyElement(null,"div",this.idPrefix + title,"tiddler");
+       tiddlerElem.setAttribute("refresh","tiddler");
+       place.insertBefore(tiddlerElem,before);
+       this.refreshTiddler(title,template);
+       return tiddlerElem;
+}
+
+// Overridable for choosing the name of the template to apply for a tiddler
+Story.prototype.chooseTemplateForTiddler = function(title,template)
+{
+       if(!template)
+               template = DEFAULT_VIEW_TEMPLATE;
+       if(template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE)
+               template = config.tiddlerTemplates[template];
+       return template;
+}
+
+// Overridable for extracting the text of a template from a tiddler
+Story.prototype.getTemplateForTiddler = function(title,template,tiddler)
+{
+       return store.getRecursiveTiddlerText(template,null,10);
+}
+
+// Apply a template to an existing tiddler if it is not already displayed using that template
+// title - title of tiddler to update
+// template - the name of the tiddler containing the template or one of the constants DEFAULT_VIEW_TEMPLATE and DEFAULT_EDIT_TEMPLATE
+// force - if true, forces the refresh even if the template hasn't changedd
+Story.prototype.refreshTiddler = function(title,template,force)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem)
+               {
+               if(tiddlerElem.getAttribute("dirty") == "true" && !force)
+                       return tiddlerElem;
+               template = this.chooseTemplateForTiddler(title,template);
+               var currTemplate = tiddlerElem.getAttribute("template");
+               if((template != currTemplate) || force)
+                       {
+                       var tiddler = store.getTiddler(title);
+                       if(!tiddler)
+                               {
+                               tiddler = new Tiddler();
+                               if(store.isShadowTiddler(title))
+                                       tiddler.set(title,store.getTiddlerText(title),config.views.wikified.shadowModifier,version.date,[],version.date);
+                               else
+                                       {
+                                       var text = template=="EditTemplate"
+                                                               ? config.views.editor.defaultText.format([title])
+                                                               : config.views.wikified.defaultText.format([title]);
+                                       tiddler.set(title,text,config.views.wikified.defaultModifier,version.date,[],version.date);
+                                       }
+                               }
+                       tiddlerElem.setAttribute("tags",tiddler.tags.join(" "));
+                       tiddlerElem.setAttribute("tiddler",title);
+                       tiddlerElem.setAttribute("template",template);
+                       var me = this;
+                       tiddlerElem.onmouseover = this.onTiddlerMouseOver;
+                       tiddlerElem.onmouseout = this.onTiddlerMouseOut;
+                       tiddlerElem.ondblclick = this.onTiddlerDblClick;
+                       tiddlerElem[window.event?"onkeydown":"onkeypress"] = this.onTiddlerKeyPress;
+                       var html = this.getTemplateForTiddler(title,template,tiddler);
+                       tiddlerElem.innerHTML = html;
+                       applyHtmlMacros(tiddlerElem,tiddler);
+                       if(store.getTaggedTiddlers(title).length > 0)
+                               addClass(tiddlerElem,"isTag");
+                       else
+                               removeClass(tiddlerElem,"isTag");
+                       if(!store.tiddlerExists(title))
+                               {
+                               if(store.isShadowTiddler(title))
+                                       addClass(tiddlerElem,"shadow");
+                               else
+                                       addClass(tiddlerElem,"missing");
+                               }
+                       else
+                               {
+                               removeClass(tiddlerElem,"shadow");
+                               removeClass(tiddlerElem,"missing");
+                               }
+                       }
+               }
+       return tiddlerElem;
+}
+
+// Refresh all tiddlers in the Story
+Story.prototype.refreshAllTiddlers = function() 
+{
+       var place = document.getElementById(this.container);
+       var e = place.firstChild;
+       if(!e)
+               return;
+       this.refreshTiddler(e.getAttribute("tiddler"),e.getAttribute("template"),true);
+       while((e = e.nextSibling) != null) 
+               this.refreshTiddler(e.getAttribute("tiddler"),e.getAttribute("template"),true);
+}
+
+// Default tiddler onmouseover/out event handlers
+Story.prototype.onTiddlerMouseOver = function(e)
+{
+       if(window.addClass instanceof Function)
+               addClass(this,"selected");
+}
+
+Story.prototype.onTiddlerMouseOut = function(e)
+{
+       if(window.removeClass instanceof Function)
+               removeClass(this,"selected");
+}
+
+// Default tiddler ondblclick event handler
+Story.prototype.onTiddlerDblClick = function(e)
+{
+       if(!e) var e = window.event;
+       var theTarget = resolveTarget(e);
+       if(theTarget && theTarget.nodeName.toLowerCase() != "input" && theTarget.nodeName.toLowerCase() != "textarea")
+               {
+               if(document.selection && document.selection.empty)
+                       document.selection.empty();
+               config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
+               e.cancelBubble = true;
+               if (e.stopPropagation) e.stopPropagation();
+               return true;
+               }
+       else
+               return false;
+}
+
+Story.prototype.onTiddlerKeyPress = function(e)
+{
+       if(!e) var e = window.event;
+       clearMessage();
+       var consume = false; 
+       var title = this.getAttribute("tiddler");
+       var target = resolveTarget(e);
+       switch(e.keyCode)
+               {
+               case 9: // Tab
+                       if(config.options.chkInsertTabs && target.tagName.toLowerCase() == "textarea")
+                               {
+                               replaceSelection(target,String.fromCharCode(9));
+                               consume = true; 
+                               }
+                       if(config.isOpera)
+                               {
+                               target.onblur = function()
+                                       {
+                                       this.focus();
+                                       this.onblur = null;
+                                       }
+                               }
+                       break;
+               case 13: // Ctrl-Enter
+               case 10: // Ctrl-Enter on IE PC
+               case 77: // Ctrl-Enter is "M" on some platforms
+                       if(e.ctrlKey)
+                               {
+                               blurElement(this);
+                               config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
+                               consume = true;
+                               }
+                       break; 
+               case 27: // Escape
+                       blurElement(this);
+                       config.macros.toolbar.invokeCommand(this,"cancelCommand",e);
+                       consume = true;
+                       break;
+               }
+       e.cancelBubble = consume;
+       if(consume)
+               {
+               if(e.stopPropagation) e.stopPropagation(); // Stop Propagation
+               e.returnValue = true; // Cancel The Event in IE
+               if(e.preventDefault ) e.preventDefault(); // Cancel The Event in Moz
+               }
+       return(!consume);
+};
+
+// Returns the specified field (input or textarea element) in a tiddler, otherwise the first edit field it finds
+// or null if it found no edit field at all
+Story.prototype.getTiddlerField = function(title,field)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       var e = null;
+       if(tiddlerElem != null)
+               {
+               var children = tiddlerElem.getElementsByTagName("*");
+               for (var t=0; t<children.length; t++)
+                       {
+                       var c = children[t];
+                       if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")
+                               {
+                               if(!e)
+                                       e = c;
+                               if(c.getAttribute("edit") == field)
+                                       e = c;
+                               }
+                       }
+               }
+       return e;
+}
+
+// Focus a specified tiddler. Attempts to focus the specified field, otherwise the first edit field it finds
+Story.prototype.focusTiddler = function(title,field)
+{
+       var e = this.getTiddlerField(title,field);
+       if(e)
+               {
+               e.focus();
+               e.select();
+               }
+}
+
+// Ensures that a specified tiddler does not have the focus
+Story.prototype.blurTiddler = function(title)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem != null && tiddlerElem.focus && tiddlerElem.blur)
+               {
+               tiddlerElem.focus();
+               tiddlerElem.blur();
+               }
+}
+
+// Adds a specified value to the edit controls (if any) of a particular
+// array-formatted field of a particular tiddler (eg "tags")
+//  title - name of tiddler
+//  tag - value of field, without any [[brackets]]
+//  mode - +1 to add the tag, -1 to remove it, 0 to toggle it
+//  field - name of field (eg "tags")
+Story.prototype.setTiddlerField = function(title,tag,mode,field)
+{
+       var c = story.getTiddlerField(title,field);
+
+       var tags = c.value.readBracketedList();
+       tags.setItem(tag,mode);
+       c.value = String.encodeTiddlyLinkList(tags);
+}
+
+// The same as setTiddlerField but preset to the "tags" field
+Story.prototype.setTiddlerTag = function(title,tag,mode)
+{
+       Story.prototype.setTiddlerField(title,tag,mode,"tags");
+}
+
+// Close a specified tiddler
+// title - name of tiddler to close
+// animate - whether to perform animations
+// slowly - whether to perform animations in slomo
+Story.prototype.closeTiddler = function(title,animate,slowly)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem != null)
+               {
+               clearMessage();
+               this.scrubTiddler(tiddlerElem);
+               if(anim && config.options.chkAnimate && animate)
+                       anim.startAnimating(new Slider(tiddlerElem,false,slowly,"all"));
+               else
+                       tiddlerElem.parentNode.removeChild(tiddlerElem);
+               }
+}
+
+// Scrub IDs from a tiddler. This is so that the 'ghost' of a tiddler while it is being closed
+// does not interfere with things
+// tiddler - reference to the tiddler element
+Story.prototype.scrubTiddler = function(tiddlerElem)
+{
+       tiddlerElem.id = null;
+}
+
+// Set the 'dirty' flag of a tiddler
+// title - title of tiddler to change
+// dirty - new boolean status of flag
+Story.prototype.setDirty = function(title,dirty)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem != null)
+               tiddlerElem.setAttribute("dirty",dirty ? "true" : "false");
+}
+
+// Is a particular tiddler dirty (with unsaved changes)?
+Story.prototype.isDirty = function(title)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem != null)
+               return tiddlerElem.getAttribute("dirty") == "true";
+       return null;
+}
+
+// Determine whether any open tiddler are dirty
+Story.prototype.areAnyDirty = function()
+{
+       var r = false;
+       this.forEachTiddler(function(title,element) {
+               if(this.isDirty(title))
+                       r = true;
+               });
+       return r;
+}
+
+// Close all tiddlers in the story
+Story.prototype.closeAllTiddlers = function(exclude)
+{
+       clearMessage();
+       this.forEachTiddler(function(title,element) {
+               if((title != exclude) && element.getAttribute("dirty") != "true")
+                       this.closeTiddler(title);
+               });
+       window.scrollTo(0,0);
+}
+
+// Check if there are any tiddlers in the story
+Story.prototype.isEmpty = function()
+{
+       var place = document.getElementById(this.container);
+       return(place && place.firstChild == null);
+}
+
+// Perform a search and display the result
+// text - text to search for
+// useCaseSensitive - true for case sensitive matching
+// useRegExp - true to interpret text as a RegExp
+Story.prototype.search = function(text,useCaseSensitive,useRegExp)
+{
+       this.closeAllTiddlers();
+       highlightHack = new RegExp(useRegExp ?   text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
+       var matches = store.search(highlightHack,"title","excludeSearch");
+       var titles = [];
+       for(var t=matches.length-1; t>=0; t--)
+               titles.push(matches[t].title);
+       this.displayTiddlers(null,titles);
+       highlightHack = null;
+       var q = useRegExp ? "/" : "'";
+       if(matches.length > 0)
+               displayMessage(config.macros.search.successMsg.format([titles.length.toString(),q + text + q]));
+       else
+               displayMessage(config.macros.search.failureMsg.format([q + text + q]));
+}
+
+// Determine if the specified element is within a tiddler in this story
+// e - reference to an element
+// returns: reference to a tiddler element or null if none
+Story.prototype.findContainingTiddler = function(e)
+{
+       while(e && !hasClass(e,"tiddler"))
+               e = e.parentNode;
+       return(e);
+}
+
+// Gather any saveable fields from a tiddler element
+// e - reference to an element to scan recursively
+// fields - object to contain gathered field values
+Story.prototype.gatherSaveFields = function(e,fields)
+{
+       if(e && e.getAttribute)
+               {
+               var f = e.getAttribute("edit");
+               if(f)
+                       fields[f] = e.value.replace(/\r/mg,"");;
+               if(e.hasChildNodes())
+                       {
+                       var c = e.childNodes;
+                       for(var t=0; t<c.length; t++)
+                               this.gatherSaveFields(c[t],fields)
+                       }
+               }
+}
+
+// Determine whether a tiddler has any edit fields, and if so if their values have been changed
+// title - name of tiddler
+Story.prototype.hasChanges = function(title)
+{
+       var e = document.getElementById(this.idPrefix + title);
+       if(e != null)
+               {
+               var fields = {};
+               this.gatherSaveFields(e,fields);
+               var tiddler = store.fetchTiddler(title);
+               if (!tiddler)
+                       return false;
+               for(var n in fields)
+                       if (store.getValue(title,n) != fields[n])
+                               return true;
+               }
+       return false;
+}
+
+// Save any open edit fields of a tiddler and updates the display as necessary
+// title - name of tiddler
+// minorUpdate - true if the modified date shouldn't be updated
+// returns: title of saved tiddler, or null if not saved
+Story.prototype.saveTiddler = function(title,minorUpdate)
+{
+       var tiddlerElem = document.getElementById(this.idPrefix + title);
+       if(tiddlerElem != null)
+               {
+               var fields = {};
+               this.gatherSaveFields(tiddlerElem,fields);
+               var newTitle = fields.title ? fields.title : title;
+               if(store.tiddlerExists(newTitle) && newTitle != title)
+                       {
+                       if(confirm(config.messages.overwriteWarning.format([newTitle.toString()])))
+                               this.closeTiddler(newTitle,false,false);
+                       else
+                               return null;
+                       }
+               tiddlerElem.id = this.idPrefix + newTitle;
+               tiddlerElem.setAttribute("tiddler",newTitle);
+               tiddlerElem.setAttribute("template",DEFAULT_VIEW_TEMPLATE);
+               tiddlerElem.setAttribute("dirty","false");
+               if(config.options.chkForceMinorUpdate)
+                       minorUpdate = !minorUpdate;
+               var newDate = new Date();
+               store.saveTiddler(title,newTitle,fields.text,config.options.txtUserName,minorUpdate ? undefined : newDate,fields.tags);
+               for (var n in fields) 
+                       if (!TiddlyWiki.isStandardField(n))
+                               store.setValue(newTitle,n,fields[n]);
+               if(config.options.chkAutoSave)
+                       saveChanges();
+               return newTitle;
+               }
+       return null;
+}
+
+Story.prototype.permaView = function()
+{
+       var links = [];
+       this.forEachTiddler(function(title,element) {
+               links.push(String.encodeTiddlyLink(title));
+               });
+       var t = encodeURIComponent(links.join(" "));
+       if(t == "")
+               t = "#";
+       if(window.location.hash != t)
+               window.location.hash = t;
+}
+
+// ---------------------------------------------------------------------------------
+// Message area
+// ---------------------------------------------------------------------------------
+
+function getMessageDiv()
+{
+       var msgArea = document.getElementById("messageArea");
+       if(!msgArea)
+               return null;
+       if(!msgArea.hasChildNodes())
+               createTiddlyButton(createTiddlyElement(msgArea,"div",null,"messageToolbar"),
+                       config.messages.messageClose.text,
+                       config.messages.messageClose.tooltip,
+                       clearMessage);
+       msgArea.style.display = "block";
+       return createTiddlyElement(msgArea,"div");
+}
+
+function displayMessage(text,linkText)
+{
+       var e = getMessageDiv();
+       if(!e)
+               {
+               alert(text);
+               return;
+               }
+       if(linkText)
+               {
+               var link = createTiddlyElement(e,"a",null,null,text);
+               link.href = linkText;
+               link.target = "_blank";
+               }
+       else
+               e.appendChild(document.createTextNode(text));
+}
+
+function clearMessage()
+{
+       var msgArea = document.getElementById("messageArea");
+       if(msgArea)
+               {
+               removeChildren(msgArea);
+               msgArea.style.display = "none";
+               }
+       return false;
+}
+
+// ---------------------------------------------------------------------------------
+// Refresh mechanism
+// ---------------------------------------------------------------------------------
+
+config.refreshers = {
+       link: function(e,changeList)
+               {
+               var title = e.getAttribute("tiddlyLink");
+               refreshTiddlyLink(e,title);
+               return true;
+               },
+       
+       tiddler: function(e,changeList)
+               {
+               var title = e.getAttribute("tiddler");
+               var template = e.getAttribute("template");
+               if(changeList && changeList.indexOf(title) != -1 && !story.isDirty(title))
+                       story.refreshTiddler(title,template,true);
+               else
+                       refreshElements(e,changeList);
+               return true;
+               },
+
+       content: function(e,changeList)
+               {
+               var title = e.getAttribute("tiddler");
+               var force = e.getAttribute("force");
+               if(force != null || changeList == null || changeList.indexOf(title) != -1)
+                       {
+                       removeChildren(e);
+                       wikify(store.getTiddlerText(title,title),e);
+                       return true;
+                       }
+               else
+                       return false;
+               },
+
+       macro: function(e,changeList)
+               {
+               var macro = e.getAttribute("macroName");
+               var params = e.getAttribute("params");
+               if(macro)
+                       macro = config.macros[macro];
+               if(macro && macro.refresh)
+                       macro.refresh(e,params);
+               return true;
+               }
+};
+
+function refreshElements(root,changeList)
+{
+       var nodes = root.childNodes;
+       for(var c=0; c<nodes.length; c++)
+               {
+               var e = nodes[c],type;
+               if(e.getAttribute)
+                       type = e.getAttribute("refresh");
+               else
+                       type = null;
+               var refresher = config.refreshers[type];
+               var refreshed = false;
+               if(refresher != undefined)
+                       refreshed = refresher(e,changeList);
+               if(e.hasChildNodes() && !refreshed)
+                       refreshElements(e,changeList);
+               }
+}
+
+function applyHtmlMacros(root,tiddler)
+{
+       var e = root.firstChild;
+       while(e)
+               {
+               var nextChild = e.nextSibling;
+               if(e.getAttribute)
+                       {
+                       var macro = e.getAttribute("macro");
+                       if(macro)
+                               {
+                               var params = "";
+                               var p = macro.indexOf(" ");
+                               if(p != -1)
+                                       {
+                                       params = macro.substr(p+1);
+                                       macro = macro.substr(0,p);
+                                       }
+                               invokeMacro(e,macro,params,null,tiddler);
+                               }
+                       }
+               if(e.hasChildNodes())
+                       applyHtmlMacros(e,tiddler);
+               e = nextChild;
+               }
+}
+
+function refreshPageTemplate(title)
+{
+       var stash = createTiddlyElement(document.body,"div");
+       stash.style.display = "none";
+       var display = document.getElementById("tiddlerDisplay");
+       var nodes,t;
+       if(display)
+               {
+               nodes = display.childNodes;
+               for(t=nodes.length-1; t>=0; t--)
+                       stash.appendChild(nodes[t]);
+               }
+       var wrapper = document.getElementById("contentWrapper");
+       if(!title)
+               title = "PageTemplate";
+       var html = store.getRecursiveTiddlerText(title,null,10);
+       wrapper.innerHTML = html;
+       applyHtmlMacros(wrapper);
+       refreshElements(wrapper);
+       display = document.getElementById("tiddlerDisplay");
+       removeChildren(display);
+       if(!display)
+               display = createTiddlyElement(wrapper,"div","tiddlerDisplay");
+       nodes = stash.childNodes;
+       for(t=nodes.length-1; t>=0; t--)
+               display.appendChild(nodes[t]);
+       stash.parentNode.removeChild(stash);
+}
+
+function refreshDisplay(hint)
+{
+       var e = document.getElementById("contentWrapper");
+       if(typeof hint == "string")
+               hint = [hint];
+       refreshElements(e,hint);
+}
+
+function refreshPageTitle()
+{
+       document.title = wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle");
+}
+
+function refreshStyles(title)
+{
+       setStylesheet(title == null ? "" : store.getRecursiveTiddlerText(title,"",10),title);
+}
+
+function refreshColorPalette(title)
+{
+       if(!startingUp)
+               refreshAll();
+}
+
+function refreshAll()
+{
+       refreshPageTemplate();
+       refreshDisplay();
+       refreshStyles("StyleSheetLayout");
+       refreshStyles("StyleSheetColors");
+       refreshStyles("StyleSheet");
+       refreshStyles("StyleSheetPrint");
+}
+
+// ---------------------------------------------------------------------------------
+// Options cookie stuff
+// ---------------------------------------------------------------------------------
+
+function loadOptionsCookie()
+{
+       if(safeMode)
+               return;
+       var cookies = document.cookie.split(";");
+       for(var c=0; c<cookies.length; c++)
+               {
+               var p = cookies[c].indexOf("=");
+               if(p != -1)
+                       {
+                       var name = cookies[c].substr(0,p).trim();
+                       var value = cookies[c].substr(p+1).trim();
+                       switch(name.substr(0,3))
+                               {
+                               case "txt":
+                                       config.options[name] = unescape(value);
+                                       break;
+                               case "chk":
+                                       config.options[name] = value == "true";
+                                       break;
+                               }
+                       }
+               }
+}
+
+function saveOptionCookie(name)
+{
+       if(safeMode)
+               return;
+       var c = name + "=";
+       switch(name.substr(0,3))
+               {
+               case "txt":
+                       c += escape(config.options[name].toString());
+                       break;
+               case "chk":
+                       c += config.options[name] ? "true" : "false";
+                       break;
+               }
+       c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
+       document.cookie = c;
+}
+
+// ---------------------------------------------------------------------------------
+// Saving
+// ---------------------------------------------------------------------------------
+
+var saveUsingSafari = false;
+
+var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
+var endSaveArea = '</d' + 'iv>';
+
+// If there are unsaved changes, force the user to confirm before exitting
+function confirmExit()
+{
+       hadConfirmExit = true;
+       if((store && store.isDirty && store.isDirty()) || (story && story.areAnyDirty && story.areAnyDirty()))
+               return config.messages.confirmExit;
+}
+
+// Give the user a chance to save changes before exitting
+function checkUnsavedChanges()
+{
+       if(store && store.isDirty && store.isDirty() && window.hadConfirmExit === false)
+               {
+               if(confirm(config.messages.unsavedChangesWarning))
+                       saveChanges();
+               }
+}
+
+function updateMarkupBlock(s,blockName,tiddlerName)
+{
+       return s.replaceChunk(
+                       "<!--%0-START-->".format([blockName]),
+                       "<!--%0-END-->".format([blockName]),
+                       "\n" + store.getRecursiveTiddlerText(tiddlerName,"") + "\n");
+}
+
+// Save this tiddlywiki with the pending changes
+function saveChanges(onlyIfDirty)
+{
+       if(onlyIfDirty && !store.isDirty())
+               return;
+       clearMessage();
+       // Get the URL of the document
+       var originalPath = document.location.toString();
+       // Check we were loaded from a file URL
+       if(originalPath.substr(0,5) != "file:")
+               {
+               alert(config.messages.notFileUrlError);
+               if(store.tiddlerExists(config.messages.saveInstructions))
+                       story.displayTiddler(null,config.messages.saveInstructions);
+               return;
+               }
+       var localPath = getLocalPath(originalPath);
+       // Load the original file
+       var original = loadFile(localPath);
+       if(original == null)
+               {
+               alert(config.messages.cantSaveError);
+               if(store.tiddlerExists(config.messages.saveInstructions))
+                       story.displayTiddler(null,config.messages.saveInstructions);
+               return;
+               }
+       // Locate the storeArea div's
+       var posOpeningDiv = original.indexOf(startSaveArea);
+       var limitClosingDiv = original.indexOf("<!--POST-BODY-START--"+">");
+       var posClosingDiv = original.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? original.length : limitClosingDiv);
+       if((posOpeningDiv == -1) || (posClosingDiv == -1))
+               {
+               alert(config.messages.invalidFileError.format([localPath]));
+               return;
+               }
+       // Save the backup
+       if(config.options.chkSaveBackups)
+               {
+               var backupPath = getBackupPath(localPath);
+               var backup = saveFile(backupPath,original);
+               if(backup)
+                       displayMessage(config.messages.backupSaved,"file://" + backupPath);
+               else
+                       alert(config.messages.backupFailed);
+               }
+       // Save Rss
+       if(config.options.chkGenerateAnRssFeed)
+               {
+               var rssPath = localPath.substr(0,localPath.lastIndexOf(".")) + ".xml";
+               var rssSave = saveFile(rssPath,convertUnicodeToUTF8(generateRss()));
+               if(rssSave)
+                       displayMessage(config.messages.rssSaved,"file://" + rssPath);
+               else
+                       alert(config.messages.rssFailed);
+               }
+       // Save empty template
+       if(config.options.chkSaveEmptyTemplate)
+               {
+               var emptyPath,p;
+               if((p = localPath.lastIndexOf("/")) != -1)
+                       emptyPath = localPath.substr(0,p) + "/empty.html";
+               else if((p = localPath.lastIndexOf("\\")) != -1)
+                       emptyPath = localPath.substr(0,p) + "\\empty.html";
+               else
+                       emptyPath = localPath + ".empty.html";
+               var empty = original.substr(0,posOpeningDiv + startSaveArea.length) + original.substr(posClosingDiv);
+               var emptySave = saveFile(emptyPath,empty);
+               if(emptySave)
+                       displayMessage(config.messages.emptySaved,"file://" + emptyPath);
+               else
+                       alert(config.messages.emptyFailed);
+               }
+       var save;
+       try 
+               {
+               // Save new file
+               var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + "\n" +
+                                       convertUnicodeToUTF8(store.allTiddlersAsHtml()) + "\n" +
+                                       original.substr(posClosingDiv);
+               var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());
+               revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
+               revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
+               revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
+               revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
+               revised = updateMarkupBlock(revised,"POST-BODY","MarkupPostBody");
+               save = saveFile(localPath,revised);
+               }
+       catch (e) 
+               {
+               showException(e);
+               }
+       if(save)
+               {
+               displayMessage(config.messages.mainSaved,"file://" + localPath);
+               store.setDirty(false);
+               }
+       else
+               alert(config.messages.mainFailed);
+}
+
+function getLocalPath(originalPath)
+{
+       // Remove any location or query part of the URL
+       var argPos = originalPath.indexOf("?");
+       if(argPos != -1)
+               originalPath = originalPath.substr(0,argPos);
+       var hashPos = originalPath.indexOf("#");
+       if(hashPos != -1)
+               originalPath = originalPath.substr(0,hashPos);
+       // Convert file://localhost/ to file:///
+       if(originalPath.indexOf("file://localhost/") == 0)
+               originalPath = "file://" + originalPath.substr(16);
+       // Convert to a native file format assuming
+       // "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
+       // "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
+       // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
+       // "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
+       var localPath;
+       if(originalPath.charAt(9) == ":") // pc local file
+               localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
+       else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file
+               localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
+       else if(originalPath.indexOf("file:///") == 0) // mac/unix local file
+               localPath = unescape(originalPath.substr(7));
+       else if(originalPath.indexOf("file:/") == 0) // mac/unix local file
+               localPath = unescape(originalPath.substr(5));
+       else // pc network file
+               localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
+       return localPath;
+}
+
+function getBackupPath(localPath)
+{
+       var backSlash = true;
+       var dirPathPos = localPath.lastIndexOf("\\");
+       if(dirPathPos == -1)
+               {
+               dirPathPos = localPath.lastIndexOf("/");
+               backSlash = false;
+               }
+       var backupFolder = config.options.txtBackupFolder;
+       if(!backupFolder || backupFolder == "")
+               backupFolder = ".";
+       var backupPath = localPath.substr(0,dirPathPos) + (backSlash ? "\\" : "/") + backupFolder + localPath.substr(dirPathPos);
+       backupPath = backupPath.substr(0,backupPath.lastIndexOf(".")) + "." + (new Date()).convertToYYYYMMDDHHMMSSMMM() + ".html";
+       return backupPath;
+}
+
+function generateRss()
+{
+       var s = [];
+       var d = new Date();
+       var u = store.getTiddlerText("SiteUrl");
+       // Assemble the header
+       s.push("<" + "?xml version=\"1.0\"?" + ">");
+       s.push("<rss version=\"2.0\">");
+       s.push("<channel>");
+       s.push("<title" + ">" + wikifyPlain("SiteTitle").htmlEncode() + "</title" + ">");
+       if(u)
+               s.push("<link>" + u.htmlEncode() + "</link>");
+       s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");
+       s.push("<language>en-us</language>");
+       s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
+       s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
+       s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
+       s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
+       s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
+       // The body
+       var tiddlers = store.getTiddlers("modified","excludeLists");
+       var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
+       for (var t=tiddlers.length-1; t>=n; t--)
+               s.push(tiddlers[t].saveToRss(u));
+       // And footer
+       s.push("</channel>");
+       s.push("</rss>");
+       // Save it all
+       return s.join("\n");
+}
+
+
+// UTF-8 encoding rules:
+// 0x0000 - 0x007F:    0xxxxxxx
+// 0x0080 - 0x07FF:    110xxxxx 10xxxxxx
+// 0x0800 - 0xFFFF:    1110xxxx 10xxxxxx 10xxxxxx
+
+function convertUTF8ToUnicode(u)
+{
+       if(window.netscape == undefined)
+               return manualConvertUTF8ToUnicode(u);
+       else
+               return mozConvertUTF8ToUnicode(u);
+}
+
+function manualConvertUTF8ToUnicode(utf)
+{
+       var uni = utf;
+       var src = 0;
+       var dst = 0;
+       var b1, b2, b3;
+       var c;
+       while(src < utf.length)
+               {
+               b1 = utf.charCodeAt(src++);
+               if(b1 < 0x80)
+                       dst++;
+               else if(b1 < 0xE0)
+                       {
+                       b2 = utf.charCodeAt(src++);
+                       c = String.fromCharCode(((b1 & 0x1F) << 6) | (b2 & 0x3F));
+                       uni = uni.substring(0,dst++).concat(c,utf.substr(src));
+                       }
+               else
+                       {
+                       b2 = utf.charCodeAt(src++);
+                       b3 = utf.charCodeAt(src++);
+                       c = String.fromCharCode(((b1 & 0xF) << 12) | ((b2 & 0x3F) << 6) | (b3 & 0x3F));
+                       uni = uni.substring(0,dst++).concat(c,utf.substr(src));
+                       }
+       }
+       return(uni);
+}
+
+function mozConvertUTF8ToUnicode(u)
+{
+       try
+               {
+               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+               var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+               converter.charset = "UTF-8";
+               }
+       catch(e)
+               {
+               return manualConvertUTF8ToUnicode(u);
+               } // fallback
+       var s = converter.ConvertToUnicode(u);
+       var fin = converter.Finish();
+       return (fin.length > 0) ? s+fin : s;
+}
+
+function convertUnicodeToUTF8(s)
+{
+       if(window.netscape == undefined)
+               return manualConvertUnicodeToUTF8(s);
+       else
+               return mozConvertUnicodeToUTF8(s);
+}
+
+function manualConvertUnicodeToUTF8(s)
+{
+       var re = /[^\u0000-\u007F]/g ;
+       return s.replace(re, function($0) {return("&#" + $0.charCodeAt(0).toString() + ";");})
+}
+
+function mozConvertUnicodeToUTF8(s)
+{
+       try
+               {
+               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+               var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+               converter.charset = "UTF-8";
+               }
+       catch(e)
+               {
+               return manualConvertUnicodeToUTF8(s);
+               } // fallback
+       var u = converter.ConvertFromUnicode(s);
+       var fin = converter.Finish();
+       if(fin.length > 0)
+               return u + fin;
+       else
+               return u;
+}
+
+function saveFile(fileUrl, content)
+{
+       var r = null;
+       if((r == null) || (r == false))
+               r = mozillaSaveFile(fileUrl, content);
+       if((r == null) || (r == false))
+               r = ieSaveFile(fileUrl, content);
+       if((r == null) || (r == false))
+               r = javaSaveFile(fileUrl, content);
+       return(r);
+}
+
+function loadFile(fileUrl)
+{
+       var r = null;
+       if((r == null) || (r == false))
+               r = mozillaLoadFile(fileUrl);
+       if((r == null) || (r == false))
+               r = ieLoadFile(fileUrl);
+       if((r == null) || (r == false))
+               r = javaLoadFile(fileUrl);
+       return(r);
+}
+
+// Returns null if it can't do it, false if there's an error, true if it saved OK
+function ieSaveFile(filePath, content)
+{
+       try
+               {
+               var fso = new ActiveXObject("Scripting.FileSystemObject");
+               }
+       catch(e)
+               {
+               //alert("Exception while attempting to save\n\n" + e.toString());
+               return(null);
+               }
+       var file = fso.OpenTextFile(filePath,2,-1,0);
+       file.Write(content);
+       file.Close();
+       return(true);
+}
+
+// Returns null if it can't do it, false if there's an error, or a string of the content if successful
+function ieLoadFile(filePath)
+{
+       try
+               {
+               var fso = new ActiveXObject("Scripting.FileSystemObject");
+               var file = fso.OpenTextFile(filePath,1);
+               var content = file.ReadAll();
+               file.Close();
+               }
+       catch(e)
+               {
+               //alert("Exception while attempting to load\n\n" + e.toString());
+               return(null);
+               }
+       return(content);
+}
+
+// Returns null if it can't do it, false if there's an error, true if it saved OK
+function mozillaSaveFile(filePath, content)
+{
+       if(window.Components)
+               try
+                       {
+                       netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+                       var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+                       file.initWithPath(filePath);
+                       if (!file.exists())
+                               file.create(0, 0664);
+                       var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
+                       out.init(file, 0x20 | 0x02, 00004,null);
+                       out.write(content, content.length);
+                       out.flush();
+                       out.close();
+                       return(true);
+                       }
+               catch(e)
+                       {
+                       //alert("Exception while attempting to save\n\n" + e);
+                       return(false);
+                       }
+       return(null);
+}
+
+// Returns null if it can't do it, false if there's an error, or a string of the content if successful
+function mozillaLoadFile(filePath)
+{
+       if(window.Components)
+               try
+                       {
+                       netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+                       var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+                       file.initWithPath(filePath);
+                       if (!file.exists())
+                               return(null);
+                       var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
+                       inputStream.init(file, 0x01, 00004, null);
+                       var sInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
+                       sInputStream.init(inputStream);
+                       return(sInputStream.read(sInputStream.available()));
+                       }
+               catch(e)
+                       {
+                       //alert("Exception while attempting to load\n\n" + e);
+                       return(false);
+                       }
+       return(null);
+}
+
+function javaUrlToFilename(url)
+{
+       var f = "//localhost";
+       if(url.indexOf(f) == 0)
+               return url.substring(f.length);
+       var i = url.indexOf(":");
+       if(i > 0)
+               return url.substring(i-1);
+       return url;
+}
+
+function javaSaveFile(filePath, content)
+{
+       try
+               {
+               if(document.applets["TiddlySaver"])
+                       return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
+               }
+       catch(e)
+               {
+               }
+       try
+               {
+               var s = new java.io.PrintStream(new java.io.FileOutputStream(javaUrlToFilename(filePath)));
+               s.print(content);
+               s.close();
+               }
+       catch(e)
+               {
+               return null;
+               }
+       return true;
+}
+
+function javaLoadFile(filePath)
+{
+       try
+               {
+       if(document.applets["TiddlySaver"])
+               return String(document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8"));
+               }
+       catch(e)
+               {
+               }
+       var content = [];
+       try
+               {
+               var r = new java.io.BufferedReader(new java.io.FileReader(javaUrlToFilename(filePath)));
+               var line;
+               while ((line = r.readLine()) != null)
+                       content.push(new String(line));
+               r.close();
+               }
+       catch(e)
+               {
+               return null;
+               }
+       return content.join("\n");
+}
+
+
+// ---------------------------------------------------------------------------------
+// Remote HTTP requests
+// ---------------------------------------------------------------------------------
+
+// Load a file over http
+//   url - the source url
+//   callback - function to call when there's a response
+//   params - parameter object that gets passed to the callback for storing it's state
+// Return value is the underlying XMLHttpRequest object, or 'null' if there was an error
+// Callback function is called like this:
+//   callback(status,params,responseText,xhr)
+//     status - true if OK, false if error
+//     params - the parameter object provided to loadRemoteFile()
+//     responseText - the text of the file
+//     xhr - the underlying XMLHttpRequest object
+function loadRemoteFile(url,callback,params)
+{
+       // Get an xhr object
+       var x;
+       try
+               {
+               x = new XMLHttpRequest(); // Modern
+               }
+       catch(e)
+               {
+               try
+                       {
+                       x = new ActiveXObject("Msxml2.XMLHTTP"); // IE 6
+                       }
+               catch (e)
+                       {
+                       return null;
+                       }
+               }
+       // Install callback
+       x.onreadystatechange = function()
+               {
+               if (x.readyState == 4)
+                       {
+                       if ((x.status == 0 || x.status == 200) && callback)
+                               {
+                               callback(true,params,x.responseText,url,x);
+                       }
+                       else
+                               callback(false,params,null,url,x);
+                       }
+               }
+       // Send request
+       if(window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
+               window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
+       try
+               {
+               url = url + (url.indexOf("?") < 0 ? "?" : "&") + "nocache=" + Math.random();
+               x.open("GET",url,true);
+               if (x.overrideMimeType)
+                       x.overrideMimeType("text/html");
+               x.send(null);
+               }
+       catch (e)
+               {
+               alert("Error in send " + e);
+               return null;
+               }
+       return x;
+}
+// ---------------------------------------------------------------------------------
+// TiddlyWiki-specific utility functions
+// ---------------------------------------------------------------------------------
+
+function createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey)
+{
+       var theButton = document.createElement("a");
+       if(theAction)
+               {
+               theButton.onclick = theAction;
+               theButton.setAttribute("href","javascript:;");
+               }
+       if(theTooltip)
+               theButton.setAttribute("title",theTooltip);
+       if(theText)
+               theButton.appendChild(document.createTextNode(theText));
+       if(theClass)
+               theButton.className = theClass;
+       else
+               theButton.className = "button";
+       if(theId)
+               theButton.id = theId;
+       if(theParent)
+               theParent.appendChild(theButton);
+       if(theAccessKey)
+               theButton.setAttribute("accessKey",theAccessKey);
+       return(theButton);
+}
+
+function createTiddlyLink(place,title,includeText,theClass,isStatic)
+{
+       var text = includeText ? title : null;
+       var i = getTiddlyLinkInfo(title,theClass)
+       var btn;
+       if(isStatic)
+               btn = createExternalLink(place,"#" + title);
+       else
+               btn = createTiddlyButton(place,text,i.subTitle,onClickTiddlerLink,i.classes);
+       btn.setAttribute("refresh","link");
+       btn.setAttribute("tiddlyLink",title);
+       return(btn);
+}
+
+function refreshTiddlyLink(e,title)
+{
+       var i = getTiddlyLinkInfo(title,e.className);
+       e.className = i.classes;
+       e.title = i.subTitle;
+}
+
+function getTiddlyLinkInfo(title,currClasses)
+{
+       var classes = currClasses ? currClasses.split(" ") : [];
+       classes.pushUnique("tiddlyLink");
+       var tiddler = store.fetchTiddler(title);
+       var subTitle;
+       if(tiddler)
+               {
+               subTitle = tiddler.getSubtitle();
+               classes.pushUnique("tiddlyLinkExisting");
+               classes.remove("tiddlyLinkNonExisting");
+               classes.remove("shadow");
+               }
+       else
+               {
+               classes.remove("tiddlyLinkExisting");
+               classes.pushUnique("tiddlyLinkNonExisting");
+               if(store.isShadowTiddler(title))
+                       {
+                       subTitle = config.messages.shadowedTiddlerToolTip.format([title]);
+                       classes.pushUnique("shadow");
+                       }
+               else
+                       {
+                       subTitle = config.messages.undefinedTiddlerToolTip.format([title]);
+                       classes.remove("shadow");
+                       }
+               }
+       return {classes: classes.join(" "), subTitle: subTitle};
+}
+
+function createExternalLink(place,url)
+{
+       var theLink = document.createElement("a");
+       theLink.className = "externalLink";
+       theLink.href = url;
+       theLink.title = config.messages.externalLinkTooltip.format([url]);
+       if(config.options.chkOpenInNewWindow)
+               theLink.target = "_blank";
+       place.appendChild(theLink);
+       return(theLink);
+}
+
+// Event handler for clicking on a tiddly link
+function onClickTiddlerLink(e)
+{
+       if (!e) var e = window.event;
+       var theTarget = resolveTarget(e);
+       var theLink = theTarget;
+       var title = null;
+       do {
+               title = theLink.getAttribute("tiddlyLink");
+               theLink = theLink.parentNode;
+       } while(title == null && theLink != null);
+       if(title)
+               {
+               var toggling = e.metaKey || e.ctrlKey;
+               if(config.options.chkToggleLinks)
+                       toggling = !toggling;
+               var opening;
+               if(toggling && document.getElementById("tiddler" + title))
+                       story.closeTiddler(title,true,e.shiftKey || e.altKey);
+               else
+                       story.displayTiddler(theTarget,title,null,true,e.shiftKey || e.altKey);
+               }
+       clearMessage();
+       return(false);
+}
+
+// Create a button for a tag with a popup listing all the tiddlers that it tags
+function createTagButton(place,tag,excludeTiddler)
+{
+       var theTag = createTiddlyButton(place,tag,config.views.wikified.tag.tooltip.format([tag]),onClickTag);
+       theTag.setAttribute("tag",tag);
+       if(excludeTiddler)
+               theTag.setAttribute("tiddler",excludeTiddler);
+       return(theTag);
+}
+
+// Event handler for clicking on a tiddler tag
+function onClickTag(e)
+{
+       if (!e) var e = window.event;
+       var theTarget = resolveTarget(e);
+       var popup = Popup.create(this);
+       var tag = this.getAttribute("tag");
+       var title = this.getAttribute("tiddler");
+       if(popup && tag)
+               {
+               var tagged = store.getTaggedTiddlers(tag);
+               var titles = [];
+               var li,r;
+               for(r=0;r<tagged.length;r++)
+                       if(tagged[r].title != title)
+                               titles.push(tagged[r].title);
+               var lingo = config.views.wikified.tag;
+               if(titles.length > 0)
+                       {
+                       var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
+                       openAll.setAttribute("tag",tag);
+                       createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
+                       for(r=0; r<titles.length; r++)
+                               {
+                               createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
+                               }
+                       }
+               else
+                       createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
+               createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
+               var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
+               createTiddlyText(h,lingo.openTag.format([tag]));
+               }
+       Popup.show(popup,false);
+       e.cancelBubble = true;
+       if (e.stopPropagation) e.stopPropagation();
+       return(false);
+}
+
+// Event handler for 'open all' on a tiddler popup
+function onClickTagOpenAll(e)
+{
+       if (!e) var e = window.event;
+       var tag = this.getAttribute("tag");
+       var tagged = store.getTaggedTiddlers(tag);
+       var titles = [];
+       for(var t=0; t<tagged.length; t++)
+               titles.push(tagged[t].title);
+       story.displayTiddlers(this,titles);
+       return(false);
+}
+
+function onClickError(e)
+{
+       if (!e) var e = window.event;
+       var popup = Popup.create(this);
+       var lines = this.getAttribute("errorText").split("\n");
+       for(var t=0; t<lines.length; t++)
+               createTiddlyElement(popup,"li",null,null,lines[t]);
+       Popup.show(popup,false);
+       e.cancelBubble = true;
+       if (e.stopPropagation) e.stopPropagation();
+       return false;
+}
+
+function createTiddlyDropDown(place,onchange,options)
+{
+       var sel = createTiddlyElement(place,"select");
+       sel.onchange = onchange;
+       for(var t=0; t<options.length; t++)
+               {
+               var e = createTiddlyElement(sel,"option",null,null,options[t].caption);
+               e.value = options[t].name;
+               }
+}
+
+function createTiddlyError(place,title,text)
+{
+       var btn = createTiddlyButton(place,title,null,onClickError,"errorButton");
+       if (text) btn.setAttribute("errorText",text);
+}
+
+function merge(dst,src,preserveExisting)
+{
+       for (p in src)
+               if (!preserveExisting || dst[p] === undefined)
+                       dst[p] = src[p];
+       return dst;
+}
+
+// Returns a string containing the description of an exception, optionally prepended by a message
+function exceptionText(e, message)
+{
+       var s = e.description ? e.description : e.toString();
+       return message ? "%0:\n%1".format([message, s]) : s;
+}
+
+// Displays an alert of an exception description with optional message
+function showException(e, message)
+{
+       alert(exceptionText(e, message));
+}
+
+// ---------------------------------------------------------------------------------
+// Animation engine
+// ---------------------------------------------------------------------------------
+
+function Animator()
+{
+       this.running = 0; // Incremented at start of each animation, decremented afterwards. If zero, the interval timer is disabled
+       this.timerID = 0; // ID of the timer used for animating
+       this.animations = []; // List of animations in progress
+       return this;
+}
+
+// Start animation engine
+Animator.prototype.startAnimating = function() // Variable number of arguments
+{
+       for(var t=0; t<arguments.length; t++)
+               this.animations.push(arguments[t]);
+       if(this.running == 0)
+               {
+               var me = this;
+               this.timerID = window.setInterval(function() {me.doAnimate(me);},5);
+               }
+       this.running += arguments.length;
+}
+
+// Perform an animation engine tick, calling each of the known animation modules
+Animator.prototype.doAnimate = function(me)
+{
+       var a = 0;
+       while(a < me.animations.length)
+               {
+               var animation = me.animations[a];
+               if(animation.tick())
+                       a++;
+               else
+                       {
+                       me.animations.splice(a,1);
+                       if(--me.running == 0)
+                               window.clearInterval(me.timerID);
+                       }
+               }
+}
+
+// Map a 0..1 value to 0..1, but slow down at the start and end
+Animator.slowInSlowOut = function(progress)
+{
+       return(1-((Math.cos(progress * Math.PI)+1)/2));
+}
+
+// ---------------------------------------------------------------------------------
+// Cascade animation
+// ---------------------------------------------------------------------------------
+
+function Cascade(text,startElement,targetElement,slowly)
+{
+       var winWidth = findWindowWidth();
+       var winHeight = findWindowHeight();
+       this.elements = [];
+       this.startElement = startElement;
+       this.startLeft = findPosX(this.startElement);
+       this.startTop = findPosY(this.startElement);
+       this.startWidth = Math.min(this.startElement.offsetWidth,winWidth);
+       this.startHeight = Math.min(this.startElement.offsetHeight,winHeight);
+       this.targetElement = targetElement;
+       targetElement.style.position = "relative";
+       targetElement.style.zIndex = 2;
+       this.targetLeft = findPosX(this.targetElement);
+       this.targetTop = findPosY(this.targetElement);
+       this.targetWidth = Math.min(this.targetElement.offsetWidth,winWidth);
+       this.targetHeight = Math.min(this.targetElement.offsetHeight,winHeight);
+       this.progress = -1;
+       this.steps = slowly ? config.cascadeSlow : config.cascadeFast;
+       this.text = text;
+       this.tick();
+       return this;
+}
+
+Cascade.prototype.tick = function()
+{
+       this.progress++;
+       if(this.progress >= this.steps)
+               {
+               while(this.elements.length > 0)
+                       this.removeTail();
+               this.targetElement.style.position = "static";
+               this.targetElement.style.zIndex = "";
+               return false;
+               }
+       else
+               {
+               if(this.elements.length > 0 && this.progress > config.cascadeDepth)
+                       this.removeTail();
+               if(this.progress < (this.steps - config.cascadeDepth))
+                       {
+                       var f = Animator.slowInSlowOut(this.progress/(this.steps - config.cascadeDepth - 1));
+                       var e = createTiddlyElement(document.body,"div",null,"cascade",this.text);
+                       e.style.zIndex = 1;
+                       e.style.left = this.startLeft + (this.targetLeft-this.startLeft) * f + "px";
+                       e.style.top = this.startTop + (this.targetTop-this.startTop) * f + "px";
+                       e.style.width = this.startWidth + (this.targetWidth-this.startWidth) * f + "px";
+                       e.style.height = this.startHeight + (this.targetHeight-this.startHeight) * f + "px";
+                       e.style.display = "block";
+                       this.elements.push(e);
+                       }
+               return true;
+               }
+}
+
+Cascade.prototype.removeTail = function()
+{
+       var e = this.elements[0];
+       e.parentNode.removeChild(e);
+       this.elements.shift();
+}
+
+// ---------------------------------------------------------------------------------
+// Scroller animation
+// ---------------------------------------------------------------------------------
+
+function Scroller(targetElement,slowly)
+{
+       this.targetElement = targetElement;
+       this.startScroll = findScrollY();
+       this.targetScroll = ensureVisible(targetElement);
+       this.progress = 0;
+       this.step = slowly ? config.animSlow : config.animFast;
+       return this;
+}
+
+Scroller.prototype.tick = function()
+{
+       this.progress += this.step;
+       if(this.progress > 1)
+               {
+               window.scrollTo(0,this.targetScroll);
+               return false;
+               }
+       else
+               {
+               var f = Animator.slowInSlowOut(this.progress);
+               window.scrollTo(0,this.startScroll + (this.targetScroll-this.startScroll) * f);
+               return true;
+               }
+}
+
+// ---------------------------------------------------------------------------------
+// Slider animation
+// ---------------------------------------------------------------------------------
+
+// deleteMode - "none", "all" [delete target element and it's children], [only] "children" [but not the target element]
+function Slider(element,opening,slowly,deleteMode)
+{
+       this.element = element;
+       element.style.display = "block";
+       this.deleteMode = deleteMode;
+       this.element.style.height = "auto";
+       this.realHeight = element.offsetHeight;
+       this.opening = opening;
+       this.step = slowly ? config.animSlow : config.animFast;
+       if(opening)
+               {
+               this.progress = 0;
+               element.style.height = "0px";
+               element.style.display = "block";
+               }
+       else
+               {
+               this.progress = 1;
+               this.step = -this.step;
+               }
+       element.style.overflow = "hidden";
+       return this;
+}
+
+Slider.prototype.stop = function()
+{
+       if(this.opening)
+               {
+               this.element.style.height = "auto";
+               this.element.style.opacity = 1;
+               this.element.style.filter = "alpha(opacity:100)";
+               }
+       else
+               {
+               switch(this.deleteMode)
+                       {
+                       case "none":
+                               this.element.style.display = "none";
+                               break;
+                       case "all":
+                               this.element.parentNode.removeChild(this.element);
+                               break;
+                       case "children":
+                               removeChildren(this.element);
+                               break;
+                       }
+               }
+}
+
+Slider.prototype.tick = function()
+{
+       this.progress += this.step;
+       if(this.progress < 0 || this.progress > 1)
+               {
+               this.stop();
+               return false;
+               }
+       else
+               {
+               var f = Animator.slowInSlowOut(this.progress);
+               var h = this.realHeight * f;
+               this.element.style.height = h + "px";
+               this.element.style.opacity = f;
+               this.element.style.filter = "alpha(opacity:" + f * 100 +")";
+               return true;
+               }
+}
+
+// ---------------------------------------------------------------------------------
+// Popup menu
+// ---------------------------------------------------------------------------------
+
+var Popup = {
+       stack: [] // Array of objects with members root: and popup:
+       };
+
+Popup.create = function(root)
+{
+       Popup.remove();
+       var popup = createTiddlyElement(document.body,"ol","popup","popup");
+       Popup.stack.push({root: root, popup: popup});
+       return popup;
+}
+
+Popup.onDocumentClick = function(e)
+{
+       if (!e) var e = window.event;
+       var target = resolveTarget(e);
+       if(e.eventPhase == undefined)
+               Popup.remove();
+       else if(e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET)
+               Popup.remove();
+       return true;
+}
+
+Popup.show = function(unused,slowly)
+{
+       var curr = Popup.stack[Popup.stack.length-1];
+       var rootLeft = findPosX(curr.root);
+       var rootTop = findPosY(curr.root);
+       var rootHeight = curr.root.offsetHeight;
+       var popupLeft = rootLeft;
+       var popupTop = rootTop + rootHeight;
+       var popupWidth = curr.popup.offsetWidth;
+       var winWidth = findWindowWidth();
+       if(popupLeft + popupWidth > winWidth)
+               popupLeft = winWidth - popupWidth;
+       curr.popup.style.left = popupLeft + "px";
+       curr.popup.style.top = popupTop + "px";
+       curr.popup.style.display = "block";
+       addClass(curr.root,"highlight");
+       if(anim && config.options.chkAnimate)
+               anim.startAnimating(new Scroller(curr.popup,slowly));
+       else
+               window.scrollTo(0,ensureVisible(curr.popup));
+}
+
+Popup.remove = function()
+{
+       if(Popup.stack.length > 0)
+               {
+               Popup.removeFrom(0);
+               }
+}
+
+Popup.removeFrom = function(from)
+{
+       for(var t=Popup.stack.length-1; t>=from; t--)
+               {
+               var p = Popup.stack[t];
+               removeClass(p.root,"highlight");
+               p.popup.parentNode.removeChild(p.popup);
+               }
+       Popup.stack = Popup.stack.slice(0,from);
+}
+
+// ---------------------------------------------------------------------------------
+// ListView gadget
+// ---------------------------------------------------------------------------------
+
+var ListView = {};
+
+// Create a listview
+//   place - where in the DOM tree to insert the listview
+//   listObject - array of objects to be included in the listview
+//   listTemplate - template for the listview
+//   callback - callback for a command being selected
+//   className - optional classname for the <table> element
+ListView.create = function(place,listObject,listTemplate,callback,className)
+{
+       var table = createTiddlyElement(place,"table",null,className ? className : "listView");
+       var thead = createTiddlyElement(table,"thead");
+       var r = createTiddlyElement(thead,"tr");
+       for(var t=0; t<listTemplate.columns.length; t++)
+               {
+               var columnTemplate = listTemplate.columns[t];
+               var c = createTiddlyElement(r,"th");
+               var colType = ListView.columnTypes[columnTemplate.type];
+               if(colType && colType.createHeader)
+                       colType.createHeader(c,columnTemplate,t);
+               }
+       var tbody = createTiddlyElement(table,"tbody");
+       for(var rc=0; rc<listObject.length; rc++)
+               {
+               rowObject = listObject[rc];
+               r = createTiddlyElement(tbody,"tr");
+               for(var c=0; c<listTemplate.rowClasses.length; c++)
+                       {
+                       if(rowObject[listTemplate.rowClasses[c].field])
+                               addClass(r,listTemplate.rowClasses[c].className);
+                       }
+               rowObject.rowElement = rowObject;
+               rowObject.colElements = {};
+               for(var cc=0; cc<listTemplate.columns.length; cc++)
+                       {
+                       var c = createTiddlyElement(r,"td");
+                       var columnTemplate = listTemplate.columns[cc];
+                       var field = columnTemplate.field;
+                       var colType = ListView.columnTypes[columnTemplate.type];
+                       if(colType && colType.createItem)
+                               colType.createItem(c,rowObject,field,columnTemplate,cc,rc);
+                       rowObject.colElements[field] = c;
+                       }
+               }
+       if(callback && listTemplate.actions)
+               createTiddlyDropDown(place,ListView.getCommandHandler(callback),listTemplate.actions);
+       if(callback && listTemplate.buttons)
+               {
+               for(t=0; t<listTemplate.buttons.length; t++)
+                       {
+                       var a = listTemplate.buttons[t];
+                       if(a && a.name != "")
+                               createTiddlyButton(place,a.caption,null,ListView.getCommandHandler(callback,a.name,a.allowEmptySelection));
+                       }
+               }
+       return table;
+}
+
+ListView.getCommandHandler = function(callback,name,allowEmptySelection)
+{
+       return function(e)
+               {
+               var view = findRelated(this,"TABLE",null,"previousSibling");
+               var tiddlers = [];
+               ListView.forEachSelector(view,function(e,rowName) {
+                                       if(e.checked)
+                                               tiddlers.push(rowName);
+                                       });
+               if(tiddlers.length == 0 && !allowEmptySelection)
+                       alert(config.messages.nothingSelected);
+               else
+                       {
+                       if(this.nodeName.toLowerCase() == "select")
+                               {
+                               callback(view,this.value,tiddlers);
+                               this.selectedIndex = 0;
+                               }
+                       else
+                               callback(view,name,tiddlers);
+                       }
+               };
+}
+
+// Invoke a callback for each selector checkbox in the listview
+//   view - <table> element of listView
+//   callback(checkboxElement,rowName)
+//     where
+//       checkboxElement - DOM element of checkbox
+//       rowName - name of this row as assigned by the column template
+//   result: true if at least one selector was checked
+ListView.forEachSelector = function(view,callback)
+{
+       var checkboxes = view.getElementsByTagName("input");
+       var hadOne = false;
+       for(var t=0; t<checkboxes.length; t++)
+               {
+               var cb = checkboxes[t];
+               if(cb.getAttribute("type") == "checkbox")
+                       {
+                       var rn = cb.getAttribute("rowName");
+                       if(rn)
+                               {
+                               callback(cb,rn);
+                               hadOne = true;
+                               }
+                       }
+               }
+       return hadOne;
+}
+
+ListView.columnTypes = {};
+
+ListView.columnTypes.String = {
+       createHeader: function(place,columnTemplate,col)
+               {
+                       createTiddlyText(place,columnTemplate.title);
+               },
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var v = listObject[field];
+                       if(v != undefined)
+                               createTiddlyText(place,v);
+               }
+};
+
+ListView.columnTypes.Date = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var v = listObject[field];
+                       if(v != undefined)
+                               createTiddlyText(place,v.formatString(columnTemplate.dateFormat));
+               }
+};
+
+ListView.columnTypes.StringList = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var v = listObject[field];
+                       if(v != undefined)
+                               {
+                               for(var t=0; t<v.length; t++)
+                                       {
+                                       createTiddlyText(place,v[t]);
+                                       createTiddlyElement(place,"br");
+                                       }
+                               }
+               }
+};
+
+ListView.columnTypes.Selector = {
+       createHeader: function(place,columnTemplate,col)
+               {
+                       createTiddlyCheckbox(place,null,false,this.onHeaderChange);
+               },
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var e = createTiddlyCheckbox(place,null,listObject[field],null);
+                       e.setAttribute("rowName",listObject[columnTemplate.rowName]);
+               },
+       onHeaderChange: function(e)
+               {
+                       var state = this.checked;
+                       var view = findRelated(this,"TABLE");
+                       if(!view)
+                               return;
+                       ListView.forEachSelector(view,function(e,rowName) {
+                                                               e.checked = state;
+                                                       });
+               }
+};
+
+ListView.columnTypes.Tags = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var tags = listObject[field];
+                       createTiddlyText(place,String.encodeTiddlyLinkList(tags));
+               }
+};
+
+ListView.columnTypes.Boolean = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       if(listObject[field] == true)
+                               createTiddlyText(place,columnTemplate.trueText);
+                       if(listObject[field] == false)
+                               createTiddlyText(place,columnTemplate.falseText);
+               }
+};
+
+ListView.columnTypes.TagCheckbox = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var e = createTiddlyCheckbox(place,null,listObject[field],this.onChange);
+                       e.setAttribute("tiddler",listObject.title);
+                       e.setAttribute("tag",columnTemplate.tag);
+               },
+       onChange : function(e)
+               {
+                       var tag = this.getAttribute("tag");
+                       var tiddler = this.getAttribute("tiddler");
+                       store.setTiddlerTag(tiddler,this.checked,tag);
+               }
+};
+
+ListView.columnTypes.TiddlerLink = {
+       createHeader: ListView.columnTypes.String.createHeader,
+       createItem: function(place,listObject,field,columnTemplate,col,row)
+               {
+                       var v = listObject[field];
+                       if(v != undefined)
+                               {
+                               var link = createTiddlyLink(place,listObject[columnTemplate.tiddlerLink],false,null);
+                               createTiddlyText(link,listObject[field]);
+                               }
+               }
+};
+// ---------------------------------------------------------------------------------
+// Augmented methods for the JavaScript Number(), Array(), String() and Date() objects
+// ---------------------------------------------------------------------------------
+
+// Clamp a number to a range
+Number.prototype.clamp = function(min,max)
+{
+       var c = this;
+       if(c < min)
+               c = min;
+       if(c > max)
+               c = max;
+       return c;
+}
+
+// Add indexOf function if browser does not support it
+if(!Array.indexOf) {
+Array.prototype.indexOf = function(item,from)
+{
+       if(!from)
+               from = 0;
+       for(var i=from; i<this.length; i++)
+               if(this[i] === item)
+                       return i;
+       return -1;
+}}
+
+// Find an entry in a given field of the members of an array
+Array.prototype.findByField = function(field,value)
+{
+       for(var t=0; t<this.length; t++)
+               if(this[t][field] == value)
+                       return t;
+       return null;
+}
+
+// Return whether an entry exists in an array
+Array.prototype.contains = function(item)
+{
+       return this.indexOf(item) != -1;
+};
+
+// Adds, removes or toggles a particular value within an array
+//  value - value to add
+//  mode - +1 to add value, -1 to remove value, 0 to toggle it
+Array.prototype.setItem = function(value,mode)
+{
+       var p = this.indexOf(value);
+       if(mode == 0)
+               mode = (p == -1) ? +1 : -1;
+       if(mode == +1)
+               {
+               if(p == -1)
+                       this.push(value);
+               }
+       else if(mode == -1)
+               {
+               if(p != -1)
+                       this.splice(p,1);
+               }
+}
+
+// Return whether one of a list of values exists in an array
+Array.prototype.containsAny = function(items)
+{
+       for(var i=0; i<items.length; i++)
+               if (this.indexOf(items[i]) != -1)
+                       return true;
+       return false;
+};
+
+// Return whether all of a list of values exists in an array
+Array.prototype.containsAll = function(items)
+{
+       for (var i = 0; i<items.length; i++)
+               if (this.indexOf(items[i]) == -1)
+                       return false;
+       return true;
+};
+
+// Push a new value into an array only if it is not already present in the array. If the optional unique parameter is false, it reverts to a normal push
+Array.prototype.pushUnique = function(item,unique)
+{
+       if(unique != undefined && unique == false)
+               this.push(item);
+       else
+               {
+               if(this.indexOf(item) == -1)
+                       this.push(item);
+               }
+}
+
+Array.prototype.remove = function(item)
+{
+       var p = this.indexOf(item);
+       if(p != -1)
+               this.splice(p,1);
+}
+
+// Get characters from the right end of a string
+String.prototype.right = function(n)
+{
+       if(n < this.length)
+               return this.slice(this.length-n);
+       else
+               return this;
+}
+
+// Trim whitespace from both ends of a string
+String.prototype.trim = function()
+{
+       return this.replace(/^\s*|\s*$/g,"");
+}
+
+// Convert a string from a CSS style property name to a JavaScript style name ("background-color" -> "backgroundColor")
+String.prototype.unDash = function()
+{
+       var s = this.split("-");
+       if(s.length > 1)
+               for(var t=1; t<s.length; t++)
+                       s[t] = s[t].substr(0,1).toUpperCase() + s[t].substr(1);
+       return s.join("");
+}
+
+// Substitute substrings from an array into a format string that includes '%1'-type specifiers
+String.prototype.format = function(substrings)
+{
+       var subRegExp = /(?:%(\d+))/mg;
+       var currPos = 0;
+       var r = [];
+       do {
+               var match = subRegExp.exec(this);
+               if(match && match[1])
+                       {
+                       if(match.index > currPos)
+                               r.push(this.substring(currPos,match.index));
+                       r.push(substrings[parseInt(match[1])]);
+                       currPos = subRegExp.lastIndex;
+                       }
+       } while(match);
+       if(currPos < this.length)
+               r.push(this.substring(currPos,this.length));
+       return r.join("");
+}
+
+// Escape any special RegExp characters with that character preceded by a backslash
+String.prototype.escapeRegExp = function()
+{
+       var s = "\\^$*+?()=!|,{}[].";
+       var c = this;
+       for(var t=0; t<s.length; t++)
+               c = c.replace(new RegExp("\\" + s.substr(t,1),"g"),"\\" + s.substr(t,1));
+       return c;
+}
+
+// Convert "\" to "\s", newlines to "\n" (and remove carriage returns)
+String.prototype.escapeLineBreaks = function()
+{
+       return this.replace(/\\/mg,"\\s").replace(/\n/mg,"\\n").replace(/\r/mg,"");
+}
+
+// Convert "\n" to newlines, "\b" to " ", "\s" to "\" (and remove carriage returns)
+String.prototype.unescapeLineBreaks = function()
+{
+       return this.replace(/\\n/mg,"\n").replace(/\\b/mg," ").replace(/\\s/mg,"\\").replace(/\r/mg,"");
+}
+
+// Convert & to "&amp;", < to "&lt;", > to "&gt;" and " to "&quot;"
+String.prototype.htmlEncode = function()
+{
+       return(this.replace(/&/mg,"&amp;").replace(/</mg,"&lt;").replace(/>/mg,"&gt;").replace(/\"/mg,"&quot;"));
+}
+
+// Convert "&amp;" to &, "&lt;" to <, "&gt;" to > and "&quot;" to "
+String.prototype.htmlDecode = function()
+{
+       return(this.replace(/&amp;/mg,"&").replace(/&lt;/mg,"<").replace(/&gt;/mg,">").replace(/&quot;/mg,"\""));
+}
+
+// Parse a space-separated string of name:value parameters where:
+//   - the name or the value can be optional (in which case separate defaults are used instead)
+//     - in case of ambiguity, a lone word is taken to be a value
+//     - if 'cascadeDefaults' is set to true, then the defaults are modified by updated by each specified name or value
+//     - name prefixes are not allowed if the 'noNames' parameter is true
+//   - if both the name and value are present they must be separated by a colon
+//   - the name and the value may both be quoted with single- or double-quotes, double-square brackets
+//   - names or values quoted with {{double-curly braces}} are evaluated as a JavaScript expression
+//     - as long as the 'allowEval' parameter is true
+// The result is an array of objects:
+//   result[0] = object with a member for each parameter name, value of that member being an array of values
+//   result[1..n] = one object for each parameter, with 'name' and 'value' members
+String.prototype.parseParams = function(defaultName,defaultValue,allowEval,noNames,cascadeDefaults)
+{
+       var parseToken = function(match,p)
+               {
+               var n;
+               if(match[p]) // Double quoted
+                       n = match[p];
+               else if(match[p+1]) // Single quoted
+                       n = match[p+1];
+               else if(match[p+2]) // Double-square-bracket quoted
+                       n = match[p+2];
+               else if(match[p+3]) // Double-brace quoted
+                       try
+                               {
+                               n = match[p+3];
+                               if(allowEval)
+                                       n = window.eval(n);
+                               }
+                       catch(e)
+                               {
+                               throw "Unable to evaluate {{" + match[p+3] + "}}: " + exceptionText(e);
+                               }
+               else if(match[p+4]) // Unquoted
+                       n = match[p+4];
+               else if(match[p+5]) // empty quote
+                       n = "";
+               return n;
+               };
+       var r = [{}];
+       var dblQuote = "(?:\"((?:(?:\\\\\")|[^\"])+)\")";
+       var sngQuote = "(?:'((?:(?:\\\\\')|[^'])+)')";
+       var dblSquare = "(?:\\[\\[((?:\\s|\\S)*?)\\]\\])";
+       var dblBrace = "(?:\\{\\{((?:\\s|\\S)*?)\\}\\})";
+       var unQuoted = noNames ? "([^\"'\\s]\\S*)" : "([^\"':\\s][^\\s:]*)";
+       var emptyQuote = "((?:\"\")|(?:''))";
+       var skipSpace = "(?:\\s*)";
+       var token = "(?:" + dblQuote + "|" + sngQuote + "|" + dblSquare + "|" + dblBrace + "|" + unQuoted + "|" + emptyQuote + ")";
+       var re = noNames
+               ? new RegExp(token,"mg")
+               : new RegExp(skipSpace + token + skipSpace + "(?:(\\:)" + skipSpace + token + ")?","mg");
+       var params = [];
+       do {
+               var match = re.exec(this);
+               if(match)
+                       {
+                       var n = parseToken(match,1);
+                       if(noNames)
+                               r.push({name: "", value: n});
+                       else
+                               {
+                               var v = parseToken(match,8);
+                               if(v == null && defaultName)
+                                       {
+                                       v = n;
+                                       n = defaultName;
+                                       }
+                               else if(v == null && defaultValue)
+                                       v = defaultValue;
+                               r.push({name: n, value: v});
+                               if(cascadeDefaults)
+                                       {
+                                       defaultName = n;
+                                       defaultValue = v;
+                                       }
+                               }
+                       }
+       } while(match);
+       // Summarise parameters into first element
+       for(var t=1; t<r.length; t++)
+               {
+               if(r[0][r[t].name])
+                       r[0][r[t].name].push(r[t].value);
+               else
+                       r[0][r[t].name] = [r[t].value];
+               }
+       return r;
+}
+
+// Process a string list of macro parameters into an array. Parameters can be quoted with "", '',
+// [[]], {{ }} or left unquoted (and therefore space-separated). Double-braces {{}} results in
+// an *evaluated* parameter: e.g. {{config.options.txtUserName}} results in the current user's name.
+String.prototype.readMacroParams = function()
+{
+       var p = this.parseParams("list",null,true,true);
+       var n = [];
+       for(var t=1; t<p.length; t++)
+               n.push(p[t].value);
+       return n;
+}
+
+// Process a string list of unique tiddler names into an array. Tiddler names that have spaces in them must be [[bracketed]]
+String.prototype.readBracketedList = function(unique)
+{
+       var p = this.parseParams("list",null,false,true);
+       var n = [];
+       for(var t=1; t<p.length; t++)
+               n.pushUnique(p[t].value,unique);
+       return n;
+}
+
+// Returns array with start and end index of chunk between given start and end marker, or undefined.
+String.prototype.getChunkRange = function(start,end) 
+{
+       var s = this.indexOf(start);
+       if(s != -1)
+               {
+               s += start.length;
+               var e = this.indexOf(end,s);
+               if(e != -1)
+                       return [s, e];
+               }
+}
+
+// Replace a chunk of a string given start and end markers
+String.prototype.replaceChunk = function(start,end,sub)
+{
+       var r = this.getChunkRange(start,end);
+       return r 
+               ? this.substring(0,r[0]) + sub + this.substring(r[1])
+               : this;
+}
+
+// Returns a chunk of a string between start and end markers, or undefined
+String.prototype.getChunk = function(start,end)
+{
+       var r = this.getChunkRange(start,end);
+       if (r)
+               return this.substring(r[0],r[1]);
+}
+
+
+// Static method to bracket a string with double square brackets if it contains a space
+String.encodeTiddlyLink = function(title)
+{
+       if(title.indexOf(" ") == -1)
+               return(title);
+       else
+               return("[[" + title + "]]");
+}
+
+// Static method to encodeTiddlyLink for every item in an array and join them with spaces
+String.encodeTiddlyLinkList = function(list)
+{
+       if(list)
+               {
+               var results = [];
+               for(var t=0; t<list.length; t++)
+                       results.push(String.encodeTiddlyLink(list[t]));
+               return results.join(" ");
+               }
+       else
+               return "";
+}
+
+// Static method to left-pad a string with 0s to a certain width
+String.zeroPad = function(n,d)
+{
+       var s = n.toString();
+       if(s.length < d)
+               s = "000000000000000000000000000".substr(0,d-s.length) + s;
+       return(s);
+}
+
+String.prototype.startsWith = function(prefix) 
+{
+       return !prefix || this.substring(0,prefix.length) == prefix;
+}
+
+// Returns the first value of the given named parameter.
+//#
+//# @param params
+//#         as returned by parseParams or null/undefined
+//# @return [may be null/undefined]
+//#
+function getParam(params, name, defaultValue) {
+       if (!params)
+               return defaultValue;
+       var p = params[0][name];
+       return p ? p[0] : defaultValue;
+}
+
+// Returns the first value of the given boolean named parameter.
+//#
+//# @param params
+//#         as returned by parseParams or null/undefined
+//#
+function getFlag(params, name, defaultValue) {
+       return !!getParam(params, name, defaultValue);
+} 
+       
+// Substitute date components into a string
+Date.prototype.formatString = function(template)
+{
+       var t = template.replace(/0hh12/g,String.zeroPad(this.getHours12(),2));
+       t = t.replace(/hh12/g,this.getHours12());
+       t = t.replace(/0hh/g,String.zeroPad(this.getHours(),2));
+       t = t.replace(/hh/g,this.getHours());
+       t = t.replace(/0mm/g,String.zeroPad(this.getMinutes(),2));
+       t = t.replace(/mm/g,this.getMinutes());
+       t = t.replace(/0ss/g,String.zeroPad(this.getSeconds(),2));
+       t = t.replace(/ss/g,this.getSeconds());
+       t = t.replace(/[ap]m/g,this.getAmPm().toLowerCase());
+       t = t.replace(/[AP]M/g,this.getAmPm().toUpperCase());
+       t = t.replace(/wYYYY/g,this.getYearForWeekNo());
+       t = t.replace(/wYY/g,String.zeroPad(this.getYearForWeekNo()-2000,2));
+       t = t.replace(/YYYY/g,this.getFullYear());
+       t = t.replace(/YY/g,String.zeroPad(this.getFullYear()-2000,2));
+       t = t.replace(/MMM/g,config.messages.dates.months[this.getMonth()]);
+       t = t.replace(/mmm/g,config.messages.dates.shortMonths[this.getMonth()]);
+       t = t.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2));
+       t = t.replace(/MM/g,this.getMonth()+1);
+       t = t.replace(/0WW/g,String.zeroPad(this.getWeek(),2));
+       t = t.replace(/WW/g,this.getWeek());
+       t = t.replace(/DDD/g,config.messages.dates.days[this.getDay()]);
+       t = t.replace(/ddd/g,config.messages.dates.shortDays[this.getDay()]);
+       t = t.replace(/0DD/g,String.zeroPad(this.getDate(),2));
+       t = t.replace(/DDth/g,this.getDate()+this.daySuffix());
+       t = t.replace(/DD/g,this.getDate());
+       return t;
+}
+
+Date.prototype.getWeek = function()
+{
+       var dt = new Date(this.getTime());
+       var d = dt.getDay();
+       if (d==0) d=7;// JavaScript Sun=0, ISO Sun=7
+       dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week to calculate weekNo
+       var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1)+3600000)/86400000); 
+       return Math.floor(n/7)+1;
+}
+
+Date.prototype.getYearForWeekNo = function()
+{
+       var dt = new Date(this.getTime());
+       var d = dt.getDay();
+       if (d==0) d=7;// JavaScript Sun=0, ISO Sun=7
+       dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week
+       return dt.getFullYear();
+}
+
+Date.prototype.getHours12 = function()
+{
+       var h = this.getHours();
+       return h > 12 ? h-12 : ( h > 0 ? h : 12 );
+}
+
+Date.prototype.getAmPm = function()
+{
+       return this.getHours() >= 12 ? "pm" : "am";
+}
+
+Date.prototype.daySuffix = function()
+{
+       var num = this.getDate();
+       if (num >= 11 && num <= 13) return "th";
+       else if (num.toString().substr(-1)=="1") return "st";
+       else if (num.toString().substr(-1)=="2") return "nd";
+       else if (num.toString().substr(-1)=="3") return "rd";
+       return "th";
+}
+
+// Convert a date to local YYYYMMDDHHMM string format
+Date.prototype.convertToLocalYYYYMMDDHHMM = function()
+{
+       return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2));
+}
+
+// Convert a date to UTC YYYYMMDDHHMM string format
+Date.prototype.convertToYYYYMMDDHHMM = function()
+{
+       return(String.zeroPad(this.getUTCFullYear(),4) + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2));
+}
+
+// Convert a date to UTC YYYYMMDD.HHMMSSMMM string format
+Date.prototype.convertToYYYYMMDDHHMMSSMMM = function()
+{
+       return(String.zeroPad(this.getUTCFullYear(),4) + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + "." + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2) + String.zeroPad(this.getUTCSeconds(),2) + String.zeroPad(this.getUTCMilliseconds(),4));
+}
+
+// Static method to create a date from a UTC YYYYMMDDHHMM format string
+Date.convertFromYYYYMMDDHHMM = function(d)
+{
+       var theDate = new Date(Date.UTC(parseInt(d.substr(0,4),10),
+                                                       parseInt(d.substr(4,2),10)-1,
+                                                       parseInt(d.substr(6,2),10),
+                                                       parseInt(d.substr(8,2),10),
+                                                       parseInt(d.substr(10,2),10),0,0));
+       return(theDate);
+}
+
+// ---------------------------------------------------------------------------------
+// Crypto functions and associated conversion routines
+// ---------------------------------------------------------------------------------
+
+// Crypto "namespace"
+function Crypto() {}
+
+// Convert a string to an array of big-endian 32-bit words
+Crypto.strToBe32s = function(str)
+{
+       var be = Array();
+       var len = Math.floor(str.length/4);
+       var i, j;
+       for(i=0, j=0; i<len; i++, j+=4)
+               {
+               be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
+               }
+       while (j<str.length)
+               {
+               be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
+               j++;
+               }
+       return be;
+}
+
+// Convert an array of big-endian 32-bit words to a string
+Crypto.be32sToStr = function(be)
+{
+       var str = "";
+       for(var i=0;i<be.length*32;i+=8)
+               str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
+       return str;
+}
+
+// Convert an array of big-endian 32-bit words to a hex string
+Crypto.be32sToHex = function(be)
+{
+       var hex = "0123456789ABCDEF";
+       var str = "";
+       for(var i=0;i<be.length*4;i++)
+               str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
+       return str;
+}
+
+// Return, in hex, the SHA-1 hash of a string
+Crypto.hexSha1Str = function(str)
+{
+       return Crypto.be32sToHex(Crypto.sha1Str(str));
+}
+
+// Return the SHA-1 hash of a string
+Crypto.sha1Str = function(str)
+{
+       return Crypto.sha1(Crypto.strToBe32s(str),str.length);
+}
+
+// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
+Crypto.sha1 = function(x,blen)
+{
+       // Add 32-bit integers, wrapping at 32 bits
+       //# Uses 16-bit operations internally to work around bugs in some JavaScript interpreters.
+       add32 = function(a,b)
+       {
+               var lsw = (a&0xFFFF)+(b&0xFFFF);
+               var msw = (a>>16)+(b>>16)+(lsw>>16);
+               return (msw<<16)|(lsw&0xFFFF);
+       };
+       // Add five 32-bit integers, wrapping at 32 bits
+       //# Uses 16-bit operations internally to work around bugs in some JavaScript interpreters.
+       add32x5 = function(a,b,c,d,e)
+       {
+               var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
+               var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
+               return (msw<<16)|(lsw&0xFFFF);
+       };
+       // Bitwise rotate left a 32-bit integer by 1 bit
+       rol32 = function(n)
+       {
+               return (n>>>31)|(n<<1);
+       };
+
+       var len = blen*8;
+       // Append padding so length in bits is 448 mod 512
+       x[len>>5] |= 0x80 << (24-len%32);
+       // Append length
+       x[((len+64>>9)<<4)+15] = len;
+       var w = Array(80);
+
+       var k1 = 0x5A827999;
+       var k2 = 0x6ED9EBA1;
+       var k3 = 0x8F1BBCDC;
+       var k4 = 0xCA62C1D6;
+
+       var h0 = 0x67452301;
+       var h1 = 0xEFCDAB89;
+       var h2 = 0x98BADCFE;
+       var h3 = 0x10325476;
+       var h4 = 0xC3D2E1F0;
+
+       for(var i=0;i<x.length;i+=16)
+               {
+               var j,t;
+               var a = h0;
+               var b = h1;
+               var c = h2;
+               var d = h3;
+               var e = h4;
+               for(j = 0;j<16;j++)
+                       {
+                       w[j] = x[i+j];
+                       t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
+                       e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
+                       }
+               for(j=16;j<20;j++)
+                       {
+                       w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
+                       t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
+                       e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
+                       }
+               for(j=20;j<40;j++)
+                       {
+                       w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
+                       t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
+                       e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
+                       }
+               for(j=40;j<60;j++)
+                       {
+                       w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
+                       t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
+                       e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
+                       }
+               for(j=60;j<80;j++)
+                       {
+                       w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
+                       t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
+                       e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
+                       }
+
+               h0 = add32(h0,a);
+               h1 = add32(h1,b);
+               h2 = add32(h2,c);
+               h3 = add32(h3,d);
+               h4 = add32(h4,e);
+               }
+       return Array(h0,h1,h2,h3,h4);
+}
+
+// ---------------------------------------------------------------------------------
+// RGB colour object
+// ---------------------------------------------------------------------------------
+
+// Construct an RGB colour object from a '#rrggbb', '#rgb' or 'rgb(n,n,n)' string or from separate r,g,b values
+function RGB(r,g,b)
+{
+       this.r = 0;
+       this.g = 0;
+       this.b = 0;
+       if(typeof r == "string")
+               {
+               if(r.substr(0,1) == "#")
+                       {
+                       if(r.length == 7)
+                               {
+                               this.r = parseInt(r.substr(1,2),16)/255;
+                               this.g = parseInt(r.substr(3,2),16)/255;
+                               this.b = parseInt(r.substr(5,2),16)/255;
+                               }
+                       else
+                               {
+                               this.r = parseInt(r.substr(1,1),16)/15;
+                               this.g = parseInt(r.substr(2,1),16)/15;
+                               this.b = parseInt(r.substr(3,1),16)/15;
+                               }
+                       }
+               else
+                       {
+                       var rgbPattern = /rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/ ;
+                       var c = r.match(rgbPattern);
+                       if (c)
+                               {
+                               this.r = parseInt(c[1],10)/255;
+                               this.g = parseInt(c[2],10)/255;
+                               this.b = parseInt(c[3],10)/255;
+                               }
+                       }
+               }
+       else
+               {
+               this.r = r;
+               this.g = g;
+               this.b = b;
+               }
+       return this;
+}
+
+// Mixes this colour with another in a specified proportion
+// c = other colour to mix
+// f = 0..1 where 0 is this colour and 1 is the new colour
+// Returns an RGB object
+RGB.prototype.mix = function(c,f)
+{
+       return new RGB(this.r + (c.r-this.r) * f,this.g + (c.g-this.g) * f,this.b + (c.b-this.b) * f);
+}
+
+// Return an rgb colour as a #rrggbb format hex string
+RGB.prototype.toString = function()
+{
+       var r = this.r.clamp(0,1);
+       var g = this.g.clamp(0,1);
+       var b = this.b.clamp(0,1);
+       return("#" + ("0" + Math.floor(r * 255).toString(16)).right(2) +
+                                ("0" + Math.floor(g * 255).toString(16)).right(2) +
+                                ("0" + Math.floor(b * 255).toString(16)).right(2));
+}
+
+// ---------------------------------------------------------------------------------
+// DOM utilities - many derived from www.quirksmode.org
+// ---------------------------------------------------------------------------------
+
+function drawGradient(place,horiz,colours)
+{
+       for(var t=0; t<= 100; t+=2)
+               {
+               var bar = document.createElement("div");
+               place.appendChild(bar);
+               bar.style.position = "absolute";
+               bar.style.left = horiz ? t + "%" : 0;
+               bar.style.top = horiz ? 0 : t + "%";
+               bar.style.width = horiz ? (101-t) + "%" : "100%";
+               bar.style.height = horiz ? "100%" : (101-t) + "%";
+               bar.style.zIndex = -1;
+               var f = t/100;
+               var p = f*(colours.length-1);
+               bar.style.backgroundColor = colours[Math.floor(p)].mix(colours[Math.ceil(p)],p-Math.floor(p)).toString();
+               }
+}
+
+function createTiddlyText(theParent,theText)
+{
+       return theParent.appendChild(document.createTextNode(theText));
+}
+
+function createTiddlyCheckbox(theParent,caption,checked,onChange)
+{
+       var cb = document.createElement("input");
+       cb.setAttribute("type","checkbox");
+       cb.onclick = onChange;
+       theParent.appendChild(cb);
+       cb.checked = checked;
+       cb.className = "chkOptionInput";
+       if(caption)
+               wikify(caption,theParent);
+       return cb;
+}
+
+function createTiddlyElement(theParent,theElement,theID,theClass,theText)
+{
+       var e = document.createElement(theElement);
+       if(theClass != null)
+               e.className = theClass;
+       if(theID != null)
+               e.setAttribute("id",theID);
+       if(theText != null)
+               e.appendChild(document.createTextNode(theText));
+       if(theParent != null)
+               theParent.appendChild(e);
+       return(e);
+}
+
+// Add an event handler
+// Thanks to John Resig, via QuirksMode
+function addEvent(obj,type,fn)
+{
+       if(obj.attachEvent)
+               {
+               obj['e'+type+fn] = fn;
+               obj[type+fn] = function(){obj['e'+type+fn](window.event);}
+               obj.attachEvent('on'+type,obj[type+fn]);
+               }
+       else
+               obj.addEventListener(type,fn,false);
+}
+
+// Remove  an event handler
+// Thanks to John Resig, via QuirksMode
+function removeEvent(obj,type,fn)
+{
+       if(obj.detachEvent)
+               {
+               obj.detachEvent('on'+type,obj[type+fn]);
+               obj[type+fn] = null;
+               }
+       else
+               obj.removeEventListener(type,fn,false);
+}
+
+function addClass(e,theClass)
+{
+       var currClass = e.className.split(" ");
+       if(currClass.indexOf(theClass) == -1)
+               e.className += " " + theClass;
+}
+
+function removeClass(e,theClass)
+{
+       var currClass = e.className.split(" ");
+       var i = currClass.indexOf(theClass);
+       while(i != -1)
+               {
+               currClass.splice(i,1);
+               i = currClass.indexOf(theClass);
+               }
+       e.className = currClass.join(" ");
+}
+
+function hasClass(e,theClass)
+{
+       if(e.className)
+               {
+               if(e.className.split(" ").indexOf(theClass) != -1)
+                       return true;
+               }
+       return false;
+}
+
+// Find the closest relative with a given property value (property defaults to tagName, relative defaults to parentNode)
+function findRelated(e,value,name,relative)
+{
+       name = name ? name : "tagName";
+       relative = relative ? relative : "parentNode";
+       if(name == "className")
+               {
+               while(e && !hasClass(e,value))
+                       {
+                       e = e[relative];
+                       }
+               }
+       else
+               {
+               while(e && e[name] != value)
+                       {
+                       e = e[relative];
+                       }
+               }
+       return e;
+}
+
+// Resolve the target object of an event
+function resolveTarget(e)
+{
+       var obj;
+       if (e.target)
+               obj = e.target;
+       else if (e.srcElement)
+               obj = e.srcElement;
+       if (obj.nodeType == 3) // defeat Safari bug
+               obj = obj.parentNode;
+       return(obj);
+}
+
+// Return the content of an element as plain text with no formatting
+function getPlainText(e)
+{
+       var text = "";
+       if(e.innerText)
+               text = e.innerText;
+       else if(e.textContent)
+               text = e.textContent;
+       return text;
+}
+
+// Get the scroll position for window.scrollTo necessary to scroll a given element into view
+function ensureVisible(e)
+{
+       var posTop = findPosY(e);
+       var posBot = posTop + e.offsetHeight;
+       var winTop = findScrollY();
+       var winHeight = findWindowHeight();
+       var winBot = winTop + winHeight;
+       if(posTop < winTop)
+               return(posTop);
+       else if(posBot > winBot)
+               {
+               if(e.offsetHeight < winHeight)
+                       return(posTop - (winHeight - e.offsetHeight));
+               else
+                       return(posTop);
+               }
+       else
+               return(winTop);
+}
+
+// Get the current width of the display window
+function findWindowWidth()
+{
+       return(window.innerWidth ? window.innerWidth : document.documentElement.clientWidth);
+}
+
+// Get the current height of the display window
+function findWindowHeight()
+{
+       return(window.innerHeight ? window.innerHeight : document.documentElement.clientHeight);
+}
+
+// Get the current horizontal page scroll position
+function findScrollX()
+{
+       return(window.scrollX ? window.scrollX : document.documentElement.scrollLeft);
+}
+
+// Get the current vertical page scroll position
+function findScrollY()
+{
+       return(window.scrollY ? window.scrollY : document.documentElement.scrollTop);
+}
+
+function findPosX(obj)
+{
+       var curleft = 0;
+       while (obj.offsetParent)
+               {
+               curleft += obj.offsetLeft;
+               obj = obj.offsetParent;
+               }
+       return curleft;
+}
+
+function findPosY(obj)
+{
+       var curtop = 0;
+       while (obj.offsetParent)
+               {
+               curtop += obj.offsetTop;
+               obj = obj.offsetParent;
+               }
+       return curtop;
+}
+
+// Blur a particular element
+function blurElement(e)
+{
+       if(e != null && e.focus && e.blur)
+               {
+               e.focus();
+               e.blur();
+               }
+}
+
+// Create a non-breaking space
+function insertSpacer(place)
+{
+       var e = document.createTextNode(String.fromCharCode(160));
+       if(place)
+               place.appendChild(e);
+       return e;
+}
+
+// Remove all children of a node
+function removeChildren(e)
+{
+       while(e.hasChildNodes())
+               e.removeChild(e.firstChild);
+}
+
+// Add a stylesheet, replacing any previous custom stylesheet
+function setStylesheet(s,id)
+{
+       if(!id)
+               id = "customStyleSheet";
+       var n = document.getElementById(id);
+       if(document.createStyleSheet) // Test for IE's non-standard createStyleSheet method
+               {
+               if(n)
+                       n.parentNode.removeChild(n);
+               // This failed without the &nbsp;
+               document.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd","&nbsp;<style id='" + id + "'>" + s + "</style>");
+               }
+       else
+               {
+               if(n)
+                       n.replaceChild(document.createTextNode(s),n.firstChild);
+               else
+                       {
+                       var n = document.createElement("style");
+                       n.type = "text/css";
+                       n.id = id;
+                       n.appendChild(document.createTextNode(s));
+                       document.getElementsByTagName("head")[0].appendChild(n);
+                       }
+               }
+}
+
+// Replace the current selection of a textarea or text input and scroll it into view
+
+function replaceSelection(e,text)
+{
+       if (e.setSelectionRange)
+               {
+               var oldpos = e.selectionStart + 1;
+               e.value = e.value.substr(0,e.selectionStart) + text + e.value.substr(e.selectionStart);
+               e.setSelectionRange( oldpos, oldpos);
+               var linecount = e.value.split('\n').length;
+               var thisline = e.value.substr(0,e.selectionStart).split('\n').length-1;
+               e.scrollTop = Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
+               }
+       else if (document.selection)
+               {
+               var range = document.selection.createRange();
+               if (range.parentElement() == e)
+                       {
+                       var isCollapsed = range.text == "";
+                       range.text = text;
+                        if (!isCollapsed)
+                               {
+                               range.moveStart('character', -text.length);
+                               range.select();
+                               }
+                       }
+               }
+}
+
+// Returns the text of the given (text) node, possibly merging subsequent text nodes
+function getNodeText(e)
+{
+       var t = ""; 
+       while (e && e.nodeName == "#text")
+               {
+               t += e.nodeValue;
+               e = e.nextSibling;
+               }
+       return t;
+}
+//# -------------------------
+//# LoaderBase: A (abstract) storage loader that loads the tiddlers from a list of HTML elements.
+//# The format of the elements is defined by subclasses of this loader through the internalizeTiddler implementation.
+//# Subclasses must implement:
+//#                    function getTitle(store, e)
+//#
+//# store must implement:
+//#                    function createTiddler(title).
+//#
+
+function LoaderBase()
+{
+}
+
+LoaderBase.prototype.loadTiddler = function(store,e,tiddlers)
+{
+       var title = this.getTitle(store, e);
+       if (title)
+               {
+               var tiddler = store.createTiddler(title);
+               this.internalizeTiddler(store, tiddler, title, e);
+               tiddlers.push(tiddler);
+               }
+}
+
+LoaderBase.prototype.loadTiddlers = function(store,nodes)
+{
+       var tiddlers = [];
+       for (var t = 0; t < nodes.length; t++)
+               {
+               try
+                       {
+                       this.loadTiddler(store, nodes[t], tiddlers);
+                       }
+               catch(e)
+                       {
+                       showException(e, config.messages.tiddlerLoadError.format([this.getTitle(store, nodes[t])]));
+                       }
+               }
+       return tiddlers;
+}
+       
+//# -------------------------
+//# SaverBase: a (abstract) storage saver that externalizes all tiddlers into a string, 
+//# with every tiddler individually externalized (using this.externalizeTiddler) and joined with newlines 
+//# Subclasses must implement:
+//#                    function externalizeTiddler(store, tiddler)
+//#
+//# store must implement:
+//#                    function getTiddlers(sortByFieldName)
+//#
+
+function SaverBase()
+{
+}
+
+SaverBase.prototype.externalize = function(store) 
+{
+       var results = [];
+       var tiddlers = store.getTiddlers("title");
+       for (var t = 0; t < tiddlers.length; t++)
+               results.push(this.externalizeTiddler(store, tiddlers[t]));
+       return results.join("\n");
+}
+//--------------------------------
+// TW21Loader (inherits from LoaderBase)
+
+function TW21Loader() {};
+
+TW21Loader.prototype = new LoaderBase();
+
+TW21Loader.prototype.getTitle = function(store, e) {
+       var title = null;
+       if(e.getAttribute)
+               title = e.getAttribute("tiddler");
+       if(!title && e.id) {    
+               var lenPrefix = store.idPrefix.length;
+               if (e.id.substr(0,lenPrefix) == store.idPrefix)
+                       title = e.id.substr(lenPrefix);
+       }
+       return title;
+}
+
+TW21Loader.prototype.internalizeTiddler = function(store, tiddler, title, data) {
+       var text = getNodeText(data.firstChild).unescapeLineBreaks();
+       var modifier = data.getAttribute("modifier");
+       var modified = Date.convertFromYYYYMMDDHHMM(data.getAttribute("modified"));
+       var c = data.getAttribute("created");
+       var created = c ? Date.convertFromYYYYMMDDHHMM(c) : modified;
+       var tags = data.getAttribute("tags");
+       var fields = {};
+       var attrs = data.attributes;
+       for(var i = attrs.length-1; i >= 0; i--) {
+               var name = attrs[i].name;
+               if (attrs[i].specified && !TiddlyWiki.isStandardField(name)) {
+                       fields[name] = attrs[i].value.unescapeLineBreaks();
+               }
+       }
+       tiddler.assign(title,text,modifier,modified,tags,created, fields);
+       return tiddler;
+};
+
+//--------------------------------
+// TW21Saver (inherits from SaverBase)
+
+function TW21Saver() {};
+
+TW21Saver.prototype = new SaverBase();
+
+TW21Saver.prototype.externalizeTiddler = function(store, tiddler) 
+{
+       try {
+               var extendedFieldAttributes = "";
+               store.forEachField(tiddler, 
+                       function(tiddler, fieldName, value) {
+                               // don't store stuff from the temp namespace
+                               if (!fieldName.match(/^temp\./))
+                                       extendedFieldAttributes += ' %0="%1"'.format([fieldName, value.escapeLineBreaks().htmlEncode()]);
+                       }, true);
+               return '<div tiddler="%0" modifier="%1" modified="%2" created="%3" tags="%4"%6>%5</div>'.format([
+                               tiddler.title.htmlEncode(),
+                               tiddler.modifier.htmlEncode(),
+                               tiddler.modified.convertToYYYYMMDDHHMM(),
+                               tiddler.created.convertToYYYYMMDDHHMM(),
+                               tiddler.getTags().htmlEncode(),
+                               tiddler.escapeLineBreaks().htmlEncode(),
+                               extendedFieldAttributes
+                       ]);
+       } catch (e) {
+               throw exceptionText(e, config.messages.tiddlerSaveError.format([tiddler.title]));
+       }
+}
+
+// ---------------------------------------------------------------------------------
+// Deprecated code
+// ---------------------------------------------------------------------------------
+
+// @Deprecated: Use createElementAndWikify and this.termRegExp instead
+config.formatterHelpers.charFormatHelper = function(w)
+{
+       w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
+}
+
+// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
+config.formatterHelpers.monospacedByLineHelper = function(w)
+{
+       var lookaheadRegExp = new RegExp(this.lookahead,"mg");
+       lookaheadRegExp.lastIndex = w.matchStart;
+       var lookaheadMatch = lookaheadRegExp.exec(w.source);
+       if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
+               {
+               var text = lookaheadMatch[1];
+               if(config.browser.isIE)
+                       text = text.replace(/\n/g,"\r");
+               createTiddlyElement(w.output,"pre",null,null,text);
+               w.nextMatch = lookaheadRegExp.lastIndex;
+               }
+}
+
+// @Deprecated: Use <br> or <br /> instead of <<br>>
+config.macros.br.handler = function(place)
+{
+       createTiddlyElement(place,"br");
+}
+
+// Find an entry in an array. Returns the array index or null
+// @Deprecated: Use indexOf instead
+Array.prototype.find = function(item)
+{
+       var i = this.indexOf(item);
+       return i == -1 ? null : i;
+}
+
+// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
+// @Deprecated: Use store.getLoader().internalizeTiddler instead
+Tiddler.prototype.loadFromDiv = function(divRef,title)
+{
+       return store.getLoader().internalizeTiddler(store,this,title,divRef);
+}
+
+// Format the text for storage in an HTML DIV
+// @Deprecated Use store.getSaver().externalizeTiddler instead.
+Tiddler.prototype.saveToDiv = function()
+{
+       return store.getSaver().externalizeTiddler(store,this);
+}
+
+// @Deprecated: Use store.allTiddlersAsHtml() instead
+function allTiddlersAsHtml()
+{
+       return store.allTiddlersAsHtml();
+}
+
+// @Deprecated: Use refreshPageTemplate instead
+function applyPageTemplate(title)
+{
+       refreshPageTemplate(title);
+}
+
+// @Deprecated: Use story.displayTiddlers instead
+function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,slowly)
+{
+       story.displayTiddlers(srcElement,titles,template,animate,slowly);
+}
+
+// @Deprecated: Use story.displayTiddler instead
+function displayTiddler(srcElement,title,template,unused1,unused2,animate,slowly)
+{
+       story.displayTiddler(srcElement,title,template,animate,slowly);
+}
+
+// @Deprecated: Use functions on right hand side directly instead
+var createTiddlerPopup = Popup.create;
+var scrollToTiddlerPopup = Popup.show;
+var hideTiddlerPopup = Popup.remove;
+
+// @Deprecated: Use right hand side directly instead
+var regexpBackSlashEn = new RegExp("\\\\n","mg");
+var regexpBackSlash = new RegExp("\\\\","mg");
+var regexpBackSlashEss = new RegExp("\\\\s","mg");
+var regexpNewLine = new RegExp("\n","mg");
+var regexpCarriageReturn = new RegExp("\r","mg");
+// ---------------------------------------------------------------------------------
+// End of scripts
+merge(config.shadowTiddlers,{SiteTitle:'DevFire'});
+merge(config.shadowTiddlers,{MainMenu:"PageTemplate\nStyleSheet\nMainMenu\nDefaultTiddlers"});
+merge(config.shadowTiddlers,{SiteSubtitle:"a theme for ~TiddlyWiki"});
+merge(config.shadowTiddlers,{DefaultTiddlers:"LorumIpsum"});
+merge(config.shadowTiddlers,{LorumIpsum:"Aenean eros arcu, condimentum nec, dapibus ut, tincidunt sit amet, urna. Quisque viverra, eros sed imperdiet iaculis, est risus facilisis quam, id malesuada arcu nulla luctus urna. Nullam et est. Vestibulum velit sem, faucibus cursus, dapibus vestibulum, pellentesque et, urna. Donec luctus. Donec lectus. Aliquam eget eros facilisis tortor feugiat sollicitudin. Integer lobortis vulputate sapien. Sed iaculis erat ac nunc. Etiam eu enim. Mauris ipsum urna, rhoncus at, bibendum sit amet, euismod eget, dolor. Mauris fermentum quam vitae ligula. Vestibulum in libero feugiat justo dictum consectetuer. Vestibulum euismod purus eget elit. Nunc sed massa porta elit bibendum posuere. Nunc pulvinar justo sit amet odio. In sed est. Phasellus ornare elementum nulla. Nulla ipsum neque, cursus a, viverra a, imperdiet at, enim. Quisque facilisis, diam sed accumsan suscipit, odio arcu hendrerit dolor, quis aliquet massa nulla nec sem.\n!heading 1\n!!heading 2\n!!!heading3\n----\n<<tag button>>\nThis is a link to a [[StyleSheet]] tiddler.\n\n> This is a blockquote\n> This is a blockquote\n> This is a blockquote\n|>|>| !This is a header |h\n|column1|column2|column3|\n|row2| row2 |row2|\n|column1|column2|column3|\n|row2| row2 |row2|\n|column1|column2|column3|\n|row2| row2 |row2|"});
+// ---------------------------------------------------------------------------------
+//]]>
+</script>
+<style type="text/css">
+
+#saveTest {
+       display: none;
+}
+
+.zoomer {
+       display: none;
+}
+
+#messageArea {
+       display: none;
+}
+
+#copyright {
+       display: none;
+}
+
+.popup {
+       position: absolute;
+}
+
+#storeArea {
+       display: none;
+       margin: 4em 10em 3em;
+}
+
+#storeArea div {
+ padding: 0.5em;
+ margin: 1em 0em 0em 0em;
+ border-color: #f0f0f0 #606060 #404040 #d0d0d0; 
+ border-style: solid; 
+ border-width: 2px;
+ overflow: auto;
+}
+
+#javascriptWarning {
+       width: 100%;
+       text-align: center;
+       font-weight: bold;
+       background-color: #dd1100;
+       color: #fff;
+       padding:1em 0em; 
+}
+
+</style>
+<!--POST-HEAD-START-->
+
+<!--POST-HEAD-END-->
+</head>
+<body onload="main();" onunload="if(window.checkUnsavedChanges) checkUnsavedChanges();">
+<!--PRE-BODY-START-->
+
+<!--PRE-BODY-END-->
+       <script type="text/javascript">
+//<![CDATA[
+if (useJavaSaver)
+       document.write("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1' height='1'></applet>");
+//]]>
+       </script>
+       <div id="copyright">
+       Welcome to TiddlyWiki by Jeremy Ruston, Copyright &copy; 2006 Osmosoft Limited
+       </div>
+       <noscript>
+               <div id="javascriptWarning">This page requires JavaScript to function properly</div>
+       </noscript>
+       <div id="saveTest"></div>
+       <div id="contentWrapper"></div>
+       <div id="contentStash"></div>
+       <div id="storeArea">
+<div tiddler="(built-in shadow tiddler)" modifier="CameronRich" modified="200702240024" created="200702240024" tags="">changes, notes and errata</div>
+<div tiddler="Cam" modifier="YourName" modified="200804011313" created="200804011313" tags="">Type the text for 'YourName'</div>
+<div tiddler="Changelog" modifier="YourName" modified="200901301233" created="200702240022" tags="">@@bgcolor(#ff0000):color(#ffffff):Changes for 1.2.1@@\n\n!!__SSL Library__\n* Certificate verification now works for Firefox.\n* Extended the openssl API.\n\n@@bgcolor(#ff0000):color(#ffffff):Changes for 1.2.0@@\n\n!!__SSL Library__\n* A self-signed certificate will be verified as ok provided that that it is on the certificate authority list.\n* Certificates are not verified when added as certificate authorities (since self-signed and expired certificates can be added to browsers etc)\n\n@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.9@@\n\n!!__SSL Library__\n* Now support MS IIS resource kit certificates (thanks to Carsten Sørensen).\n* Fixed a memory leak when freeing more than one CA certificate.\n* The bigint library had a problem with squaring which affected classical reduction (thanks to Manuel Klimek).\n\n!!__axhttpd__\n* Brought back setuid()/setgid() as an option.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.8@@\n\n!!__SSL Library__\n* Now using a BSD style license.\n* Self-signed certificates can now be automatically generated (the keys still need to be provided).\n* A new API call //ssl_x509_create()// can be used to programatically  create the certificate.\n* Certificate/keys can be loaded automatically given a file location.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.7@@\n\n!!__SSL Library__\n\n* Variable sized session id's is now better handled for session caching. It has meant a new API call //ssl_get_session_id_size()// and a change to //ssl_client_new()// to define the session id size.\n* Muliple records with a single header are now better supported (thanks to Hervé Sibert).\n* ~MD2 added for Verisign root cert verification (thanks to Byron Rakitzis).\n* The ~MD5/~SHA1 digests are calculated incrementally to reduce memory (thanks to Byron Rakitzis).\n* The bigint cache is now cleared regularly to reduce memory.\n\n!!__axhttpd__\n\n* Improved the POST handling (thanks to Christian Melki).\n* CSS files now work properly.\n* Lua's CGI launcher location is configurable.\n* //vfork()// is now used for CGI for performance reasons.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.6@@\n\n!!__SSL Library__\n\n* ~RC4 speed improvements\n* Lua samples/bindings now work properly\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.5@@\n\n!!__SSL Library__\n\n* Session id's can now be variable lengths in server hello messages.\n* 0 length client certificates are now supported.\n* ssl_version() now returns just the version and not the date.\n* ssl_write() was not sending complete packets under load.\n\n!!__axhttpd__\n\n* Completely updated the CGI code.\n* Lua now integrated - Lua scripts and Lua Pages now run.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.4@@\n\n!!__SSL Library__\n\n* Fixed a Win32 crypto library issue with non-Administrator users\n* Removed compiler warnings that showed up in ~FC6.\n* GNU TLS certificates are now accepted.\n* Separated the send/receive headers for HMAC calculations.\n* Fixed a compilation problem with swig/perl/~FC6.\n* Fixed an issue with loading PEM CA certificates.\n\n!!__axhttpd__\n\n* Made //setuid()/setgid()// call an mconf option.\n* Made //chroot()// an mconf option. Default to //chdir()// instead.\n* Removed optional permissions checking.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.1@@\n\n!!__SSL Library__\n\n* AES should now work on 16bit processors (there was an alignment problem).\n* Various freed objects are cleared before freeing.\n* Header files now installed in ///usr/local/include/axTLS//.\n* -DCYGWIN replaced with -~DCONFIG_PLATFORM_CYGWIN (and the same for Solaris).\n* removed &quot;-noextern&quot; option in Swig. Fixed some other warnings in Win32.\n* SSLCTX changed to ~SSL_CTX (to be consistent with openssl). SSLCTX still exists for backwards compatibility.\n* malloc() and friends call abort() on failure.\n* Fixed a memory leak in directory listings.\n* Added openssl() compatibility functions.\n* Fixed Cygwin 'make install' issue.\n\n!!__axhttpd__\n\n* main.c now becomes axhttpd.c.\n* Header file issue fixed (in mime_types.c).\n* //chroot()// now used for better security.\n* Basic authentication implemented (via .htpasswd).\n* SSL access/denial protection implemented (via .htaccess).\n* Directory access protection implemented (via .htaccess).\n* Can now have more than one CGI file extension in mconf.\n* &quot;~If-Modified-Since&quot; request now handled properly.\n* Performance tweaks to remove //ssl_find()//.</div>
+<div tiddler="DefaultTiddlers" modifier="CameronRich" modified="200702240019" created="200702240019" tags="">[[Read Me]]</div>
+<div tiddler="License" modifier="YourName" modified="200804011309" created="200702240022" tags="">axTLS uses a BSD style license:\n\nCopyright (c) 2008, Cameron Rich All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer. Redistributions in binary\nform must reproduce the above copyright notice, this list of conditions and\nthe following disclaimer in the documentation and/or other materials\nprovided with the distribution. Neither the name of the axTLS Project nor\nthe names of its contributors may be used to endorse or promote products\nderived from this software without specific prior written permission. \n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\nLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\nOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.</div>
+<div tiddler="MainMenu" modifier="CameronRich" modified="200702250353" created="200702240021" tags="">[[Read Me]] \n[[Changelog]]\n[[axhttpd]]\n[[License]]</div>
+<div tiddler="PageTemplate" modifier="YourName" modified="200701122313" created="200701122350" tags="DevFireTheme">&lt;div class='header' macro='gradient vert #390108 #900'&gt;\n&lt;div class='headerShadow'&gt;\n&lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;\n&lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;\n&lt;/div&gt;\n&lt;div class='headerForeground'&gt;\n&lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;\n&lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;\n&lt;/div&gt;\n&lt;/div&gt;\n&lt;div id='mainMenu'&gt;\n&lt;div refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;\n&lt;/div&gt;\n&lt;div id='sidebar'&gt;\n&lt;div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'&gt;&lt;/div&gt;\n&lt;div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'&gt;&lt;/div&gt;\n&lt;/div&gt;\n&lt;div id='displayArea'&gt;\n&lt;div id='messageArea'&gt;&lt;/div&gt;\n&lt;div id='tiddlerDisplay'&gt;&lt;/div&gt;\n&lt;/div&gt;</div>
+<div tiddler="Read Me" modifier="YourName" modified="200804011313" created="200702240020" tags="">!@@bgcolor(#ff0000):color(#ffffff):axTLS Quick Start Guide@@\n\nThis is a guide to get a small SSL web-server up and running quickly.\n\n!!__Introduction__\n\nThe axTLS project is an SSL client/server library using the ~TLSv1 protocol. It is designed to be small and fast, and is suited to embedded projects. A web server is included.\n\nThe basic web server + SSL library is around 60-70kB and is configurable for features or size.\n\n!!__Compilation__\n\nAll platforms require GNU make. This means on Win32 that Cygwin needs to be installed with &quot;make&quot; and various developer options selected.\n\nConfiguration now uses a tool called &quot;mconf&quot; which gives a nice way to configure options (similar to what is used in ~BusyBox and the Linux kernel).\n\nYou should be able to compile axTLS simply by extracting it, change into the extracted directory and typing:\n\n{{indent{{{{&gt;  make}}}\n\nSelect your platform type, save the configuration, exit, and then type &quot;make&quot; again.\n\nIf all goes well, you should end up with an executable called &quot;axhttpd&quot; (or axhttpd.exe) in the //_stage// directory.\n\nTo play with all the various axTLS options, type:\n\n{{indent{{{{&gt;  make menuconfig}}}\n\nSave the new configuration and rebuild.\n\n!!__Running it__\n\nTo run it, go to the //_stage// directory, and type (as superuser):\n\n{{indent{{{{&gt; axhttpd}}}\n\nNote: you may have to set your ~LD_LIBRARY_PATH - e.g. go to //_stage// and type //export ~LD_LIBRARY_PATH=`pwd`//\n\nAnd then point your browser at https://127.0.0.1 And you should see a this html page with a padlock appearing on your browser. or type http://127.0.0.1 to see the same page unencrypted.\n\n!!__The axssl utilities__\n\nThe axssl suite of tools are the SSL test tools in the various language bindings. They are:\n\n* axssl              - C sample\n* axssl.csharp    - C# sample\n* axssl.vbnet      - VB.NET sample\n* axtls.jar           - Java sample\n* axssl.pl           - Perl sample\n* axssl.lua         - Lua sample\n\nAll the tools have identical command-line parameters. e.g. to run something interesting:\n\n{{indent{{{{&gt; axssl s_server -verify -CAfile ../ssl/test/axTLS.ca_x509}}}\n\nand\n\n{{indent{{{{&gt; axssl s_client -cert ../ssl/test/axTLS.x509_1024 -key ../ssl/test/axTLS.key_1024 -reconnect}}}\n\n!!!!C#\n\nIf building under Linux or other non-Win32 platforms, Mono must be installed and the executable is run as:\n\n{{indent{{{{&gt; mono axssl.csharp.exe ...}}}\n\n!!!!Java\n\nThe java version is run as:\n\n{{indent{{{{&gt; java -jar axtls.jar &lt;options&gt;}}}\n\n!!!!Perl\n\n{{indent{{{{&gt; [perl] ./axssl.pl &lt;options&gt;}}}\n\nIf running under Win32, be sure to use the correct version of Perl (i.e. ~ActiveState's version works ok).\n\n!!!!Lua\n\n{{indent{{{{&gt; [lua] ./axssl.lua &lt;options&gt;}}}\n\n!__Known Issues__\n\n* Firefox doesn't handle legacy ~SSLv2 at all well. Disabling ~SSLv2 still initiates a ~SSLv23 handshake (v1.5). And continuous pressing of the &quot;Reload&quot; page instigates a change to ~SSLv3 for some reason (even though the TLS 1.0 option is selected). This will cause a &quot;Firefox and &lt;server&gt; cannot communicate securely because they have no common encryption algorithms&quot; (v1.5), or &quot;Firefox can't connect to &lt;server&gt; because the site uses a security protocol which isn't enabled&quot; (v2.0). See bugzilla issues 343543 and 359484 (Comment #7). It's all broken (hopefully fixed soon).\n* Perl/Java bindings don't work on 64 bit Linux machines. I can't even compile the latest version of Perl on an ~AMD64 box (using ~FC3).\n* Java 1.4 or better is required for the Java interfaces.\n* Processes that fork can't use session resumption unless some form of IPC is used.\n* Ensure libperl.so and libaxtls.so are in the shared library path when running with the perl bindings. A way to do this is with:\n\n{{indent{{{{&gt; export LD_LIBRARY_PATH=`perl -e 'use Config; print $Config{archlib};'`/CORE:.}}}\n* The lua sample requires the luabit library from http://luaforge.net/projects/bit.\n\n!!!!Win32 issues\n\n* Be careful about doing .NET executions on network drives - .NET complains with security exceptions on the binary. //TODO: Add a manifest file to prevent this.//\n* CGI has been removed from Win32 - it needs a lot more work to get it right.\n* The default Microsoft .NET SDK is v2.0.50727. Download from: http://msdn.microsoft.com/netframework/downloads/updates/default.aspx.\n\n!!!!Solaris issues\n\n* mconf doesn't work well - some manual tweaking is required for string values.\n* GNU make is required and needs to be in $PATH.\n* To get swig's library dependencies to work (and for the C library to be found), I needed to type:\n\n{{indent{{{{&gt; export LD_LIBRARY_PATH=/usr/local/gcc-3.3.1/lib:.}}}\n\n!!!!Cygwin issues\n\n* The bindings all compile but don't run under Cygwin with the exception of Perl. This is due to win32 executables being incompatible with Cygwin libraries.\n\n</div>
+<div tiddler="SiteSubtitle" modifier="CameronRich" modified="200702240025" created="200702240025" tags="">changes, notes and errata</div>
+<div tiddler="SiteTitle" modifier="CameronRich" modified="200702240023" created="200702240023" tags="">axTLS Embedded SSL</div>
+<div tiddler="SiteUrl" modifier="CameronRich" modified="200702240025" created="200702240025" tags="">http://axtls.cerocclub.com.au</div>
+<div tiddler="StyleSheet" modifier="CameronRich" modified="200702250600" created="200701122350" tags="DevFireTheme">/***\nhttp://tiddlystyles.com/#theme:DevFire\nAuthor: Clint Checketts\n***/\n\n/*{{{*/\nbody {\nbackground: #000;\n}\n/*}}}*/\n/***\n!Link styles /% ============================================================= %/\n***/\n/*{{{*/\na,\na.button,\n#mainMenu a.button,\n#sidebarOptions .sliderPanel a{\n color: #ffbf00;\n border: 0;\n background: transparent;\n}\n\na:hover,\na.button:hover,\n#mainMenu a.button:hover,\n#sidebarOptions .sliderPanel a:hover\n#sidebarOptions .sliderPanel a:active{\n color: #ff7f00;\n border: 0;\n border-bottom: #ff7f00 1px dashed;\n background: transparent;\n text-decoration: none;\n}\n\n#displayArea .button.highlight{\n color: #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Header styles /% ============================================================= %/\n***/\n/*{{{*/\n.header{\n border-bottom: 2px solid #ffbf00;\n color: #fff;\n}\n\n.headerForeground a {\n color: #fff;\n}\n\n.header a:hover {\n border-bottom: 1px dashed #fff;\n}\n/*}}}*/\n/***\n!Main menu styles /% ============================================================= %/\n***/\n/*{{{*/\n#mainMenu {color: #fff;}\n#mainMenu h1{\n font-size: 1.1em;\n}\n#mainMenu li,#mainMenu ul{\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*}}}*/\n/***\n!Sidebar styles /% ============================================================= %/\n***/\n/*{{{*/\n#sidebar {\n right: 0;\n color: #fff;\n border: 2px solid #ffbf00;\n border-width: 0 0 2px 2px;\n}\n#sidebarOptions {\n background-color: #4c4c4c;\n padding: 0;\n}\n\n#sidebarOptions a{\n margin: 0;\n color: #ffbf00;\n border: 0;\n}\n#sidebarOptions a:hover {\n color: #4c4c4c;\n background-color: #ffbf00;\n\n}\n\n#sidebarOptions a:active {\n color: #ffbf00;\n background-color: transparent;\n}\n\n#sidebarOptions .sliderPanel {\n background-color: #333;\n margin: 0;\n}\n\n#sidebarTabs {background-color: #4c4c4c;}\n#sidebarTabs .tabSelected {\n padding: 3px 3px;\n cursor: default;\n color: #ffbf00;\n background-color: #666;\n}\n#sidebarTabs .tabUnselected {\n color: #ffbf00;\n background-color: #5f5f5f;\n padding: 0 4px;\n}\n\n#sidebarTabs .tabUnselected:hover,\n#sidebarTabs .tabContents {\n background-color: #666;\n}\n\n.listTitle{color: #FFF;}\n#sidebarTabs .tabContents a{\n color: #ffbf00;\n}\n\n#sidebarTabs .tabContents a:hover{\n color: #ff7f00;\n background: transparent;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tab:hover,\n#sidebarTabs .txtMoreTab .tabContents{\n color: #ffbf00;\n background: #4c4c4c;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n color: #ffbf00;\n background: #5f5f5f;\n}\n\n.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\n.tab.tabUnselected {background-color: #666;}\n.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\n.tabContents {\n background-color: #4c4c4c;\n border: 0;\n}\n.tabContents .tabContents{background: #666;}\n.tabContents .tabSelected{background: #666;}\n.tabContents .tabUnselected{background: #5f5f5f;}\n.tabContents .tab:hover{background: #666;}\n/*}}}*/\n/***\n!Message area styles /% ============================================================= %/\n***/\n/*{{{*/\n#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\n#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\n#messageArea a:hover {color: #ff7f00;}\n#messageArea a:active {color: #ff7f00;}\n#messageArea .messageToolbar a{\n border: 1px solid #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Popup styles /% ============================================================= %/\n***/\n/*{{{*/\n.popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n.popup li.disabled{color: #fff;}\n.popup a {color: #ffbf00; }\n.popup a:hover { background: transparent; color: #ff7f00; border: 0;}\n.popup hr {color: #ffbf00; background: #ffbf00;}\n/*}}}*/\n/***\n!Tiddler Display styles /% ============================================================= %/\n***/\n/*{{{*/\n.title{color: #fff;}\nh1, h2, h3, h4, h5 {\n color: #fff;\n background-color: transparent;\n border-bottom: 1px solid #333;\n}\n\n.subtitle{\n color: #666;\n}\n\n.viewer {color: #fff; }\n\n.viewer table{background: #666; color: #fff;}\n\n.viewer th {background-color: #996; color: #fff;}\n\n.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n\n.viewer hr {color: #666;}\n\n.tiddler .button {color: #4c4c4c;}\n.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\n.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\n\n.toolbar {\n color: #4c4c4c;\n}\n\n.toolbar a.button,\n.toolbar a.button:hover,\n.toolbar a.button:active,\n.editorFooter a{\n border: 0;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.highlight, .marked {\n color: #000;\n background-color: #ffe72f;\n}\n.editorFooter {\n color: #aaa;\n}\n\n.tab{\n-moz-border-radius-topleft: 3px;\n-moz-border-radius-topright: 3px;\n}\n\n.tagging,\n.tagged{\n background: #4c4c4c;\n border: 1px solid #4c4c4c; \n}\n\n.selected .tagging,\n.selected .tagged{\n background-color: #333;\n border: 1px solid #ffbf00;\n}\n\n.tagging .listTitle,\n.tagged .listTitle{\n color: #fff;\n}\n\n.tagging .button,\n.tagged .button{\n color: #ffbf00;\n border: 0;\n padding: 0;\n}\n\n.tagging .button:hover,\n.tagged .button:hover{\nbackground: transparent;\n}\n\n.selected .isTag .tagging.simple,\n.selected .tagged.simple,\n.isTag .tagging.simple,\n.tagged.simple {\n float: none;\n display: inline;\n border: 0;\n background: transparent;\n color: #fff;\n margin: 0;\n}\n\n.cascade {\n background: #4c4c4c;\n color: #ddd;\n border: 1px solid #ffbf00;\n}\n/*}}}*/</div>
+<div tiddler="axhttpd" modifier="YourName" modified="200804011308" created="200702242231" tags="">axhttpd is a small embedded web server using the axTLS library. It is based originally on the web server written by Doug Currie which is at http://www.hcsw.org/awhttpd.\n\n!@@bgcolor(#ff0000):color(#ffffff):axhttpd Features@@ \n\n!!__Basic Authentication__\n\nBasic Authentication uses a password file called  &quot;.htpasswd&quot;, in the directory to be  protected. This file is formatted as the familiar colon-separated username/encrypted-password pair, records delimited by newlines. The protection does not carry over to subdirectories. The utility program htpasswd is included to help manually edit .htpasswd files.\n\nThe encryption of this password uses a proprietary algorithm due to the dependency of many crypt libraries on DES. An example is in [[/test_dir/no_http|https://127.0.0.1/test_dir/no_http]]  (username 'abcd', password is '1234').\n\n//Note: This is an mconf enabled configuration option.//\n\n!!__SSL Protection__\n\nDirectories/files can be accessed using the 'http' or 'https' uri prefix. If normal http access for a directory needs to be disabled, then put &quot;~SSLRequireSSL&quot; into a '.htaccess' file in the directory to be protected. \n\nConversely, use &quot;~SSLDenySSL&quot; to deny access to directories via SSL.\n\nAn example is in [[/test_dir/no_http|http://127.0.0.1/test_dir/no_http]] and [[/test_dir/no_ssl|https://127.0.0.1/test_dir/no_ssl]].\n\nEntire directories can be denied access with a &quot;Deny all&quot; directive (regardless of SSL or authentication). An example is in [[/test_dir/bin|http://127.0.0.1/test_dir/bin]]\n\n!!__CGI__\n\nMost of the CGI 1.1 variables are now placed into the script environment and should work as normal.\n\n!!__Lua and Lua Pages__\n\nThis is a small scripting language gaining popularity in embedded applications due to its small footprint and fast speed.\n\nLua has been incorporated into the build, so simply select it and it will automatically install. Try pointing your browser at [[test_main.html]|http://127.0.0.1/lua/test_main.html]] to see an example of Lua Pages.\n\n//Note: This is an mconf enabled configuration option.//\n\n!!__Directory Listing__\n\nAn mconf option. Allow the files in directories to be displayed. An example is in [[/test_dir|http://127.0.0.1/test_dir]]\n\n!!__Other Features__\n\n* Timeout - HTTP 1.1 allows for persistent connections. This is the time allowed for this connection in seconds.\n* Daemon - Puts the process in daemon mode. \n* SSL  session cache size - The size of the session cache (a heavily loaded server should maintain many sessions). A session will save on expensive SSL handshaking.\n\n</div>
+</div>
+<!--POST-BODY-START-->
+
+<!--POST-BODY-END-->
+       </body>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua
new file mode 100644 (file)
index 0000000..2ee1a71
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/local/bin/lua
+
+require"luasocket"
+
+function receive (connection)
+       connection:settimeout(0)
+       local s, status = connection:receive (2^10)
+       if status == "timeout" then
+               coroutine.yield (connection)
+       end
+       return s, status
+end
+
+function download (host, file, outfile)
+       --local f = assert (io.open (outfile, "w"))
+       local c = assert (socket.connect (host, 80))
+       c:send ("GET "..file.." HTTP/1.0\r\n\r\n")
+       while true do
+               local s, status = receive (c)
+               --f:write (s)
+               if status == "closed" then
+                       break
+               end
+       end
+       c:close()
+       --f:close()
+end
+
+local threads = {}
+function get (host, file, outfile)
+       print (string.format ("Downloading %s from %s to %s", file, host, outfile))
+       local co = coroutine.create (function ()
+               return download (host, file, outfile)
+       end)
+       table.insert (threads, co)
+end
+
+function dispatcher ()
+       while true do
+               local n = table.getn (threads)
+               if n == 0 then
+                       break
+               end
+               local connections = {}
+               for i = 1, n do
+                       local status, res = coroutine.resume (threads[i])
+                       if not res then
+                               table.remove (threads, i)
+                               break
+                       else
+                               table.insert (connections, res)
+                       end
+               end
+               if table.getn (connections) == n then
+                       socket.select (connections)
+               end
+       end
+end
+
+local url = arg[1]
+if not url then
+       print (string.format ("usage: %s url [times]", arg[0]))
+       os.exit()
+end
+local times = arg[2] or 5
+
+url = string.gsub (url, "^http.?://", "")
+local _, _, host, file = string.find (url, "^([^/]+)(/.*)")
+local _, _, fn = string.find (file, "([^/]+)$")
+
+for i = 1, times do
+       get (host, file, fn..i)
+end
+
+dispatcher ()
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua
new file mode 100644 (file)
index 0000000..c429847
--- /dev/null
@@ -0,0 +1,26 @@
+-- This file should be executed before any script in this directory
+-- according to the configuration (cgilua/conf.lua).
+
+pcall (cgilua.enablesession)
+
+local put, mkurlpath = cgilua.put, cgilua.mkurlpath
+
+cgilua.addclosefunction (function ()
+       put [[
+<p>
+<small>
+<a href="test_main.html">Main</a>]]
+       for _, test in {
+                       { "Get", "test_main.lua", {ab = "cd", ef = "gh"} },
+                       { "Cookies", "test_cookies.lua", },
+                       { "FileSystem", "test_fs.lua", },
+                       { "Libraries", "test_lib.lua", },
+                       { "Session", "test_session.lua", },
+                       { "Variables", "test_variables.lp", },
+               } do
+               put (string.format (' &middot; <a href="%s">%s</a>',
+                       mkurlpath (test[2], test[3]), test[1]))
+       end
+       put [[
+</small>]]
+end)
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp
new file mode 100644 (file)
index 0000000..4d17002
--- /dev/null
@@ -0,0 +1,64 @@
+<?lua
+-- Tries to load known libraries
+for _, t in ipairs { "lxp", "luasql.postgres", "luasql.mysql", "luasql.oci8", "luasql.sqlite", "luasql.odbc", "socket", "xmlrpc", "soap", "lualdap", "logging", "md5", "zip", "stable", "copas", } do
+       pcall (require, t)
+end
+
+libraries = { "lxp", "luasql", "socket", "xmlrpc", "soap", "lualdap", "logging", "md5", "zip", "stable", "copas", }
+
+local colors = { "#999999", "#CCCCCC", "#FFFFFF", }
+local i = 0
+function color () i = math.mod (i + 1, 3) return colors[i + 1] end
+
+function pack_name (p) return string.gsub (p, "^([^.]+).-", "%1") end
+
+function idx (t, f) return _G[t][f] or _G[t]["_"..f] or "" end
+?>
+<html>
+<head><title>CGILua installation overview</title></head>
+
+<body bgcolor="#FFFFFF">
+<h1>CGILua installation overview</h1>
+
+<table>
+  <tr>
+    <th bgcolor="#999999">Version
+    <th bgcolor="#999999">Copyright
+    <th bgcolor="#999999">Description
+  </tr>
+<?lua
+local support = {
+       { "Lua", "_VERSION" },
+       { "compat-5.1", "_COMPAT51" },
+}
+for _, l in ipairs (support) do bg = color()
+?>
+  <tr>
+    <td bgcolor = "<%= bg %>"><%= tostring(_G[l[2]]) %>
+    <td bgcolor = "<%= bg %>">
+    <td bgcolor = "<%= bg %>">
+  </tr>
+<? end ?>
+  <tr><td colspan="4"></tr>
+<?lua
+local pack = {}
+for i, p in ipairs (libraries) do
+       local s = _G[p]
+       local n = pack_name(p)
+       if type(_G[n]) == "table" and _G[n]._VERSION then
+               pack[n] = true
+               table.insert (pack, n)
+       end
+end
+table.sort (pack)
+for _, p in ipairs (pack) do bg = color() ?>
+  <tr>
+    <td bgcolor = "<%= bg %>"><%= idx(p,"VERSION") %>
+    <td bgcolor = "<%= bg %>"><small><%= idx(p,"COPYRIGHT") %></small>
+    <td bgcolor = "<%= bg %>"><small><%= idx(p,"DESCRIPTION") %></small>
+  </tr>
+<?lua end ?>
+</table>
+
+</body>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua
new file mode 100644 (file)
index 0000000..6a37c2f
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/local/bin/lua
+
+MAX_ROWS = arg[1] or 10
+
+require"postgres"
+
+local env = assert (luasql.postgres ())
+local conn = assert (env:connect ("luasql-test", "tomas"))
+
+-- Apaga restos de outros testes.
+conn:execute "drop table t2"
+conn:execute "drop table t1"
+
+-- Criando as tabelas.
+assert (conn:execute [[create table t1 (
+       a int,
+       b int
+)]])
+assert (conn:execute [[create table t2 (
+       c int,
+       d int
+)]])
+
+-- Preenchedo as tabelas.
+for i = 1, MAX_ROWS do
+       local ii = 2*i
+       assert (conn:execute (string.format ([[
+insert into t1 values (%d, %d);
+insert into t2 values (%d, %d);]],
+               ii, i, ii, i)))
+end
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua
new file mode 100644 (file)
index 0000000..bbb9be7
--- /dev/null
@@ -0,0 +1,38 @@
+cgilua.htmlheader()
+if ap then
+       local pid, ppid = ap.pid ()
+       if not ppid then
+               ppid = "no parent pid"
+       end
+       cgilua.put ("pid = "..pid.." ("..ppid..")".."\n")
+end
+
+assert(type(stable.get) == "function")
+assert(type(stable.set) == "function")
+
+cgilua.put"stable.pairs = {<br>\n"
+for i, v in stable.pairs () do
+       cgilua.put (i.." = "..tostring(v).."<br>\n")
+end
+cgilua.put"}<br>\n"
+
+local counter = stable.get"counter" or 0
+stable.set ("counter", counter + 1)
+
+local f = stable.get"f"
+if not f then
+       local d = os.date()
+       stable.set ("f", function () return d end)
+else
+       cgilua.put ("f() = "..tostring (f ()))
+end
+
+cgilua.put"<br>\n"
+for i = 1,800 do
+       cgilua.put (i)
+       for ii = 1,1000 do
+               cgilua.put ("<!>")
+       end
+       cgilua.put ("\n")
+end
+cgilua.put ("End")
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp
new file mode 100644 (file)
index 0000000..932b9c5
--- /dev/null
@@ -0,0 +1,13 @@
+<?lua
+local cookies = require"cgilua.cookies"
+CL_COOKIE = "cgilua_cookie"
+
+local test = cookies.get (CL_COOKIE)
+cookies.sethtml (CL_COOKIE, os.date())
+?>
+
+<h1>Testing Cookies library</h1>
+
+<%= CL_COOKIE%> = <%= tostring(test)%><br>
+Assigning current date to cookie!<br>
+Reload this script to check cookie's value!
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua
new file mode 100644 (file)
index 0000000..6af935e
--- /dev/null
@@ -0,0 +1,14 @@
+local cookies = require"cgilua.cookies"
+CL_COOKIE = "cgilua_cookie"
+
+local test = cookies.get (CL_COOKIE)
+cookies.set (CL_COOKIE, os.date())
+
+cgilua.htmlheader ()
+cgilua.put ([[
+<h1>Testing Cookies library</h1>
+
+]]..CL_COOKIE..'  = '..tostring(test)..[[<br>
+Assigning current date to cookie!<br>
+Reload this script to check cookie's value!
+]])
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua
new file mode 100644 (file)
index 0000000..4d6ffc9
--- /dev/null
@@ -0,0 +1,4 @@
+cgilua.htmlheader()
+cgilua.put"Oi!"
+--io.write"something\n"
+cgilua.errorlog ("eca", "emerg")
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua
new file mode 100644 (file)
index 0000000..566ed8b
--- /dev/null
@@ -0,0 +1,23 @@
+function link_dir (dir, base)
+       local path = base.."/"..dir
+       local mode = lfs.attributes (path).mode
+       if mode == "directory" then
+               return string.format ('<a href="%s">%s</a>',
+                       cgilua.mkurlpath ("test_fs.lua", { dir = path }),
+                       dir)
+       else
+               return dir
+       end
+end
+
+cgilua.htmlheader ()
+cgilua.put ("<h1>Testing Filesystem library</h1>\n")
+cgilua.put ("<table>\n")
+cgilua.put ("<tr><td colspan=2>Testing <b>dir</b></td></tr>\n")
+local i = 0
+local dir = cgi.dir or "."
+for file in lfs.dir (dir) do
+       i = i+1
+       cgilua.put ("<tr><td>"..i.."</td><td>"..link_dir(file, dir).."</td></tr>\n")
+end
+cgilua.put ("</table>\n")
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua
new file mode 100644 (file)
index 0000000..ac1de6c
--- /dev/null
@@ -0,0 +1,22 @@
+require"htk"
+
+local a_table = {}
+for i = 1, 20 do
+       local l = {}
+       for j = 1, 20 do
+               table.insert (l, HTK.TD { "cell "..i..","..j })
+       end
+       table.insert (a_table, HTK.TR (l))
+end
+
+cgilua.htmlheader()
+cgilua.put (HTK.HTML {
+       HTK.HEAD { HTK.TITLE { "Titulo da Pagina" } },
+       HTK.BODY {
+               bgcolor = "#FFFFFF",
+               HTK.H1 { "Titulo da Pagina" },
+               HTK.P {},
+               "Uma página qualquer",
+               HTK.TABLE (a_table),
+       }
+})
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua
new file mode 100644 (file)
index 0000000..5041253
--- /dev/null
@@ -0,0 +1,31 @@
+local function getfield (t, f)
+  for w in string.gfind(f, "[%w_]+") do
+    if not t then return nil end
+    t = t[w]
+  end
+  return t
+end
+
+function test_lib (libname)
+       local ok, err = pcall (require, libname)
+       if not ok then
+               cgilua.put ("Library <tt><b>"..libname.."</b></tt> not found<br>\n"..
+                       err)
+       else
+               cgilua.put ("Library <tt><b>"..libname.."</b></tt><br>\n")
+               local t = getfield (_G, libname)
+               if type(t) ~= "table" then
+                       cgilua.put (tostring(t))
+               else
+                       for i, v in pairs (t) do
+                               cgilua.put ("&nbsp;&nbsp;"..tostring(i).." = "..tostring(v).."<br>\n")
+                       end
+               end
+       end
+       cgilua.put ("\n<p>\n")
+end
+
+cgilua.htmlheader ()
+for _, lib in ipairs { "lfs", "socket", "luasql.postgres", "luasql", "lxp", "lxp.lom", "lualdap", "htk", "xmlrpc", "xmlrpc.http" } do
+       test_lib (lib)
+end
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html
new file mode 100644 (file)
index 0000000..a50dd63
--- /dev/null
@@ -0,0 +1,127 @@
+<html>
+<head><title>Test Page</title></head>
+
+<table border>
+  <tr>
+    <th colspan="4"> GET: </td>
+  </tr>
+  <tr>
+    <td>Lua script</td>
+    <td><a href="test_main.lua?field1=ab&field2=cd&field1=ef">module</a></td>
+  </tr>
+  <tr>
+    <td>HTML template</td>
+    <td><a href="test_main.lp?field1=ab&field2=cd&field1=ef">module</a></td>
+  </tr>
+
+  <tr>
+    <th colspan="4"> POST: </td>
+  </tr>
+  <tr>
+    <td colspan="4">
+      <form method="POST" action="">
+        <table>
+          <tr>
+            <td colspan="4">
+              field 1: <input type="text" name="field1"><br>
+              field 2: <input type="text" name="field2"><br>
+              field 3:
+                <input type="checkbox" name="field3" value="op 1">op 1
+                <input type="checkbox" name="field3" value="op 2">op 2
+                <input type="checkbox" name="field3" value="op 3">op 3
+            </td>
+          </tr>
+          <tr>
+            <td>Lua script</td>
+            <td>
+              <a href="javascript:document.forms[0].action='test_main.lua';document.forms[0].submit()">module</a>
+            </td>
+          </tr>
+          <tr>
+            <td>HTML template</td>
+            <td>
+              <a href="javascript:document.forms[0].action='test_main.lp';document.forms[0].submit()">module</a>
+            </td>
+          </tr>
+        </table>
+      </form>
+    </td>
+  </tr>
+
+  <tr>
+    <th colspan="4"> POST (with upload): </td>
+  </tr>
+  <tr>
+    <td colspan="4">
+      <form method="POST" enctype="multipart/form-data" action="">
+        <table>
+          <tr>
+            <td colspan="4">
+              field 1: <input type="text" name="field1"><br>
+              file (binary!): <input type="file" name="file"><br>
+            </td>
+          </tr>
+          <tr>
+            <td>Lua script</td>
+            <td>
+              <a href="javascript:document.forms[1].action='test_main.lua';document.forms[1].submit()">module</a>
+            </td>
+          </tr>
+          <tr>
+            <td>HTML template</td>
+            <td>
+              <a href="javascript:document.forms[1].action='test_main.lp';document.forms[1].submit()">module</a>
+            </td>
+          </tr>
+        </table>
+      </form>
+    </td>
+  </tr>
+  <tr>
+    <th colspan="4"> Cookies: </td>
+  </tr>
+  <tr>
+    <td>Lua script</td>
+    <td><a href="test_cookies.lua">module</a></td>
+  </tr>
+  <tr>
+    <td>HTML template</td>
+    <td><a href="test_cookies.lp">module</a></td>
+  </tr>
+  <tr>
+    <th colspan="4"> Filesystem: </td>
+  </tr>
+  <tr>
+    <td>Lua script</td>
+    <td><a href="test_fs.lua">module</a></td>
+  </tr>
+  <tr>
+    <th colspan="4"> Session: </td>
+  </tr>
+  <tr>
+    <td>Lua script</td>
+    <td><a href="test_session.lua">module</a></td>
+  </tr>
+  <tr>
+    <th colspan="4"> CGI Variables: </td>
+  </tr>
+  <tr>
+    <td>HTML template</td>
+    <td><a href="test_variables.lp">module</a></td>
+  </tr>
+  <tr>
+    <th colspan="4"> Library Overview: </td>
+  </tr>
+  <tr>
+    <td>HTML template</td>
+    <td><a href="overview.lp">module</a></td>
+  </tr>
+  <tr>
+    <th colspan="4"> Concurrency </td>
+  </tr>
+  <tr>
+    <td>Lua script</td>
+    <td><a href="test_conc.lua">module</a></td>
+  </tr>
+</table>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp
new file mode 100644 (file)
index 0000000..917ee1e
--- /dev/null
@@ -0,0 +1,31 @@
+<html>
+<head><title>Embeded Lua Test</title></head>
+
+<body>
+cgi = {
+<?lua
+for i,v in pairs (cgi) do
+       if type(v) == "table" then
+               local vv = "{"
+               for a,b in pairs(v) do
+                       vv = string.format ("%s%s = %s<br>\n", vv, a, tostring(b))
+               end
+               v = vv.."}"
+       end
+?>
+<%= i %> = <%= tostring(v) %> <br>
+<%
+end
+%>
+}
+<br>
+Remote address: <%= cgilua.servervariable"REMOTE_ADDR" %>
+<br>
+Is persistent = <%= tostring (SAPI.Info.ispersistent) %>
+<br>
+ap = <?lua= tostring(ap) ?> <br>
+lfcgi = <% = tostring(lfcgi) %> <br>
+<%= (ap and ap.handler()) or "" %> <br>
+
+</body>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua
new file mode 100644 (file)
index 0000000..0e997a2
--- /dev/null
@@ -0,0 +1,46 @@
+cgilua.htmlheader()
+cgilua.put[[
+<html>
+<head><title>Script Lua Test</title></head>
+
+<body>
+cgi = {
+]]
+
+for i,v in pairs (cgi) do
+       if type(v) == "table" then
+               local vv = "{"
+               for a,b in pairs(v) do
+                       vv = string.format ("%s%s = %s<br>\n", vv, a, tostring(b))
+               end
+               v = vv.."}"
+       end
+       cgilua.put (string.format ("%s = %s<br>\n", i, tostring(v)))
+end
+cgilua.put "}<br>\n"
+cgilua.put ("Remote address: "..cgilua.servervariable"REMOTE_ADDR")
+cgilua.put "<br>\n"
+cgilua.put ("Is persistent = "..tostring (SAPI.Info.ispersistent).."<br>\n")
+cgilua.put ("ap="..tostring(ap).."<br>\n")
+cgilua.put ("lfcgi="..tostring(lfcgi).."<br>\n")
+
+-- Checking Virtual Environment
+local my_output = cgilua.put
+cgilua.put = nil
+local status, err = pcall (function ()
+       assert (cgilua.put == nil, "cannot change cgilua.put value")
+end)
+cgilua.put = my_output
+assert (status == true, err)
+
+-- Checking require
+local status, err = pcall (function () require"unknown_module" end)
+assert (status == false, "<tt>unknown_module</tt> loaded!")
+-- assert (package == nil, "Access to <tt>package</tt> table allowed!")
+
+cgilua.put[[
+<p>
+</body>
+</html>
+]]
+cgilua = nil
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua
new file mode 100644 (file)
index 0000000..d97cc45
--- /dev/null
@@ -0,0 +1,43 @@
+cgilua.enablesession ()
+
+function pt (tab)
+       for i, v in pairs (tab) do
+               local vv = v
+               if type(v) == "table" then
+                       vv = ""
+                       for _i, _v in pairs (v) do
+                               vv = vv..string.format ("%s = %q, ", _i, _v)
+                       end
+                       vv = '{'..vv..'}'
+               end
+               cgilua.put (string.format ("%s = %s<br>\n", tostring (i), tostring (vv)))
+       end
+end
+
+
+if cgi.field then
+       if not cgilua.session.data.field then
+               cgilua.session.data.field = {}
+       end
+       table.insert (cgilua.session.data.field, cgi.field)
+end
+cgilua.htmlheader()
+if cgilua.session then
+       cgilua.put "cgi = {<br>\n"
+       pt (cgi)
+       cgilua.put "}<br>\n"
+       cgilua.put "cgilua.session.data = {<br>\n"
+       pt (cgilua.session.data)
+       cgilua.put "}<br>\n"
+
+       cgilua.put [[<form action="]]
+       cgilua.put (cgilua.mkurlpath"test_session.lua")
+       cgilua.put [[" method="POST">
+  field: <input type="text" name="field" value="]]
+       cgilua.put (cgi.field or "")
+       cgilua.put [["><br>
+  <input type="submit"><br>
+</form>]]
+else
+       cgilua.put "Sessions library is not available or not well configured"
+end
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua
new file mode 100644 (file)
index 0000000..085ce97
--- /dev/null
@@ -0,0 +1,13 @@
+local s = require"luasql.postgres"
+
+local env = assert (luasql.postgres ())
+local conn = assert (env:connect ("luasql-test", "tomas"))
+local cur = assert (conn:execute ("select count(*) from fetch_test"))
+
+cgilua.htmlheader()
+cgilua.put ("Total lines at table fetch_test is "..cur:fetch())
+cgilua.put (string.format ("<br>\n%s == %s<br>\n", tostring(s), tostring(luasql)))
+
+cur:close()
+conn:close()
+env:close()
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua
new file mode 100644 (file)
index 0000000..a2f6ee1
--- /dev/null
@@ -0,0 +1,24 @@
+require"postgres"
+
+local env = assert (luasql.postgres ())
+local conn = assert (env:connect ("luasql-test", "tomas"))
+local cur = assert (conn:execute ("select count(*) from t1"))
+local total = tonumber (cur:fetch())
+cur:close()
+local aleatorio = math.random(total)
+local cur = assert (conn:execute ("select * from t1, t2 where b = d and a != "..2*aleatorio))
+
+cgilua.htmlheader()
+cgilua.put ("Aleatorio = "..aleatorio.."<br>\n")
+
+local a,b,c,d = cur:fetch()
+cgilua.put ("<table>\n")
+while a do
+--     cgilua.put ("<tr><td>",a,"<td>",b,"<td>",c,"<td>",d,"</tr>")
+       a,b,c,d = cur:fetch()
+end
+cgilua.put ("</table>\n")
+
+cur:close()
+conn:close()
+env:close()
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp
new file mode 100644 (file)
index 0000000..c1ac332
--- /dev/null
@@ -0,0 +1,14 @@
+<table>
+<% for _, var in pairs { "SERVER_SOFTWARE", "SERVER_NAME", "GATEWAY_INTERFACE", "SERVER_PROTOCOL", "SERVER_PORT", "REQUEST_METHOD", "PATH_INFO", "PATH_TRANSLATED", "SCRIPT_NAME", "QUERY_STRING", "REMOTE_HOST", "REMOTE_ADDR", "AUTH_TYPE", "REMOTE_USER", "REMOTE_IDENT", "CONTENT_TYPE", "CONTENT_LENGTH", "HTTP_REFERER", "HTTP_COOKIE", "SCRIPT_FILENAME", "DOCUMENT_ROOT", } do %>
+  <tr><td><%= var %><td>=<td>"<%= cgilua.servervariable(var) or "<i>not defined</i>"%>"</tr>
+<% end %>
+</table>
+
+<p>
+<table>
+<% for _, var in ipairs { "script_file", "script_path", "script_pdir", "script_vdir", "script_vpath", "urlpath", } do %>
+  <tr><td><%= var %><td>=<td>"<%= cgilua[var] %>"</tr>
+<% end %>
+</table>
+
+<p>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess
new file mode 100644 (file)
index 0000000..8fd8c46
--- /dev/null
@@ -0,0 +1 @@
+Deny all
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess
new file mode 100644 (file)
index 0000000..3e20076
--- /dev/null
@@ -0,0 +1 @@
+SSLRequireSSL
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd
new file mode 100644 (file)
index 0000000..0471b01
--- /dev/null
@@ -0,0 +1,2 @@
+abcd:CQhgDPyy0rvEU8OMxnQIvg==$YdJfIKZimFLYxPf/rbnhtQ==
+yaya:Syuss5jE2FNGVdr0kKGoHg==$WLw/SgHZFuAoOuml3GTJVw==
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html
new file mode 100644 (file)
index 0000000..8b86eba
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<head><title>axhttpd is running</title></head>
+<body>
+Looks like you got to this directory.
+</body>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess
new file mode 100644 (file)
index 0000000..d980d26
--- /dev/null
@@ -0,0 +1 @@
+SSLDenySSL
diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html
new file mode 100644 (file)
index 0000000..8b86eba
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<head><title>axhttpd is running</title></head>
+<body>
+Looks like you got to this directory.
+</body>
+</html>
diff --git a/package/luci/libs/luci-lib-nixio/axtls-config/.config b/package/luci/libs/luci-lib-nixio/axtls-config/.config
new file mode 100644 (file)
index 0000000..46cd061
--- /dev/null
@@ -0,0 +1,112 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+CONFIG_PLATFORM_LINUX=y
+# CONFIG_PLATFORM_CYGWIN is not set
+# CONFIG_PLATFORM_WIN32 is not set
+
+#
+# General Configuration
+#
+PREFIX="/usr"
+# CONFIG_DEBUG is not set
+CONFIG_STRIP_UNWANTED_SECTIONS=y
+# CONFIG_VISUAL_STUDIO_7_0 is not set
+# CONFIG_VISUAL_STUDIO_8_0 is not set
+CONFIG_VISUAL_STUDIO_7_0_BASE=""
+CONFIG_VISUAL_STUDIO_8_0_BASE=""
+CONFIG_EXTRA_CFLAGS_OPTIONS="-fpic"
+CONFIG_EXTRA_LDFLAGS_OPTIONS=""
+
+#
+# SSL Library
+#
+# CONFIG_SSL_SERVER_ONLY is not set
+# CONFIG_SSL_CERT_VERIFICATION is not set
+# CONFIG_SSL_ENABLE_CLIENT is not set
+CONFIG_SSL_FULL_MODE=y
+# CONFIG_SSL_SKELETON_MODE is not set
+# CONFIG_SSL_PROT_LOW is not set
+CONFIG_SSL_PROT_MEDIUM=y
+# CONFIG_SSL_PROT_HIGH is not set
+# CONFIG_SSL_USE_DEFAULT_KEY is not set
+CONFIG_SSL_PRIVATE_KEY_LOCATION="/etc/nixio/rsa_main.der"
+CONFIG_SSL_PRIVATE_KEY_PASSWORD=""
+CONFIG_SSL_X509_CERT_LOCATION=""
+# CONFIG_SSL_GENERATE_X509_CERT is not set
+CONFIG_SSL_X509_COMMON_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_NAME=""
+CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME=""
+# CONFIG_SSL_ENABLE_V23_HANDSHAKE is not set
+# CONFIG_SSL_HAS_PEM is not set
+# CONFIG_SSL_USE_PKCS12 is not set
+CONFIG_SSL_EXPIRY_TIME=24
+CONFIG_X509_MAX_CA_CERTS=4
+CONFIG_SSL_MAX_CERTS=2
+CONFIG_SSL_CTX_MUTEXING=y
+CONFIG_USE_DEV_URANDOM=y
+# CONFIG_WIN32_USE_CRYPTO_LIB is not set
+# CONFIG_OPENSSL_COMPATIBLE is not set
+# CONFIG_PERFORMANCE_TESTING is not set
+# CONFIG_SSL_TEST is not set
+# CONFIG_AXHTTPD is not set
+# CONFIG_HTTP_STATIC_BUILD is not set
+CONFIG_HTTP_PORT=0
+CONFIG_HTTP_HTTPS_PORT=0
+CONFIG_HTTP_SESSION_CACHE_SIZE=0
+CONFIG_HTTP_WEBROOT=""
+CONFIG_HTTP_TIMEOUT=0
+# CONFIG_HTTP_HAS_CGI is not set
+CONFIG_HTTP_CGI_EXTENSIONS=""
+# CONFIG_HTTP_ENABLE_LUA is not set
+CONFIG_HTTP_LUA_PREFIX=""
+CONFIG_HTTP_LUA_CGI_LAUNCHER=""
+# CONFIG_HTTP_BUILD_LUA is not set
+# CONFIG_HTTP_DIRECTORIES is not set
+# CONFIG_HTTP_HAS_AUTHORIZATION is not set
+# CONFIG_HTTP_HAS_IPV6 is not set
+# CONFIG_HTTP_ENABLE_DIFFERENT_USER is not set
+CONFIG_HTTP_USER=""
+# CONFIG_HTTP_VERBOSE is not set
+# CONFIG_HTTP_IS_DAEMON is not set
+
+#
+# Language Bindings
+#
+# CONFIG_BINDINGS is not set
+# CONFIG_CSHARP_BINDINGS is not set
+# CONFIG_VBNET_BINDINGS is not set
+CONFIG_DOT_NET_FRAMEWORK_BASE=""
+# CONFIG_JAVA_BINDINGS is not set
+CONFIG_JAVA_HOME=""
+# CONFIG_PERL_BINDINGS is not set
+CONFIG_PERL_CORE=""
+CONFIG_PERL_LIB=""
+# CONFIG_LUA_BINDINGS is not set
+CONFIG_LUA_CORE=""
+
+#
+# Samples
+#
+# CONFIG_SAMPLES is not set
+# CONFIG_C_SAMPLES is not set
+# CONFIG_CSHARP_SAMPLES is not set
+# CONFIG_VBNET_SAMPLES is not set
+# CONFIG_JAVA_SAMPLES is not set
+# CONFIG_PERL_SAMPLES is not set
+# CONFIG_LUA_SAMPLES is not set
+
+#
+# BigInt Options
+#
+# CONFIG_BIGINT_CLASSICAL is not set
+# CONFIG_BIGINT_MONTGOMERY is not set
+CONFIG_BIGINT_BARRETT=y
+CONFIG_BIGINT_CRT=y
+# CONFIG_BIGINT_KARATSUBA is not set
+MUL_KARATSUBA_THRESH=0
+SQU_KARATSUBA_THRESH=0
+CONFIG_BIGINT_SLIDING_WINDOW=y
+CONFIG_BIGINT_SQUARE=y
+# CONFIG_BIGINT_CHECK_ON is not set
diff --git a/package/luci/libs/luci-lib-nixio/axtls-config/config.h b/package/luci/libs/luci-lib-nixio/axtls-config/config.h
new file mode 100644 (file)
index 0000000..0f861f3
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Automatically generated header file: don't edit
+ */
+
+#define HAVE_DOT_CONFIG 1
+#define CONFIG_PLATFORM_LINUX 1
+#undef CONFIG_PLATFORM_CYGWIN
+#undef CONFIG_PLATFORM_WIN32
+
+/*
+ * General Configuration
+ */
+#define PREFIX "/usr"
+#undef CONFIG_DEBUG
+#define CONFIG_STRIP_UNWANTED_SECTIONS 1
+#undef CONFIG_VISUAL_STUDIO_7_0
+#undef CONFIG_VISUAL_STUDIO_8_0
+#define CONFIG_VISUAL_STUDIO_7_0_BASE ""
+#define CONFIG_VISUAL_STUDIO_8_0_BASE ""
+#define CONFIG_EXTRA_CFLAGS_OPTIONS "-fpic"
+#define CONFIG_EXTRA_LDFLAGS_OPTIONS ""
+
+/*
+ * SSL Library
+ */
+#undef CONFIG_SSL_SERVER_ONLY
+#undef CONFIG_SSL_CERT_VERIFICATION
+#undef CONFIG_SSL_ENABLE_CLIENT
+#define CONFIG_SSL_FULL_MODE 1
+#undef CONFIG_SSL_SKELETON_MODE
+#undef CONFIG_SSL_PROT_LOW
+#define CONFIG_SSL_PROT_MEDIUM 1
+#undef CONFIG_SSL_PROT_HIGH
+#undef CONFIG_SSL_USE_DEFAULT_KEY
+#define CONFIG_SSL_PRIVATE_KEY_LOCATION "/etc/nixio/rsa_main.der"
+#define CONFIG_SSL_PRIVATE_KEY_PASSWORD ""
+#define CONFIG_SSL_X509_CERT_LOCATION ""
+#undef CONFIG_SSL_GENERATE_X509_CERT
+#define CONFIG_SSL_X509_COMMON_NAME ""
+#define CONFIG_SSL_X509_ORGANIZATION_NAME ""
+#define CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME ""
+#undef CONFIG_SSL_ENABLE_V23_HANDSHAKE
+#undef CONFIG_SSL_HAS_PEM
+#undef CONFIG_SSL_USE_PKCS12
+#define CONFIG_SSL_EXPIRY_TIME 24
+#define CONFIG_X509_MAX_CA_CERTS 4
+#define CONFIG_SSL_MAX_CERTS 2
+#define CONFIG_SSL_CTX_MUTEXING 1
+#define CONFIG_USE_DEV_URANDOM 1
+#undef CONFIG_WIN32_USE_CRYPTO_LIB
+#undef CONFIG_OPENSSL_COMPATIBLE
+#undef CONFIG_PERFORMANCE_TESTING
+#undef CONFIG_SSL_TEST
+#undef CONFIG_AXHTTPD
+#undef CONFIG_HTTP_STATIC_BUILD
+#define CONFIG_HTTP_PORT 
+#define CONFIG_HTTP_HTTPS_PORT 
+#define CONFIG_HTTP_SESSION_CACHE_SIZE 
+#define CONFIG_HTTP_WEBROOT ""
+#define CONFIG_HTTP_TIMEOUT 
+#undef CONFIG_HTTP_HAS_CGI
+#define CONFIG_HTTP_CGI_EXTENSIONS ""
+#undef CONFIG_HTTP_ENABLE_LUA
+#define CONFIG_HTTP_LUA_PREFIX ""
+#define CONFIG_HTTP_LUA_CGI_LAUNCHER ""
+#undef CONFIG_HTTP_BUILD_LUA
+#undef CONFIG_HTTP_DIRECTORIES
+#undef CONFIG_HTTP_HAS_AUTHORIZATION
+#undef CONFIG_HTTP_HAS_IPV6
+#undef CONFIG_HTTP_ENABLE_DIFFERENT_USER
+#define CONFIG_HTTP_USER ""
+#undef CONFIG_HTTP_VERBOSE
+#undef CONFIG_HTTP_IS_DAEMON
+
+/*
+ * Language Bindings
+ */
+#undef CONFIG_BINDINGS
+#undef CONFIG_CSHARP_BINDINGS
+#undef CONFIG_VBNET_BINDINGS
+#define CONFIG_DOT_NET_FRAMEWORK_BASE ""
+#undef CONFIG_JAVA_BINDINGS
+#define CONFIG_JAVA_HOME ""
+#undef CONFIG_PERL_BINDINGS
+#define CONFIG_PERL_CORE ""
+#define CONFIG_PERL_LIB ""
+#undef CONFIG_LUA_BINDINGS
+#define CONFIG_LUA_CORE ""
+
+/*
+ * Samples
+ */
+#undef CONFIG_SAMPLES
+#undef CONFIG_C_SAMPLES
+#undef CONFIG_CSHARP_SAMPLES
+#undef CONFIG_VBNET_SAMPLES
+#undef CONFIG_JAVA_SAMPLES
+#undef CONFIG_PERL_SAMPLES
+#undef CONFIG_LUA_SAMPLES
+
+/*
+ * BigInt Options
+ */
+#undef CONFIG_BIGINT_CLASSICAL
+#undef CONFIG_BIGINT_MONTGOMERY
+#define CONFIG_BIGINT_BARRETT 1
+#define CONFIG_BIGINT_CRT 1
+#undef CONFIG_BIGINT_KARATSUBA
+#define MUL_KARATSUBA_THRESH 
+#define SQU_KARATSUBA_THRESH 
+#define CONFIG_BIGINT_SLIDING_WINDOW 1
+#define CONFIG_BIGINT_SQUARE 1
+#undef CONFIG_BIGINT_CHECK_ON
diff --git a/package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der b/package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der
new file mode 100644 (file)
index 0000000..e17fdc0
Binary files /dev/null and b/package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der differ
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua b/package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua
new file mode 100644 (file)
index 0000000..8c92603
--- /dev/null
@@ -0,0 +1,29 @@
+--- Changes and improvements.
+module "nixio.CHANGELOG"
+
+--- Service Release.
+-- <ul>
+-- <li>Added getifaddrs() function.</li>
+-- <li>Added getsockopt(), setsockopt(), getsockname() and getpeername()
+-- directly to TLS-socket objects unifying the socket interface.</li>
+-- <li>Added support for CyaSSL as cryptographical backend.</li>
+-- <li>Added support for x509 certificates in DER format.</li>
+-- <li>Added support for splice() in UnifiedIO.copyz().</li>
+-- <li>Added interface to inject chunks into UnifiedIO.linesource() buffer.</li>
+-- <li>Changed TLS behaviour to explicitly separate servers and clients.</li>
+-- <li>Fixed usage of signed datatype breaking Base64 decoding.</li>
+-- <li>Fixed namespace clashes for nixio.fs.</li>
+-- <li>Fixed splice() support for some exotic C libraries.</li>
+-- <li>Reconfigure axTLS cryptographical provider and mark it as obsolete.</li>
+-- </ul>
+-- @class table
+-- @name 0.3
+-- @return !
+
+--- Initial Release.
+-- <ul>
+-- <li>Initial Release</li>  
+-- </ul>
+-- @class table
+-- @name 0.2
+-- @return !
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/README.lua b/package/luci/libs/luci-lib-nixio/docsrc/README.lua
new file mode 100644 (file)
index 0000000..d663b62
--- /dev/null
@@ -0,0 +1,95 @@
+--- General Information.
+module "nixio.README"
+
+--- General error handling information.
+-- <ul>
+-- <li> Most of the functions available in this library may fail. If any error
+-- occurs the function returns <strong>nil or false</strong>, an error code
+-- (usually errno) and an additional error message text (if avaialable).</li>
+-- <li>At the moment false is only returned when a non-blocking I/O function
+-- fails with EAGAIN, EWOULDBLOCK or WSAEWOULDBLOCK for any others nil is
+-- returned as first parameter. Therefore you can use false to write portable
+-- non-blocking I/O applications.</li>
+-- <li>Note that the function documentation does only mention the return values
+-- in case of a successful operation.</li> 
+-- <li>You can find a table of common error numbers and other useful constants
+-- like signal numbers in <strong>nixio.const</strong> e.g. nixio.const.EINVAL,
+-- nixio.const.SIGTERM, etc. For portability there is a second error constant
+-- table <strong>nixio.const_sock</strong> for socket error codes. This might
+-- be important if you are dealing with Windows applications, on POSIX however
+-- const_sock is just an alias for const.</li>
+-- <li>With some exceptions - which are explicitly stated in the function
+-- documentation - all blocking functions are signal-protected and will not fail
+-- with EINTR.</li>
+-- <li>On POSIX the SIGPIPE signal will be set to ignore upon initialization.
+-- You should restore the default behaviour or set a custom signal handler
+-- in your program after loading nixio if you need this behaviour.</li>
+-- </ul>
+-- @class table
+-- @name Errorhandling
+-- @return !
+
+--- Function conventions.
+-- <br />In general all functions are namend and behave like their POSIX API
+-- counterparts - where applicable - applying the following rules:
+-- <ul>
+-- <li>Functions should be named like the underlying POSIX API function omitting
+-- prefixes or suffixes - especially when placed in an object-context (
+-- lockf -> File:lock, fsync -> File:sync, dup2 -> dup, ...)</li>
+-- <li>If you are unclear about the behaviour of a function you should consult
+-- your OS API documentation (e.g. the manpages).</li>
+-- <li>If the name is significantly different from the POSIX-function, the
+-- underlying function(s) are stated in the documentation.</li>
+-- <li>Parameters should reflect those of the C-API, buffer length arguments and 
+-- by-reference parameters should be omitted for practical purposes.</li>
+-- <li>If a C function accepts a bitfield as parameter, it should be translated
+-- into lower case string flags representing the flags if the bitfield is the 
+-- last parameter and also omitting prefixes or suffixes. (e.g.  waitpid
+-- (pid, &s, WNOHANG | WUNTRACED) -> waitpid(pid, "nohang", "untraced"), 
+-- getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) ->
+-- Socket:getopt("socket", "reuseaddr"), etc.) </li>
+-- <li>If it is not applicable to provide a string representation of the
+-- bitfield a bitfield generator helper is provided. It is named FUNCTION_flags.
+-- (open("/tmp/test", O_RDONLY | O_NONBLOCK) -> open("/tmp/test", open_flags(
+-- "rdonly", "nonblock")))</li>  
+-- </ul>
+-- @class table
+-- @name Functions
+-- @return !
+
+--- Platform information.
+-- <ul>
+-- <li>The minimum platform requirements are a decent POSIX 2001 support.
+-- Builds are more or less tested on Linux, Solaris and FreeBSD. Builds for
+-- Windows XP SP1 and later can be compiled with MinGW either from Windows
+-- itself or using the MinGW cross-compiler. Earlier versions of Windows are not
+-- supported.</li>
+-- <li>In general all functions which don't have any remarks 
+-- in their documentation are available on all platforms.</li>
+-- <li>Functions with a (POSIX), (Linux) or similar prefix are only available
+-- on these specific platforms. Same appplies to parameters of functions
+-- with a similar suffix.</li>
+-- <li>Some functions might have limitations on some platforms. This should
+-- be stated in the documentation. Please also consult your OS API 
+-- documentation.</li>   
+-- </ul>
+-- @usage Tes
+-- @class table
+-- @name Platforms
+-- @return !
+
+--- Cryptography and TLS libraries.
+-- <ul>
+-- <li>Currently 3 underlying cryptography libraries are supported: openssl,
+-- cyassl and axTLS. The name of the library in use is written to 
+-- <strong>nixio.tls_provider</strong></li>
+-- <li>You should whenever possible use openssl or cyassl as axTLS has only 
+-- limited support. It does not provide support for non-blocking sockets and
+-- is probably less audited than the other ones.</li>
+-- <li>As the supported Windows versions are not suitable for embedded devices
+-- axTLS is at the moment not supported on Windows.</li>  
+-- </ul>
+-- @usage Tes
+-- @class table
+-- @name TLS-Crypto
+-- @return !
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua
new file mode 100644 (file)
index 0000000..a08b48d
--- /dev/null
@@ -0,0 +1,17 @@
+--- Cryptographical Hash and HMAC object.
+-- @cstyle     instance
+module "nixio.CryptoHash"
+
+--- Add another chunk of data to be hashed.
+-- @class function
+-- @name CryptoHash.update
+-- @param chunk Chunk of data
+-- @return CryptoHash object (self)
+
+--- Finalize the hash and return the digest.
+-- @class function
+-- @name CryptoHash.final
+-- @usage You cannot call update on a hash object that was already finalized
+-- you can however call final multiple times to get the digest.
+-- @return     hexdigest
+-- @return  buffer containing binary digest
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua
new file mode 100644 (file)
index 0000000..368562a
--- /dev/null
@@ -0,0 +1,109 @@
+--- Large File Object.
+-- Large file operations are supported up to 52 bits if the Lua number type is
+-- double (default).
+-- @cstyle     instance
+module "nixio.File"
+
+--- Write to the file descriptor.
+-- @class function
+-- @name File.write
+-- @usage <strong>Warning:</strong> It is not guaranteed that all data
+-- in the buffer is written at once especially when dealing with pipes.
+-- You have to check the return value - the number of bytes actually written -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage Unlike standard Lua indexing the lowest offset and default is 0.
+-- @param buffer       Buffer holding the data to be written.
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @return number of bytes written
+
+--- Read from a file descriptor.
+-- @class function
+-- @name File.read
+-- @usage <strong>Warning:</strong> It is not guaranteed that all requested data
+-- is read at once especially when dealing with pipes.
+-- You have to check the return value - the length of the buffer actually read -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage The length of the return buffer is limited by the (compile time) 
+-- nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default).
+-- Any read request greater than that will be safely truncated to this value.  
+-- @param length       Amount of data to read (in Bytes).
+-- @return buffer containing data successfully read
+
+--- Reposition read / write offset of the file descriptor.
+-- The seek will be done either from the beginning of the file or relative
+-- to the current position or relative to the end.
+-- @class function
+-- @name File.seek
+-- @usage This function calls lseek().
+-- @param offset       File Offset
+-- @param whence       Starting point [<strong>"set"</strong>, "cur", "end"]
+-- @return new (absolute) offset position
+
+--- Return the current read / write offset of the file descriptor.
+-- @class function
+-- @name File.tell
+-- @usage This function calls lseek() with offset 0 from the current position.
+-- @return offset position
+
+--- Synchronizes the file with the storage device.
+-- Returns when the file is successfully written to the disk.
+-- @class function
+-- @name File.sync
+-- @usage This function calls fsync() when data_only equals false
+-- otherwise fdatasync(), on Windows _commit() is used instead.
+-- @usage fdatasync() is only supported by Linux and Solaris. For other systems
+-- the <em>data_only</em> parameter is ignored and fsync() is always called.
+-- @param data_only            Do not synchronize the metadata. (optional, boolean)
+-- @return true
+
+--- Apply or test a lock on the file.
+-- @class function
+-- @name File.lock
+-- @usage This function calls lockf() on POSIX and _locking() on Windows.
+-- @usage The "lock" command is blocking, "tlock" is non-blocking,
+-- "ulock" unlocks and "test" only tests for the lock.
+-- @usage The "test" command is not available on Windows.
+-- @usage Locks are by default advisory on POSIX, but mandatory on Windows.
+-- @param command      Locking Command ["lock", "tlock", "ulock", "test"]
+-- @param length       Amount of Bytes to lock from current offset (optional)
+-- @return true
+
+--- Get file status and attributes.
+-- @class function
+-- @name File.stat
+-- @param      field   Only return a specific field, not the whole table (optional)
+-- @usage This function calls fstat().
+-- @return     Table containing: <ul>
+-- <li>atime = Last access timestamp</li>
+-- <li>blksize = Blocksize (POSIX only)</li>
+-- <li>blocks = Blocks used (POSIX only)</li>
+-- <li>ctime = Creation timestamp</li>
+-- <li>dev = Device ID</li>
+-- <li>gid = Group ID</li>
+-- <li>ino = Inode</li>
+-- <li>modedec = Mode converted into a decimal number</li>
+-- <li>modestr = Mode as string as returned by `ls -l`</li>
+-- <li>mtime = Last modification timestamp</li>
+-- <li>nlink = Number of links</li>
+-- <li>rdev = Device ID (if special file)</li>
+-- <li>size = Size in bytes</li>
+-- <li>type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]</li>
+-- <li>uid = User ID</li>
+-- </ul>
+
+--- Close the file descriptor.
+-- @class function
+-- @name File.close
+-- @return true
+
+--- Get the number of the filedescriptor.
+-- @class function
+-- @name File.fileno
+-- @return file descriptor number
+
+--- (POSIX) Set the blocking mode of the file descriptor.
+-- @class function
+-- @name File.setblocking
+-- @param      blocking        (boolean)
+-- @return true
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua
new file mode 100644 (file)
index 0000000..c970534
--- /dev/null
@@ -0,0 +1,170 @@
+--- Socket Object.
+-- Supports IPv4, IPv6 and UNIX (POSIX only) families.
+-- @cstyle     instance
+module "nixio.Socket"
+
+--- Get the local address of a socket.
+-- @class function
+-- @name Socket.getsockname
+-- @return     IP-Address
+-- @return     Port
+
+--- Get the peer address of a socket.
+-- @class function
+-- @name Socket.getpeername
+-- @return     IP-Address
+-- @return     Port
+
+--- Bind the socket to a network address.
+-- @class function
+-- @name Socket.bind
+-- @usage This function calls getaddrinfo() and bind() but NOT listen().
+-- @usage If <em>host</em> is a domain name it will be looked up and bind() 
+-- tries the IP-Addresses in the order returned by the DNS resolver
+-- until the bind succeeds. 
+-- @usage UNIX sockets ignore the <em>port</em>,
+-- and interpret <em>host</em> as a socket path.
+-- @param host Host (optional, default: all addresses)
+-- @param port Port or service description
+-- @return true
+
+--- Connect the socket to a network address.
+-- @class function
+-- @name Socket.connect
+-- @usage This function calls getaddrinfo() and connect().
+-- @usage If <em>host</em> is a domain name it will be looked up and connect() 
+-- tries the IP-Addresses in the order returned by the DNS resolver
+-- until the connect succeeds. 
+-- @usage UNIX sockets ignore the <em>port</em>,
+-- and interpret <em>host</em> as a socket path.
+-- @param host Hostname or IP-Address (optional, default: localhost)
+-- @param port Port or service description
+-- @return true
+
+--- Listen for connections on the socket.
+-- @class function
+-- @name Socket.listen
+-- @param      backlog Length of queue for pending connections
+-- @return     true
+
+--- Accept a connection on the socket.
+-- @class function
+-- @name Socket.accept
+-- @return     Socket Object
+-- @return     Peer IP-Address
+-- @return  Peer Port
+
+--- Send a message on the socket specifying the destination.
+-- @class function
+-- @name Socket.sendto
+-- @usage <strong>Warning:</strong> It is not guaranteed that all data
+-- in the buffer is written at once.
+-- You have to check the return value - the number of bytes actually written -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage Unlike standard Lua indexing the lowest offset and default is 0.
+-- @param buffer       Buffer holding the data to be written.
+-- @param host         Target IP-Address
+-- @param port         Target Port
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @return number of bytes written
+
+--- Send a message on the socket.
+-- This function is identical to sendto except for the missing destination
+-- parameters. See the sendto description for a detailed description.
+-- @class function
+-- @name Socket.send
+-- @param buffer       Buffer holding the data to be written.
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @see        Socket.sendto
+-- @return number of bytes written
+
+--- Send a message on the socket (This is an alias for send).
+-- See the sendto description for a detailed description.
+-- @class function
+-- @name Socket.write
+-- @param buffer       Buffer holding the data to be written.
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @see        Socket.sendto
+-- @return number of bytes written
+
+--- Receive a message on the socket including the senders source address.
+-- @class function
+-- @name Socket.recvfrom
+-- @usage <strong>Warning:</strong> It is not guaranteed that all requested data
+-- is read at once.
+-- You have to check the return value - the length of the buffer actually read -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage The length of the return buffer is limited by the (compile time) 
+-- nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default).
+-- Any read request greater than that will be safely truncated to this value.  
+-- @param length       Amount of data to read (in Bytes).
+-- @return buffer containing data successfully read
+-- @return host                IP-Address of the sender
+-- @return port                Port of the sender
+
+--- Receive a message on the socket.
+-- This function is identical to recvfrom except that it does not return 
+-- the sender's source address. See the recvfrom description for more details.
+-- @class function
+-- @name Socket.recv  
+-- @param length       Amount of data to read (in Bytes).
+-- @see Socket.recvfrom
+-- @return buffer containing data successfully read
+
+--- Receive a message on the socket (This is an alias for recv).
+-- See the recvfrom description for more details.
+-- @class function
+-- @name Socket.read  
+-- @param length       Amount of data to read (in Bytes).
+-- @see Socket.recvfrom
+-- @return buffer containing data successfully read
+
+--- Close the socket.
+-- @class function
+-- @name Socket.close
+-- @return true
+
+--- Shut down part of a full-duplex connection.
+-- @class function
+-- @name Socket.shutdown
+-- @param how  (optional, default: rdwr) ["rdwr", "rd", "wr"] 
+-- @return     true
+
+--- Get the number of the filedescriptor.
+-- @class function
+-- @name Socket.fileno
+-- @return file descriptor number
+
+--- Set the blocking mode of the socket.
+-- @class function
+-- @name Socket.setblocking
+-- @param      blocking        (boolean)
+-- @return true
+
+--- Set a socket option.
+-- @class function
+-- @name Socket.setopt
+-- @param level Level ["socket", "tcp", "ip", "ipv6"]
+-- @param option Option        ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", 
+-- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", 
+-- "bindtodevice", "error", "oobinline", "cork" (TCP),  "nodelay" (TCP),
+-- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop"
+-- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops"
+-- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)]
+-- @param      value Value
+-- @return true
+
+--- Get a socket option.
+-- @class function
+-- @name Socket.getopt
+-- @param level Level ["socket", "tcp", "ip", "ipv6"]
+-- @param option Option        ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", 
+-- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", 
+-- "bindtodevice", "error", "oobinline", "cork" (TCP),  "nodelay" (TCP),
+-- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop"
+-- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops"
+-- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)]
+-- @return Value
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua
new file mode 100644 (file)
index 0000000..7cc0711
--- /dev/null
@@ -0,0 +1,46 @@
+--- Transport Layer Security Context Object.
+-- @cstyle     instance
+module "nixio.TLSContext"
+
+--- Create a TLS Socket from a socket descriptor.
+-- @class function
+-- @name TLSContext.create
+-- @param socket Socket Object
+-- @return TLSSocket Object
+
+--- Assign a PEM certificate to this context.
+-- @class function
+-- @name TLSContext.set_cert
+-- @usage This function calls SSL_CTX_use_certificate_chain_file().
+-- @param path Certificate File path
+-- @return true
+
+--- Assign a PEM private key to this context.
+-- @class function
+-- @name TLSContext.set_key
+-- @usage This function calls SSL_CTX_use_PrivateKey_file().
+-- @param path Private Key File path
+-- @return true
+
+--- Set the available ciphers for this context.
+-- @class function
+-- @name TLSContext.set_ciphers
+-- @usage This function calls SSL_CTX_set_cipher_list().
+-- @param cipherlist   String containing a list of ciphers
+-- @return true
+
+--- Set the verification depth of this context.
+-- @class function
+-- @name TLSContext.set_verify_depth
+-- @usage This function calls SSL_CTX_set_verify_depth().
+-- @param depth        Depth
+-- @return true
+
+--- Set the verification flags of this context.
+-- @class function
+-- @name TLSContext.set_verify
+-- @usage This function calls SSL_CTX_set_verify().
+-- @param flag1        First Flag      ["none", "peer", "verify_fail_if_no_peer_cert", 
+-- "client_once"]
+-- @param ...  More Flags      [-"-]
+-- @return true
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua
new file mode 100644 (file)
index 0000000..b932cde
--- /dev/null
@@ -0,0 +1,73 @@
+--- TLS Socket Object.
+-- TLS Sockets contain the underlying socket and context in the fields
+-- "socket" and "context".
+-- @cstyle     instance
+module "nixio.TLSSocket"
+
+--- Initiate the TLS handshake as client with the server.
+-- @class function
+-- @name TLSSocket.connect
+-- @usage This function calls SSL_connect().
+-- @usage You have to call either connect or accept before transmitting data.
+-- @see TLSSocket.accept
+-- @return true
+
+--- Wait for a TLS handshake from a client.
+-- @class function
+-- @name TLSSocket.accept
+-- @usage This function calls SSL_accept().
+-- @usage You have to call either connect or accept before transmitting data.
+-- @see TLSSocket.connect
+-- @return     true
+
+--- Send a message to the socket.
+-- @class function
+-- @name TLSSocket.send
+-- @usage This function calls SSL_write().
+-- @usage <strong>Warning:</strong> It is not guaranteed that all data
+-- in the buffer is written at once.
+-- You have to check the return value - the number of bytes actually written -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage Unlike standard Lua indexing the lowest offset and default is 0.
+-- @param buffer       Buffer holding the data to be written.
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @return number of bytes written
+
+--- Send a message on the socket (This is an alias for send).
+-- See the send description for a detailed description.
+-- @class function
+-- @name TLSSocket.write
+-- @param buffer       Buffer holding the data to be written.
+-- @param offset       Offset to start reading the buffer from. (optional)
+-- @param length       Length of chunk to read from the buffer. (optional)
+-- @see        TLSSocket.send
+-- @return number of bytes written
+
+--- Receive a message on the socket.
+-- @class function
+-- @name TLSSocket.recv
+-- @usage This function calls SSL_read().
+-- @usage <strong>Warning:</strong> It is not guaranteed that all requested data
+-- is read at once.
+-- You have to check the return value - the length of the buffer actually read -
+-- or use the safe IO functions in the high-level IO utility module.
+-- @usage The length of the return buffer is limited by the (compile time) 
+-- nixio buffersize which is <em>nixio.const.buffersize</em> (8192 by default).
+-- Any read request greater than that will be safely truncated to this value.  
+-- @param length       Amount of data to read (in Bytes).
+-- @return buffer containing data successfully read
+
+--- Receive a message on the socket (This is an alias for recv).
+-- See the recv description for more details.
+-- @class function
+-- @name TLSSocket.read  
+-- @param length       Amount of data to read (in Bytes).
+-- @see TLSSocket.recv
+-- @return buffer containing data successfully read
+
+--- Shut down the TLS connection.
+-- @class function
+-- @name TLSSocket.shutdown
+-- @usage This function calls SSL_shutdown().
+-- @return     true
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua
new file mode 100644 (file)
index 0000000..6d1d5ea
--- /dev/null
@@ -0,0 +1,129 @@
+--- Unified high-level I/O utility API for Files, Sockets and TLS-Sockets.
+-- These functions are added to the object function tables by doing <strong>
+-- require "nixio.util"</strong>, can be used on all nixio IO  Descriptors and
+-- are based on the shared low-level read() and write() functions.
+-- @cstyle     instance
+module "nixio.UnifiedIO"
+
+--- Test whether the I/O-Descriptor is a socket. 
+-- @class function
+-- @name UnifiedIO.is_socket
+-- @return     boolean
+
+--- Test whether the I/O-Descriptor is a TLS socket. 
+-- @class function
+-- @name UnifiedIO.is_tls_socket
+-- @return     boolean
+
+--- Test whether the I/O-Descriptor is a file. 
+-- @class function
+-- @name UnifiedIO.is_file
+-- @return     boolean
+
+--- Read a block of data and wait until all data is available.
+-- @class function
+-- @name UnifiedIO.readall
+-- @usage This function uses the low-level read function of the descriptor.
+-- @usage If the length parameter is omitted, this function returns all data
+-- that can be read before an end-of-file, end-of-stream, connection shutdown
+-- or similar happens.
+-- @usage If the descriptor is non-blocking this function may fail with EAGAIN.
+-- @param      length  Bytes to read (optional)
+-- @return     data that was successfully read if no error occurred
+-- @return     - reserved for error code -
+-- @return     - reserved for error message -
+-- @return  data that was successfully read even if an error occurred
+
+--- Write a block of data and wait until all data is written.
+-- @class function
+-- @name UnifiedIO.writeall
+-- @usage This function uses the low-level write function of the descriptor.
+-- @usage If the descriptor is non-blocking this function may fail with EAGAIN.
+-- @param      block   Bytes to write
+-- @return     bytes that were successfully written if no error occurred
+-- @return     - reserved for error code -
+-- @return     - reserved for error message -
+-- @return  bytes that were successfully written even if an error occurred
+
+--- Create a line-based iterator.
+-- Lines may end with either \n or \r\n, these control chars are not included
+-- in the return value.
+-- @class function
+-- @name UnifiedIO.linesource
+-- @usage This function uses the low-level read function of the descriptor.
+-- @usage <strong>Note:</strong> This function uses an internal buffer to read
+-- ahead. Do NOT mix calls to read(all) and the returned iterator. If you want
+-- to stop reading line-based and want to use the read(all) functions instead
+-- you can pass "true" to the iterator which will flush the buffer 
+-- and return the bufferd data.
+-- @usage If the limit parameter is omitted, this function uses the nixio
+-- buffersize (8192B by default).
+-- @usage If the descriptor is non-blocking the iterator may fail with EAGAIN.
+-- @usage The iterator can be used as an LTN12 source.
+-- @param      limit   Line limit
+-- @return     Line-based Iterator
+
+--- Create a block-based iterator.
+-- @class function
+-- @name UnifiedIO.blocksource
+-- @usage This function uses the low-level read function of the descriptor.
+-- @usage The blocksize given is only advisory and to be seen as an upper limit,
+-- if an underlying read returns less bytes the chunk is nevertheless returned.
+-- @usage If the limit parameter is omitted, the iterator returns data
+-- until an end-of-file, end-of-stream, connection shutdown or similar happens.
+-- @usage The iterator will not buffer so it is safe to mix with calls to read.
+-- @usage If the descriptor is non-blocking the iterator may fail with EAGAIN.
+-- @usage The iterator can be used as an LTN12 source.
+-- @param      blocksize       Advisory blocksize (optional)
+-- @param      limit           Amount of data to consume (optional)
+-- @return     Block-based Iterator
+
+--- Create a sink.
+-- This sink will simply write all data that it receives and optionally
+-- close the descriptor afterwards.
+-- @class function
+-- @name UnifiedIO.sink
+-- @usage This function uses the writeall function of the descriptor.
+-- @usage If the descriptor is non-blocking the sink may fail with EAGAIN.
+-- @usage The iterator can be used as an LTN12 sink.
+-- @param      close_when_done (optional, boolean)
+-- @return     Sink
+
+--- Copy data from the current descriptor to another one.
+-- @class function
+-- @name UnifiedIO.copy
+-- @usage This function uses the blocksource function of the source descriptor
+-- and the sink function of the target descriptor.
+-- @usage If the limit parameter is omitted, data is copied
+-- until an end-of-file, end-of-stream, connection shutdown or similar happens.
+-- @usage If the descriptor is non-blocking the function may fail with EAGAIN.
+-- @param      fdout Target Descriptor
+-- @param      size  Bytes to copy (optional)
+-- @return     bytes that were successfully written if no error occurred
+-- @return     - reserved for error code -
+-- @return     - reserved for error message -
+-- @return  bytes that were successfully written even if an error occurred
+
+--- Copy data from the current descriptor to another one using kernel-space
+-- copying if possible.
+-- @class function
+-- @name UnifiedIO.copyz
+-- @usage This function uses the sendfile() syscall to copy the data or the
+-- blocksource function of the source descriptor and the sink function
+-- of the target descriptor as a fallback mechanism.
+-- @usage If the limit parameter is omitted, data is copied
+-- until an end-of-file, end-of-stream, connection shutdown or similar happens.
+-- @usage If the descriptor is non-blocking the function may fail with EAGAIN.
+-- @param      fdout Target Descriptor
+-- @param      size  Bytes to copy (optional)
+-- @return     bytes that were successfully written if no error occurred
+-- @return     - reserved for error code -
+-- @return     - reserved for error message -
+-- @return  bytes that were successfully written even if an error occurred
+
+--- Close the descriptor.
+-- @class function
+-- @name UnifiedIO.close
+-- @usage      If the descriptor is a TLS-socket the underlying descriptor is
+-- closed without touching the TLS connection.
+-- @return     true
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua
new file mode 100644 (file)
index 0000000..13e125d
--- /dev/null
@@ -0,0 +1,33 @@
+--- Binary operations and conversion.
+module "nixio.bin"
+
+--- Return a hexadecimal ASCII represantation of the content of a buffer. 
+-- @class function
+-- @name hexlify
+-- @param buffer       Buffer
+-- @return representation using characters [0-9a-f]
+
+--- Return a binary buffer from a hexadecimal ASCII representation. 
+-- @class function
+-- @name unhexlify
+-- @param hexvalue representation using characters [0-9a-f]
+-- @return binary data
+
+--- Calculate the CRC32 value of a buffer. 
+-- @class function
+-- @name crc32
+-- @param buffer       Buffer
+-- @param initial      Initial CRC32 value (optional)
+-- @return crc32 value
+
+--- Base64 encode a given buffer.
+-- @class function
+-- @name b64encode
+-- @param buffer       Buffer
+-- @return base64 encoded buffer
+
+--- Base64 decode a given buffer.
+-- @class function
+-- @name b64decode
+-- @param buffer       Base 64 Encoded data
+-- @return binary data
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua
new file mode 100644 (file)
index 0000000..6951dd5
--- /dev/null
@@ -0,0 +1,92 @@
+--- Bitfield operators and mainpulation functions.
+-- Can be used as a drop-in replacement for bitlib.
+module "nixio.bit"
+
+--- Bitwise OR several numbers.
+-- @class function
+-- @name bor
+-- @param oper1        First Operand
+-- @param oper2 Second Operand
+-- @param ...  More Operands
+-- @return number
+
+--- Invert given number.
+-- @class function
+-- @name bnot
+-- @param oper Operand
+-- @return number
+
+--- Bitwise AND several numbers.
+-- @class function
+-- @name band
+-- @param oper1        First Operand
+-- @param oper2 Second Operand
+-- @param ...  More Operands
+-- @return number
+
+--- Bitwise XOR several numbers.
+-- @class function
+-- @name bxor
+-- @param oper1        First Operand
+-- @param oper2 Second Operand
+-- @param ...  More Operands
+-- @return number
+
+--- Left shift a number.
+-- @class function
+-- @name lshift
+-- @param oper number
+-- @param shift        bits to shift 
+-- @return number
+
+--- Right shift a number.
+-- @class function
+-- @name rshift
+-- @param oper number
+-- @param shift        bits to shift 
+-- @return number
+
+--- Arithmetically right shift a number.
+-- @class function
+-- @name arshift
+-- @param oper number
+-- @param shift        bits to shift 
+-- @return number
+
+--- Integer division of 2 or more numbers.
+-- @class function
+-- @name div
+-- @param oper1        Operand 1
+-- @param oper2 Operand 2
+-- @param ... More Operands
+-- @return number
+
+--- Cast a number to the bit-operating range.
+-- @class function
+-- @name cast
+-- @param oper number
+-- @return number
+
+--- Sets one or more flags of a bitfield.
+-- @class function
+-- @name set
+-- @param bitfield     Bitfield
+-- @param flag1 First Flag
+-- @param ...  More Flags
+-- @return altered bitfield
+
+--- Unsets one or more flags of a bitfield.
+-- @class function
+-- @name unset
+-- @param bitfield     Bitfield
+-- @param flag1 First Flag
+-- @param ...  More Flags
+-- @return altered bitfield
+
+--- Checks whether given flags are set in a bitfield.
+-- @class function
+-- @name check
+-- @param bitfield     Bitfield
+-- @param flag1 First Flag
+-- @param ...  More Flags
+-- @return true when all flags are set, otherwise false
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua
new file mode 100644 (file)
index 0000000..158d0fc
--- /dev/null
@@ -0,0 +1,15 @@
+--- Cryptographical library.
+module "nixio.crypto"
+
+--- Create a hash object. 
+-- @class function
+-- @name nixio.crypto.hash
+-- @param algo Algorithm ["sha1", "md5"]
+-- @return CryptoHash Object
+
+--- Create a HMAC object. 
+-- @class function
+-- @name nixio.crypto.hmac
+-- @param algo Algorithm ["sha1", "md5"]
+-- @param key  HMAC-Key
+-- @return CryptoHash Object
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua
new file mode 100644 (file)
index 0000000..ef495f2
--- /dev/null
@@ -0,0 +1,265 @@
+--- Low-level and high-level filesystem manipulation library.
+module "nixio.fs"
+
+
+--- Check user's permission on a file.
+-- @class function
+-- @name nixio.fs.access
+-- @param path         Path
+-- @param mode1                First Mode to check ["f", "r", "w", "x"]
+-- @param ...          More Modes to check     [-"-]
+-- @return     true
+
+--- Strip the directory part from a path.
+-- @class function
+-- @name nixio.fs.basename
+-- @usage      This function cannot fail and will never return nil.
+-- @param      path Path
+-- @return     basename
+
+--- Strip the base from a path.
+-- @class function
+-- @name nixio.fs.dirname
+-- @usage      This function cannot fail and will never return nil.
+-- @param      path Path
+-- @return     dirname
+
+--- Return the cannonicalized absolute pathname.
+-- @class function
+-- @name nixio.fs.realpath
+-- @param      path Path
+-- @return     absolute path
+
+--- Remove a file or directory.
+-- @class function
+-- @name nixio.fs.remove
+-- @param      path Path
+-- @return     true
+
+--- Delete a name and - if no links are left - the associated file.
+-- @class function
+-- @name nixio.fs.unlink
+-- @param      path Path
+-- @return     true
+
+--- Renames a file or directory.
+-- @class function
+-- @name nixio.fs.rename
+-- @param      src     Source path
+-- @param      dest Destination path
+-- @usage      It is normally not possible to rename files across filesystems.
+-- @return     true
+
+--- Remove an empty directory.
+-- @class function
+-- @name nixio.fs.rmdir
+-- @param      path Path
+-- @return     true
+
+--- Create a new directory.
+-- @class function
+-- @name nixio.fs.mkdir
+-- @param      path Path
+-- @param      mode File mode (optional, see chmod and umask)
+-- @see        nixio.fs.chmod
+-- @see        nixio.umask
+-- @return     true
+
+--- Change the file mode.
+-- @class function
+-- @name       nixio.fs.chmod
+-- @usage      Windows only supports setting the write-protection through the
+-- "Writable to others" bit.
+-- @usage      <strong>Notice:</strong> The mode-flag for the functions
+-- open, mkdir, mkfifo are affected by the umask. 
+-- @param      path Path
+-- @param      mode File mode  
+-- [decimal mode number, "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]"]
+-- @see        nixio.umask
+-- @return true
+
+--- Iterate over the entries of a directory.
+-- @class function
+-- @name nixio.fs.dir
+-- @usage      The special entries "." and ".." are omitted.
+-- @param      path Path
+-- @return     directory iterator returning one entry per call
+
+--- Create a hard link.
+-- @class function
+-- @name nixio.fs.link
+-- @usage This function calls link() on POSIX and CreateHardLink() on Windows.
+-- @param      oldpath Path
+-- @param      newpath Path
+-- @return     true
+
+--- Change file last access and last modification time.
+-- @class function
+-- @name nixio.fs.utimes
+-- @param      path Path
+-- @param      actime Last access timestamp    (optional, default: current time)
+-- @param      mtime Last modification timestamp (optional, default: actime)
+-- @return     true
+
+--- Get file status and attributes.
+-- @class function
+-- @name nixio.fs.stat
+-- @param      path    Path
+-- @param      field   Only return a specific field, not the whole table (optional)
+-- @return     Table containing: <ul>
+-- <li>atime = Last access timestamp</li>
+-- <li>blksize = Blocksize (POSIX only)</li>
+-- <li>blocks = Blocks used (POSIX only)</li>
+-- <li>ctime = Creation timestamp</li>
+-- <li>dev = Device ID</li>
+-- <li>gid = Group ID</li>
+-- <li>ino = Inode</li>
+-- <li>modedec = Mode converted into a decimal number</li>
+-- <li>modestr = Mode as string as returned by `ls -l`</li>
+-- <li>mtime = Last modification timestamp</li>
+-- <li>nlink = Number of links</li>
+-- <li>rdev = Device ID (if special file)</li>
+-- <li>size = Size in bytes</li>
+-- <li>type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]</li>
+-- <li>uid = User ID</li>
+-- </ul>
+
+--- Get file status and attributes and do not resolve if target is a symlink.
+-- @class function
+-- @name nixio.fs.lstat
+-- @param      path    Path
+-- @param      field   Only return a specific field, not the whole table (optional)
+-- @see        nixio.fs.stat
+-- @return Table containing attributes (see stat for a detailed description)
+
+--- (POSIX) Change owner and group of a file.
+-- @class function
+-- @name nixio.fs.chown
+-- @param      path    Path
+-- @param      user    User ID or Username             (optional)
+-- @param      group   Group ID or Groupname   (optional)
+-- @return true
+
+--- (POSIX) Change owner and group of a file and do not resolve
+-- if target is a symlink.
+-- @class function
+-- @name nixio.fs.lchown
+-- @param      path    Path
+-- @param      user    User ID or Username             (optional)
+-- @param      group   Group ID or Groupname   (optional)
+-- @return true
+
+--- (POSIX) Create a FIFO (named pipe).
+-- @class function
+-- @name nixio.fs.mkfifo
+-- @param      path Path
+-- @param      mode File mode (optional, see chmod and umask)
+-- @see        nixio.fs.chmod
+-- @see        nixio.umask
+-- @return     true
+
+--- (POSIX) Create a symbolic link.
+-- @class function
+-- @name nixio.fs.symlink
+-- @param      oldpath Path
+-- @param      newpath Path
+-- @return     true
+
+--- (POSIX) Read the target of a symbolic link.
+-- @class function
+-- @name nixio.fs.readlink
+-- @param      path Path
+-- @return     target path
+
+--- (POSIX) Find pathnames matching a pattern.
+-- @class function
+-- @name nixio.fs.glob
+-- @param      pattern Pattern
+-- @return     path iterator
+-- @return     number of matches
+
+--- (POSIX) Get filesystem statistics.
+-- @class function
+-- @name nixio.fs.statvfs
+-- @param      path Path to any file within the filesystem.
+-- @return     Table containing: <ul>
+-- <li>bavail = available blocks</li>
+-- <li>bfree = free blocks</li>
+-- <li>blocks = number of fragments</li>
+-- <li>frsize = fragment size</li>
+-- <li>favail = available inodes</li>
+-- <li>ffree = free inodes</li>
+-- <li>files = inodes</li>
+-- <li>flag = flags</li>
+-- <li>fsid = filesystem ID</li>
+-- <li>namemax = maximum filename length</li>
+-- </ul>
+
+--- Read the contents of a file into a buffer.
+-- @class function
+-- @name nixio.fs.readfile
+-- @param      path Path
+-- @param      limit   Maximum bytes to read (optional)
+-- @return     file contents
+
+--- Write a buffer into a file truncating the file first.
+-- @class function
+-- @name nixio.fs.writefile
+-- @param      path Path
+-- @param      data Data to write
+-- @return     true
+
+--- Copy data between files.
+-- @class function
+-- @name nixio.fs.datacopy
+-- @param      src     Source file path
+-- @param      dest Destination file path
+-- @param      limit   Maximum bytes to copy (optional)
+-- @return     true
+
+--- Copy a file, directory or symlink non-recursively preserving file mode,
+-- timestamps, owner and group.
+-- @class function
+-- @name nixio.fs.copy
+-- @usage      The destination must always be a full destination path e.g. do not
+-- omit the basename even if source and destination basename are equal. 
+-- @param      src     Source path
+-- @param      dest Destination path
+-- @return     true
+
+--- Rename a file, directory or symlink non-recursively across filesystems.
+-- @class function
+-- @name nixio.fs.move
+-- @usage      The destination must always be a full destination path e.g. do not
+-- omit the basename even if source and destination basename are equal. 
+-- @param      src     Source path
+-- @param      dest Destination path
+-- @return     true
+
+--- Create a directory and all needed parent directories recursively. 
+-- @class function
+-- @name nixio.fs.mkdirr
+-- @param      dest Destination path
+-- @param      mode File mode (optional, see chmod and umask)
+-- @see        nixio.fs.chmod
+-- @see        nixio.umask
+-- @return     true
+
+--- Rename a file, directory or symlink recursively across filesystems.
+-- @class function
+-- @name nixio.fs.mover
+-- @usage      The destination must always be a full destination path e.g. do not
+-- omit the basename even if source and destination basename are equal. 
+-- @param      src     Source path
+-- @param      dest Destination path
+-- @return     true
+
+--- Copy a file, directory or symlink recursively preserving file mode,
+-- timestamps, owner and group.
+-- @class function
+-- @name nixio.fs.copyr
+-- @usage      The destination must always be a full destination path e.g. do not
+-- omit the basename even if source and destination basename are equal. 
+-- @param      src     Source path
+-- @param      dest Destination path
+-- @return     true
diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.lua
new file mode 100644 (file)
index 0000000..56a4afb
--- /dev/null
@@ -0,0 +1,467 @@
+--- General POSIX IO library.
+module "nixio"
+
+--- Look up a hostname and service via DNS.
+-- @class function
+-- @name nixio.getaddrinfo
+-- @param host         hostname to lookup      (optional)
+-- @param family       address family [<strong>"any"</strong>, "inet", "inet6"]  
+-- @param service      service name or port (optional)
+-- @return                     Table containing one or more tables containing: <ul>
+-- <li>family = ["inet", "inet6"]</li>
+-- <li>socktype = ["stream", "dgram", "raw"]</li>
+-- <li>address = Resolved IP-Address</li>
+-- <li>port = Resolved Port (if service was given)</li>
+-- </ul>
+
+--- Reverse look up an IP-Address via DNS.
+-- @class function
+-- @name nixio.getnameinfo
+-- @param ipaddr       IPv4 or IPv6-Address
+-- @return     FQDN
+
+--- (Linux, BSD) Get a list of available network interfaces and their addresses.
+-- @class function
+-- @name nixio.getifaddrs
+-- @return                     Table containing one or more tables containing: <ul>
+-- <li>name = Interface Name</li>
+-- <li>family = ["inet", "inet6", "packet"]</li>
+-- <li>addr = Interface Address (IPv4, IPv6, MAC, ...)</li>
+-- <li>broadaddr = Broadcast Address</li>
+-- <li>dstaddr = Destination Address (Point-to-Point)</li>
+-- <li>netmask = Netmask (if available)</li>
+-- <li>prefix = Prefix (if available)</li>
+-- <li>flags = Table of interface flags (up, multicast, loopback, ...)</li>
+-- <li>data = Statistics (Linux, "packet"-family)</li>
+-- <li>hatype = Hardware Type Identifier (Linix, "packet"-family)</li>
+-- <li>ifindex = Interface Index (Linux, "packet"-family)</li>
+-- </ul>
+
+--- Get protocol entry by name.
+-- @usage This function returns nil if the given protocol is unknown.
+-- @class function
+-- @name nixio.getprotobyname
+-- @param name         protocol name to lookup
+-- @return                     Table containing the following fields: <ul>
+-- <li>name = Protocol Name</li>
+-- <li>proto = Protocol Number</li>
+-- <li>aliases = Table of alias names</li>
+-- </ul>
+
+--- Get protocol entry by number.
+-- @usage This function returns nil if the given protocol is unknown.
+-- @class function
+-- @name nixio.getprotobynumber
+-- @param proto                protocol number to lookup
+-- @return                     Table containing the following fields: <ul>
+-- <li>name = Protocol Name</li>
+-- <li>proto = Protocol Number</li>
+-- <li>aliases = Table of alias names</li>
+-- </ul>
+
+--- Get all or a specific proto entry.
+-- @class function
+-- @name nixio.getproto
+-- @param proto                protocol number or name to lookup (optional)
+-- @return                     Table (or if no parameter is given, a table of tables)
+--                  containing the following fields: <ul>
+-- <li>name = Protocol Name</li>
+-- <li>proto = Protocol Number</li>
+-- <li>aliases = Table of alias names</li>
+-- </ul>
+
+--- Create a new socket and bind it to a network address.
+-- This function is a shortcut for calling nixio.socket and then bind()
+-- on the socket object.
+-- @usage This functions calls getaddrinfo(), socket(),
+-- setsockopt() and bind() but NOT listen().
+-- @usage The <em>reuseaddr</em>-option is automatically set before binding.
+-- @class function
+-- @name nixio.bind
+-- @param host Hostname or IP-Address (optional, default: all addresses)
+-- @param port Port or service description
+-- @param family Address family [<strong>"any"</strong>, "inet", "inet6"]
+-- @param socktype Socket Type [<strong>"stream"</strong>, "dgram"]
+-- @return     Socket Object
+
+--- Create a new socket and connect to a network address.
+-- This function is a shortcut for calling nixio.socket and then connect()
+-- on the socket object.
+-- @usage This functions calls getaddrinfo(), socket() and connect().
+-- @class function
+-- @name nixio.connect
+-- @param host Hostname or IP-Address (optional, default: localhost)
+-- @param port Port or service description
+-- @param family Address family [<strong>"any"</strong>, "inet", "inet6"]
+-- @param socktype Socket Type [<strong>"stream"</strong>, "dgram"]
+-- @return     Socket Object
+
+--- Open a file.
+-- @class function
+-- @name nixio.open
+-- @usage Although this function also supports the traditional fopen() 
+-- file flags it does not create a file stream but uses the open() syscall.
+-- @param path Filesystem path to open
+-- @param flags        Flag string or number (see open_flags).
+-- [<strong>"r"</strong>, "r+", "w", "w+", "a", "a+"]
+-- @param  mode        File mode for newly created files (see chmod, umask).
+-- @see        nixio.umask
+-- @see nixio.open_flags
+-- @return     File Object
+
+--- Generate flags for a call to open().
+-- @class function
+-- @name nixio.open_flags
+-- @usage This function cannot fail and will never return nil.
+-- @usage The "nonblock" and "ndelay" flags are aliases.
+-- @usage The "nonblock", "ndelay" and "sync" flags are no-ops on Windows.
+-- @param flag1 First Flag ["append", "creat", "excl", "nonblock", "ndelay",
+-- "sync", "trunc", "rdonly", "wronly", "rdwr"]
+-- @param ...  More Flags [-"-]
+-- @return flag to be used as second parameter to open
+
+--- Duplicate a file descriptor.
+-- @class function
+-- @name nixio.dup
+-- @usage This funcation calls dup2() if <em>newfd</em> is set, otherwise dup().
+-- @param oldfd        Old descriptor [File Object, Socket Object (POSIX only)]
+-- @param newfd New descriptor to serve as copy (optional)
+-- @return     File Object of new descriptor
+
+--- Create a pipe.
+-- @class function
+-- @name nixio.pipe
+-- @return     File Object of the read end
+-- @return     File Object of the write end
+
+--- Get the last system error code.
+-- @class function
+-- @name nixio.errno
+-- @return     Error code
+
+--- Get the error message for the corresponding error code.
+-- @class function
+-- @name nixio.strerror
+-- @param errno System error code
+-- @return     Error message
+
+--- Sleep for a specified amount of time.
+-- @class function
+-- @usage Not all systems support nanosecond precision but you can expect
+-- to have at least maillisecond precision.
+-- @usage This function is not signal-protected and may fail with EINTR.
+-- @param seconds Seconds to wait (optional)
+-- @param nanoseconds Nanoseconds to wait (optional)
+-- @name nixio.nanosleep
+-- @return true
+
+--- Generate events-bitfield or parse revents-bitfield for poll.
+-- @class function
+-- @name nixio.poll_flags
+-- @param      mode1   revents-Flag bitfield returned from poll to parse OR 
+-- ["in", "out", "err", "pri" (POSIX), "hup" (POSIX), "nval" (POSIX)]
+-- @param      ...             More mode strings for generating the flag [-"-]
+-- @see nixio.poll
+-- @return table with boolean fields reflecting the mode parameter 
+-- <strong>OR</strong> bitfield to use for the events-Flag field
+
+--- Wait for some event on a file descriptor.
+-- poll() sets the revents-field of the tables provided by fds to a bitfield
+-- indicating the events that occurred.
+-- @class function
+-- @usage This function works in-place on the provided table and only
+-- writes the revents field, you can use other fields on your demand.
+-- @usage All metamethods on the tables provided as fds are ignored.
+-- @usage The revents-fields are not reset when the call times out.
+-- You have to check the first return value to be 0 to handle this case.
+-- @usage If you want to wait on a TLS-Socket you have to use the underlying
+-- socket instead.
+-- @usage On Windows poll is emulated through select(), can only be used
+-- on socket descriptors and cannot take more than 64 descriptors per call.
+-- @usage This function is not signal-protected and may fail with EINTR.
+-- @param fds  Table containing one or more tables containing <ul>
+-- <li> fd = I/O Descriptor [Socket Object, File Object (POSIX)]</li>
+-- <li> events = events to wait for (bitfield generated with poll_flags)</li>
+-- </ul>
+-- @param timeout Timeout in milliseconds
+-- @name nixio.poll
+-- @see nixio.poll_flags
+-- @return number of ready IO descriptors
+-- @return the fds-table with revents-fields set
+
+--- (POSIX) Clone the current process.
+-- @class function
+-- @name nixio.fork
+-- @return     the child process id for the parent process, 0 for the child process
+
+--- (POSIX) Send a signal to one or more processes.
+-- @class function
+-- @name nixio.kill
+-- @param      target  Target process of process group.
+-- @param      signal  Signal to send
+-- @return     true
+
+--- (POSIX) Get the parent process id of the current process.
+-- @class function
+-- @name nixio.getppid
+-- @return     parent process id
+
+--- (POSIX) Get the user id of the current process.
+-- @class function
+-- @name nixio.getuid
+-- @return     process user id
+
+--- (POSIX) Get the group id of the current process.
+-- @class function
+-- @name nixio.getgid
+-- @return     process group id
+
+--- (POSIX) Set the group id of the current process.
+-- @class function
+-- @name nixio.setgid
+-- @param gid New Group ID
+-- @return     true
+
+--- (POSIX) Set the user id of the current process.
+-- @class function
+-- @name nixio.setuid
+-- @param gid New User ID
+-- @return     true
+
+--- (POSIX) Change priority of current process.
+-- @class function
+-- @name nixio.nice
+-- @param nice Nice Value
+-- @return     true
+
+--- (POSIX) Create a new session and set the process group ID.
+-- @class function
+-- @name nixio.setsid
+-- @return     session id
+
+--- (POSIX) Wait for a process to change state.
+-- @class function
+-- @name nixio.waitpid
+-- @usage      If the "nohang" is given this function becomes non-blocking.
+-- @param pid Process ID       (optional, default: any childprocess)
+-- @param flag1 Flag   (optional) ["nohang", "untraced", "continued"]
+-- @param ...  More Flags [-"-]
+-- @return     process id of child or 0 if no child has changed state
+-- @return  ["exited", "signaled", "stopped"]
+-- @return  [exit code, terminate signal, stop signal]
+
+--- (POSIX) Get process times.
+-- @class function
+-- @name nixio.times
+-- @return Table containing: <ul>
+-- <li>utime = user time</li>
+-- <li>utime = system time</li>
+-- <li>cutime = children user time</li>
+-- <li>cstime = children system time</li>
+-- </ul>
+
+--- (POSIX) Get information about current system and kernel.
+-- @class function
+-- @name nixio.uname
+-- @return Table containing: <ul>
+-- <li>sysname = operating system</li>
+-- <li>nodename = network name (usually hostname)</li>
+-- <li>release = OS release</li>
+-- <li>version = OS version</li>
+-- <li>machine = hardware identifier</li>
+-- </ul>
+
+--- Change the working directory.
+-- @class function
+-- @name nixio.chdir
+-- @param      path New working directory
+-- @return true
+
+--- Ignore or use set the default handler for a signal.
+-- @class function
+-- @name nixio.signal
+-- @param signal       Signal
+-- @param handler      ["ign", "dfl"]
+-- @return true
+
+--- Get the ID of the current process.
+-- @class function
+-- @name nixio.getpid
+-- @return process id
+
+--- Get the current working directory.
+-- @class function
+-- @name nixio.getcwd
+-- @return workign directory
+
+--- Get the current environment table or a specific environment variable.
+-- @class function
+-- @name nixio.getenv
+-- @param variable Variable (optional)
+-- @return environment table or single environment variable
+
+--- Set or unset a environment variable.
+-- @class function
+-- @name nixio.setenv
+-- @usage The environment variable will be unset if value is omitted.
+-- @param variable     Variable
+-- @param value                Value (optional)
+-- @return true
+
+--- Execute a file to replace the current process.
+-- @class function
+-- @name nixio.exec
+-- @usage The name of the executable is automatically passed as argv[0]
+-- @usage This function does not return on success.
+-- @param executable Executable
+-- @param ... Parameters
+
+--- Invoke the shell and execute a file to replace the current process.
+-- @class function
+-- @name nixio.execp
+-- @usage The name of the executable is automatically passed as argv[0]
+-- @usage This function does not return on success.
+-- @param executable Executable
+-- @param ... Parameters
+
+--- Execute a file with a custom environment to replace the current process.
+-- @class function
+-- @name nixio.exece
+-- @usage The name of the executable is automatically passed as argv[0]
+-- @usage This function does not return on success.
+-- @param executable Executable
+-- @param arguments Argument Table
+-- @param environment Environment Table (optional)
+
+--- Sets the file mode creation mask.
+-- @class function
+-- @name nixio.umask
+-- @param mask New creation mask (see chmod for format specifications)
+-- @return the old umask as decimal mode number
+-- @return the old umask as mode string
+
+--- (Linux) Get overall system statistics.
+-- @class function
+-- @name nixio.sysinfo
+-- @return Table containing: <ul>
+-- <li>uptime = system uptime in seconds</li>
+-- <li>loads = {loadavg1, loadavg5, loadavg15}</li>
+-- <li>totalram = total RAM</li>
+-- <li>freeram = free RAM</li>
+-- <li>sharedram = shared RAM</li>
+-- <li>bufferram = buffered RAM</li>
+-- <li>totalswap = total SWAP</li>
+-- <li>freeswap = free SWAP</li>
+-- <li>procs = number of running processes</li>
+-- </ul>
+
+--- Create a new socket.
+-- @class function
+-- @name nixio.socket
+-- @param domain       Domain ["inet", "inet6", "unix"]
+-- @param type         Type   ["stream", "dgram", "raw"]
+-- @return     Socket Object
+
+--- (POSIX) Send data from a file to a socket in kernel-space.
+-- @class function
+-- @name nixio.sendfile
+-- @param socket Socket Object
+-- @param file  File Object
+-- @param length Amount of data to send (in Bytes).
+-- @return bytes sent
+
+--- (Linux) Send data from / to a pipe in kernel-space.
+-- @class function
+-- @name nixio.splice
+-- @param fdin Input I/O descriptor 
+-- @param fdout        Output I/O descriptor
+-- @param length Amount of data to send (in Bytes).
+-- @param flags (optional, bitfield generated by splice_flags)
+-- @see nixio.splice_flags
+-- @return bytes sent
+
+--- (Linux) Generate a flag bitfield for a call to splice.
+-- @class function
+-- @name nixio.splice_flags
+-- @param flag1        First Flag      ["move", "nonblock", "more"]
+-- @param ...  More flags      [-"-]
+-- @see nixio.splice
+-- @return Flag bitfield
+
+--- (POSIX) Open a connection to the system logger.
+-- @class function
+-- @name nixio.openlog
+-- @param ident        Identifier
+-- @param flag1        Flag 1 ["cons", "nowait", "pid", "perror", "ndelay", "odelay"]
+-- @param ...  More flags [-"-]
+
+--- (POSIX) Close the connection to the system logger.
+-- @class function
+-- @name nixio.closelog
+
+--- (POSIX) Write a message to the system logger.
+-- @class function
+-- @name nixio.syslog
+-- @param priority Priority ["emerg", "alert", "crit", "err", "warning",
+-- "notice", "info", "debug"]
+-- @param message
+
+--- (POSIX) Set the logmask of the system logger for current process.
+-- @class function
+-- @name nixio.setlogmask
+-- @param priority Priority ["emerg", "alert", "crit", "err", "warning",
+-- "notice", "info", "debug"]
+
+--- (POSIX) Encrypt a user password.
+-- @class function
+-- @name nixio.crypt
+-- @param key Key
+-- @param salt Salt
+-- @return password hash
+
+--- (POSIX) Get all or a specific user group.
+-- @class function
+-- @name nixio.getgr
+-- @param group Group ID or groupname (optional)
+-- @return Table containing: <ul>
+-- <li>name = Group Name</li>
+-- <li>gid = Group ID</li>
+-- <li>passwd = Password</li>
+-- <li>mem = {Member #1, Member #2, ...}</li>
+-- </ul>
+
+--- (POSIX) Get all or a specific user account.
+-- @class function
+-- @name nixio.getpw
+-- @param user User ID or username (optional)
+-- @return Table containing: <ul>
+-- <li>name = Name</li>
+-- <li>uid = ID</li>
+-- <li>gid = Group ID</li>
+-- <li>passwd = Password</li>
+-- <li>dir = Home directory</li>
+-- <li>gecos = Information</li>
+-- <li>shell = Shell</li>
+-- </ul>
+
+--- (Linux, Solaris) Get all or a specific shadow password entry.
+-- @class function
+-- @name nixio.getsp
+-- @param user username (optional)
+-- @return Table containing: <ul>
+-- <li>namp = Name</li>
+-- <li>expire = Expiration Date</li>
+-- <li>flag = Flags</li>
+-- <li>inact = Inactivity Date</li>
+-- <li>lstchg = Last change</li>
+-- <li>max = Maximum</li>
+-- <li>min = Minimum</li>
+-- <li>warn = Warning</li>
+-- <li>pwdp = Password Hash</li>
+-- </ul>
+
+--- Create a new TLS context.
+-- @class function
+-- @name nixio.tls
+-- @param mode TLS-Mode ["client", "server"]
+-- @return TLSContext Object
diff --git a/package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec b/package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec
new file mode 100644 (file)
index 0000000..755cf81
--- /dev/null
@@ -0,0 +1,37 @@
+package = "nixio"
+version = "0.3-1"
+source = {
+   url = "http://dev.luci.freifunk-halle.net/nixio/nixio-0.3.tar.bz2"
+}
+description = {
+   summary = "System, Networking and I/O library for Lua",
+   detailed = [[
+      Nixio is a multi-platform library offering a wide variety
+      of features such as IPv4, IPv6 and UNIX networking, large file I/O, file
+      system operations, system and process control, POSIX user/group management,
+      basic cryptographical hashing, hmac and TLS support, bit operations and
+      binary conversion.
+   ]],
+   homepage = "http://luci.subsignal.org",
+   license = "Apache 2.0",
+   maintainer = "Steven Barth",
+}
+dependencies = {
+   "lua >= 5.1"
+}
+external_dependencies = {
+   OPENSSL = {
+      header = "openssl/ssl.h",
+   }
+}
+build = {
+   type = "make",
+   build_variables = {
+      NIXIO_LDFLAGS = "-lcrypt -L$(OPENSSL_LIBDIR) -I$(OPENSSL_INCDIR)",
+      LUA_CFLAGS = "$(CFLAGS) -I$(LUA_INCDIR)",
+   },
+   install_variables = {
+      LUA_MODULEDIR = "$(LUADIR)",
+      LUA_LIBRARYDIR = "$(LIBDIR)",
+   },
+}
diff --git a/package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh b/package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh
new file mode 100644 (file)
index 0000000..77399b9
--- /dev/null
@@ -0,0 +1,16 @@
+add_luci_conffiles()
+{
+       local filelist="$1"
+
+       # save ssl certs
+       if [ -d /etc/nixio ]; then
+               find /etc/nixio -type f >> $filelist
+       fi
+
+       # save uhttpd certs
+       [ -f "/etc/uhttpd.key" ] && echo /etc/uhttpd.key >> $filelist
+       [ -f "/etc/uhttpd.crt" ] && echo /etc/uhttpd.crt >> $filelist
+}
+
+sysupgrade_init_conffiles="$sysupgrade_init_conffiles add_luci_conffiles"
+
diff --git a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua b/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua
new file mode 100644 (file)
index 0000000..8883835
--- /dev/null
@@ -0,0 +1,175 @@
+--[[
+nixio - Linux I/O library for lua
+
+Copyright 2009 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local table = require "table"
+local nixio = require "nixio"
+local type, ipairs, setmetatable = type, ipairs, setmetatable
+require "nixio.util"
+
+
+module ("nixio.fs", function(m) setmetatable(m, {__index = nixio.fs}) end)
+
+
+function readfile(path, limit)
+       local fd, code, msg = nixio.open(path, "r")
+       local data
+       if not fd then
+               return nil, code, msg
+       end
+       
+       data, code, msg = fd:readall(limit)
+       
+       fd:close()
+       return data, code, msg
+end
+
+
+function writefile(path, data)
+       local fd, code, msg, stat = nixio.open(path, "w")
+       if not fd then
+               return nil, code, msg
+       end
+       
+       stat, code, msg = fd:writeall(data)
+       
+       fd:close()
+       return stat, code, msg
+end
+
+function datacopy(src, dest, size)
+       local fdin, code, msg = nixio.open(src, "r")
+       if not fdin then
+               return nil, code, msg
+       end
+       
+       local fdout, code, msg = nixio.open(dest, "w")
+       if not fdout then
+               return nil, code, msg
+       end     
+       
+       local stat, code, msg, sent = fdin:copy(fdout, size)
+       fdin:close()
+       fdout:close()
+
+       return stat, code, msg, sent
+end
+
+function copy(src, dest)
+       local stat, code, msg, res = nixio.fs.lstat(src)
+       if not stat then
+               return nil, code, msg
+       end
+       
+       if stat.type == "dir" then
+               if nixio.fs.stat(dest, type) ~= "dir" then
+                       res, code, msg = nixio.fs.mkdir(dest)
+               else
+                       stat = true
+               end
+       elseif stat.type == "lnk" then
+               res, code, msg = nixio.fs.symlink(nixio.fs.readlink(src), dest)
+       elseif stat.type == "reg" then
+               res, code, msg = datacopy(src, dest)
+       end
+       
+       if not res then
+               return nil, code, msg
+       end
+       
+       nixio.fs.utimes(dest, stat.atime, stat.mtime)
+       
+       if nixio.fs.lchown then
+               nixio.fs.lchown(dest, stat.uid, stat.gid)
+       end
+       
+       if stat.type ~= "lnk" then
+               nixio.fs.chmod(dest, stat.modedec)
+       end
+       
+       return true
+end
+
+function move(src, dest)
+       local stat, code, msg = nixio.fs.rename(src, dest)
+       if not stat and code == nixio.const.EXDEV then
+               stat, code, msg = copy(src, dest)
+               if stat then
+                       stat, code, msg = nixio.fs.unlink(src)
+               end
+       end
+       return stat, code, msg
+end
+
+function mkdirr(dest, mode)
+       if nixio.fs.stat(dest, "type") == "dir" then
+               return true
+       else
+               local stat, code, msg = nixio.fs.mkdir(dest, mode)
+               if not stat and code == nixio.const.ENOENT then
+                       stat, code, msg = mkdirr(nixio.fs.dirname(dest), mode)
+                       if stat then
+                               stat, code, msg = nixio.fs.mkdir(dest, mode)
+                       end
+               end
+               return stat, code, msg
+       end
+end
+
+local function _recurse(cb, src, dest)
+       local type = nixio.fs.lstat(src, "type")
+       if type ~= "dir" then
+               return cb(src, dest)
+       else
+               local stat, se, code, msg, s, c, m = true, nixio.const.sep
+               if dest then
+                       s, c, m = cb(src, dest)
+                       stat, code, msg = stat and s, c or code, m or msg
+               end
+
+               for e in nixio.fs.dir(src) do
+                       if dest then
+                               s, c, m = _recurse(cb, src .. se .. e, dest .. se .. e)
+                       else
+                               s, c, m = _recurse(cb, src .. se .. e)
+                       end
+                       stat, code, msg = stat and s, c or code, m or msg
+               end
+
+               if not dest then                                                        -- Postfix
+                       s, c, m = cb(src)
+                       stat, code, msg = stat and s, c or code, m or msg
+               end
+
+               return stat, code, msg
+       end
+end
+
+function copyr(src, dest)
+       return _recurse(copy, src, dest)
+end
+
+function mover(src, dest)
+       local stat, code, msg = nixio.fs.rename(src, dest)
+       if not stat and code == nixio.const.EXDEV then
+               stat, code, msg = _recurse(copy, src, dest)
+               if stat then
+                       stat, code, msg = _recurse(nixio.fs.remove, src)
+               end
+       end
+       return stat, code, msg
+end
+
+function remover(src)
+       return _recurse(nixio.fs.remove, src)
+end
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua b/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua
new file mode 100644 (file)
index 0000000..63d2f62
--- /dev/null
@@ -0,0 +1,270 @@
+--[[
+nixio - Linux I/O library for lua
+
+Copyright 2009 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local table = require "table"
+local nixio = require "nixio"
+local getmetatable, assert, pairs, type = getmetatable, assert, pairs, type
+local tostring = tostring
+
+module "nixio.util"
+
+local BUFFERSIZE = nixio.const.buffersize
+local ZIOBLKSIZE = 65536
+local socket = nixio.meta_socket
+local tls_socket = nixio.meta_tls_socket
+local file = nixio.meta_file
+local uname = nixio.uname()
+local ZBUG = uname.sysname == "Linux" and uname.release:sub(1, 3) == "2.4"
+
+function consume(iter, append)
+       local tbl = append or {}
+       if iter then
+               for obj in iter do
+                       tbl[#tbl+1] = obj
+               end
+       end
+       return tbl
+end
+
+local meta = {}
+
+function meta.is_socket(self)
+       return (getmetatable(self) == socket)
+end
+
+function meta.is_tls_socket(self)
+       return (getmetatable(self) == tls_socket)
+end
+
+function meta.is_file(self)
+       return (getmetatable(self) == file)
+end
+
+function meta.readall(self, len)
+       local block, code, msg = self:read(len or BUFFERSIZE)
+
+       if not block then
+               return nil, code, msg, ""
+       elseif #block == 0 then
+               return "", nil, nil, ""
+       end
+
+       local data, total = {block}, #block
+
+       while not len or len > total do
+               block, code, msg = self:read(len and (len - total) or BUFFERSIZE)
+
+               if not block then
+                       return nil, code, msg, table.concat(data)
+               elseif #block == 0 then
+                       break
+               end
+
+               data[#data+1], total = block, total + #block
+       end
+
+       local data = #data > 1 and table.concat(data) or data[1]
+       return data, nil, nil, data
+end
+meta.recvall = meta.readall
+
+function meta.writeall(self, data)
+       data = tostring(data)
+       local sent, code, msg = self:write(data)
+
+       if not sent then
+               return nil, code, msg, 0
+       end
+
+       local total = sent 
+
+       while total < #data do
+               sent, code, msg = self:write(data, total)
+
+               if not sent then
+                       return nil, code, msg, total
+               end
+
+               total = total + sent
+       end
+       
+       return total, nil, nil, total
+end
+meta.sendall = meta.writeall
+
+function meta.linesource(self, limit)
+       limit = limit or BUFFERSIZE
+       local buffer = ""
+       local bpos = 0
+       return function(flush)
+               local line, endp, _
+               
+               if flush then
+                       line = buffer:sub(bpos + 1)
+                       buffer = type(flush) == "string" and flush or ""
+                       bpos = 0
+                       return line
+               end
+
+               while not line do
+                       _, endp, line = buffer:find("(.-)\r?\n", bpos + 1)
+                       if line then
+                               bpos = endp
+                               return line
+                       elseif #buffer < limit + bpos then
+                               local newblock, code, msg = self:read(limit + bpos - #buffer)
+                               if not newblock then
+                                       return nil, code, msg
+                               elseif #newblock == 0 then
+                                       return nil
+                               end
+                               buffer = buffer:sub(bpos + 1) .. newblock
+                               bpos = 0
+                       else
+                               return nil, 0
+                       end
+               end
+       end
+end
+
+function meta.blocksource(self, bs, limit)
+       bs = bs or BUFFERSIZE
+       return function()
+               local toread = bs
+               if limit then
+                       if limit < 1 then
+                               return nil
+                       elseif limit < toread then
+                               toread = limit
+                       end
+               end
+
+               local block, code, msg = self:read(toread)
+
+               if not block then
+                       return nil, code, msg
+               elseif #block == 0 then
+                       return nil
+               else
+                       if limit then
+                               limit = limit - #block
+                       end
+
+                       return block
+               end
+       end
+end
+
+function meta.sink(self, close)
+       return function(chunk, src_err)
+               if not chunk and not src_err and close then
+                       if self.shutdown then
+                               self:shutdown()
+                       end
+                       self:close()
+               elseif chunk and #chunk > 0 then
+                       return self:writeall(chunk)
+               end
+               return true
+       end
+end
+
+function meta.copy(self, fdout, size)
+       local source = self:blocksource(nil, size)
+       local sink = fdout:sink()
+       local sent, chunk, code, msg = 0
+       
+       repeat
+               chunk, code, msg = source()
+               sink(chunk, code, msg)
+               sent = chunk and (sent + #chunk) or sent
+       until not chunk
+       return not code and sent or nil, code, msg, sent
+end
+
+function meta.copyz(self, fd, size)
+       local sent, lsent, code, msg = 0
+       local splicable
+
+       if not ZBUG and self:is_file() then
+               local ftype = self:stat("type")
+               if nixio.sendfile and fd:is_socket() and ftype == "reg" then
+                       repeat
+                               lsent, code, msg = nixio.sendfile(fd, self, size or ZIOBLKSIZE)
+                               if lsent then
+                                       sent = sent + lsent
+                                       size = size and (size - lsent)
+                               end
+                       until (not lsent or lsent == 0 or (size and size == 0))
+                       if lsent or (not lsent and sent == 0 and
+                        code ~= nixio.const.ENOSYS and code ~= nixio.const.EINVAL) then
+                               return lsent and sent, code, msg, sent
+                       end
+               elseif nixio.splice and not fd:is_tls_socket() and ftype == "fifo" then 
+                       splicable = true
+               end
+       end
+
+       if nixio.splice and fd:is_file() and not splicable then
+               splicable = not self:is_tls_socket() and fd:stat("type") == "fifo"
+       end
+
+       if splicable then
+               repeat
+                       lsent, code, msg = nixio.splice(self, fd, size or ZIOBLKSIZE)
+                       if lsent then
+                               sent = sent + lsent
+                               size = size and (size - lsent)
+                       end
+               until (not lsent or lsent == 0 or (size and size == 0))
+               if lsent or (not lsent and sent == 0 and
+                code ~= nixio.const.ENOSYS and code ~= nixio.const.EINVAL) then
+                       return lsent and sent, code, msg, sent
+               end             
+       end
+
+       return self:copy(fd, size)
+end
+
+if tls_socket then
+       function tls_socket.close(self)
+               return self.socket:close()
+       end
+
+       function tls_socket.getsockname(self)
+               return self.socket:getsockname()
+       end
+
+       function tls_socket.getpeername(self)
+               return self.socket:getpeername()
+       end
+
+       function tls_socket.getsockopt(self, ...)
+               return self.socket:getsockopt(...)
+       end
+       tls_socket.getopt = tls_socket.getsockopt
+
+       function tls_socket.setsockopt(self, ...)
+               return self.socket:setsockopt(...)
+       end
+       tls_socket.setopt = tls_socket.setsockopt
+end
+
+for k, v in pairs(meta) do
+       file[k] = v
+       socket[k] = v
+       if tls_socket then
+               tls_socket[k] = v
+       end
+end
diff --git a/package/luci/libs/luci-lib-nixio/src/Makefile b/package/luci/libs/luci-lib-nixio/src/Makefile
new file mode 100644 (file)
index 0000000..a7e9a77
--- /dev/null
@@ -0,0 +1,120 @@
+OS            = Linux
+AXTLS_VERSION = 1.2.1
+AXTLS_DIR     = axTLS
+AXTLS_FILE    = $(AXTLS_DIR)-$(AXTLS_VERSION).tar.gz
+#NIXIO_TLS    ?= openssl
+NIXIO_SHADOW ?= $(shell echo 'int main(void){ return !getspnam("root"); }' | $(CC) $(CFLAGS) -include shadow.h -xc -o/dev/null - 2>/dev/null && echo yes)
+NIXIO_SO      = nixio.so
+NIXIO_LDFLAGS = -llua -lm -ldl
+CFLAGS       += -std=gnu99
+
+ifeq (,$(findstring Darwin,$(OS)))
+       NIXIO_LDFLAGS += -lcrypt -shared
+else
+        NIXIO_LDFLAGS += -bundle -undefined dynamic_lookup
+       EXTRA_CFLAGS += -D__DARWIN__
+endif
+
+NIXIO_OBJ = nixio.o socket.o sockopt.o bind.o address.o \
+           protoent.o poll.o io.o file.o splice.o process.o \
+           syslog.o bit.o binary.o fs.o user.o \
+           $(if $(NIXIO_TLS),tls-crypto.o tls-context.o tls-socket.o,)
+
+ifeq ($(NIXIO_TLS),axtls)
+       TLS_CFLAGS = -IaxTLS/ssl -IaxTLS/crypto -IaxTLS/config -include axtls-compat.h
+       TLS_DEPENDS = axtls-compat.o
+       NIXIO_OBJ += axtls-compat.o libaxtls.a
+endif
+
+ifeq ($(NIXIO_TLS),openssl)
+       NIXIO_LDFLAGS += -lssl -lcrypto
+endif
+
+ifeq ($(NIXIO_TLS),cyassl)
+       NIXIO_LDFLAGS += -lcyassl
+       TLS_DEPENDS = cyassl-compat.o
+       TLS_CFLAGS = -include cyassl-compat.h
+       NIXIO_OBJ += cyassl-compat.o
+endif
+
+ifeq ($(NIXIO_TLS),)
+       NIXIO_CFLAGS += -DNO_TLS
+endif
+
+ifneq ($(NIXIO_SHADOW),yes)
+       NIXIO_CFLAGS += -DNO_SHADOW
+endif
+
+
+ifeq ($(OS),SunOS)
+       NIXIO_LDFLAGS += -lsocket -lnsl -lsendfile
+endif
+
+ifneq (,$(findstring MINGW,$(OS))$(findstring mingw,$(OS))$(findstring Windows,$(OS)))
+       NIXIO_CROSS_CC:=$(shell which i586-mingw32msvc-cc)
+ifneq (,$(NIXIO_CROSS_CC))
+       CC:=$(NIXIO_CROSS_CC)
+endif
+       NIXIO_OBJ += mingw-compat.o
+       NIXIO_LDFLAGS_POST:=-llua -lssl -lcrypto -lws2_32 -lgdi32
+       FPIC:=
+       EXTRA_CFLAGS += -D_WIN32_WINNT=0x0501
+       LUA_CFLAGS:=
+       NIXIO_SO:=nixio.dll
+       NIXIO_LDFLAGS:=
+endif
+
+
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) -c -o $@ $< 
+
+ifneq ($(NIXIO_TLS),)
+tls-crypto.o: $(TLS_DEPENDS) tls-crypto.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-crypto.c
+
+tls-context.o: $(TLS_DEPENDS) tls-context.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-context.c
+       
+tls-socket.o: $(TLS_DEPENDS) tls-socket.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-socket.c
+       
+axtls-compat.o: libaxtls.a axtls-compat.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ axtls-compat.c
+       mkdir -p dist
+       cp -pR axtls-root/* dist/
+endif  
+
+compile: $(NIXIO_OBJ)
+       $(CC) $(LDFLAGS) $(SHLIB_FLAGS) -o $(NIXIO_SO) $(NIXIO_OBJ) $(NIXIO_LDFLAGS) $(NIXIO_LDFLAGS_POST)
+       mkdir -p dist/usr/lib/lua
+       cp $(NIXIO_SO) dist/usr/lib/lua/$(NIXIO_SO)
+
+$(AXTLS_DIR)/.prepared:
+       #rm -rf $(AXTLS_DIR)
+       #tar xvfz $(AXTLS_FILE)
+       cp axtls-config/.config axtls-config/config.h $(AXTLS_DIR)/config
+       touch $@
+
+libaxtls.a: $(AXTLS_DIR)/.prepared
+       $(MAKE) -C $(AXTLS_DIR) CC="$(CC)" CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS) $(FPIC) -Wall -pedantic -I../config -I../ssl -I../crypto" LDFLAGS="$(LDFLAGS)" OS="$(OS)" clean all
+       cp -p $(AXTLS_DIR)/_stage/libaxtls.a src
+       # *************************************************************************
+       #
+       #
+       #
+       # *** WARNING ***
+       # The use of the axTLS cryptographical provider is discouraged!
+       # Please switch to either CyaSSL or OpenSSL.
+       # Support for axTLS might be removed in the near future.
+       #
+       #
+       #
+       #**************************************************************************
+
+clean:
+       rm -f *.o *.so *.a *.dll
+       rm -f $(AXTLS_DIR)/.prepared
+
+install: compile
+       mkdir -p $(DESTDIR)
+       cp -pR dist/* $(DESTDIR)/
diff --git a/package/luci/libs/luci-lib-nixio/src/address.c b/package/luci/libs/luci-lib-nixio/src/address.c
new file mode 100644 (file)
index 0000000..8ab4fa8
--- /dev/null
@@ -0,0 +1,567 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <sys/types.h>
+#include <sys/param.h>
+#include <errno.h>
+#include <string.h>
+
+#ifdef __linux__
+
+#include <signal.h>
+#include <setjmp.h>
+#include <unistd.h>
+
+/* setjmp() / longjmp() stuff */
+static jmp_buf nixio__jump_alarm;
+static void nixio__handle_alarm(int sig) { longjmp(nixio__jump_alarm, 1); }
+
+#include <linux/netdevice.h>
+
+/* struct net_device_stats is buggy on amd64, redefine it */
+struct nixio__nds {
+     uint32_t rx_packets;
+     uint32_t tx_packets;
+     uint32_t rx_bytes;
+     uint32_t tx_bytes;
+     uint32_t rx_errors;
+     uint32_t tx_errors;
+     uint32_t rx_dropped;
+     uint32_t tx_dropped;
+     uint32_t multicast;
+     uint32_t collisions;
+
+     uint32_t rx_length_errors;
+     uint32_t rx_over_errors;
+     uint32_t rx_crc_errors;
+     uint32_t rx_frame_errors;
+     uint32_t rx_fifo_errors;
+     uint32_t rx_missed_errors;
+
+     uint32_t tx_aborted_errors;
+     uint32_t tx_carrier_errors;
+     uint32_t tx_fifo_errors;
+     uint32_t tx_heartbeat_errors;
+     uint32_t tx_window_errors;
+
+     uint32_t rx_compressed;
+     uint32_t tx_compressed;
+};
+#endif
+
+#ifndef NI_MAXHOST
+#define NI_MAXHOST 1025
+#endif
+
+/**
+ * address pushing helper
+ */
+int nixio__addr_parse(nixio_addr *addr, struct sockaddr *saddr) {
+       void *baddr;
+
+       addr->family = saddr->sa_family;
+       if (saddr->sa_family == AF_INET) {
+               struct sockaddr_in *inetaddr = (struct sockaddr_in*)saddr;
+               addr->port = ntohs(inetaddr->sin_port);
+               baddr = &inetaddr->sin_addr;
+       } else if (saddr->sa_family == AF_INET6) {
+               struct sockaddr_in6 *inet6addr = (struct sockaddr_in6*)saddr;
+               addr->port = ntohs(inet6addr->sin6_port);
+               baddr = &inet6addr->sin6_addr;
+#ifdef AF_PACKET
+       } else if (saddr->sa_family == AF_PACKET) {
+               struct sockaddr_ll *etheradddr = (struct sockaddr_ll*)saddr;
+               addr->prefix = etheradddr->sll_hatype;
+               addr->port = etheradddr->sll_ifindex;
+               char *c = addr->host;
+               for (size_t i = 0; i < etheradddr->sll_halen; i++) {
+                       *c++ = nixio__bin2hex[(etheradddr->sll_addr[i] & 0xf0) >> 4];
+                       *c++ = nixio__bin2hex[(etheradddr->sll_addr[i] & 0x0f)];
+                       *c++ = ':';
+               }
+               *(c-1) = 0;
+               return 0;
+#endif
+       } else {
+               errno = EAFNOSUPPORT;
+               return -1;
+       }
+
+       if (!inet_ntop(saddr->sa_family, baddr, addr->host, sizeof(addr->host))) {
+               return -1;
+       }
+
+       return 0;
+}
+
+/**
+ * address pulling helper
+ */
+int nixio__addr_write(nixio_addr *addr, struct sockaddr *saddr) {
+       if (addr->family == AF_UNSPEC) {
+               if (strchr(addr->host, ':')) {
+                       addr->family = AF_INET6;
+               } else {
+                       addr->family = AF_INET;
+               }
+       }
+       if (addr->family == AF_INET) {
+               struct sockaddr_in *inetaddr = (struct sockaddr_in *)saddr;
+               memset(inetaddr, 0, sizeof(struct sockaddr_in));
+
+               if (inet_pton(AF_INET, addr->host, &inetaddr->sin_addr) < 1) {
+                       return -1;
+               }
+
+               inetaddr->sin_family = AF_INET;
+               inetaddr->sin_port = htons((uint16_t)addr->port);
+               return 0;
+       } else if (addr->family == AF_INET6) {
+               struct sockaddr_in6 *inet6addr = (struct sockaddr_in6 *)saddr;
+               memset(inet6addr, 0, sizeof(struct sockaddr_in6));
+
+               if (inet_pton(AF_INET6, addr->host, &inet6addr->sin6_addr) < 1) {
+                       return -1;
+               }
+
+               inet6addr->sin6_family = AF_INET6;
+               inet6addr->sin6_port = htons((uint16_t)addr->port);
+               return 0;
+       } else {
+               errno = EAFNOSUPPORT;
+               return -1;
+       }
+}
+
+/**
+ * netmask to prefix helper
+ */
+int nixio__addr_prefix(struct sockaddr *saddr) {
+       int prefix = 0;
+       size_t len;
+       uint8_t *addr;
+
+       if (saddr->sa_family == AF_INET) {
+               addr = (uint8_t*)(&((struct sockaddr_in*)saddr)->sin_addr);
+               len = 4;
+       } else if (saddr->sa_family == AF_INET6) {
+               addr = (uint8_t*)(&((struct sockaddr_in6*)saddr)->sin6_addr);
+               len = 16;
+       } else {
+               errno = EAFNOSUPPORT;
+               return -1;
+       }
+
+       for (size_t i = 0; i < len; i++) {
+               if (addr[i] == 0xff) {
+                       prefix += 8;
+               } else if (addr[i] == 0x00) {
+                       break;
+               } else {
+                       for (uint8_t c = addr[i]; c; c <<= 1) {
+                               prefix++;
+                       }
+               }
+       }
+
+       return prefix;
+}
+
+/**
+ * getaddrinfo(host, family, port)
+ */
+static int nixio_getaddrinfo(lua_State *L) {
+       const char *host = NULL;
+       if (!lua_isnoneornil(L, 1)) {
+               host = luaL_checklstring(L, 1, NULL);
+       }
+       const char *family = luaL_optlstring(L, 2, "any", NULL);
+       const char *port = lua_tolstring(L, 3, NULL);
+
+       struct addrinfo hints, *result, *rp;
+       memset(&hints, 0, sizeof(hints));
+
+       if (!strcmp(family, "any")) {
+               hints.ai_family = AF_UNSPEC;
+       } else if (!strcmp(family, "inet")) {
+               hints.ai_family = AF_INET;
+       } else if (!strcmp(family, "inet6")) {
+               hints.ai_family = AF_INET6;
+       } else {
+               return luaL_argerror(L, 2, "supported values: any, inet, inet6");
+       }
+
+       hints.ai_socktype = 0;
+       hints.ai_protocol = 0;
+
+       int aistat = getaddrinfo(host, port, &hints, &result);
+       if (aistat) {
+               lua_pushnil(L);
+               lua_pushinteger(L, aistat);
+               lua_pushstring(L, gai_strerror(aistat));
+               return 3;
+       }
+
+       /* create socket object */
+       lua_newtable(L);
+       int i = 1;
+
+       for (rp = result; rp != NULL; rp = rp->ai_next) {
+               /* avoid duplicate results */
+#ifndef __WINNT__
+               if (!port && rp->ai_socktype != SOCK_STREAM) {
+                       continue;
+               }
+#endif
+
+               if (rp->ai_family == AF_INET || rp->ai_family == AF_INET6) {
+                       lua_createtable(L, 0, port ? 4 : 2);
+                       if (rp->ai_family == AF_INET) {
+                               lua_pushliteral(L, "inet");
+                       } else if (rp->ai_family == AF_INET6) {
+                               lua_pushliteral(L, "inet6");
+                       }
+                       lua_setfield(L, -2, "family");
+
+                       if (port) {
+                               switch (rp->ai_socktype) {
+                                       case SOCK_STREAM:
+                                               lua_pushliteral(L, "stream");
+                                               break;
+                                       case SOCK_DGRAM:
+                                               lua_pushliteral(L, "dgram");
+                                               break;
+                                       case SOCK_RAW:
+                                               lua_pushliteral(L, "raw");
+                                               break;
+                                       default:
+                                               lua_pushnil(L);
+                                               break;
+                               }
+                               lua_setfield(L, -2, "socktype");
+                       }
+
+                       nixio_addr addr;
+                       if (nixio__addr_parse(&addr, rp->ai_addr)) {
+                               freeaddrinfo(result);
+                               return nixio__perror_s(L);
+                       }
+
+                       if (port) {
+                               lua_pushinteger(L, addr.port);
+                               lua_setfield(L, -2, "port");
+                       }
+
+                       lua_pushstring(L, addr.host);
+                       lua_setfield(L, -2, "address");
+                       lua_rawseti(L, -2, i++);
+               }
+       }
+
+       freeaddrinfo(result);
+
+       return 1;
+}
+
+/**
+ * getnameinfo(address, family[, timeout])
+ */
+static int nixio_getnameinfo(lua_State *L) {
+       const char *ip = luaL_checkstring(L, 1);
+       const char *family = luaL_optstring(L, 2, NULL);
+
+#ifdef __linux__
+       struct sigaction sa_new, sa_old;
+       int timeout = luaL_optnumber(L, 3, 0);
+       if (timeout > 0 && timeout < 1000)
+       {
+               sa_new.sa_handler = nixio__handle_alarm;
+               sa_new.sa_flags   = 0;
+               sigemptyset(&sa_new.sa_mask);
+               sigaction(SIGALRM, &sa_new, &sa_old);
+
+               /* user timeout exceeded */
+               if (setjmp(nixio__jump_alarm))
+               {
+                       sigaction(SIGALRM, &sa_old, NULL);
+
+                       lua_pushnil(L);
+                       lua_pushinteger(L, EAI_AGAIN);
+                       lua_pushstring(L, gai_strerror(EAI_AGAIN));
+
+                       return 3;
+               }
+
+               ualarm(timeout * 1000, 0);
+       }
+#endif
+
+       char host[NI_MAXHOST];
+
+       struct sockaddr_storage saddr;
+       nixio_addr addr;
+       memset(&addr, 0, sizeof(addr));
+       strncpy(addr.host, ip, sizeof(addr.host) - 1);
+
+       if (!family) {
+               addr.family = AF_UNSPEC;
+       } else if (!strcmp(family, "inet")) {
+               addr.family = AF_INET;
+       } else if (!strcmp(family, "inet6")) {
+               addr.family = AF_INET6;
+       } else {
+               return luaL_argerror(L, 2, "supported values: inet, inet6");
+       }
+
+       nixio__addr_write(&addr, (struct sockaddr *)&saddr);
+
+       int res = getnameinfo((struct sockaddr *)&saddr,
+        (saddr.ss_family == AF_INET)
+         ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6),
+        host, sizeof(host), NULL, 0, NI_NAMEREQD);
+
+#ifdef __linux__
+       if (timeout > 0 && timeout < 1000)
+       {
+               ualarm(0, 0);
+               sigaction(SIGALRM, &sa_old, NULL);
+       }
+#endif
+
+       if (res) {
+               lua_pushnil(L);
+               lua_pushinteger(L, res);
+               lua_pushstring(L, gai_strerror(res));
+               return 3;
+       } else {
+               lua_pushstring(L, host);
+               return 1;
+       }
+}
+
+/**
+ * getsockname()
+ */
+static int nixio_sock_getsockname(lua_State *L) {
+       int sockfd = nixio__checksockfd(L);
+       struct sockaddr_storage saddr;
+       socklen_t addrlen = sizeof(saddr);
+       nixio_addr addr;
+
+       if (getsockname(sockfd, (struct sockaddr*)&saddr, &addrlen) ||
+        nixio__addr_parse(&addr, (struct sockaddr*)&saddr)) {
+               return nixio__perror_s(L);
+       }
+
+       lua_pushstring(L, addr.host);
+       lua_pushinteger(L, addr.port);
+       return 2;
+}
+
+/**
+ * getpeername()
+ */
+static int nixio_sock_getpeername(lua_State *L) {
+       int sockfd = nixio__checksockfd(L);
+       struct sockaddr_storage saddr;
+       socklen_t addrlen = sizeof(saddr);
+       nixio_addr addr;
+
+       if (getpeername(sockfd, (struct sockaddr*)&saddr, &addrlen) ||
+        nixio__addr_parse(&addr, (struct sockaddr*)&saddr)) {
+               return nixio__perror_s(L);
+       }
+
+       lua_pushstring(L, addr.host);
+       lua_pushinteger(L, addr.port);
+       return 2;
+}
+
+#if defined(__linux__) || defined(BSD)
+#ifdef BSD
+#include <net/if.h>
+#endif
+#include <ifaddrs.h>
+
+static int nixio_getifaddrs(lua_State *L) {
+       nixio_addr addr;
+       struct ifaddrs *ifaddr, *c;
+       if (getifaddrs(&ifaddr) == -1) {
+               return nixio__perror(L);
+       }
+
+       lua_newtable(L);
+       unsigned int i = 1;
+
+       for (c = ifaddr; c; c = c->ifa_next) {
+               lua_newtable(L);
+
+               lua_pushstring(L, c->ifa_name);
+               lua_setfield(L, -2, "name");
+
+               lua_createtable(L, 0, 7);
+                       lua_pushboolean(L, c->ifa_flags & IFF_UP);
+                       lua_setfield(L, -2, "up");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_BROADCAST);
+                       lua_setfield(L, -2, "broadcast");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_LOOPBACK);
+                       lua_setfield(L, -2, "loopback");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_POINTOPOINT);
+                       lua_setfield(L, -2, "pointtopoint");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_NOARP);
+                       lua_setfield(L, -2, "noarp");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_PROMISC);
+                       lua_setfield(L, -2, "promisc");
+
+                       lua_pushboolean(L, c->ifa_flags & IFF_MULTICAST);
+                       lua_setfield(L, -2, "multicast");
+               lua_setfield(L, -2, "flags");
+
+               if (c->ifa_addr) {
+                       if (!nixio__addr_parse(&addr, c->ifa_addr)) {
+                               lua_pushstring(L, addr.host);
+                               lua_setfield(L, -2, "addr");
+                       }
+
+                       if (c->ifa_addr->sa_family == AF_INET) {
+                               lua_pushliteral(L, "inet");
+                       } else if (c->ifa_addr->sa_family == AF_INET6) {
+                               lua_pushliteral(L, "inet6");
+#ifdef AF_PACKET
+                       } else if (c->ifa_addr->sa_family == AF_PACKET) {
+                               lua_pushliteral(L, "packet");
+#endif
+                       } else {
+                               lua_pushliteral(L, "unknown");
+                       }
+                       lua_setfield(L, -2, "family");
+
+#ifdef __linux__
+                       if (c->ifa_addr->sa_family == AF_PACKET) {
+                               lua_pushinteger(L, addr.port);
+                               lua_setfield(L, -2, "ifindex");
+
+                               lua_pushinteger(L, addr.prefix);
+                               lua_setfield(L, -2, "hatype");
+                       }
+#endif
+               }
+
+#ifdef __linux__
+               if (c->ifa_data && (!c->ifa_addr
+                                                       || c->ifa_addr->sa_family == AF_PACKET)) {
+                       if (!c->ifa_addr) {
+                               lua_pushliteral(L, "packet");
+                               lua_setfield(L, -2, "family");
+                       }
+
+                       lua_createtable(L, 0, 10);
+                       struct nixio__nds *stats = c->ifa_data;
+
+                       lua_pushnumber(L, stats->rx_packets);
+                       lua_setfield(L, -2, "rx_packets");
+
+                       lua_pushnumber(L, stats->tx_packets);
+                       lua_setfield(L, -2, "tx_packets");
+
+                       lua_pushnumber(L, stats->rx_bytes);
+                       lua_setfield(L, -2, "rx_bytes");
+
+                       lua_pushnumber(L, stats->tx_bytes);
+                       lua_setfield(L, -2, "tx_bytes");
+
+                       lua_pushnumber(L, stats->rx_errors);
+                       lua_setfield(L, -2, "rx_errors");
+
+                       lua_pushnumber(L, stats->tx_errors);
+                       lua_setfield(L, -2, "tx_errors");
+
+                       lua_pushnumber(L, stats->rx_dropped);
+                       lua_setfield(L, -2, "rx_dropped");
+
+                       lua_pushnumber(L, stats->tx_dropped);
+                       lua_setfield(L, -2, "tx_dropped");
+
+                       lua_pushnumber(L, stats->multicast);
+                       lua_setfield(L, -2, "multicast");
+
+                       lua_pushnumber(L, stats->collisions);
+                       lua_setfield(L, -2, "collisions");
+               } else {
+                       lua_newtable(L);
+               }
+               lua_setfield(L, -2, "data");
+#endif
+
+               if (c->ifa_netmask && !nixio__addr_parse(&addr, c->ifa_netmask)) {
+                       lua_pushstring(L, addr.host);
+                       lua_setfield(L, -2, "netmask");
+
+                       lua_pushinteger(L, nixio__addr_prefix(c->ifa_netmask));
+                       lua_setfield(L, -2, "prefix");
+               }
+
+               if (c->ifa_broadaddr && !nixio__addr_parse(&addr, c->ifa_broadaddr)) {
+                       lua_pushstring(L, addr.host);
+                       lua_setfield(L, -2, "broadaddr");
+               }
+
+               if (c->ifa_dstaddr && !nixio__addr_parse(&addr, c->ifa_dstaddr)) {
+                       lua_pushstring(L, addr.host);
+                       lua_setfield(L, -2, "dstaddr");
+               }
+
+               lua_rawseti(L, -2, i++);
+       }
+
+       freeifaddrs(ifaddr);
+       return 1;
+}
+#endif
+
+
+/* module table */
+static const luaL_reg R[] = {
+#if defined(__linux__) || defined(BSD)
+       {"getifaddrs",  nixio_getifaddrs},
+#endif
+       {"getaddrinfo", nixio_getaddrinfo},
+       {"getnameinfo", nixio_getnameinfo},
+       {NULL,                  NULL}
+};
+
+/* object table */
+static const luaL_reg M[] = {
+       {"getsockname", nixio_sock_getsockname},
+       {"getpeername", nixio_sock_getpeername},
+       {NULL,                  NULL}
+};
+
+void nixio_open_address(lua_State *L) {
+       luaL_register(L, NULL, R);
+
+       lua_pushvalue(L, -2);
+       luaL_register(L, NULL, M);
+       lua_pop(L, 1);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/axtls-compat.c b/package/luci/libs/luci-lib-nixio/src/axtls-compat.c
new file mode 100644 (file)
index 0000000..2c5b746
--- /dev/null
@@ -0,0 +1,297 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Enable a subset of openssl compatible functions. We don't aim to be 100%
+ * compatible - just to be able to do basic ports etc.
+ *
+ * Only really tested on mini_httpd, so I'm not too sure how extensive this
+ * port is.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include "ssl.h"
+
+static char *key_password = NULL;
+
+void *SSLv23_server_method(void) { return NULL; }
+void *SSLv3_server_method(void) { return NULL; }
+void *TLSv1_server_method(void) { return NULL; }
+void *SSLv23_client_method(void) { return NULL; }
+void *SSLv3_client_method(void) { return NULL; }
+void *TLSv1_client_method(void) { return NULL; }
+void *SSLv23_method(void) { return NULL; }
+void *TLSv1_method(void) { return NULL; }
+
+SSL_CTX * SSL_CTX_new(void *meth)
+{
+    SSL_CTX *ssl_ctx = ssl_ctx_new(SSL_SERVER_VERIFY_LATER, 5);
+    return ssl_ctx;
+}
+
+void SSL_CTX_free(SSL_CTX * ssl_ctx)
+{
+    ssl_ctx_free(ssl_ctx);
+}
+
+SSL * SSL_new(SSL_CTX *ssl_ctx)
+{
+    SSL *ssl;
+
+    ssl = ssl_new(ssl_ctx, -1);        /* fd is set later */
+
+    return ssl;
+}
+
+int SSL_set_fd(SSL *s, int fd)
+{
+    s->client_fd = fd;
+    return 1;   /* always succeeds */
+}
+
+int SSL_accept(SSL *ssl)
+{
+       ssl->next_state = HS_CLIENT_HELLO;
+    while (ssl_read(ssl, NULL) == SSL_OK)
+    {
+        if (ssl->next_state == HS_CLIENT_HELLO)
+            return 1;   /* we're done */
+    }
+
+    return -1;
+}
+
+int SSL_connect(SSL *ssl)
+{
+       SET_SSL_FLAG(SSL_IS_CLIENT);
+       int stat = do_client_connect(ssl);
+       ssl_display_error(stat);
+    return  (stat == SSL_OK) ? 1 : -1;
+}
+
+void SSL_free(SSL *ssl)
+{
+    ssl_free(ssl);
+}
+
+int SSL_read(SSL *ssl, void *buf, int num)
+{
+    uint8_t *read_buf;
+    int ret;
+
+    while ((ret = ssl_read(ssl, &read_buf)) == SSL_OK);
+
+    if (ret > SSL_OK)
+    {
+        memcpy(buf, read_buf, ret > num ? num : ret);
+    }
+
+    return ret;
+}
+
+int SSL_write(SSL *ssl, const void *buf, int num)
+{
+    return ssl_write(ssl, buf, num);
+}
+
+int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type)
+{
+    return (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, file, NULL) == SSL_OK);
+}
+
+int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type)
+{
+    return (ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, file, key_password) == SSL_OK);
+}
+
+int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d)
+{
+    return (ssl_obj_memory_load(ssl_ctx,
+                        SSL_OBJ_X509_CERT, d, len, NULL) == SSL_OK);
+}
+
+int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx,
+                                            unsigned int sid_ctx_len)
+{
+    return 1;
+}
+
+int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx)
+{
+    return 1;
+}
+
+int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file)
+{
+    return (ssl_obj_load(ssl_ctx,
+                        SSL_OBJ_X509_CERT, file, NULL) == SSL_OK);
+}
+
+int SSL_shutdown(SSL *ssl)
+{
+    return 1;
+}
+
+/*** get/set session ***/
+SSL_SESSION *SSL_get1_session(SSL *ssl)
+{
+    return (SSL_SESSION *)ssl_get_session_id(ssl); /* note: wrong cast */
+}
+
+int SSL_set_session(SSL *ssl, SSL_SESSION *session)
+{
+    memcpy(ssl->session_id, (uint8_t *)session, SSL_SESSION_ID_SIZE);
+    return 1;
+}
+
+void SSL_SESSION_free(SSL_SESSION *session) { }
+/*** end get/set session ***/
+
+long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
+{
+    return 0;
+}
+
+void SSL_CTX_set_verify(SSL_CTX *ctx, int mode,
+                                 int (*verify_callback)(int, void *)) {
+       if (mode & SSL_VERIFY_PEER) {
+               ctx->options &= ~SSL_SERVER_VERIFY_LATER;
+               ctx->options |= SSL_CLIENT_AUTHENTICATION;
+       } else {
+               ctx->options |= SSL_SERVER_VERIFY_LATER;
+               ctx->options &= ~SSL_CLIENT_AUTHENTICATION;
+       }
+}
+
+void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth) { }
+
+int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
+                                           const char *CApath)
+{
+    return 1;
+}
+
+void *SSL_load_client_CA_file(const char *file)
+{
+    return (void *)file;
+}
+
+void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file)
+{
+
+    ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, (const char *)file, NULL);
+}
+
+void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb) { }
+
+void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u)
+{
+    key_password = (char *)u;
+}
+
+int SSL_peek(SSL *ssl, void *buf, int num)
+{
+    memcpy(buf, ssl->bm_data, num);
+    return num;
+}
+
+void SSL_set_bio(SSL *ssl, void *rbio, void *wbio) { }
+
+long SSL_get_verify_result(const SSL *ssl)
+{
+    return ssl_handshake_status(ssl);
+}
+
+int SSL_state(SSL *ssl)
+{
+    return 0x03; // ok state
+}
+
+/** end of could do better list */
+
+void *SSL_get_peer_certificate(const SSL *ssl)
+{
+    return &ssl->ssl_ctx->certs[0];
+}
+
+int SSL_clear(SSL *ssl)
+{
+    return 1;
+}
+
+
+int SSL_CTX_check_private_key(const SSL_CTX *ctx)
+{
+    return 1;
+}
+
+int SSL_CTX_set_cipher_list(SSL_CTX *s, const char *str)
+{
+    return 1;
+}
+
+int SSL_get_error(const SSL *ssl, int ret)
+{
+    ssl_display_error(ret);
+    return ret;   /* TODO: return proper return code */
+}
+
+void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option) {}
+int SSL_library_init(void ) { return 1; }
+void SSL_load_error_strings(void ) {}
+void ERR_print_errors_fp(FILE *fp) {}
+
+long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx) {
+                            return CONFIG_SSL_EXPIRY_TIME*3600; }
+long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t) {
+                            return SSL_CTX_get_timeout(ssl_ctx); }
+void BIO_printf(FILE *f, const char *format, ...)
+{
+    va_list(ap);
+    va_start(ap, format);
+    vfprintf(f, format, ap);
+    va_end(ap);
+}
+
+void* BIO_s_null(void) { return NULL; }
+FILE *BIO_new(bio_func_type_t func)
+{
+    if (func == BIO_s_null)
+        return fopen("/dev/null", "r");
+    else
+        return NULL;
+}
+
+FILE *BIO_new_fp(FILE *stream, int close_flag) { return stream; }
+int BIO_free(FILE *a) { if (a != stdout && a != stderr) fclose(a); return 1; }
diff --git a/package/luci/libs/luci-lib-nixio/src/axtls-compat.h b/package/luci/libs/luci-lib-nixio/src/axtls-compat.h
new file mode 100644 (file)
index 0000000..aee24f5
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2007, Cameron Rich
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ *   this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the axTLS project nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Enable a subset of openssl compatible functions. We don't aim to be 100%
+ * compatible - just to be able to do basic ports etc.
+ *
+ * Only really tested on mini_httpd, so I'm not too sure how extensive this
+ * port is.
+ */
+
+#include "nixio.h"
+#include "config.h"
+
+#define WITH_AXTLS                                             1
+#define WITHOUT_OPENSSL                                        1
+#define SSL_OP_NO_SSLv3                                        0x02000000L
+#define SSL_OP_NO_SSLv2                                        0x01000000L
+#define SSL_FILETYPE_PEM                               1
+#define SSL_FILETYPE_ASN1                              2
+#define SSL_VERIFY_NONE                                        0x00
+#define SSL_VERIFY_PEER                                        0x01
+#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
+#define SSL_VERIFY_CLIENT_ONCE                 0x03
+#define MD5_DIGEST_LENGTH                              16
+#define SHA_DIGEST_LENGTH                              20
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include "ssl.h"
+
+typedef SHA1_CTX SHA_CTX;
+
+void *SSLv23_server_method(void);
+void *SSLv3_server_method(void);
+void *TLSv1_server_method(void);
+void *SSLv23_client_method(void);
+void *SSLv3_client_method(void);
+void *TLSv1_client_method(void);
+void *SSLv23_method(void);
+void *TLSv1_method(void);
+
+
+typedef void * (*ssl_func_type_t)(void);
+typedef void * (*bio_func_type_t)(void);
+
+SSL_CTX * SSL_CTX_new(void *meth);
+void SSL_CTX_free(SSL_CTX * ssl_ctx);
+SSL * SSL_new(SSL_CTX *ssl_ctx);
+int SSL_set_fd(SSL *s, int fd);
+int SSL_accept(SSL *ssl);
+int SSL_connect(SSL *ssl);
+void SSL_free(SSL *ssl);
+int SSL_read(SSL *ssl, void *buf, int num);
+int SSL_write(SSL *ssl, const void *buf, int num);
+int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type);
+int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type);
+int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d);
+int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx,
+                                            unsigned int sid_ctx_len);
+int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
+int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file);
+int SSL_shutdown(SSL *ssl);
+
+/*** get/set session ***/
+SSL_SESSION *SSL_get1_session(SSL *ssl);
+int SSL_set_session(SSL *ssl, SSL_SESSION *session);
+void SSL_SESSION_free(SSL_SESSION *session);
+/*** end get/set session ***/
+
+long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
+void SSL_CTX_set_verify(SSL_CTX *ctx, int mode,
+                                 int (*verify_callback)(int, void *));
+
+void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth);
+
+int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
+                                           const char *CApath);
+
+void *SSL_load_client_CA_file(const char *file);
+
+void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file);
+
+void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb);
+
+void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
+
+int SSL_peek(SSL *ssl, void *buf, int num);
+
+void SSL_set_bio(SSL *ssl, void *rbio, void *wbio);
+
+long SSL_get_verify_result(const SSL *ssl);
+
+int SSL_state(SSL *ssl);
+
+/** end of could do better list */
+
+void *SSL_get_peer_certificate(const SSL *ssl);
+
+int SSL_clear(SSL *ssl);
+
+
+int SSL_CTX_check_private_key(const SSL_CTX *ctx);
+
+int SSL_CTX_set_cipher_list(SSL_CTX *s, const char *str);
+
+int SSL_get_error(const SSL *ssl, int ret);
+
+void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option);
+int SSL_library_init(void );
+void SSL_load_error_strings(void );
+void ERR_print_errors_fp(FILE *fp);
+
+long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx);
+long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t);
+void BIO_printf(FILE *f, const char *format, ...);
+
+void* BIO_s_null(void);
+FILE *BIO_new(bio_func_type_t func);
+
+FILE *BIO_new_fp(FILE *stream, int close_flag);
+int BIO_free(FILE *a);
diff --git a/package/luci/libs/luci-lib-nixio/src/binary.c b/package/luci/libs/luci-lib-nixio/src/binary.c
new file mode 100644 (file)
index 0000000..2c41622
--- /dev/null
@@ -0,0 +1,313 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <stdlib.h>
+
+const char nixio__bin2hex[16] = {
+'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
+};
+
+static unsigned char nixio__b64encode_tbl[] =
+       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+static unsigned char nixio__b64decode_tbl[] = {
+       0x3e, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x35, 0x36,
+       0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff,
+       0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01,
+       0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+       0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
+       0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x1b,
+       0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
+       0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
+       0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33
+};
+
+static const uint32_t nixio__crc32_tbl[] = {
+       0x00000000U, 0x77073096U, 0xee0e612cU, 0x990951baU, 0x076dc419U,
+       0x706af48fU, 0xe963a535U, 0x9e6495a3U, 0x0edb8832U, 0x79dcb8a4U,
+       0xe0d5e91eU, 0x97d2d988U, 0x09b64c2bU, 0x7eb17cbdU, 0xe7b82d07U,
+       0x90bf1d91U, 0x1db71064U, 0x6ab020f2U, 0xf3b97148U, 0x84be41deU,
+       0x1adad47dU, 0x6ddde4ebU, 0xf4d4b551U, 0x83d385c7U, 0x136c9856U,
+       0x646ba8c0U, 0xfd62f97aU, 0x8a65c9ecU, 0x14015c4fU, 0x63066cd9U,
+       0xfa0f3d63U, 0x8d080df5U, 0x3b6e20c8U, 0x4c69105eU, 0xd56041e4U,
+       0xa2677172U, 0x3c03e4d1U, 0x4b04d447U, 0xd20d85fdU, 0xa50ab56bU,
+       0x35b5a8faU, 0x42b2986cU, 0xdbbbc9d6U, 0xacbcf940U, 0x32d86ce3U,
+       0x45df5c75U, 0xdcd60dcfU, 0xabd13d59U, 0x26d930acU, 0x51de003aU,
+       0xc8d75180U, 0xbfd06116U, 0x21b4f4b5U, 0x56b3c423U, 0xcfba9599U,
+       0xb8bda50fU, 0x2802b89eU, 0x5f058808U, 0xc60cd9b2U, 0xb10be924U,
+       0x2f6f7c87U, 0x58684c11U, 0xc1611dabU, 0xb6662d3dU, 0x76dc4190U,
+       0x01db7106U, 0x98d220bcU, 0xefd5102aU, 0x71b18589U, 0x06b6b51fU,
+       0x9fbfe4a5U, 0xe8b8d433U, 0x7807c9a2U, 0x0f00f934U, 0x9609a88eU,
+       0xe10e9818U, 0x7f6a0dbbU, 0x086d3d2dU, 0x91646c97U, 0xe6635c01U,
+       0x6b6b51f4U, 0x1c6c6162U, 0x856530d8U, 0xf262004eU, 0x6c0695edU,
+       0x1b01a57bU, 0x8208f4c1U, 0xf50fc457U, 0x65b0d9c6U, 0x12b7e950U,
+       0x8bbeb8eaU, 0xfcb9887cU, 0x62dd1ddfU, 0x15da2d49U, 0x8cd37cf3U,
+       0xfbd44c65U, 0x4db26158U, 0x3ab551ceU, 0xa3bc0074U, 0xd4bb30e2U,
+       0x4adfa541U, 0x3dd895d7U, 0xa4d1c46dU, 0xd3d6f4fbU, 0x4369e96aU,
+       0x346ed9fcU, 0xad678846U, 0xda60b8d0U, 0x44042d73U, 0x33031de5U,
+       0xaa0a4c5fU, 0xdd0d7cc9U, 0x5005713cU, 0x270241aaU, 0xbe0b1010U,
+       0xc90c2086U, 0x5768b525U, 0x206f85b3U, 0xb966d409U, 0xce61e49fU,
+       0x5edef90eU, 0x29d9c998U, 0xb0d09822U, 0xc7d7a8b4U, 0x59b33d17U,
+       0x2eb40d81U, 0xb7bd5c3bU, 0xc0ba6cadU, 0xedb88320U, 0x9abfb3b6U,
+       0x03b6e20cU, 0x74b1d29aU, 0xead54739U, 0x9dd277afU, 0x04db2615U,
+       0x73dc1683U, 0xe3630b12U, 0x94643b84U, 0x0d6d6a3eU, 0x7a6a5aa8U,
+       0xe40ecf0bU, 0x9309ff9dU, 0x0a00ae27U, 0x7d079eb1U, 0xf00f9344U,
+       0x8708a3d2U, 0x1e01f268U, 0x6906c2feU, 0xf762575dU, 0x806567cbU,
+       0x196c3671U, 0x6e6b06e7U, 0xfed41b76U, 0x89d32be0U, 0x10da7a5aU,
+       0x67dd4accU, 0xf9b9df6fU, 0x8ebeeff9U, 0x17b7be43U, 0x60b08ed5U,
+       0xd6d6a3e8U, 0xa1d1937eU, 0x38d8c2c4U, 0x4fdff252U, 0xd1bb67f1U,
+       0xa6bc5767U, 0x3fb506ddU, 0x48b2364bU, 0xd80d2bdaU, 0xaf0a1b4cU,
+       0x36034af6U, 0x41047a60U, 0xdf60efc3U, 0xa867df55U, 0x316e8eefU,
+       0x4669be79U, 0xcb61b38cU, 0xbc66831aU, 0x256fd2a0U, 0x5268e236U,
+       0xcc0c7795U, 0xbb0b4703U, 0x220216b9U, 0x5505262fU, 0xc5ba3bbeU,
+       0xb2bd0b28U, 0x2bb45a92U, 0x5cb36a04U, 0xc2d7ffa7U, 0xb5d0cf31U,
+       0x2cd99e8bU, 0x5bdeae1dU, 0x9b64c2b0U, 0xec63f226U, 0x756aa39cU,
+       0x026d930aU, 0x9c0906a9U, 0xeb0e363fU, 0x72076785U, 0x05005713U,
+       0x95bf4a82U, 0xe2b87a14U, 0x7bb12baeU, 0x0cb61b38U, 0x92d28e9bU,
+       0xe5d5be0dU, 0x7cdcefb7U, 0x0bdbdf21U, 0x86d3d2d4U, 0xf1d4e242U,
+       0x68ddb3f8U, 0x1fda836eU, 0x81be16cdU, 0xf6b9265bU, 0x6fb077e1U,
+       0x18b74777U, 0x88085ae6U, 0xff0f6a70U, 0x66063bcaU, 0x11010b5cU,
+       0x8f659effU, 0xf862ae69U, 0x616bffd3U, 0x166ccf45U, 0xa00ae278U,
+       0xd70dd2eeU, 0x4e048354U, 0x3903b3c2U, 0xa7672661U, 0xd06016f7U,
+       0x4969474dU, 0x3e6e77dbU, 0xaed16a4aU, 0xd9d65adcU, 0x40df0b66U,
+       0x37d83bf0U, 0xa9bcae53U, 0xdebb9ec5U, 0x47b2cf7fU, 0x30b5ffe9U,
+       0xbdbdf21cU, 0xcabac28aU, 0x53b39330U, 0x24b4a3a6U, 0xbad03605U,
+       0xcdd70693U, 0x54de5729U, 0x23d967bfU, 0xb3667a2eU, 0xc4614ab8U,
+       0x5d681b02U, 0x2a6f2b94U, 0xb40bbe37U, 0xc30c8ea1U, 0x5a05df1bU,
+       0x2d02ef8dU
+};
+
+static int nixio_bin_crc32(lua_State *L) {
+       size_t len;
+       const char *buffer = luaL_checklstring(L, 1, &len);
+       uint32_t value = luaL_optinteger(L, 2, 0);
+
+       value = ~value;
+       for (size_t i=0; i<len; i++) {
+               value = nixio__crc32_tbl[(value ^ buffer[i]) & 0xffU ] ^ (value >> 8);
+       }
+
+       lua_pushinteger(L, (int)(value ^ 0xffffffffU));
+       return 1;
+}
+
+static int nixio_bin_hexlify(lua_State *L) {
+       size_t len, lenout;
+       luaL_checktype(L, 1, LUA_TSTRING);
+       const unsigned char *data = (unsigned char*)lua_tolstring(L, 1, &len);
+
+       if (len == 0) {
+               lua_pushvalue(L, 1);
+               return 1;
+       }
+
+       lenout = len * 2;
+       luaL_argcheck(L, lenout > len, 1, "size overflow");
+
+       char *out = malloc(lenout);
+       if (!out) {
+               return luaL_error(L, NIXIO_OOM);
+       }
+
+       for (size_t i=0; i < len; i++) {
+               out[2*i]   = nixio__bin2hex[(data[i] & 0xf0) >> 4];
+               out[2*i+1] = nixio__bin2hex[(data[i] & 0x0f)];
+       }
+
+       lua_pushlstring(L, out, lenout);
+       free(out);
+
+       return 1;
+}
+
+
+static int nixio_bin_unhexlify(lua_State *L) {
+       size_t len, lenout;
+       const char *data = luaL_checklstring(L, 1, &len);
+
+       if (len == 0) {
+               lua_pushvalue(L, 1);
+               return 1;
+       } else if (len % 2) {
+               errno = EINVAL;
+               return nixio__perror(L);
+       }
+
+       lenout = len / 2;
+       char *out = malloc(lenout);
+       if (!out) {
+               return luaL_error(L, NIXIO_OOM);
+       }
+
+       for (size_t i=0; i < lenout; i++) {
+               char c = data[2*i];
+               if (c >= '0' && c <= '9') {
+                       out[i] = (c - '0') << 4;
+               } else if (c >= 'a' && c <= 'f') {
+                       out[i] = (c - 'a' + 10) << 4;
+               } else if (data[2*i] >= 'A' && c <= 'F') {
+                       out[i] = (c - 'A' + 10) << 4;
+               } else {
+                       free(out);
+                       errno = EINVAL;
+                       return nixio__perror(L);
+               }
+
+               c = data[2*i+1];
+               if (c >= '0' && c <= '9') {
+                       out[i] += c - '0';
+               } else if (c >= 'a' && c <= 'f') {
+                       out[i] += c - 'a' + 10;
+               } else if (c >= 'A' && c <= 'F') {
+                       out[i] += c - 'A' + 10;
+               } else {
+                       free(out);
+                       errno = EINVAL;
+                       return nixio__perror(L);
+               }
+       }
+
+       lua_pushlstring(L, out, lenout);
+       free(out);
+
+       return 1;
+}
+
+static int nixio_bin_b64encode(lua_State *L) {
+       size_t len, lenout, pad, i;
+       const uint8_t *data = (const uint8_t*)luaL_checklstring(L, 1, &len);
+
+       lenout = len / 3;
+       lenout *= 4;
+
+       pad = len % 3;
+
+       if (len == 0) {
+               lua_pushvalue(L, 1);
+               return 1;
+       } else if (pad) {
+               lenout += 4;
+       }
+
+       luaL_argcheck(L, lenout > len, 1, "size overflow");
+
+       char *out = malloc(lenout);
+       if (!out) {
+               return luaL_error(L, NIXIO_OOM);
+       }
+
+       uint8_t *o = (uint8_t*)out;
+       for (i = 0; i < len; i += 3) {
+               uint32_t cv = (data[i] << 16) | (data[i+1] << 8) | data[i+2];
+               *(o+3) = nixio__b64encode_tbl[ cv        & 0x3f];
+               *(o+2) = nixio__b64encode_tbl[(cv >> 6)  & 0x3f];
+               *(o+1) = nixio__b64encode_tbl[(cv >> 12) & 0x3f];
+               *o     = nixio__b64encode_tbl[(cv >> 18) & 0x3f];
+               o += 4;
+       }
+
+       if (pad) {
+               uint32_t cv = data[len-pad] << 16;
+               *(o-1) = '=';
+               *(o-2) = '=';
+               if (pad == 2) {
+                       cv |= data[len-pad+1] << 8;
+                       *(o-2) = nixio__b64encode_tbl[(cv >> 6) & 0x3f];
+               }
+               *(o-3) = nixio__b64encode_tbl[(cv >> 12) & 0x3f];
+               *(o-4) = nixio__b64encode_tbl[(cv >> 18) & 0x3f];
+       }
+
+       lua_pushlstring(L, out, lenout);
+       free(out);
+       return 1;
+}
+
+static int nixio_bin_b64decode(lua_State *L) {
+       size_t len, lenout, i;
+       const char *dt = luaL_checklstring(L, 1, &len);
+
+       if (len == 0) {
+               lua_pushvalue(L, 1);
+               return 1;
+       } else if (len % 4) {
+               errno = EINVAL;
+               return nixio__perror(L);
+       }
+
+       lenout = len / 4 * 3;
+
+       unsigned char *out = malloc(lenout);
+       if (!out) {
+               return luaL_error(L, NIXIO_OOM);
+       }
+
+       unsigned char *o = out;
+       for (i = 0; i < len; i += 4) {
+               uint32_t cv = 0;
+               for (int j = 0; j < 4; j++) {
+                       unsigned char c = dt[i + j] - 43;
+                       if (c > 79 || (c = nixio__b64decode_tbl[c]) == 0xff) {
+                               free(out);
+                               errno = EINVAL;
+                               return nixio__perror(L);
+                       }
+
+                       cv |= c;
+                       if (j != 3) {
+                               cv <<= 6;
+                       }
+               }
+
+               *(o+2) = (unsigned char)(cv & 0xff);
+               *(o+1) = (unsigned char)((cv >>  8) & 0xff);
+               *o     = (unsigned char)((cv >> 16) & 0xff);
+               o += 3;
+       }
+
+       if (dt[len-1] == '=') {
+               lenout--;
+       }
+
+       if (dt[len-2] == '=') {
+               lenout--;
+       }
+
+       lua_pushlstring(L, (char*)out, lenout);
+       free(out);
+       return 1;
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"hexlify",             nixio_bin_hexlify},
+       {"unhexlify",   nixio_bin_unhexlify},
+       {"crc32",               nixio_bin_crc32},
+       {"b64encode",   nixio_bin_b64encode},
+       {"b64decode",   nixio_bin_b64decode},
+       {NULL,                  NULL}
+};
+
+
+void nixio_open_bin(lua_State *L) {
+       lua_newtable(L);
+       luaL_register(L, NULL, R);
+       lua_setfield(L, -2, "bin");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/bind.c b/package/luci/libs/luci-lib-nixio/src/bind.c
new file mode 100644 (file)
index 0000000..68e1df8
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <sys/types.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+
+/**
+ * connect()/bind() shortcut
+ */
+static int nixio__bind_connect(lua_State *L, int do_bind) {
+       const char *host = NULL;
+       if (!lua_isnoneornil(L, 1)) {
+               host = luaL_checklstring(L, 1, NULL);
+       }
+       const char *port = luaL_checklstring(L, 2, NULL);
+       const char *family = luaL_optlstring(L, 3, "any", NULL);
+       const char *socktype = luaL_optlstring(L, 4, "stream", NULL);
+
+       struct addrinfo hints, *result, *rp;
+       memset(&hints, 0, sizeof(hints));
+
+       if (!strcmp(family, "any")) {
+               hints.ai_family = AF_UNSPEC;
+       } else if (!strcmp(family, "inet")) {
+               hints.ai_family = AF_INET;
+       } else if (!strcmp(family, "inet6")) {
+               hints.ai_family = AF_INET6;
+       } else {
+               return luaL_argerror(L, 3, "supported values: any, inet, inet6");
+       }
+
+       if (!strcmp(socktype, "any")) {
+               hints.ai_socktype = 0;
+       } else if (!strcmp(socktype, "stream")) {
+               hints.ai_socktype = SOCK_STREAM;
+       } else if (!strcmp(socktype, "dgram")) {
+               hints.ai_socktype = SOCK_DGRAM;
+       } else {
+               return luaL_argerror(L, 4, "supported values: any, stream, dgram");
+       }
+
+       if (do_bind) {
+               hints.ai_flags |= AI_PASSIVE;
+       }
+
+       hints.ai_protocol = 0;
+
+       int aistat = getaddrinfo(host, port, &hints, &result);
+       if (aistat) {
+               lua_pushnil(L);
+               lua_pushinteger(L, aistat);
+               lua_pushstring(L, gai_strerror(aistat));
+               return 3;
+       }
+
+       /* create socket object */
+       nixio_sock *sock = lua_newuserdata(L, sizeof(nixio_sock));
+       int status = -1, clstat;
+
+       for (rp = result; rp != NULL; rp = rp->ai_next) {
+               sock->fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
+               if (sock->fd == -1) {
+                       continue;
+               }
+
+               if (do_bind) {
+                       int one = 1;
+                       setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR,
+                        (char*)&one, sizeof(one));
+                       status = bind(sock->fd, rp->ai_addr, rp->ai_addrlen);
+               } else {
+                       do {
+                               status = connect(sock->fd, rp->ai_addr, rp->ai_addrlen);
+                       } while (status == -1 && errno == EINTR);
+               }
+
+               /* on success */
+               if (!status) {
+                       sock->domain = rp->ai_family;
+                       sock->type = rp->ai_socktype;
+                       sock->protocol = rp->ai_protocol;
+                       break;
+               }
+
+               do {
+#ifndef __WINNT__
+                       clstat = close(sock->fd);
+#else
+                       clstat = closesocket(sock->fd);
+#endif
+               } while (clstat == -1 && errno == EINTR);
+       }
+
+       freeaddrinfo(result);
+
+       /* on failure */
+       if (status) {
+               return nixio__perror_s(L);
+       }
+
+       luaL_getmetatable(L, NIXIO_META);
+       lua_setmetatable(L, -2);
+
+       return 1;
+}
+
+/**
+ * bind(host, port, [family=any], [type=any]) shortcut
+ */
+static int nixio_bind(lua_State *L) {
+       return nixio__bind_connect(L, 1);
+}
+
+/**
+ * connect(host, port, [family=any], [type=any]) shortcut
+ */
+static int nixio_connect(lua_State *L) {
+       return nixio__bind_connect(L, 0);
+}
+
+/**
+ * bind()/connect() helper
+ */
+static int nixio_sock__bind_connect(lua_State *L, int do_bind) {
+       nixio_sock *sock = nixio__checksock(L);
+       int status = -1;
+
+       if (sock->domain == AF_INET || sock->domain == AF_INET6) {
+               const char *host = NULL;
+               if (!lua_isnoneornil(L, 2)) {
+                       host = luaL_checklstring(L, 2, NULL);
+               }
+               const char *port = luaL_checklstring(L, 3, NULL);
+
+               struct addrinfo hints, *result, *rp;
+
+               memset(&hints, 0, sizeof(hints));
+               hints.ai_family = sock->domain;
+               hints.ai_socktype = sock->type;
+               hints.ai_protocol = sock->protocol;
+
+               if (do_bind) {
+                       hints.ai_flags |= AI_PASSIVE;
+               }
+
+               int aistat = getaddrinfo(host, port, &hints, &result);
+               if (aistat) {
+                       lua_pushnil(L);
+                       lua_pushinteger(L, aistat);
+                       lua_pushstring(L, gai_strerror(aistat));
+                       return 3;
+               }
+
+               for (rp = result; rp != NULL; rp = rp->ai_next) {
+                       if (do_bind) {
+                               status = bind(sock->fd, rp->ai_addr, rp->ai_addrlen);
+                       } else {
+                               do {
+                                       status = connect(sock->fd, rp->ai_addr, rp->ai_addrlen);
+                               } while (status == -1 && errno == EINTR);
+                       }
+
+                       /* on success */
+                       if (!status || errno == EINPROGRESS) {
+                               break;
+                       }
+               }
+
+               freeaddrinfo(result);
+#ifndef __WINNT__
+       } else if (sock->domain == AF_UNIX) {
+               size_t pathlen;
+               const char *path = luaL_checklstring(L, 2, &pathlen);
+
+               struct sockaddr_un addr;
+               addr.sun_family = AF_UNIX;
+               luaL_argcheck(L, pathlen <= sizeof(addr.sun_path), 2, "out of range");
+               memcpy(addr.sun_path, path, pathlen);
+               socklen_t alen = sizeof(sa_family_t) + pathlen;
+
+               if (do_bind) {
+                       status = bind(sock->fd, (struct sockaddr*)&addr, alen);
+               } else {
+                       do {
+                               status = connect(sock->fd, (struct sockaddr*)&addr, alen);
+                       } while (status == -1 && errno == EINTR);
+               }
+#endif
+       } else {
+               return luaL_error(L, "not supported");
+       }
+       return nixio__pstatus_s(L, !status);
+}
+
+/**
+ * bind()
+ */
+static int nixio_sock_bind(lua_State *L) {
+       return nixio_sock__bind_connect(L, 1);
+}
+
+/**
+ * connect()
+ */
+static int nixio_sock_connect(lua_State *L) {
+       return nixio_sock__bind_connect(L, 0);
+}
+
+/**
+ * listen()
+ */
+static int nixio_sock_listen(lua_State *L) {
+       int sockfd = nixio__checksockfd(L);
+       int backlog = luaL_checkinteger(L, 2);
+       return nixio__pstatus_s(L, !listen(sockfd, backlog));
+}
+
+/**
+ * accept()
+ */
+static int nixio_sock_accept(lua_State *L) {
+       nixio_sock *sock = nixio__checksock(L);
+       struct sockaddr_storage saddr;
+       nixio_addr addr;
+       socklen_t saddrlen = sizeof(saddr);
+       int newfd;
+
+       do {
+               newfd = accept(sock->fd, (struct sockaddr *)&saddr, &saddrlen);
+       } while (newfd == -1 && errno == EINTR);
+       if (newfd < 0) {
+               return nixio__perror_s(L);
+       }
+
+       /* create userdata */
+       nixio_sock *clsock = lua_newuserdata(L, sizeof(nixio_sock));
+       luaL_getmetatable(L, NIXIO_META);
+       lua_setmetatable(L, -2);
+
+       memcpy(clsock, sock, sizeof(clsock));
+       clsock->fd = newfd;
+
+       if (!nixio__addr_parse(&addr, (struct sockaddr *)&saddr)) {
+               lua_pushstring(L, addr.host);
+               lua_pushinteger(L, addr.port);
+               return 3;
+       } else {
+               return 1;
+       }
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"bind",                nixio_bind},
+       {"connect",             nixio_connect},
+       {NULL,                  NULL}
+};
+
+/* object table */
+static const luaL_reg M[] = {
+       {"bind",                nixio_sock_bind},
+       {"connect",             nixio_sock_connect},
+       {"listen",              nixio_sock_listen},
+       {"accept",              nixio_sock_accept},
+       {NULL,                  NULL}
+};
+
+void nixio_open_bind(lua_State *L) {
+       luaL_register(L, NULL, R);
+
+       lua_pushvalue(L, -2);
+       luaL_register(L, NULL, M);
+       lua_pop(L, 1);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/bit.c b/package/luci/libs/luci-lib-nixio/src/bit.c
new file mode 100644 (file)
index 0000000..1b352c5
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <stdint.h>
+#include <stdlib.h>
+
+/* 52 bit maximum precision */
+#ifdef NIXIO_DOUBLE
+#define NIXIO_BIT_BMAX 52
+#define NIXIO_BIT_NMAX 0xfffffffffffff
+#else
+#define NIXIO_BIT_BMAX 32
+#define NIXIO_BIT_NMAX 0xffffffff
+#endif
+
+#define NIXIO_BIT_XOP(BIT_XOP)                                         \
+       uint64_t oper = nixio__checknumber(L, 1);               \
+       const int args = lua_gettop(L);                                 \
+                                                                                                       \
+       for (int i = 2; i <= args; i++) {                               \
+               uint64_t oper2 = nixio__checknumber(L, i);      \
+               oper BIT_XOP oper2;                                                     \
+       }                                                                                               \
+                                                                                                       \
+       nixio__pushnumber(L, oper);                                             \
+       return 1;                                                                               \
+
+
+static int nixio_bit_or(lua_State *L) {
+       NIXIO_BIT_XOP(|=);
+}
+
+static int nixio_bit_and(lua_State *L) {
+       NIXIO_BIT_XOP(&=);
+}
+
+static int nixio_bit_xor(lua_State *L) {
+       NIXIO_BIT_XOP(^=);
+}
+
+static int nixio_bit_unset(lua_State *L) {
+       NIXIO_BIT_XOP(&= ~);
+}
+
+static int nixio_bit_not(lua_State *L) {
+       nixio__pushnumber(L,
+                       (~((uint64_t)nixio__checknumber(L, 1))) & NIXIO_BIT_NMAX);
+       return 1;
+}
+
+static int nixio_bit_shl(lua_State *L) {
+       uint64_t oper = nixio__checknumber(L, 1);
+       oper <<= luaL_checkinteger(L, 2);
+       if (oper > NIXIO_BIT_NMAX) {
+               return luaL_error(L, "arithmetic overflow");
+       } else {
+               nixio__pushnumber(L, oper);
+               return 1;
+       }
+}
+
+static int nixio_bit_ashr(lua_State *L) {
+       int64_t oper = nixio__checknumber(L, 1);
+       nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2));
+       return 1;
+}
+
+static int nixio_bit_shr(lua_State *L) {
+       uint64_t oper = nixio__checknumber(L, 1);
+       nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2));
+       return 1;
+}
+
+static int nixio_bit_div(lua_State *L) {
+       uint64_t oper = luaL_checknumber(L, 1);
+       const int args = lua_gettop(L);
+
+       for (int i = 2; i <= args; i++) {
+               uint64_t oper2 = nixio__checknumber(L, i);
+               oper /= oper2;
+       }
+
+       nixio__pushnumber(L, oper);
+       return 1;
+}
+
+static int nixio_bit_check(lua_State *L) {
+       uint64_t oper  = nixio__checknumber(L, 1);
+       uint64_t oper2 = nixio__checknumber(L, 2);
+       lua_pushboolean(L, (oper & oper2) == oper2);
+       return 1;
+}
+
+static int nixio_bit_cast(lua_State *L) {
+       nixio__pushnumber(L, ((uint64_t)nixio__checknumber(L, 1)) & NIXIO_BIT_NMAX);
+       return 1;
+}
+
+static int nixio_bit_swap(lua_State *L) {
+       uint64_t op = nixio__checknumber(L, 1);
+       op = (op >> 24) | ((op >> 8) & 0xff00) | ((op & 0xff00) << 8) | (op << 24);
+       nixio__pushnumber(L, op);
+       return 1;
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"bor",                 nixio_bit_or},
+       {"set",                 nixio_bit_or},
+       {"band",                nixio_bit_and},
+       {"bxor",                nixio_bit_xor},
+       {"unset",               nixio_bit_unset},
+       {"bnot",                nixio_bit_not},
+       {"rshift",              nixio_bit_shr},
+       {"arshift",             nixio_bit_ashr},
+       {"lshift",              nixio_bit_shl},
+       {"div",                 nixio_bit_div},
+       {"check",               nixio_bit_check},
+       {"cast",                nixio_bit_cast},
+       {"tobit",               nixio_bit_cast},
+       {"bswap",               nixio_bit_swap},
+       {NULL,                  NULL}
+};
+
+void nixio_open_bit(lua_State *L) {
+       lua_newtable(L);
+       luaL_register(L, NULL, R);
+       nixio__pushnumber(L, NIXIO_BIT_BMAX);
+       lua_setfield(L, -2, "bits");
+       nixio__pushnumber(L, NIXIO_BIT_NMAX);
+       lua_setfield(L, -2, "max");
+       lua_setfield(L, -2, "bit");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.c b/package/luci/libs/luci-lib-nixio/src/cyassl-compat.c
new file mode 100644 (file)
index 0000000..a483119
--- /dev/null
@@ -0,0 +1,31 @@
+#include "cyassl-compat.h"
+
+int MD5_Init(MD5_CTX *md5) {
+       InitMd5(md5);
+       return 1;
+}
+
+int MD5_Update(MD5_CTX *md5, void *input, unsigned long sz) {
+       Md5Update(md5, input, (word32)sz);
+       return 1;
+}
+
+int MD5_Final(void *input, MD5_CTX *md5) {
+       Md5Final(md5, input);
+       return 1;
+}
+
+int SHA1_Init(SHA_CTX *sha) {
+       InitSha(sha);
+       return 1;
+}
+
+int SHA1_Update(SHA_CTX *sha, void *input, unsigned long sz) {
+       ShaUpdate(sha, input, (word32)sz);
+       return 1;
+}
+
+int SHA1_Final(void *input, SHA_CTX *sha) {
+       ShaFinal(sha, input);
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.h b/package/luci/libs/luci-lib-nixio/src/cyassl-compat.h
new file mode 100644 (file)
index 0000000..b2cdc92
--- /dev/null
@@ -0,0 +1,32 @@
+#define WITH_CYASSL
+#define WITHOUT_OPENSSL
+#include <openssl/ssl.h>
+
+typedef unsigned int word32;
+
+
+#define MD5_DIGEST_LENGTH 16
+typedef struct MD5_CTX {
+    int dummy[24];
+} MD5_CTX;
+
+void InitMd5(MD5_CTX*);
+void Md5Update(MD5_CTX*, void*, word32);
+void Md5Final(MD5_CTX*, void*);
+
+
+#define SHA_DIGEST_LENGTH 20
+typedef struct SHA_CTX {
+    int dummy[24];
+} SHA_CTX;
+
+void InitSha(SHA_CTX*);
+void ShaUpdate(SHA_CTX*, void*, word32);
+void ShaFinal(SHA_CTX*, void*);
+
+int MD5_Init(MD5_CTX *md5);
+int MD5_Update(MD5_CTX *md5, void *input, unsigned long sz);
+int MD5_Final(void *input, MD5_CTX *md5);
+int SHA1_Init(SHA_CTX *md5);
+int SHA1_Update(SHA_CTX *sha, void *input, unsigned long sz);
+int SHA1_Final(void *input, SHA_CTX *sha);
diff --git a/package/luci/libs/luci-lib-nixio/src/file.c b/package/luci/libs/luci-lib-nixio/src/file.c
new file mode 100644 (file)
index 0000000..cfa35df
--- /dev/null
@@ -0,0 +1,435 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/param.h>
+
+
+static int nixio_open(lua_State *L) {
+       const char *filename = luaL_checklstring(L, 1, NULL);
+       int flags;
+
+       if (lua_isnoneornil(L, 2)) {
+               flags = O_RDONLY;
+       } else if (lua_isnumber(L, 2)) {
+               flags = lua_tointeger(L, 2);
+       } else if (lua_isstring(L, 2)) {
+               const char *str = lua_tostring(L, 2);
+               if (!strcmp(str, "r")) {
+                       flags = O_RDONLY;
+               } else if (!strcmp(str, "r+")) {
+                       flags = O_RDWR;
+               } else if (!strcmp(str, "w")) {
+                       flags = O_WRONLY | O_CREAT | O_TRUNC;
+               } else if (!strcmp(str, "w+")) {
+                       flags = O_RDWR | O_CREAT | O_TRUNC;
+               } else if (!strcmp(str, "a")) {
+                       flags = O_WRONLY | O_CREAT | O_APPEND;
+               } else if (!strcmp(str, "a+")) {
+                       flags = O_RDWR | O_CREAT | O_APPEND;
+               } else {
+                       return luaL_argerror(L, 2, "supported values: r, r+, w, w+, a, a+");
+               }
+       } else {
+               return luaL_argerror(L, 2, "open flags or string expected");
+       }
+
+       int fd;
+
+       do {
+               fd = open(filename, flags, nixio__check_mode(L, 3, 0666));
+       } while (fd == -1 && errno == EINTR);
+       if (fd == -1) {
+               return nixio__perror(L);
+       }
+
+       int *udata = lua_newuserdata(L, sizeof(int));
+       if (!udata) {
+               return luaL_error(L, "out of memory");
+       }
+
+       *udata = fd;
+
+       luaL_getmetatable(L, NIXIO_FILE_META);
+       lua_setmetatable(L, -2);
+
+       return 1;
+}
+
+static int nixio_mkstemp(lua_State *L) {
+       const char *intemplate = luaL_checklstring(L, 1, NULL);
+       size_t len = lua_strlen(L, 1);
+       char *template = (char *)lua_newuserdata(L, 13 + len);
+       if (!template) {
+               return luaL_error(L, "out of memory");
+       }
+       snprintf(template, 13 + len, "/tmp/%s.XXXXXX", intemplate);
+
+       int fd;
+
+       do {
+               fd = mkstemp(template);
+       } while (fd == -1 && errno == EINTR);
+       if (fd == -1) {
+               return nixio__perror(L);
+       }
+       unlink(template);
+
+       int *udata = lua_newuserdata(L, sizeof(int));
+       if (!udata) {
+               return luaL_error(L, "out of memory");
+       }
+
+       *udata = fd;
+
+       luaL_getmetatable(L, NIXIO_FILE_META);
+       lua_setmetatable(L, -2);
+
+       return 1;
+}
+
+static int nixio_open_flags(lua_State *L) {
+       int mode = 0;
+       const int j = lua_gettop(L);
+       for (int i=1; i<=j; i++) {
+               const char *flag = luaL_checkstring(L, i);
+               if (!strcmp(flag, "append")) {
+                       mode |= O_APPEND;
+               } else if (!strcmp(flag, "creat")) {
+                       mode |= O_CREAT;
+               } else if (!strcmp(flag, "excl")) {
+                       mode |= O_EXCL;
+               } else if (!strcmp(flag, "nonblock") || !strcmp(flag, "ndelay")) {
+#ifndef __WINNT__
+                       mode |= O_NONBLOCK;
+#endif
+               } else if (!strcmp(flag, "sync")) {
+#ifndef __WINNT__
+                       mode |= O_SYNC;
+#endif
+               } else if (!strcmp(flag, "trunc")) {
+                       mode |= O_TRUNC;
+               } else if (!strcmp(flag, "rdonly")) {
+                       mode |= O_RDONLY;
+               } else if (!strcmp(flag, "wronly")) {
+                       mode |= O_WRONLY;
+               } else if (!strcmp(flag, "rdwr")) {
+                       mode |= O_RDWR;
+               } else {
+                       return luaL_argerror(L, i, "supported values: append, creat, "
+                                       "excl, nonblock, ndelay, sync, trunc");
+               }
+       }
+       lua_pushinteger(L, mode);
+       return 1;
+}
+
+static int nixio_dup(lua_State *L) {
+       int oldfd = nixio__checkfd(L, 1);
+       int newfd = (lua_gettop(L) > 1) ? nixio__checkfd(L, 2) : -1;
+       int stat  = (newfd == -1) ? dup(oldfd) : dup2(oldfd, newfd);
+
+       if (stat == -1) {
+               return nixio__perror(L);
+       } else {
+               if (newfd == -1) {
+                       int *udata = lua_newuserdata(L, sizeof(int));
+                       if (!udata) {
+                               return luaL_error(L, "out of memory");
+                       }
+
+                       *udata = stat;
+                       luaL_getmetatable(L, NIXIO_FILE_META);
+                       lua_setmetatable(L, -2);
+               } else {
+                       lua_pushvalue(L, 2);
+               }
+               return 1;
+       }
+}
+
+static int nixio_pipe(lua_State *L) {
+       int pipefd[2], *udata;
+       if (pipe(pipefd)) {
+               return nixio__perror(L);
+       }
+
+       luaL_getmetatable(L, NIXIO_FILE_META);
+       udata = lua_newuserdata(L, sizeof(int));
+       if (!udata) {
+               return luaL_error(L, "out of memory");
+       }
+
+       *udata = pipefd[0];
+       lua_pushvalue(L, -2);
+       lua_setmetatable(L, -2);
+
+
+       udata = lua_newuserdata(L, sizeof(int));
+       if (!udata) {
+               return luaL_error(L, "out of memory");
+       }
+
+       *udata = pipefd[1];
+       lua_pushvalue(L, -3);
+       lua_setmetatable(L, -2);
+
+       return 2;
+}
+
+static int nixio_file_write(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       size_t len;
+       ssize_t sent;
+       const char *data = luaL_checklstring(L, 2, &len);
+
+       if (lua_gettop(L) > 2) {
+               int offset = luaL_optint(L, 3, 0);
+               if (offset) {
+                       if (offset < len) {
+                               data += offset;
+                               len -= offset;
+                       } else {
+                               len = 0;
+                       }
+               }
+
+               unsigned int wlen = luaL_optint(L, 4, len);
+               if (wlen < len) {
+                       len = wlen;
+               }
+       }
+
+       do {
+               sent = write(fd, data, len);
+       } while(sent == -1 && errno == EINTR);
+       if (sent >= 0) {
+               lua_pushinteger(L, sent);
+               return 1;
+       } else {
+               return nixio__perror(L);
+       }
+}
+
+static int nixio_file_read(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       char buffer[NIXIO_BUFFERSIZE];
+       uint req = luaL_checkinteger(L, 2);
+       int readc;
+
+       /* We limit the readsize to NIXIO_BUFFERSIZE */
+       req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req;
+
+       do {
+               readc = read(fd, buffer, req);
+       } while (readc == -1 && errno == EINTR);
+
+       if (readc < 0) {
+               return nixio__perror(L);
+       } else {
+               lua_pushlstring(L, buffer, readc);
+               return 1;
+       }
+}
+
+
+static int nixio_file_seek(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       off_t len = (off_t)nixio__checknumber(L, 2);
+       int whence;
+       const char *whstr = luaL_optlstring(L, 3, "set", NULL);
+       if (!strcmp(whstr, "set")) {
+               whence = SEEK_SET;
+       } else if (!strcmp(whstr, "cur")) {
+               whence = SEEK_CUR;
+       } else if (!strcmp(whstr, "end")) {
+               whence = SEEK_END;
+       } else {
+               return luaL_argerror(L, 3, "supported values: set, cur, end");
+       }
+       len = lseek(fd, len, whence);
+       if (len == -1) {
+               return nixio__perror(L);
+       } else {
+               nixio__pushnumber(L, len);
+               return 1;
+       }
+}
+
+static int nixio_file_tell(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       off_t pos = lseek(fd, 0, SEEK_CUR);
+       if (pos < 0) {
+               return nixio__perror(L);
+       } else {
+               nixio__pushnumber(L, pos);
+               return 1;
+       }
+}
+
+static int nixio_file_stat(lua_State *L) {
+       nixio_stat_t buf;
+       if (fstat(nixio__checkfd(L, 1), &buf)) {
+               return nixio__perror(L);
+       } else {
+               nixio__push_stat(L, &buf);
+               if (lua_isstring(L, 2)) {
+                       lua_getfield(L, -1, lua_tostring(L, 2));
+               }
+               return 1;
+       }
+}
+
+static int nixio_file_sync(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       int stat;
+#if (!defined BSD && !defined __WINNT__)
+       int dataonly = lua_toboolean(L, 2);
+       do {
+               stat = (dataonly) ? fdatasync(fd) : fsync(fd);
+       } while (stat == -1 && errno == EINTR);
+       return nixio__pstatus(L, !stat);
+#else
+       do {
+               stat = fsync(fd);
+       } while (stat == -1 && errno == EINTR);
+       return nixio__pstatus(L, !stat);
+#endif
+}
+
+static int nixio_file_lock(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       const char *flag = luaL_checkstring(L, 2);
+       off_t len = (off_t)nixio__optnumber(L, 3, 0);
+       int stat;
+
+       int cmd = 0;
+       if (!strcmp(flag, "lock")) {
+               cmd = F_LOCK;
+       } else if (!strcmp(flag, "tlock")) {
+               cmd = F_TLOCK;
+       } else if (!strcmp(flag, "ulock")) {
+               cmd = F_ULOCK;
+       } else if (!strcmp(flag, "test")) {
+               cmd = F_TEST;
+       } else {
+               return luaL_argerror(L, 2,
+                               "supported values: lock, tlock, ulock, test");
+       }
+
+       do {
+               stat = lockf(fd, cmd, len);
+       } while (stat == -1 && errno == EINTR);
+
+       return nixio__pstatus(L, !stat);
+}
+
+static int nixio_file_close(lua_State *L) {
+       int *fdp = luaL_checkudata(L, 1, NIXIO_FILE_META);
+       luaL_argcheck(L, *fdp != -1, 1, "invalid file object");
+       int res;
+       do {
+               res = close(*fdp);
+       } while (res == -1 && errno == EINTR);
+       *fdp = -1;
+       return nixio__pstatus(L, !res);
+}
+
+static int nixio_file__gc(lua_State *L) {
+       int *fdp = luaL_checkudata(L, 1, NIXIO_FILE_META);
+       int res;
+       if (*fdp > 2) {
+               do {
+                       res = close(*fdp);
+               } while (res == -1 && errno == EINTR);
+               *fdp = -1;
+       }
+       return 0;
+}
+
+/**
+ * string representation
+ */
+static int nixio_file__tostring(lua_State *L) {
+       lua_pushfstring(L, "nixio file %d", nixio__tofd(L, 1));
+       return 1;
+}
+
+/* method table */
+static const luaL_reg M[] = {
+       {"write",               nixio_file_write},
+       {"read",                nixio_file_read},
+       {"tell",                nixio_file_tell},
+       {"seek",                nixio_file_seek},
+       {"stat",                nixio_file_stat},
+       {"sync",                nixio_file_sync},
+       {"lock",                nixio_file_lock},
+       {"close",               nixio_file_close},
+       {"__gc",                nixio_file__gc},
+       {"__tostring",  nixio_file__tostring},
+       {NULL,                  NULL}
+};
+
+/* module table */
+static const luaL_reg R[] = {
+       {"dup",                 nixio_dup},
+       {"open",                nixio_open},
+       {"open_flags",  nixio_open_flags},
+       {"mkstemp",             nixio_mkstemp},
+       {"pipe",                nixio_pipe},
+       {NULL,                  NULL}
+};
+
+void nixio_open_file(lua_State *L) {
+       luaL_register(L, NULL, R);
+
+       luaL_newmetatable(L, NIXIO_FILE_META);
+       luaL_register(L, NULL, M);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+
+       int *uin  = lua_newuserdata(L, sizeof(int));
+       int *uout = lua_newuserdata(L, sizeof(int));
+       int *uerr = lua_newuserdata(L, sizeof(int));
+
+       if (!uin || !uout || !uerr) {
+               luaL_error(L, "out of memory");
+       }
+
+       *uin  = STDIN_FILENO;
+       *uout = STDOUT_FILENO;
+       *uerr = STDERR_FILENO;
+
+       for (int i = -4; i < -1; i++) {
+               lua_pushvalue(L, -4);
+               lua_setmetatable(L, i);
+       }
+
+       lua_setfield(L, -5, "stderr");
+       lua_setfield(L, -4, "stdout");
+       lua_setfield(L, -3, "stdin");
+       lua_setfield(L, -2, "meta_file");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/fs.c b/package/luci/libs/luci-lib-nixio/src/fs.c
new file mode 100644 (file)
index 0000000..ba184ed
--- /dev/null
@@ -0,0 +1,566 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <libgen.h>
+#include <string.h>
+#include <unistd.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <dirent.h>
+
+/* Reads argument from given index and transforms it into a mode bitfield */
+int nixio__check_mode(lua_State *L, int idx, int def) {
+       if (lua_isnoneornil(L, idx) && def > 0) {
+               return def;
+       } else if (lua_isstring(L, idx) && lua_objlen(L, idx) == 9) {
+               int mode = 0;
+               const char *modestr = lua_tostring(L, idx);
+               int i;
+               for (i=0; i<9; i++) {
+                       if (i % 3 == 0) {                       /* read flags */
+                               if (modestr[i] == 'r') {
+                                       mode |= 1 << (8 - i);
+                               } else if (modestr[i] != '-') {
+                                       break;
+                               }
+                       } else if (i % 3 == 1) {        /* write flags */
+                               if (modestr[i] == 'w') {
+                                       mode |= 1 << (8 - i);
+                               } else if (modestr[i] != '-') {
+                                       break;
+                               }
+                       } else if (i == 2) {
+                               if (modestr[i] == 'x') {
+                                       mode |= 00100;
+                               } else if (modestr[i] == 's') {
+                                       mode |= 04100;
+                               } else if (modestr[i] == 'S') {
+                                       mode |= 04000;
+                               } else if (modestr[i] != '-') {
+                                       break;
+                               }
+                       } else if (i == 5) {
+                               if (modestr[i] == 'x') {
+                                       mode |= 00010;
+                               } else if (modestr[i] == 's') {
+                                       mode |= 02010;
+                               } else if (modestr[i] == 'S') {
+                                       mode |= 02000;
+                               } else if (modestr[i] != '-') {
+                                       break;
+                               }
+                       } else if (i == 8) {
+                               if (modestr[i] == 'x') {
+                                       mode |= 00001;
+                               } else if (modestr[i] == 't') {
+                                       mode |= 01001;
+                               } else if (modestr[i] == 'T') {
+                                       mode |= 01000;
+                               } else if (modestr[i] != '-') {
+                                       break;
+                               }
+                       }
+               }
+               if (i == 9) {   /* successfully parsed */
+                       return mode;
+               }
+       } else if (lua_isnumber(L, idx)) {
+               int decmode = lua_tointeger(L, idx);
+               int s = (decmode % 10000)       / 1000;
+               int u = (decmode % 1000)        / 100;
+               int g = (decmode % 100)         / 10;
+               int o = (decmode % 10);
+
+               if (s>=0 && s<=7 && u>=0 && u<=7 && g>=0 && g<=7 && o>=0 && o<=7) {
+                       return (s << 9) + (u << 6) + (g << 3) + o;
+               }
+       }
+
+       return luaL_argerror(L, idx, "supported values: [0-7]?[0-7][0-7][0-7], "
+                               "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]");
+}
+
+/* Transforms a mode into the modestring */
+int nixio__mode_write(int mode, char *modestr) {
+       if (modestr) {
+               modestr[0] = (mode & 00400) ? 'r' : '-';
+               modestr[1] = (mode & 00200) ? 'w' : '-';
+               modestr[2] = ((mode & 04100) == 04100) ? 's' :
+                       (mode & 04000) ? 'S' : (mode & 00100) ? 'x' : '-';
+               modestr[3] = (mode & 00040) ? 'r' : '-';
+               modestr[4] = (mode & 00020) ? 'w' : '-';
+               modestr[5] = ((mode & 02010) == 02010) ? 's' :
+                       (mode & 02000) ? 'S' : (mode & 00010) ? 'x' : '-';
+               modestr[6] = (mode & 00004) ? 'r' : '-';
+               modestr[7] = (mode & 00002) ? 'w' : '-';
+               modestr[8] = ((mode & 01001) == 01001) ? 't' :
+                       (mode & 01000) ? 'T' : (mode & 00001) ? 'x' : '-';
+       }
+
+       return (mode & 00007) + ((mode & 00070) >> 3) * 10 +
+               ((mode & 00700) >> 6) * 100 + ((mode & 07000) >> 9) * 1000;
+}
+
+static int nixio_access(lua_State *L) {
+       const char *path = luaL_checkstring(L, 1);
+       int mode = F_OK;
+
+       for (const char *s = luaL_optstring(L, 2, "f"); *s; s++) {
+               if (*s == 'r') {
+                       mode |= R_OK;
+               } else if (*s == 'w') {
+                       mode |= W_OK;
+               } else if (*s == 'x') {
+                       mode |= X_OK;
+               } else if (*s != 'f') {
+                       return luaL_argerror(L, 2, "supported values: [frwx]");
+               }
+       }
+
+       return nixio__pstatus(L, !access(path, mode));
+}
+
+static int nixio_basename(lua_State *L) {
+       const char *path = luaL_checkstring(L, 1);
+       char base[PATH_MAX];
+       base[PATH_MAX-1] = 0;
+
+       strncpy(base, path, PATH_MAX-1);
+       lua_pushstring(L, basename(base));
+       return 1;
+}
+
+static int nixio_dirname(lua_State *L) {
+       const char *path = luaL_checkstring(L, 1);
+       char base[PATH_MAX];
+       base[PATH_MAX-1] = 0;
+
+       strncpy(base, path, PATH_MAX-1);
+       lua_pushstring(L, dirname(base));
+       return 1;
+}
+
+static int nixio_realpath(lua_State *L) {
+       const char *path = luaL_checkstring(L, 1);
+       char real[PATH_MAX];
+
+       if (!realpath(path, real)) {
+               return nixio__perror(L);
+       } else {
+               lua_pushstring(L, real);
+               return 1;
+       }
+}
+
+static int nixio_remove(lua_State *L) {
+       return nixio__pstatus(L, !remove(luaL_checkstring(L, 1)));
+}
+
+static int nixio_unlink(lua_State *L) {
+       return nixio__pstatus(L, !unlink(luaL_checkstring(L, 1)));
+}
+
+static int nixio_rename(lua_State *L) {
+       return nixio__pstatus(L,
+                       !rename(luaL_checkstring(L, 1), luaL_checkstring(L, 2)));
+}
+
+static int nixio_rmdir(lua_State *L) {
+       return nixio__pstatus(L, !rmdir(luaL_checkstring(L, 1)));
+}
+
+static int nixio_mkdir(lua_State *L) {
+       return nixio__pstatus(L,
+                       !mkdir(luaL_checkstring(L, 1), nixio__check_mode(L, 2, 0777)));
+}
+
+static int nixio_chmod(lua_State *L) {
+       return nixio__pstatus(L,
+                       !chmod(luaL_checkstring(L, 1), nixio__check_mode(L, 2, -1)));
+}
+
+static int nixio_dir__gc(lua_State *L) {
+       DIR **dirp = lua_touserdata(L, 1);
+       if (dirp && *dirp) {
+               closedir(*dirp);
+               *dirp = NULL;
+       }
+       return 0;
+}
+
+static int nixio_dir__iter(lua_State *L) {
+       DIR **dirp = lua_touserdata(L, lua_upvalueindex(1));
+       struct dirent *entry;
+       const char *n = NULL;
+
+       if (*dirp) {
+               do {
+                       entry = readdir(*dirp);
+                       n = (entry) ? entry->d_name : NULL;
+               } while(n && n[0] == '.' && (n[1] == 0 || (n[1] == '.' && n[2] == 0)));
+       }
+
+       if (n) {
+               lua_pushstring(L, n);
+       } else {
+               if (*dirp) {
+                       closedir(*dirp);
+                       *dirp = NULL;
+               }
+               lua_pushnil(L);
+       }
+
+       return 1;
+}
+
+static int nixio_dir(lua_State *L) {
+       const char *path = luaL_optstring(L, 1, ".");
+       DIR **dirp = lua_newuserdata(L, sizeof(DIR *));
+
+       *dirp = opendir(path);
+       if (!*dirp) {
+               return nixio__perror(L);
+       } else {
+               luaL_getmetatable(L, NIXIO_DIR_META);
+               lua_setmetatable(L, -2);
+               lua_pushcclosure(L, nixio_dir__iter, 1);
+               return 1;
+       }
+}
+
+static int nixio_link(lua_State *L) {
+       return nixio__pstatus(L,
+                       !link(luaL_checkstring(L, 1), luaL_checkstring(L, 2)));
+}
+
+static int nixio_utimes(lua_State *L) {
+       const char *path = luaL_checkstring(L, 1);
+       if (lua_gettop(L) < 2 || (lua_isnoneornil(L, 2) && lua_isnoneornil(L, 3))) {
+               return nixio__pstatus(L, !utimes(path, NULL));
+       } else {
+               double atime = nixio__checknumber(L, 2);
+               double mtime = nixio__optnumber(L, 3, atime);
+               struct timeval times[2];
+
+               times[0].tv_sec = atime;
+               times[0].tv_usec = 0;
+               times[1].tv_sec = mtime;
+               times[1].tv_usec = 0;
+
+               return nixio__pstatus(L, !utimes(path, times));
+       }
+}
+
+int nixio__push_stat(lua_State *L, nixio_stat_t *buf) {
+       lua_createtable(L, 0, 15);
+
+       lua_pushinteger(L, buf->st_dev);
+       lua_setfield(L, -2, "dev");
+
+       lua_pushinteger(L, buf->st_ino);
+       lua_setfield(L, -2, "ino");
+
+       if (S_ISREG(buf->st_mode)) {
+               lua_pushliteral(L, "reg");
+       } else if (S_ISDIR(buf->st_mode)) {
+               lua_pushliteral(L, "dir");
+       } else if (S_ISCHR(buf->st_mode)) {
+               lua_pushliteral(L, "chr");
+       } else if (S_ISBLK(buf->st_mode)) {
+               lua_pushliteral(L, "blk");
+       } else if (S_ISFIFO(buf->st_mode)) {
+               lua_pushliteral(L, "fifo");
+       } else if (S_ISLNK(buf->st_mode)) {
+               lua_pushliteral(L, "lnk");
+       } else if (S_ISSOCK(buf->st_mode)) {
+               lua_pushliteral(L, "sock");
+       } else {
+               lua_pushliteral(L, "unknown");
+       }
+       lua_setfield(L, -2, "type");
+
+       char modestr[9];
+       lua_pushinteger(L, nixio__mode_write(buf->st_mode, modestr));
+       lua_setfield(L, -2, "modedec");
+
+       lua_pushlstring(L, modestr, 9);
+       lua_setfield(L, -2, "modestr");
+
+       lua_pushinteger(L, buf->st_nlink);
+       lua_setfield(L, -2, "nlink");
+
+       lua_pushinteger(L, buf->st_uid);
+       lua_setfield(L, -2, "uid");
+
+       lua_pushinteger(L, buf->st_gid);
+       lua_setfield(L, -2, "gid");
+
+       lua_pushinteger(L, buf->st_rdev);
+       lua_setfield(L, -2, "rdev");
+
+       nixio__pushnumber(L, buf->st_size);
+       lua_setfield(L, -2, "size");
+
+       lua_pushinteger(L, buf->st_atime);
+       lua_setfield(L, -2, "atime");
+
+       lua_pushinteger(L, buf->st_mtime);
+       lua_setfield(L, -2, "mtime");
+
+       lua_pushinteger(L, buf->st_ctime);
+       lua_setfield(L, -2, "ctime");
+
+#ifndef __WINNT__
+       lua_pushinteger(L, buf->st_blksize);
+       lua_setfield(L, -2, "blksize");
+
+       lua_pushinteger(L, buf->st_blocks);
+       lua_setfield(L, -2, "blocks");
+#endif
+
+       return 1;
+}
+
+static int nixio_stat(lua_State *L) {
+       nixio_stat_t buf;
+       if (stat(luaL_checkstring(L, 1), &buf)) {
+               return nixio__perror(L);
+       } else {
+               nixio__push_stat(L, &buf);
+               if (lua_isstring(L, 2)) {
+                       lua_getfield(L, -1, lua_tostring(L, 2));
+               }
+               return 1;
+       }
+}
+
+static int nixio_lstat(lua_State *L) {
+       nixio_stat_t buf;
+       if (lstat(luaL_checkstring(L, 1), &buf)) {
+               return nixio__perror(L);
+       } else {
+               nixio__push_stat(L, &buf);
+               if (lua_isstring(L, 2)) {
+                       lua_getfield(L, -1, lua_tostring(L, 2));
+               }
+               return 1;
+       }
+}
+
+#ifndef __WINNT__
+
+static int nixio_chown(lua_State *L) {
+       return nixio__pstatus(L,
+                       !chown(
+                                       luaL_checkstring(L, 1),
+                                       lua_isnoneornil(L, 2) ? -1 : nixio__check_user(L, 2),
+                                       lua_isnoneornil(L, 3) ? -1 : nixio__check_group(L, 3)
+                       )
+       );
+}
+
+static int nixio_lchown(lua_State *L) {
+       return nixio__pstatus(L,
+                       !lchown(
+                                       luaL_checkstring(L, 1),
+                                       lua_isnoneornil(L, 2) ? -1 : nixio__check_user(L, 2),
+                                       lua_isnoneornil(L, 3) ? -1 : nixio__check_group(L, 3)
+                       )
+       );
+}
+
+static int nixio_mkfifo(lua_State *L) {
+       return nixio__pstatus(L,
+                       !mkfifo(luaL_checkstring(L, 1), nixio__check_mode(L, 2, -1)));
+}
+
+static int nixio_symlink(lua_State *L) {
+       return nixio__pstatus(L,
+                       !symlink(luaL_checkstring(L, 1), luaL_checkstring(L, 2)));
+}
+
+static int nixio_readlink(lua_State *L) {
+       char dest[PATH_MAX];
+       ssize_t res = readlink(luaL_checkstring(L, 1), dest, sizeof(dest));
+       if (res < 0) {
+               return nixio__perror(L);
+       } else {
+               lua_pushlstring(L, dest, res);
+               return 1;
+       }
+}
+
+#include <glob.h>
+
+typedef struct {
+       glob_t gl;
+       size_t pos;
+       int     freed;
+} nixio_glob_t;
+
+static int nixio_glob__iter(lua_State *L) {
+       nixio_glob_t *globres = lua_touserdata(L, lua_upvalueindex(1));
+       if (!globres->freed && globres->pos < globres->gl.gl_pathc) {
+               lua_pushstring(L, globres->gl.gl_pathv[(globres->pos)++]);
+       } else {
+               if (!globres->freed) {
+                       globfree(&globres->gl);
+                       globres->freed = 1;
+               }
+               lua_pushnil(L);
+       }
+       return 1;
+}
+
+static int nixio_glob__gc(lua_State *L) {
+       nixio_glob_t *globres = lua_touserdata(L, 1);
+       if (globres && !globres->freed) {
+               globres->freed = 1;
+               globfree(&globres->gl);
+       }
+       return 0;
+}
+
+static int nixio_glob(lua_State *L) {
+        const char *pattern = luaL_optstring(L, 1, "*");
+        nixio_glob_t *globres = lua_newuserdata(L, sizeof(nixio_glob_t));
+        if (!globres) {
+                return luaL_error(L, NIXIO_OOM);
+        }
+        globres->pos = 0;
+        globres->freed = 0;
+
+        int globstat = glob(pattern, 0, NULL, &globres->gl);
+        if (globstat == GLOB_NOMATCH) {
+                lua_pushcfunction(L, nixio__nulliter);
+                lua_pushinteger(L, 0);
+        } else if (globstat) {
+                return nixio__perror(L);
+        } else {
+                luaL_getmetatable(L, NIXIO_GLOB_META);
+                lua_setmetatable(L, -2);
+                lua_pushcclosure(L, nixio_glob__iter, 1);
+                lua_pushinteger(L, globres->gl.gl_pathc);
+        }
+        return 2;
+}
+
+#include <sys/statvfs.h>
+
+static int nixio__push_statvfs(lua_State *L, struct statvfs *buf) {
+       lua_createtable(L, 0, 12);
+
+       nixio__pushnumber(L, buf->f_bavail);
+       lua_setfield(L, -2, "bavail");
+
+       nixio__pushnumber(L, buf->f_bfree);
+       lua_setfield(L, -2, "bfree");
+
+       nixio__pushnumber(L, buf->f_blocks);
+       lua_setfield(L, -2, "blocks");
+
+       nixio__pushnumber(L, buf->f_bsize);
+       lua_setfield(L, -2, "bsize");
+
+       nixio__pushnumber(L, buf->f_frsize);
+       lua_setfield(L, -2, "frsize");
+
+       nixio__pushnumber(L, buf->f_favail);
+       lua_setfield(L, -2, "favail");
+
+       nixio__pushnumber(L, buf->f_ffree);
+       lua_setfield(L, -2, "ffree");
+
+       nixio__pushnumber(L, buf->f_files);
+       lua_setfield(L, -2, "files");
+
+       nixio__pushnumber(L, buf->f_flag);
+       lua_setfield(L, -2, "flag");
+
+       nixio__pushnumber(L, buf->f_fsid);
+       lua_setfield(L, -2, "fsid");
+
+       nixio__pushnumber(L, buf->f_namemax);
+       lua_setfield(L, -2, "namemax");
+
+       return 1;
+}
+
+static int nixio_statvfs(lua_State *L) {
+       struct statvfs buf;
+       if (statvfs(luaL_optstring(L, 1, "."), &buf)) {
+               return nixio__perror(L);
+       } else {
+               return nixio__push_statvfs(L, &buf);
+       }
+}
+
+#endif /* !__WINNT__ */
+
+
+
+/* module table */
+static const luaL_reg R[] = {
+#ifndef __WINNT__
+       {"glob",                nixio_glob},
+       {"mkfifo",              nixio_mkfifo},
+       {"symlink",             nixio_symlink},
+       {"readlink",    nixio_readlink},
+       {"chown",               nixio_chown},
+       {"lchown",              nixio_lchown},
+       {"statvfs",             nixio_statvfs},
+#endif
+       {"chmod",               nixio_chmod},
+       {"access",              nixio_access},
+       {"basename",    nixio_basename},
+       {"dir",                 nixio_dir},
+       {"dirname",             nixio_dirname},
+       {"realpath",    nixio_realpath},
+       {"mkdir",               nixio_mkdir},
+       {"rmdir",               nixio_rmdir},
+       {"link",                nixio_link},
+       {"unlink",              nixio_unlink},
+       {"utimes",              nixio_utimes},
+       {"rename",              nixio_rename},
+       {"remove",              nixio_remove},
+       {"stat",                nixio_stat},
+       {"lstat",               nixio_lstat},
+       {NULL,                  NULL}
+};
+
+void nixio_open_fs(lua_State *L) {
+       lua_newtable(L);
+       luaL_register(L, NULL, R);
+       lua_setfield(L, -2, "fs");
+
+       luaL_newmetatable(L, NIXIO_DIR_META);
+       lua_pushcfunction(L, nixio_dir__gc);
+       lua_setfield(L, -2, "__gc");
+       lua_pop(L, 1);
+
+#ifndef __WINNT__
+       luaL_newmetatable(L, NIXIO_GLOB_META);
+       lua_pushcfunction(L, nixio_glob__gc);
+       lua_setfield(L, -2, "__gc");
+       lua_pop(L, 1);
+#endif
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/io.c b/package/luci/libs/luci-lib-nixio/src/io.c
new file mode 100644 (file)
index 0000000..12d5c7d
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+
+/**
+ * send() / sendto() helper
+ */
+static int nixio_sock__sendto(lua_State *L, int to) {
+       nixio_sock *sock = nixio__checksock(L);
+       struct sockaddr_storage addr_in;
+#ifndef __WINNT__
+       struct sockaddr_un addr_un;
+#endif
+       struct sockaddr *addr = NULL;
+       socklen_t alen = 0;
+       int argoff = 2;
+
+       if (to) {
+               argoff += 2;
+               if (sock->domain == AF_INET || sock->domain == AF_INET6) {
+                       const char *address = luaL_checkstring(L, 3);
+                       addr = (struct sockaddr*)&addr_in;
+                       alen = sizeof(addr_in);
+
+                       nixio_addr naddr;
+                       memset(&naddr, 0, sizeof(naddr));
+                       strncpy(naddr.host, address, sizeof(naddr.host) - 1);
+                       naddr.port = (uint16_t)luaL_checkinteger(L, 4);
+                       naddr.family = sock->domain;
+
+                       if (nixio__addr_write(&naddr, addr)) {
+                               return nixio__perror_s(L);
+                       }
+               }
+
+#ifndef __WINNT__
+               else if (sock->domain == AF_UNIX) {
+                       size_t pathlen;
+                       const char *path = luaL_checklstring(L, 3, &pathlen);
+
+                       addr_un.sun_family = AF_UNIX;
+                       luaL_argcheck(L, pathlen <= sizeof(addr_un.sun_path), 3, "out of range");
+                       memcpy(addr_un.sun_path, path, pathlen);
+
+                       addr = (struct sockaddr*)&addr_un;
+                       alen = sizeof(sa_family_t) + pathlen;
+               }
+#endif
+       }
+
+       size_t len;
+       ssize_t sent;
+       const char *data = luaL_checklstring(L, 2, &len);
+
+       if (lua_gettop(L) > argoff) {
+               int offset = luaL_optint(L, argoff + 1, 0);
+               if (offset) {
+                       if (offset < len) {
+                               data += offset;
+                               len -= offset;
+                       } else {
+                               len = 0;
+                       }
+               }
+
+               unsigned int wlen = luaL_optint(L, argoff + 2, len);
+               if (wlen < len) {
+                       len = wlen;
+               }
+       }
+
+       do {
+               sent = sendto(sock->fd, data, len, 0, addr, alen);
+       } while(sent == -1 && errno == EINTR);
+       if (sent >= 0) {
+               lua_pushinteger(L, sent);
+               return 1;
+       } else {
+               return nixio__perror_s(L);
+       }
+}
+
+/**
+ * send(data)
+ */
+static int nixio_sock_send(lua_State *L) {
+       return nixio_sock__sendto(L, 0);
+}
+
+/**
+ * sendto(data, address, port)
+ */
+static int nixio_sock_sendto(lua_State *L) {
+       return nixio_sock__sendto(L, 1);
+}
+
+
+/**
+ * recv() / recvfrom() helper
+ */
+static int nixio_sock__recvfrom(lua_State *L, int from) {
+       nixio_sock *sock = nixio__checksock(L);
+       char buffer[NIXIO_BUFFERSIZE];
+       struct sockaddr_storage addr_in;
+#ifndef __WINNT__
+       struct sockaddr_un addr_un;
+#endif
+       struct sockaddr *addr = NULL;
+       socklen_t alen = 0;
+       uint req = luaL_checkinteger(L, 2);
+       int readc;
+
+       if (sock->domain == AF_INET || sock->domain == AF_INET6) {
+               addr = (from) ? (struct sockaddr*)&addr_in : NULL;
+               alen = (from) ? sizeof(addr_in) : 0;
+       }
+#ifndef __WINNT__
+       else if (sock->domain == AF_UNIX) {
+               addr = (from) ? (struct sockaddr*)&addr_un : NULL;
+               alen = (from) ? sizeof(addr_un) : 0;
+       }
+#endif
+
+       /* We limit the readsize to NIXIO_BUFFERSIZE */
+       req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req;
+
+       do {
+               readc = recvfrom(sock->fd, buffer, req, 0, addr, &alen);
+       } while (readc == -1 && errno == EINTR);
+
+#ifdef __WINNT__
+       if (readc < 0) {
+               int e = WSAGetLastError();
+               if (e == WSAECONNRESET || e == WSAECONNABORTED || e == WSAESHUTDOWN) {
+                       readc = 0;
+               }
+       }
+#endif
+
+       if (readc < 0) {
+               return nixio__perror_s(L);
+       } else {
+               lua_pushlstring(L, buffer, readc);
+
+               if (!from) {
+                       return 1;
+               }
+               /* push address. */
+               if (sock->domain == AF_INET || sock->domain == AF_INET6) {
+                       nixio_addr naddr;
+                       if (!nixio__addr_parse(&naddr, (struct sockaddr *)&addr_in)) {
+                               lua_pushstring(L, naddr.host);
+                               lua_pushinteger(L, naddr.port);
+                               return 3;
+                       } else {
+                               return 1;
+                       }
+               }
+#ifndef __WINNT__
+               else if (sock->domain == AF_UNIX && alen > sizeof(sa_family_t)) {
+                       /* if first char is non-null then the path is not in the
+                          abstract namespace and alen includes the trailing null */
+                       if (addr_un.sun_path[0])
+                               --alen;
+                       lua_pushlstring(L, addr_un.sun_path, alen - sizeof(sa_family_t));
+                       return 2;
+               }
+#endif
+       }
+       return 1;
+}
+
+/**
+ * recv(count)
+ */
+static int nixio_sock_recv(lua_State *L) {
+       return nixio_sock__recvfrom(L, 0);
+}
+
+/**
+ * recvfrom(count)
+ */
+static int nixio_sock_recvfrom(lua_State *L) {
+       return nixio_sock__recvfrom(L, 1);
+}
+
+
+/* module table */
+static const luaL_reg M[] = {
+       {"send",        nixio_sock_send},
+       {"sendto",      nixio_sock_sendto},
+       {"recv",        nixio_sock_recv},
+       {"recvfrom",nixio_sock_recvfrom},
+       {"write",       nixio_sock_send},
+       {"read",        nixio_sock_recv},
+       {NULL,                  NULL}
+};
+
+void nixio_open_io(lua_State *L) {
+       lua_pushvalue(L, -2);
+       luaL_register(L, NULL, M);
+       lua_pop(L, 1);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/mingw-compat.c b/package/luci/libs/luci-lib-nixio/src/mingw-compat.c
new file mode 100644 (file)
index 0000000..02be504
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/locking.h>
+#include <sys/time.h>
+#include <sys/utime.h>
+
+void nixio_open__mingw(lua_State *L) {
+       _fmode = _O_BINARY;
+
+       WSADATA wsa;
+
+       if (WSAStartup(MAKEWORD(2, 2), &wsa)) {
+               luaL_error(L, "Unable to initialize Winsock");
+       }
+
+       lua_newtable(L);
+
+       NIXIO_WSA_CONSTANT(WSAEACCES);
+       NIXIO_WSA_CONSTANT(WSAEINTR);
+       NIXIO_WSA_CONSTANT(WSAEINVAL);
+       NIXIO_WSA_CONSTANT(WSAEBADF);
+       NIXIO_WSA_CONSTANT(WSAEFAULT);
+       NIXIO_WSA_CONSTANT(WSAEMFILE);
+       NIXIO_WSA_CONSTANT(WSAENAMETOOLONG);
+       NIXIO_WSA_CONSTANT(WSAELOOP);
+       NIXIO_WSA_CONSTANT(WSAEAFNOSUPPORT);
+       NIXIO_WSA_CONSTANT(WSAENOBUFS);
+       NIXIO_WSA_CONSTANT(WSAEPROTONOSUPPORT);
+       NIXIO_WSA_CONSTANT(WSAENOPROTOOPT);
+       NIXIO_WSA_CONSTANT(WSAEADDRINUSE);
+       NIXIO_WSA_CONSTANT(WSAENETDOWN);
+       NIXIO_WSA_CONSTANT(WSAENETUNREACH);
+       NIXIO_WSA_CONSTANT(WSAECONNABORTED);
+       NIXIO_WSA_CONSTANT(WSAECONNRESET);
+
+       lua_setfield(L, -2, "const_sock");
+}
+
+const char* nixio__mgw_inet_ntop
+(int af, const void *src, char *dst, socklen_t size) {
+       struct sockaddr_storage saddr;
+       memset(&saddr, 0, sizeof(saddr));
+
+       DWORD hostlen = size, sl;
+       if (af == AF_INET) {
+               struct sockaddr_in *saddr4 = (struct sockaddr_in *)&saddr;
+               memcpy(&saddr4->sin_addr, src, sizeof(saddr4->sin_addr));
+               saddr4->sin_family = AF_INET;
+               saddr4->sin_port = 0;
+               sl = sizeof(struct sockaddr_in);
+       } else if (af == AF_INET6) {
+               struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *)&saddr;
+               memcpy(&saddr6->sin6_addr, src, sizeof(saddr6->sin6_addr));
+               saddr6->sin6_family = AF_INET6;
+               saddr6->sin6_port = 0;
+               sl = sizeof(struct sockaddr_in6);
+       } else {
+               return NULL;
+       }
+       if (WSAAddressToString((struct sockaddr*)&saddr, sl, NULL, dst, &hostlen)) {
+               return NULL;
+       }
+       return dst;
+}
+
+int nixio__mgw_inet_pton (int af, const char *src, void *dst) {
+       struct sockaddr_storage sa;
+       int sl = sizeof(sa);
+
+       if (!WSAStringToAddress((char*)src, af, NULL, (struct sockaddr*)&sa, &sl)) {
+               if (af == AF_INET) {
+                       struct in_addr ina = ((struct sockaddr_in *)&sa)->sin_addr;
+                       memcpy(dst, &ina, sizeof(ina));
+                       return 1;
+               } else if (af == AF_INET6) {
+                       struct in_addr6 ina6 = ((struct sockaddr_in6 *)&sa)->sin6_addr;
+                       memcpy(dst, &ina6, sizeof(ina6));
+                       return 1;
+               } else {
+                       WSASetLastError(WSAEAFNOSUPPORT);
+                       return -1;
+               }
+       } else {
+               return -1;
+       }
+}
+
+int nixio__mgw_nanosleep(const struct timespec *req, struct timespec *rem) {
+       if (rem) {
+               rem->tv_sec = 0;
+               rem->tv_nsec = 0;
+       }
+       Sleep(req->tv_sec * 1000 + req->tv_nsec * 1000000);
+       return 0;
+}
+
+int nixio__mgw_poll(struct pollfd *fds, int nfds, int timeout) {
+       if (!fds || !nfds) {
+               Sleep(timeout);
+               return 0;
+       }
+
+       struct timeval tv;
+       int high = 0, rf = 0, wf = 0, ef = 0;
+       fd_set rfds, wfds, efds;
+       FD_ZERO(&rfds);
+       FD_ZERO(&wfds);
+       FD_ZERO(&efds);
+
+       tv.tv_sec = timeout / 1000;
+       tv.tv_usec = (timeout % 1000) * 1000;
+
+       for (int i = 0; i < nfds; i++) {
+               if (fds->events & POLLIN) {
+                       FD_SET(fds->fd, &rfds);
+                       rf++;
+               }
+               if (fds->events & POLLOUT) {
+                       FD_SET(fds->fd, &wfds);
+                       wf++;
+               }
+               if (fds->events & POLLERR) {
+                       FD_SET(fds->fd, &efds);
+                       ef++;
+               }
+               if (fds->fd > high) {
+                       high = fds->fd;
+               }
+       }
+
+       int stat = select(high + 1, (rf) ? &rfds : NULL,
+        (wf) ? &wfds : NULL, (ef) ? &efds : NULL, &tv);
+       if (stat < 1) {
+               errno = WSAGetLastError();
+               return stat;
+       }
+
+       high = 0;
+
+       for (int i = 0; i < nfds; i++) {
+               fds->revents = 0;
+               if ((fds->events & POLLIN) && FD_ISSET(fds->fd, &rfds)) {
+                       fds->revents |= POLLIN;
+               }
+               if ((fds->events & POLLOUT) && FD_ISSET(fds->fd, &wfds)) {
+                       fds->revents |= POLLOUT;
+               }
+               if ((fds->events & POLLERR) && FD_ISSET(fds->fd, &efds)) {
+                       fds->revents |= POLLERR;
+               }
+               if (fds->revents) {
+                       high++;
+               }
+       }
+
+       return high;
+}
+
+int nixio__mgw_lockf(int fd, int cmd, off_t len) {
+       int stat;
+       if (cmd == F_LOCK) {
+               do {
+                       stat = _locking(fd, _LK_LOCK, len);
+               } while (stat == -1 && errno == EDEADLOCK);
+       } else if (cmd == F_TLOCK) {
+               stat = _locking(fd, _LK_NBLCK, len);
+       } else if (cmd == F_ULOCK) {
+               stat = _locking(fd, _LK_UNLCK, len);
+       } else {
+               stat = -1;
+               errno = EINVAL;
+       }
+       return stat;
+}
+
+char* nixio__mgw_realpath(const char *path, char *resolved) {
+       if (GetFullPathName(path, PATH_MAX, resolved, NULL)) {
+               return resolved;
+       } else {
+               errno = GetLastError();
+               return NULL;
+       }
+}
+
+int nixio__mgw_link(const char *oldpath, const char *newpath) {
+       if (!CreateHardLink(newpath, oldpath, NULL)) {
+               errno = GetLastError();
+               return -1;
+       } else {
+               return 0;
+       }
+}
+
+int nixio__mgw_utimes(const char *filename, const struct timeval times[2]) {
+       struct _utimbuf timebuffer;
+       timebuffer.actime = times[0].tv_sec;
+       timebuffer.modtime = times[1].tv_sec;
+
+       return _utime(filename, &timebuffer);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/mingw-compat.h b/package/luci/libs/luci-lib-nixio/src/mingw-compat.h
new file mode 100644 (file)
index 0000000..a26a4be
--- /dev/null
@@ -0,0 +1,112 @@
+#ifndef NIXIO_MINGW_COMPAT_H_
+#define NIXIO_MINGW_COMPAT_H_
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <process.h>
+#include <stdint.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+typedef unsigned int uint;
+typedef unsigned long ulong;
+
+#define S_ISLNK(m) 0
+#define S_ISSOCK(m) 0
+
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#define ENOPROTOOPT WSAENOPROTOOPT
+
+#define SHUT_RD                SD_RECEIVE
+#define SHUT_WR                SD_SEND
+#define SHUT_RDWR      SD_BOTH
+
+#define pipe(fds) _pipe(fds, 65536, 0)
+#define fsync _commit
+#define lseek lseek64
+#define stat _stati64
+#define lstat _stati64
+#define fstat _fstati64
+
+
+#define F_LOCK 1
+#define F_ULOCK 0
+#define F_TLOCK 2
+#define F_TEST 3
+int nixio__mgw_lockf(int fd, int cmd, off_t len);
+#define lockf nixio__mgw_lockf
+
+const char* nixio__mgw_inet_ntop
+(int af, const void *src, char *dst, socklen_t size);
+#define inet_ntop nixio__mgw_inet_ntop
+
+int nixio__mgw_inet_pton (int af, const char *src, void *dst);
+#define inet_pton nixio__mgw_inet_pton
+
+
+#ifndef POLLIN
+#define POLLIN 0x001
+#define POLLOUT        0x004
+#define POLLERR 0x008
+struct pollfd {
+   int   fd;
+   short events;
+   short revents;
+};
+#endif
+
+typedef int nfds_t;
+int nixio__mgw_poll(struct pollfd *fds, nfds_t nfds, int timeout);
+#define poll nixio__mgw_poll
+
+
+struct timespec {
+      time_t tv_sec;
+      long   tv_nsec;
+};
+
+int nixio__mgw_nanosleep(const struct timespec *req, struct timespec *rem);
+#define nanosleep nixio__mgw_nanosleep
+
+
+char* nixio__mgw_realpath(const char *path, char *resolved);
+#define realpath nixio__mgw_realpath
+
+
+int nixio__mgw_link(const char *oldpath, const char *newpath);
+#define link nixio__mgw_link
+
+
+int nixio__mgw_utimes(const char *filename, const struct timeval times[2]);
+#define utimes nixio__mgw_utimes
+
+
+#define setenv(k, v, o) !SetEnvironmentVariable(k, v)
+#define unsetenv(k) !SetEnvironmentVariable(k, NULL)
+
+#define execv(p, a) execv(p, (const char* const*)a)
+#define execvp(p, a) execvp(p, (const char* const*)a)
+#define execve(p, a, e) execve(p, (const char* const*)a, (const char* const*)e)
+
+#define mkdir(p, m) mkdir(p)
+
+
+#define nixio__perror_s(L) \
+       errno = WSAGetLastError(); \
+       return nixio__perror(L);
+
+#define nixio__pstatus_s(L, c) \
+       errno = WSAGetLastError(); \
+       return nixio__pstatus(L, c);
+
+
+
+#define NIXIO_WSA_CONSTANT(x) \
+       lua_pushinteger(L, x); \
+       lua_setfield(L, -2, #x+3);
+
+void nixio_open__mingw(lua_State *L);
+
+#endif /* NIXIO_MINGW_COMPAT_H_ */
diff --git a/package/luci/libs/luci-lib-nixio/src/nixio-tls.h b/package/luci/libs/luci-lib-nixio/src/nixio-tls.h
new file mode 100644 (file)
index 0000000..0fac5a9
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef NIXIO_TLS_H_
+#define NIXIO_TLS_H_
+
+#include "nixio.h"
+#include <sys/types.h>
+
+#ifndef WITHOUT_OPENSSL
+#include <openssl/ssl.h>
+#include <openssl/md5.h>
+#include <openssl/sha.h>
+#endif
+
+#define NIXIO_TLS_CTX_META "nixio.tls.ctx"
+#define NIXIO_TLS_SOCK_META "nixio.tls.sock"
+
+typedef struct nixio_tls_socket {
+       SSL             *socket;
+#ifdef WITH_AXTLS
+       char    connected;
+       size_t  pbufsiz;
+       char    *pbufpos;
+       char    *pbuffer;
+#endif
+} nixio_tls_sock;
+
+#define NIXIO_CRYPTO_HASH_META "nixio.crypto.hash"
+#define NIXIO_DIGEST_SIZE 64
+#define NIXIO_CRYPTO_BLOCK_SIZE 64
+
+#define NIXIO_HASH_NONE        0
+#define NIXIO_HASH_MD5 0x01
+#define NIXIO_HASH_SHA1        0x02
+
+#define NIXIO_HMAC_BIT 0x40
+
+typedef int(*nixio_hash_initcb)(void *);
+typedef int(*nixio_hash_updatecb)(void *, const void *, unsigned long);
+typedef int(*nixio_hash_finalcb)(unsigned char *, void *);
+
+typedef struct nixio_hash_obj {
+       uint                            type;
+       unsigned char           digest[NIXIO_DIGEST_SIZE];
+       size_t                          digest_size;
+       unsigned char           key[NIXIO_CRYPTO_BLOCK_SIZE];
+       size_t                          key_size;
+       size_t                          block_size;
+       void                            *ctx;
+       nixio_hash_initcb       init;
+       nixio_hash_updatecb     update;
+       nixio_hash_finalcb      final;
+} nixio_hash;
+
+#endif /* NIXIO_TLS_H_ */
diff --git a/package/luci/libs/luci-lib-nixio/src/nixio.c b/package/luci/libs/luci-lib-nixio/src/nixio.c
new file mode 100644 (file)
index 0000000..ae81c6f
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <signal.h>
+
+#define VERSION 0.4
+
+
+/* pushes nil, error number and errstring on the stack */
+int nixio__perror(lua_State *L) {
+       if (errno == EAGAIN || errno == EWOULDBLOCK) {
+               lua_pushboolean(L, 0);
+       } else {
+               lua_pushnil(L);
+       }
+    lua_pushinteger(L, errno);
+    lua_pushstring(L, strerror(errno));
+    return 3;
+}
+
+/* pushes true, if operation succeeded, otherwise call nixio__perror */
+int nixio__pstatus(lua_State *L, int condition) {
+       if (condition) {
+               lua_pushboolean(L, 1);
+               return 1;
+       } else {
+               return nixio__perror(L);
+       }
+}
+
+/* checks whether the first argument is a socket and returns it */
+nixio_sock* nixio__checksock(lua_State *L) {
+    nixio_sock *sock = (nixio_sock*)luaL_checkudata(L, 1, NIXIO_META);
+    luaL_argcheck(L, sock->fd != -1, 1, "invalid socket object");
+    return sock;
+}
+
+/* read fd from nixio_sock object */
+int nixio__checksockfd(lua_State *L) {
+       return nixio__checksock(L)->fd;
+}
+
+/* return any possible fd, otherwise error out */
+int nixio__checkfd(lua_State *L, int ud) {
+       int fd = nixio__tofd(L, ud);
+       return (fd != -1) ? fd : luaL_argerror(L, ud, "invalid file descriptor");
+}
+
+/* return any possible fd */
+int nixio__tofd(lua_State *L, int ud) {
+       void *udata = lua_touserdata(L, ud);
+       int fd = -1;
+       if (lua_getmetatable(L, ud)) {
+               luaL_getmetatable(L, NIXIO_META);
+               luaL_getmetatable(L, NIXIO_FILE_META);
+               luaL_getmetatable(L, LUA_FILEHANDLE);
+               if (lua_rawequal(L, -3, -4)) {
+                       fd = ((nixio_sock*)udata)->fd;
+               } else if (lua_rawequal(L, -2, -4)) {
+                       fd = *((int*)udata);
+               } else if (lua_rawequal(L, -1, -4)) {
+                       fd = (*((FILE **)udata)) ? fileno(*((FILE **)udata)) : -1;
+               }
+               lua_pop(L, 4);
+       }
+       return fd;
+}
+
+/* An empty iterator */
+int nixio__nulliter(lua_State *L) {
+       lua_pushnil(L);
+       return 1;
+}
+
+static int nixio_errno(lua_State *L) {
+       lua_pushinteger(L, errno);
+       return 1;
+}
+
+static int nixio_strerror(lua_State *L) {
+       lua_pushstring(L, strerror(luaL_checkinteger(L, 1)));
+       return 1;
+}
+
+/* object table */
+static const luaL_reg R[] = {
+       {"errno",               nixio_errno},
+       {"strerror",    nixio_strerror},
+       {NULL,                  NULL}
+};
+
+/* entry point */
+NIXIO_API int luaopen_nixio(lua_State *L) {
+       /* create metatable */
+       luaL_newmetatable(L, NIXIO_META);
+
+       /* metatable.__index = metatable */
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+
+       /* register module */
+       luaL_register(L, "nixio", R);
+
+       /* register metatable as socket_meta */
+       lua_pushvalue(L, -2);
+       lua_setfield(L, -2, "meta_socket");
+
+       /* register methods */
+#ifdef __WINNT__
+       nixio_open__mingw(L);
+#endif
+       nixio_open_file(L);
+       nixio_open_socket(L);
+       nixio_open_sockopt(L);
+       nixio_open_bind(L);
+       nixio_open_address(L);
+       nixio_open_protoent(L);
+       nixio_open_poll(L);
+       nixio_open_io(L);
+       nixio_open_splice(L);
+       nixio_open_process(L);
+       nixio_open_syslog(L);
+       nixio_open_bit(L);
+       nixio_open_bin(L);
+       nixio_open_fs(L);
+       nixio_open_user(L);
+
+#ifndef NO_TLS
+       nixio_open_tls_crypto(L);
+       nixio_open_tls_context(L);
+       nixio_open_tls_socket(L);
+#endif
+
+       /* module version */
+       lua_pushinteger(L, VERSION);
+       lua_setfield(L, -2, "version");
+
+       /* some constants */
+       lua_newtable(L);
+
+       lua_pushliteral(L, NIXIO_SEP);
+       lua_setfield(L, -2, "sep");
+
+       lua_pushliteral(L, NIXIO_PATHSEP);
+       lua_setfield(L, -2, "pathsep");
+
+       lua_pushinteger(L, NIXIO_BUFFERSIZE);
+       lua_setfield(L, -2, "buffersize");
+
+       NIXIO_PUSH_CONSTANT(EACCES);
+       NIXIO_PUSH_CONSTANT(EINTR);
+       NIXIO_PUSH_CONSTANT(ENOSYS);
+       NIXIO_PUSH_CONSTANT(EINVAL);
+       NIXIO_PUSH_CONSTANT(EAGAIN);
+       NIXIO_PUSH_CONSTANT(ENOMEM);
+       NIXIO_PUSH_CONSTANT(ENOENT);
+       NIXIO_PUSH_CONSTANT(ECHILD);
+       NIXIO_PUSH_CONSTANT(EIO);
+       NIXIO_PUSH_CONSTANT(EBADF);
+       NIXIO_PUSH_CONSTANT(EFAULT);
+       NIXIO_PUSH_CONSTANT(EFBIG);
+       NIXIO_PUSH_CONSTANT(ENOSPC);
+       NIXIO_PUSH_CONSTANT(EPIPE);
+       NIXIO_PUSH_CONSTANT(ESPIPE);
+       NIXIO_PUSH_CONSTANT(EISDIR);
+       NIXIO_PUSH_CONSTANT(EPERM);
+       NIXIO_PUSH_CONSTANT(EEXIST);
+       NIXIO_PUSH_CONSTANT(EMFILE);
+       NIXIO_PUSH_CONSTANT(ENAMETOOLONG);
+       NIXIO_PUSH_CONSTANT(ENFILE);
+       NIXIO_PUSH_CONSTANT(ENODEV);
+       NIXIO_PUSH_CONSTANT(EXDEV);
+       NIXIO_PUSH_CONSTANT(ENOTDIR);
+       NIXIO_PUSH_CONSTANT(ENXIO);
+       NIXIO_PUSH_CONSTANT(EROFS);
+       NIXIO_PUSH_CONSTANT(EBUSY);
+       NIXIO_PUSH_CONSTANT(ESRCH);
+       NIXIO_PUSH_CONSTANT(SIGINT);
+       NIXIO_PUSH_CONSTANT(SIGTERM);
+       NIXIO_PUSH_CONSTANT(SIGSEGV);
+
+#ifndef __WINNT__
+       NIXIO_PUSH_CONSTANT(EALREADY);
+       NIXIO_PUSH_CONSTANT(EINPROGRESS);
+       NIXIO_PUSH_CONSTANT(EWOULDBLOCK);
+       NIXIO_PUSH_CONSTANT(ELOOP);
+       NIXIO_PUSH_CONSTANT(EOVERFLOW);
+       NIXIO_PUSH_CONSTANT(ETXTBSY);
+       NIXIO_PUSH_CONSTANT(EAFNOSUPPORT);
+       NIXIO_PUSH_CONSTANT(ENOBUFS);
+       NIXIO_PUSH_CONSTANT(EPROTONOSUPPORT);
+       NIXIO_PUSH_CONSTANT(ENOPROTOOPT);
+       NIXIO_PUSH_CONSTANT(EADDRINUSE);
+       NIXIO_PUSH_CONSTANT(ENETDOWN);
+       NIXIO_PUSH_CONSTANT(ENETUNREACH);
+
+       NIXIO_PUSH_CONSTANT(SIGALRM);
+       NIXIO_PUSH_CONSTANT(SIGKILL);
+       NIXIO_PUSH_CONSTANT(SIGHUP);
+       NIXIO_PUSH_CONSTANT(SIGSTOP);
+       NIXIO_PUSH_CONSTANT(SIGCONT);
+       NIXIO_PUSH_CONSTANT(SIGCHLD);
+       NIXIO_PUSH_CONSTANT(SIGQUIT);
+       NIXIO_PUSH_CONSTANT(SIGUSR1);
+       NIXIO_PUSH_CONSTANT(SIGUSR2);
+       NIXIO_PUSH_CONSTANT(SIGIO);
+       NIXIO_PUSH_CONSTANT(SIGURG);
+       NIXIO_PUSH_CONSTANT(SIGPIPE);
+
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -3, "const_sock");
+
+       signal(SIGPIPE, SIG_IGN);
+#endif /* !__WINNT__ */
+       lua_setfield(L, -2, "const");
+
+       /* remove meta table */
+       lua_remove(L, -2);
+
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/nixio.h b/package/luci/libs/luci-lib-nixio/src/nixio.h
new file mode 100644 (file)
index 0000000..8802e92
--- /dev/null
@@ -0,0 +1,133 @@
+#ifndef NIXIO_H_
+#define NIXIO_H_
+
+#define NIXIO_OOM "out of memory"
+
+#define NIXIO_META "nixio.socket"
+#define NIXIO_FILE_META "nixio.file"
+#define NIXIO_GLOB_META "nixio.glob"
+#define NIXIO_DIR_META "nixio.dir"
+#define _FILE_OFFSET_BITS 64
+
+#define NIXIO_PUSH_CONSTANT(x) \
+       lua_pushinteger(L, x); \
+       lua_setfield(L, -2, #x);
+
+/* uClibc: broken as always */
+#define _LARGEFILE_SOURCE
+
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+#include <luaconf.h>
+
+#define NIXIO_BUFFERSIZE 8192
+
+typedef struct nixio_socket {
+       int fd;
+       int domain;
+       int type;
+       int protocol;
+} nixio_sock;
+
+typedef struct nixio_address {
+       int family;
+       char host[128];
+       int port;
+       int prefix;
+} nixio_addr;
+
+int nixio__perror(lua_State *L);
+int nixio__pstatus(lua_State *L, int condition);
+
+#if defined(LUA_NUMBER_DOUBLE) || defined(LNUM_DOUBLE) || defined(LNUM_LDOUBLE)
+#define NIXIO_DOUBLE 1
+#define nixio__checknumber luaL_checknumber
+#define nixio__pushnumber  lua_pushnumber
+#define nixio__optnumber   luaL_optnumber
+#else
+#define nixio__checknumber luaL_checkinteger
+#define nixio__pushnumber  lua_pushinteger
+#define nixio__optnumber   luaL_optinteger
+#endif
+
+
+#ifndef __WINNT__
+
+#define NIXIO_API extern
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <sys/un.h>
+#include <netdb.h>
+#include <poll.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+#define NIXIO_SEP "/"
+#define NIXIO_PATHSEP ":"
+
+#define nixio__perror_s nixio__perror
+#define nixio__pstatus_s nixio__pstatus
+
+int nixio__check_group(lua_State *L, int idx);
+int nixio__check_user(lua_State *L, int idx);
+
+typedef struct stat nixio_stat_t;
+
+#else /* __WINNT__ */
+
+#define NIXIO_API extern __declspec(dllexport)
+#define NIXIO_SEP "\\"
+#define NIXIO_PATHSEP ";"
+#include "mingw-compat.h"
+
+typedef struct _stati64 nixio_stat_t;
+
+#endif
+
+nixio_sock* nixio__checksock(lua_State *L);
+int nixio__checksockfd(lua_State *L);
+int nixio__checkfd(lua_State *L, int ud);
+int nixio__tofd(lua_State *L, int ud);
+int nixio__nulliter(lua_State *L);
+
+int nixio__addr_parse(nixio_addr *addr, struct sockaddr *saddr);
+int nixio__addr_write(nixio_addr *addr, struct sockaddr *saddr);
+
+int nixio__check_mode(lua_State *L, int idx, int def);
+int nixio__mode_write(int mode, char *modestr);
+
+int nixio__push_stat(lua_State *L, nixio_stat_t *buf);
+
+const char nixio__bin2hex[16];
+
+/* Module functions */
+void nixio_open_file(lua_State *L);
+void nixio_open_socket(lua_State *L);
+void nixio_open_sockopt(lua_State *L);
+void nixio_open_bind(lua_State *L);
+void nixio_open_address(lua_State *L);
+void nixio_open_protoent(lua_State *L);
+void nixio_open_poll(lua_State *L);
+void nixio_open_io(lua_State *L);
+void nixio_open_splice(lua_State *L);
+void nixio_open_process(lua_State *L);
+void nixio_open_syslog(lua_State *L);
+void nixio_open_bit(lua_State *L);
+void nixio_open_bin(lua_State *L);
+void nixio_open_fs(lua_State *L);
+void nixio_open_user(lua_State *L);
+
+#ifndef NO_TLS
+void nixio_open_tls_crypto(lua_State *L);
+void nixio_open_tls_context(lua_State *L);
+void nixio_open_tls_socket(lua_State *L);
+#endif
+
+/* Method functions */
+
+#endif /* NIXIO_H_ */
diff --git a/package/luci/libs/luci-lib-nixio/src/poll.c b/package/luci/libs/luci-lib-nixio/src/poll.c
new file mode 100644 (file)
index 0000000..1211bc7
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <time.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+
+static int nixio_gettimeofday(lua_State *L) {
+       struct timeval tv;
+       gettimeofday(&tv, NULL);
+       nixio__pushnumber(L, tv.tv_sec);
+       nixio__pushnumber(L, tv.tv_usec);
+       return 2;
+}
+
+
+/**
+ * nanosleep()
+ */
+static int nixio_nanosleep(lua_State *L) {
+       struct timespec req, rem;
+       req.tv_sec = luaL_optint(L, 1, 0);
+       req.tv_nsec = luaL_optint(L, 2, 0);
+
+       int status = nanosleep(&req, &rem);
+       if (!status) {
+               lua_pushboolean(L, 1);
+               return 1;
+       } else {
+               if (errno == EINTR) {
+                       lua_pushboolean(L, 0);
+                       lua_pushinteger(L, rem.tv_sec);
+                       lua_pushinteger(L, rem.tv_nsec);
+                       return 3;
+               } else {
+                       return nixio__perror(L);
+               }
+       }
+}
+
+/**
+ * Checks whether a flag is set in the bitmap and sets the matching table value
+ */
+static void nixio_poll_flags__r(lua_State *L, int *map, int f, const char *t) {
+       lua_pushstring(L, t);
+       if (*map & f) {
+               lua_pushboolean(L, 1);
+       } else {
+               lua_pushnil(L);
+       }
+       lua_rawset(L, -3);
+}
+
+/**
+ * Translate integer to poll flags and vice versa
+ */
+static int nixio_poll_flags(lua_State *L) {
+       int flags;
+       if (lua_isnumber(L, 1)) {
+               flags = luaL_checkinteger(L, 1);
+               lua_newtable(L);
+               nixio_poll_flags__r(L, &flags, POLLIN, "in");
+               nixio_poll_flags__r(L, &flags, POLLOUT, "out");
+               nixio_poll_flags__r(L, &flags, POLLERR, "err");
+#ifndef __WINNT__
+               nixio_poll_flags__r(L, &flags, POLLPRI, "pri");
+               nixio_poll_flags__r(L, &flags, POLLHUP, "hup");
+               nixio_poll_flags__r(L, &flags, POLLNVAL, "nval");
+#endif
+        } else {
+               flags = 0;
+               const int j = lua_gettop(L);
+               for (int i=1; i<=j; i++) {
+                       const char *flag = luaL_checkstring(L, i);
+                       if (!strcmp(flag, "in")) {
+                               flags |= POLLIN;
+                       } else if (!strcmp(flag, "out")) {
+                               flags |= POLLOUT;
+                       } else if (!strcmp(flag, "err")) {
+                               flags |= POLLERR;
+                       } else if (!strcmp(flag, "pri")) {
+#ifndef __WINNT__
+                               flags |= POLLPRI;
+#endif
+                       } else if (!strcmp(flag, "hup")) {
+#ifndef __WINNT__
+                               flags |= POLLHUP;
+#endif
+                       } else if (!strcmp(flag, "nval")) {
+#ifndef __WINNT__
+                               flags |= POLLNVAL;
+#endif
+                       } else {
+                               return luaL_argerror(L, i,
+                                "supported values: in, pri, out, err, hup, nval");
+                       }
+               }
+               lua_pushinteger(L, flags);
+       }
+       return 1;
+}
+
+/**
+ * poll({{fd = socket, events = FLAGS}, ...}, timeout)
+ */
+static int nixio_poll(lua_State *L) {
+       int len = lua_objlen(L, 1);
+       int i, fd;
+       int timeout = luaL_optint(L, 2, 0);
+       int status = -1;
+
+       /* we are being abused as sleep() replacement... */
+       if (lua_isnoneornil(L, 1) || len < 1) {
+               if (!poll(NULL, 0, timeout)) {
+                       lua_pushinteger(L, 0);
+                       return 1;
+               } else {
+                       return nixio__perror(L);
+               }
+       }
+
+       luaL_checktype(L, 1, LUA_TTABLE);
+       struct pollfd *fds = calloc(len, sizeof(struct pollfd));
+       if (!fds) {
+               return luaL_error(L, NIXIO_OOM);
+       }
+
+       for (i = 0; i < len; i++) {
+               lua_rawgeti(L, 1, i+1);
+               if (!lua_istable(L, -1)) {
+                       free(fds);
+                       return luaL_argerror(L, 1, "invalid datastructure");
+               }
+
+               lua_pushliteral(L, "fd");
+               lua_rawget(L, -2);
+               fd = nixio__tofd(L, -1);
+               if (fd == -1) {
+                       free(fds);
+                       return luaL_argerror(L, 1, "invalid fd in datastructure");
+               }
+               fds[i].fd = fd;
+
+               lua_pushliteral(L, "events");
+               lua_rawget(L, -3);
+               fds[i].events = (short)lua_tointeger(L, -1);
+
+               lua_pop(L, 3);
+       }
+
+       status = poll(fds, (nfds_t)len, timeout);
+
+       if (status == 0) {
+               free(fds);
+               lua_pushboolean(L, 0);
+               return 1;
+       } else if (status < 0) {
+               free(fds);
+               return nixio__perror(L);
+       }
+
+       for (i = 0; i < len; i++) {
+               lua_rawgeti(L, 1, i+1);
+
+               lua_pushliteral(L, "revents");
+               lua_pushinteger(L, fds[i].revents);
+               lua_rawset(L, -3);
+
+               lua_pop(L, 1);
+       }
+
+       free(fds);
+
+       lua_pushinteger(L, status);
+       lua_pushvalue(L, 1);
+
+       return 2;
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"gettimeofday", nixio_gettimeofday},
+       {"nanosleep",   nixio_nanosleep},
+       {"poll",                nixio_poll},
+       {"poll_flags",  nixio_poll_flags},
+       {NULL,                  NULL}
+};
+
+void nixio_open_poll(lua_State *L) {
+       luaL_register(L, NULL, R);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/process.c b/package/luci/libs/luci-lib-nixio/src/process.c
new file mode 100644 (file)
index 0000000..5ae9b82
--- /dev/null
@@ -0,0 +1,450 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#define NIXIO_EXECVE   0x01
+#define NIXIO_EXECV            0x02
+#define NIXIO_EXECVP   0x03
+
+int nixio__exec(lua_State *L, int m) {
+       const char *path = luaL_checkstring(L, 1);
+       const char *arg;
+       int argn, i;
+
+       if (m == NIXIO_EXECVE) {
+               luaL_checktype(L, 2, LUA_TTABLE);
+               argn = lua_objlen(L, 2) + 1;
+       } else {
+               argn = lua_gettop(L);
+       }
+
+       char **args = lua_newuserdata(L, sizeof(char*) * (argn + 1));
+       args[argn] = NULL;
+       args[0] = (char *)path;
+
+       if (m == NIXIO_EXECVE) {
+               for (i = 1; i < argn; i++) {
+                       lua_rawgeti(L, 2, i);
+                       arg = lua_tostring(L, -1);
+                       luaL_argcheck(L, arg, 2, "invalid argument");
+                       args[i] = (char *)arg;
+               }
+
+               if (lua_isnoneornil(L, 3)) {
+                       execv(path, args);
+               } else {
+                       luaL_checktype(L, 3, LUA_TTABLE);
+                       argn = 0;
+                       lua_pushnil(L);
+                       while (lua_next(L, 3)) {
+                               if (!lua_checkstack(L, 1)) {
+                                       lua_settop(L, 0);
+                                       return luaL_error(L, "stack overflow");
+                               }
+
+                               if (lua_type(L, -2) != LUA_TSTRING || !lua_isstring(L, -1)) {
+                                       return luaL_argerror(L, 3, "invalid environment");
+                               }
+
+                               lua_pushfstring(L, "%s=%s",
+                                               lua_tostring(L, -2), lua_tostring(L, -1));
+
+                               lua_insert(L, 5);
+                               lua_pop(L, 1);
+                               argn++;
+                       }
+
+                       char **env = lua_newuserdata(L, sizeof(char*) * (argn + 1));
+                       env[argn] = NULL;
+
+                       for (i = 1; i <= argn; i++) {
+                               env[i-1] = (char *)lua_tostring(L, -(i+1));
+                       }
+
+                       execve(path, args, env);
+               }
+       } else {
+               for (i = 2; i <= argn; i++) {
+                       arg = luaL_checkstring(L, i);
+                       args[i-1] = (char *)arg;
+               }
+
+               if (m == NIXIO_EXECV) {
+                       execv(path, args);
+               } else {
+                       execvp(path, args);
+               }
+       }
+
+       return nixio__perror(L);
+}
+
+#ifndef __WINNT__
+#include <sys/utsname.h>
+#include <sys/times.h>
+#include <sys/wait.h>
+#include <pwd.h>
+#include <grp.h>
+
+static int nixio_fork(lua_State *L) {
+       pid_t pid = fork();
+       if (pid == -1) {
+               return nixio__perror(L);
+       } else {
+               lua_pushinteger(L, pid);
+               return 1;
+       }
+}
+
+static int nixio_kill(lua_State *L) {
+       return nixio__pstatus(L, !kill(luaL_checkint(L, 1), luaL_checkint(L, 2)));
+}
+
+static int nixio_getppid(lua_State *L) {
+       lua_pushinteger(L, getppid());
+       return 1;
+}
+
+static int nixio_getuid(lua_State *L) {
+       lua_pushinteger(L, getuid());
+       return 1;
+}
+
+static int nixio_getgid(lua_State *L) {
+       lua_pushinteger(L, getgid());
+       return 1;
+}
+
+static int nixio_setgid(lua_State *L) {
+       return nixio__pstatus(L, !setgid(nixio__check_group(L, 1)));
+}
+
+static int nixio_setuid(lua_State *L) {
+       return nixio__pstatus(L, !setuid(nixio__check_user(L, 1)));
+}
+
+static int nixio_nice(lua_State *L) {
+       int nval = luaL_checkint(L, 1);
+
+       errno = 0;
+       nval = nice(nval);
+
+       if (nval == -1 && errno) {
+               return nixio__perror(L);
+       } else {
+               lua_pushinteger(L, nval);
+               return 1;
+       }
+}
+
+static int nixio_setsid(lua_State *L) {
+       pid_t pid = setsid();
+
+       if (pid == -1) {
+               return nixio__perror(L);
+       } else {
+               lua_pushinteger(L, pid);
+               return 1;
+       }
+}
+
+static int nixio_wait(lua_State *L) {
+       pid_t pidin = luaL_optinteger(L, 1, -1), pidout;
+       int options = 0, status;
+
+       const int j = lua_gettop(L);
+       for (int i=2; i<=j; i++) {
+               const char *flag = luaL_checkstring(L, i);
+               if (!strcmp(flag, "nohang")) {
+                       options |= WNOHANG;
+               } else if (!strcmp(flag, "untraced")) {
+                       options |= WUNTRACED;
+               } else if (!strcmp(flag, "continued")) {
+                       options |= WCONTINUED;
+               } else {
+                       return luaL_argerror(L, i,
+                                       "supported values: nohang, untraced, continued");
+               }
+       }
+
+       do {
+               pidout = waitpid(pidin, &status, options);
+       } while (pidout == -1 && errno == EINTR);
+
+       if (pidout == 0) {
+               lua_pushboolean(L, 0);
+               return 1;
+       } else if (pidout == -1) {
+               return nixio__perror(L);
+       } else {
+               lua_pushinteger(L, pidout);
+       }
+
+       if (WIFEXITED(status)) {
+               lua_pushliteral(L, "exited");
+               lua_pushinteger(L, WEXITSTATUS(status));
+    } else if (WIFSIGNALED(status)) {
+       lua_pushliteral(L, "signaled");
+       lua_pushinteger(L, WTERMSIG(status));
+    } else if (WIFSTOPPED(status)) {
+       lua_pushliteral(L, "stopped");
+       lua_pushinteger(L, WSTOPSIG(status));
+    } else {
+       return 1;
+    }
+
+    return 3;
+}
+
+static int nixio_times(lua_State *L) {
+       struct tms buf;
+       if (times(&buf) == -1) {
+               return nixio__perror(L);
+       } else {
+               lua_createtable(L, 0, 4);
+               nixio__pushnumber(L, buf.tms_cstime);
+               lua_setfield(L, -2, "cstime");
+
+               nixio__pushnumber(L, buf.tms_cutime);
+               lua_setfield(L, -2, "cutime");
+
+               nixio__pushnumber(L, buf.tms_stime);
+               lua_setfield(L, -2, "stime");
+
+               nixio__pushnumber(L, buf.tms_utime);
+               lua_setfield(L, -2, "utime");
+
+               return 1;
+       }
+}
+
+static int nixio_uname(lua_State *L) {
+       struct utsname buf;
+       if (uname(&buf)) {
+               return nixio__perror(L);
+       }
+
+       lua_createtable(L, 0, 5);
+
+       lua_pushstring(L, buf.machine);
+       lua_setfield(L, -2, "machine");
+
+       lua_pushstring(L, buf.version);
+       lua_setfield(L, -2, "version");
+
+       lua_pushstring(L, buf.release);
+       lua_setfield(L, -2, "release");
+
+       lua_pushstring(L, buf.nodename);
+       lua_setfield(L, -2, "nodename");
+
+       lua_pushstring(L, buf.sysname);
+       lua_setfield(L, -2, "sysname");
+
+       return 1;
+}
+
+#endif /* !__WINNT__ */
+
+static int nixio_chdir(lua_State *L) {
+       return nixio__pstatus(L, !chdir(luaL_checkstring(L, 1)));
+}
+
+static int nixio_signal(lua_State *L) {
+       int sig = luaL_checkinteger(L, 1);
+       const char *val = luaL_checkstring(L, 2);
+
+       if (!strcmp(val, "ign") || !strcmp(val, "ignore")) {
+               return nixio__pstatus(L, signal(sig, SIG_IGN) != SIG_ERR);
+       } else if (!strcmp(val, "dfl") || !strcmp(val, "default")) {
+               return nixio__pstatus(L, signal(sig, SIG_DFL) != SIG_ERR);
+       } else {
+               return luaL_argerror(L, 2, "supported values: ign, dfl");
+       }
+}
+
+static int nixio_getpid(lua_State *L) {
+       lua_pushinteger(L, getpid());
+       return 1;
+}
+
+static int nixio_getenv(lua_State *L) {
+       const char *key = luaL_optstring(L, 1, NULL);
+       if (key) {
+               const char *val = getenv(key);
+               if (val) {
+                       lua_pushstring(L, val);
+               } else {
+                       lua_pushnil(L);
+               }
+       } else {
+               lua_newtable(L);
+               extern char **environ;
+               for (char **c = environ; *c; c++) {
+                       const char *delim = strchr(*c, '=');
+                       if (!delim) {
+                               return luaL_error(L, "invalid environment");
+                       }
+                       lua_pushlstring(L, *c, delim-*c);
+                       lua_pushstring(L, delim + 1);
+                       lua_rawset(L, -3);
+               }
+       }
+       return 1;
+}
+
+static int nixio_setenv(lua_State *L) {
+       const char *key = luaL_checkstring(L, 1);
+       const char *val = luaL_optstring(L, 2, NULL);
+       return nixio__pstatus(L, (val) ? !setenv(key, val, 1) : !unsetenv(key));
+}
+
+static int nixio_exec(lua_State *L) {
+       return nixio__exec(L, NIXIO_EXECV);
+}
+
+static int nixio_execp(lua_State *L) {
+       return nixio__exec(L, NIXIO_EXECVP);
+}
+
+static int nixio_exece(lua_State *L) {
+       return nixio__exec(L, NIXIO_EXECVE);
+}
+
+static int nixio_getcwd(lua_State *L) {
+       char path[PATH_MAX];
+
+       if (getcwd(path, sizeof(path))) {
+               lua_pushstring(L, path);
+               return 1;
+       } else {
+               return nixio__perror(L);
+       }
+}
+
+static int nixio_umask(lua_State *L) {
+       char mask[9];
+       lua_pushinteger(L,
+                       nixio__mode_write(umask(nixio__check_mode(L, 1, -1)), mask));
+       lua_pushlstring(L, mask, 9);
+       return 2;
+}
+
+#ifdef __linux__
+
+#include <sys/sysinfo.h>
+
+static int nixio_sysinfo(lua_State *L) {
+       struct sysinfo info;
+       if (sysinfo(&info)) {
+               return nixio__perror(L);
+       }
+
+       lua_createtable(L, 0, 12);
+
+       nixio__pushnumber(L, info.bufferram);
+       lua_setfield(L, -2, "bufferram");
+
+       nixio__pushnumber(L, info.freehigh);
+       lua_setfield(L, -2, "freehigh");
+
+       nixio__pushnumber(L, info.freeram);
+       lua_setfield(L, -2, "freeram");
+
+       nixio__pushnumber(L, info.freeswap);
+       lua_setfield(L, -2, "freeswap");
+
+       lua_createtable(L, 0, 3);
+       for (int i=0; i<3; i++) {
+               lua_pushnumber(L, info.loads[i] / 65536.);
+               lua_rawseti(L, -2, i+1);
+       }
+       lua_setfield(L, -2, "loads");
+
+       lua_pushinteger(L, info.mem_unit);
+       lua_setfield(L, -2, "mem_unit");
+
+       lua_pushinteger(L, info.procs);
+       lua_setfield(L, -2, "procs");
+
+       nixio__pushnumber(L, info.sharedram);
+       lua_setfield(L, -2, "sharedram");
+
+       nixio__pushnumber(L, info.totalhigh);
+       lua_setfield(L, -2, "totalhigh");
+
+       nixio__pushnumber(L, info.totalram);
+       lua_setfield(L, -2, "totalram");
+
+       nixio__pushnumber(L, info.totalswap);
+       lua_setfield(L, -2, "totalswap");
+
+       lua_pushinteger(L, info.uptime);
+       lua_setfield(L, -2, "uptime");
+
+       return 1;
+}
+
+#endif
+
+
+/* module table */
+static const luaL_reg R[] = {
+#ifdef __linux__
+       {"sysinfo",             nixio_sysinfo},
+#endif
+#ifndef __WINNT__
+       {"fork",                nixio_fork},
+       {"kill",                nixio_kill},
+       {"nice",                nixio_nice},
+       {"getppid",             nixio_getppid},
+       {"getuid",              nixio_getuid},
+       {"getgid",              nixio_getgid},
+       {"setuid",              nixio_setuid},
+       {"setgid",              nixio_setgid},
+       {"setsid",              nixio_setsid},
+       {"wait",                nixio_wait},
+       {"waitpid",             nixio_wait},
+       {"times",               nixio_times},
+       {"uname",               nixio_uname},
+#endif
+       {"chdir",               nixio_chdir},
+       {"signal",              nixio_signal},
+       {"getpid",              nixio_getpid},
+       {"getenv",              nixio_getenv},
+       {"setenv",              nixio_setenv},
+       {"putenv",              nixio_setenv},
+       {"exec",                nixio_exec},
+       {"execp",               nixio_execp},
+       {"exece",               nixio_exece},
+       {"getcwd",              nixio_getcwd},
+       {"umask",               nixio_umask},
+       {NULL,                  NULL}
+};
+
+void nixio_open_process(lua_State *L) {
+       luaL_register(L, NULL, R);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/protoent.c b/package/luci/libs/luci-lib-nixio/src/protoent.c
new file mode 100644 (file)
index 0000000..bda68a5
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2011 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+
+#ifndef __WINNT__
+#include <netdb.h>
+#endif
+
+/**
+ * protoent conversion helper
+ */
+static int nixio__pushprotoent(lua_State *L, struct protoent *e) {
+       int i;
+       if (e) {
+               lua_newtable(L);
+
+               lua_pushstring(L, e->p_name);
+               lua_setfield(L, -2, "name");
+
+               lua_pushnumber(L, e->p_proto);
+               lua_setfield(L, -2, "proto");
+
+               lua_newtable(L);
+               for (i = 0; e->p_aliases[i]; i++) {
+                       lua_pushstring(L, e->p_aliases[i]);
+                       lua_rawseti(L, -2, i+1);
+               }
+               lua_setfield(L, -2, "aliases");
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+/**
+ * getprotobyname(name)
+ */
+static int nixio_getprotobyname(lua_State *L) {
+       const char *name = luaL_checkstring(L, 1);
+       struct protoent *res = getprotobyname(name);
+       return nixio__pushprotoent(L, res);
+}
+
+/**
+ * getprotobynumber(proto)
+ */
+static int nixio_getprotobynumber(lua_State *L) {
+       int proto = luaL_checkinteger(L, 1);
+       struct protoent *res = getprotobynumber(proto);
+       return nixio__pushprotoent(L, res);
+}
+
+/**
+ * getproto(name_or_proto)
+ */
+static int nixio_getproto(lua_State *L) {
+       int i = 1;
+       struct protoent *res;
+       if (lua_isnumber(L, 1)) {
+               return nixio_getprotobynumber(L);
+       } else if (lua_isstring(L, 1)) {
+               return nixio_getprotobyname(L);
+       } else if (lua_isnoneornil(L, 1)) {
+               setprotoent(1);
+               lua_newtable(L);
+               while ((res = getprotoent()) != NULL) {
+                       nixio__pushprotoent(L, res);
+                       lua_rawseti(L, -2, i++);
+               }
+               endprotoent();
+               return 1;
+       } else {
+               return luaL_argerror(L, 1, "supported values: <protoname>, <protonumber>");
+       }
+}
+
+/* module table */
+static const luaL_reg R[] = {
+    {"getprotobyname",         nixio_getprotobyname},
+    {"getprotobynumber",       nixio_getprotobynumber},
+    {"getproto",                       nixio_getproto},
+    {NULL,                                     NULL}
+};
+
+void nixio_open_protoent(lua_State *L) {
+    luaL_register(L, NULL, R);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/socket.c b/package/luci/libs/luci-lib-nixio/src/socket.c
new file mode 100644 (file)
index 0000000..17c6afc
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+
+/**
+ * create new socket
+ */
+static int nixio_socket(lua_State *L) {
+       const char *domain = luaL_optlstring(L, 1, "", NULL);
+       const char *type   = luaL_optlstring(L, 2, "", NULL);
+       const char *proto  = lua_tolstring(L, 3, NULL);
+
+       nixio_sock *sock = lua_newuserdata(L, sizeof(nixio_sock));
+       if (!sock) {
+               return luaL_error(L, "out of memory");
+       }
+
+       if (!strcmp(domain, "inet")) {
+               sock->domain = AF_INET;
+       } else if (!strcmp(domain, "inet6")) {
+               sock->domain = AF_INET6;
+       } else if (!strcmp(domain, "unix")) {
+               sock->domain = AF_UNIX;
+       /*} else if (!strcmp(domain, "packet")) {
+               sock->domain = AF_PACKET;*/
+       } else {
+               return luaL_argerror(L, 1,
+                "supported values: inet, inet6, unix, packet"
+               );
+       }
+
+       if (!strcmp(type, "stream")) {
+               sock->type = SOCK_STREAM;
+       } else if (!strcmp(type, "dgram")) {
+               sock->type = SOCK_DGRAM;
+       } else if (!strcmp(type, "raw")) {
+               sock->type = SOCK_RAW;
+       } else {
+               return luaL_argerror(L, 2, "supported values: stream, dgram, raw");
+       }
+
+       if (!proto) {
+               sock->protocol = 0;
+       } else if (!strcmp(proto, "icmp")) {
+               sock->protocol = IPPROTO_ICMP;
+       } else if (!strcmp(proto, "icmpv6")) {
+               sock->protocol = IPPROTO_ICMPV6;
+       } else {
+               return luaL_argerror(L, 3, "supported values: [empty], icmp, icmpv6");
+       }
+
+       /* create userdata */
+       luaL_getmetatable(L, NIXIO_META);
+       lua_setmetatable(L, -2);
+
+       sock->fd = socket(sock->domain, sock->type, sock->protocol);
+
+       if (sock->fd < 0) {
+               return nixio__perror_s(L);
+       }
+
+       return 1;
+}
+
+/**
+ * close a socket
+ */
+static int nixio_sock_close(lua_State *L) {
+       nixio_sock *sock = nixio__checksock(L);
+       int sockfd = sock->fd;
+       int res;
+       sock->fd = -1;
+
+       do {
+#ifndef __WINNT__
+               res = close(sockfd);
+#else
+               res = closesocket(sockfd);
+#endif
+       } while (res == -1 && errno == EINTR);
+
+       return nixio__pstatus_s(L, !res);
+}
+
+/**
+ * garbage collector
+ */
+static int nixio_sock__gc(lua_State *L) {
+       nixio_sock *sock = (nixio_sock*)luaL_checkudata(L, 1, NIXIO_META);
+       int res;
+       if (sock && sock->fd != -1) {
+               do {
+#ifndef __WINNT__
+                       res = close(sock->fd);
+#else
+                       res = closesocket(sock->fd);
+#endif
+               } while (res == -1 && errno == EINTR);
+       }
+       return 0;
+}
+
+/**
+ * string representation
+ */
+static int nixio_sock__tostring(lua_State *L) {
+       lua_pushfstring(L, "nixio socket %d", nixio__checksockfd(L));
+       return 1;
+}
+
+/**
+ * shutdown a socket
+ */
+static int nixio_sock_shutdown(lua_State *L) {
+       int sockfd = nixio__checksockfd(L);
+       const char *what = luaL_optlstring(L, 2, "rdwr", NULL);
+       int how;
+
+       if (!strcmp(what, "rdwr") || !strcmp(what, "both")) {
+               how = SHUT_RDWR;
+       } else if (!strcmp(what, "rd") || !strcmp(what, "read")) {
+               how = SHUT_RD;
+       } else if (!strcmp(what, "wr") || !strcmp(what, "write")) {
+               how = SHUT_WR;
+       } else {
+               return luaL_argerror(L, 2, "supported values: both, read, write");
+       }
+
+       return nixio__pstatus_s(L, !shutdown(sockfd, how));
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"socket",              nixio_socket},
+       {NULL,                  NULL}
+};
+
+/* object table */
+static const luaL_reg M[] = {
+       {"close",               nixio_sock_close},
+       {"shutdown",    nixio_sock_shutdown},
+       {"__gc",                nixio_sock__gc},
+       {"__tostring",  nixio_sock__tostring},
+       {NULL,                  NULL}
+};
+
+void nixio_open_socket(lua_State *L) {
+       luaL_register(L, NULL, R);
+
+       lua_pushvalue(L, -2);
+       luaL_register(L, NULL, M);
+       lua_pop(L, 1);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/sockopt.c b/package/luci/libs/luci-lib-nixio/src/sockopt.c
new file mode 100644 (file)
index 0000000..cede884
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+
+#ifndef __WINNT__
+#include <net/if.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#ifndef IPV6_ADD_MEMBERSHIP
+#define IPV6_ADD_MEMBERSHIP            IPV6_JOIN_GROUP
+#endif
+
+#ifndef IPV6_DROP_MEMBERSHIP
+#define IPV6_DROP_MEMBERSHIP   IPV6_LEAVE_GROUP
+#endif
+
+static int nixio_sock_fileno(lua_State *L) {
+       lua_pushinteger(L, nixio__checkfd(L, 1));
+       return 1;
+}
+
+/**
+ * setblocking()
+ */
+static int nixio_sock_setblocking(lua_State *L) {
+       int fd = nixio__checkfd(L, 1);
+       luaL_checkany(L, 2);
+       int set = lua_toboolean(L, 2);
+
+#ifndef __WINNT__
+
+       int flags = fcntl(fd, F_GETFL);
+
+       if (flags == -1) {
+               return nixio__perror(L);
+       }
+
+       if (!set) {
+               flags |= O_NONBLOCK;
+       } else {
+               flags &= ~O_NONBLOCK;
+       }
+
+       return nixio__pstatus(L, !fcntl(fd, F_SETFL, flags));
+
+#else /* __WINNT__ */
+
+       lua_getmetatable(L, 1);
+       luaL_getmetatable(L, NIXIO_META);
+       if (lua_equal(L, -1, -2)) {     /* Socket */
+               unsigned long val = !set;
+               return nixio__pstatus_s(L, !ioctlsocket(fd, FIONBIO, &val));
+       } else {                                        /* File */
+               WSASetLastError(WSAENOTSOCK);
+               return nixio__perror_s(L);
+       }
+
+#endif /* __WINNT__ */
+}
+
+static int nixio__gso_int(lua_State *L, int fd, int level, int opt, int set) {
+       int value;
+       socklen_t optlen = sizeof(value);
+       if (!set) {
+               if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) {
+                       lua_pushinteger(L, value);
+                       return 1;
+               }
+       } else {
+               value = luaL_checkinteger(L, set);
+               if (!setsockopt(fd, level, opt, (char *)&value, optlen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+static int nixio__gso_ling(lua_State *L, int fd, int level, int opt, int set) {
+       struct linger value;
+       socklen_t optlen = sizeof(value);
+       if (!set) {
+               if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) {
+                       lua_pushinteger(L, value.l_onoff ? value.l_linger : 0);
+                       return 1;
+               }
+       } else {
+               value.l_linger = luaL_checkinteger(L, set);
+               value.l_onoff = value.l_linger ? 1 : 0;
+               if (!setsockopt(fd, level, opt, (char *)&value, optlen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+static int nixio__gso_timev(lua_State *L, int fd, int level, int opt, int set) {
+       struct timeval value;
+       socklen_t optlen = sizeof(value);
+       if (!set) {
+               if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) {
+                       lua_pushinteger(L, value.tv_sec);
+                       lua_pushinteger(L, value.tv_usec);
+                       return 2;
+               }
+       } else {
+               value.tv_sec  = luaL_checkinteger(L, set);
+               value.tv_usec = luaL_optinteger(L, set + 1, 0);
+               if (!setsockopt(fd, level, opt, (char *)&value, optlen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+#ifdef SO_BINDTODEVICE
+
+static int nixio__gso_b(lua_State *L, int fd, int level, int opt, int set) {
+       if (!set) {
+               socklen_t optlen = IFNAMSIZ;
+               char ifname[IFNAMSIZ];
+               if (!getsockopt(fd, level, opt, (char *)ifname, &optlen)) {
+                       lua_pushlstring(L, ifname, optlen);
+                       return 1;
+               }
+       } else {
+               size_t valuelen;
+               const char *value = luaL_checklstring(L, set, &valuelen);
+               luaL_argcheck(L, valuelen <= IFNAMSIZ, set, "invalid interface name");
+               if (!setsockopt(fd, level, opt, (char *)value, valuelen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+#endif /* SO_BINDTODEVICE */
+
+static int nixio__gso_mreq4(lua_State *L, int fd, int level, int opt, int set) {
+       struct ip_mreq value;
+       socklen_t optlen = sizeof(value);
+       if (!set) {
+               char buf[INET_ADDRSTRLEN];
+               if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) {
+                       if (!inet_ntop(AF_INET, &value.imr_multiaddr, buf, sizeof(buf))) {
+                               return nixio__perror_s(L);
+                       }
+                       lua_pushstring(L, buf);
+                       if (!inet_ntop(AF_INET, &value.imr_interface, buf, sizeof(buf))) {
+                               return nixio__perror_s(L);
+                       }
+                       lua_pushstring(L, buf);
+                       return 2;
+               }
+       } else {
+               const char *maddr = luaL_checkstring(L, set);
+               const char *iface = luaL_optstring(L, set + 1, "0.0.0.0");
+               if (inet_pton(AF_INET, maddr, &value.imr_multiaddr) < 1) {
+                       return nixio__perror_s(L);
+               }
+               if (inet_pton(AF_INET, iface, &value.imr_interface) < 1) {
+                       return nixio__perror_s(L);
+               }
+               if (!setsockopt(fd, level, opt, (char *)&value, optlen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+static int nixio__gso_mreq6(lua_State *L, int fd, int level, int opt, int set) {
+       struct ipv6_mreq val;
+       socklen_t optlen = sizeof(val);
+       if (!set) {
+               char buf[INET_ADDRSTRLEN];
+               if (!getsockopt(fd, level, opt, (char *)&val, &optlen)) {
+                       if (!inet_ntop(AF_INET6, &val.ipv6mr_multiaddr, buf, sizeof(buf))) {
+                               return nixio__perror_s(L);
+                       }
+                       lua_pushstring(L, buf);
+                       lua_pushinteger(L, val.ipv6mr_interface);
+                       return 2;
+               }
+       } else {
+               const char *maddr = luaL_checkstring(L, set);
+               if (inet_pton(AF_INET6, maddr, &val.ipv6mr_multiaddr) < 1) {
+                       return nixio__perror_s(L);
+               }
+               val.ipv6mr_interface = luaL_optlong(L, set + 1, 0);
+               if (!setsockopt(fd, level, opt, (char *)&val, optlen)) {
+                       lua_pushboolean(L, 1);
+                       return 1;
+               }
+       }
+       return nixio__perror_s(L);
+}
+
+/**
+ * get/setsockopt() helper
+ */
+static int nixio__getsetsockopt(lua_State *L, int set) {
+       nixio_sock *sock = nixio__checksock(L);
+       const char *level = luaL_optlstring(L, 2, "", NULL);
+       const char *option = luaL_optlstring(L, 3, "", NULL);
+       set = (set) ? 4 : 0;
+
+       if (!strcmp(level, "socket")) {
+               if (!strcmp(option, "keepalive")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_KEEPALIVE, set);
+               } else if (!strcmp(option, "reuseaddr")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_REUSEADDR, set);
+               } else if (!strcmp(option, "rcvbuf")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_RCVBUF, set);
+               } else if (!strcmp(option, "sndbuf")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_SNDBUF, set);
+               } else if (!strcmp(option, "priority")) {
+#ifdef SO_PRIORITY
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_PRIORITY, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else if (!strcmp(option, "broadcast")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_BROADCAST, set);
+               } else if (!strcmp(option, "dontroute")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_DONTROUTE, set);
+               } else if (!strcmp(option, "error")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_ERROR, set);
+               } else if (!strcmp(option, "oobinline")) {
+                       return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_OOBINLINE, set);
+               } else if (!strcmp(option, "linger")) {
+                       return nixio__gso_ling(L, sock->fd, SOL_SOCKET, SO_LINGER, set);
+               } else if (!strcmp(option, "sndtimeo")) {
+                       return nixio__gso_timev(L, sock->fd, SOL_SOCKET, SO_SNDTIMEO, set);
+               } else if (!strcmp(option, "rcvtimeo")) {
+                       return nixio__gso_timev(L, sock->fd, SOL_SOCKET, SO_RCVTIMEO, set);
+               } else if (!strcmp(option, "bindtodevice")) {
+#ifdef SO_BINDTODEVICE
+                       return nixio__gso_b(L, sock->fd, SOL_SOCKET, SO_BINDTODEVICE, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else {
+                       return luaL_argerror(L, 3, "supported values: keepalive, reuseaddr,"
+                        " sndbuf, rcvbuf, priority, broadcast, linger, sndtimeo, rcvtimeo,"
+                        " dontroute, bindtodevice, error, oobinline"
+                       );
+               }
+       } else if (!strcmp(level, "tcp")) {
+               if (!strcmp(option, "cork")) {
+#ifdef TCP_CORK
+                       return nixio__gso_int(L, sock->fd, IPPROTO_TCP, TCP_CORK, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else if (!strcmp(option, "nodelay")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_TCP, TCP_NODELAY, set);
+               } else {
+                       return luaL_argerror(L, 3, "supported values: cork, nodelay");
+               }
+       } else if (!strcmp(level, "ip")) {
+               if (!strcmp(option, "mtu")) {
+#ifdef IP_MTU
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MTU, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else if (!strcmp(option, "hdrincl")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_HDRINCL,
+                                       set);
+               } else if (!strcmp(option, "multicast_loop")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MULTICAST_LOOP,
+                                       set);
+               } else if (!strcmp(option, "multicast_ttl")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MULTICAST_TTL,
+                                       set);
+               } else if (!strcmp(option, "multicast_if")) {
+                       return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_MULTICAST_IF,
+                                       set);
+               } else if (!strcmp(option, "add_membership")) {
+                       return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+                                       set);
+               } else if (!strcmp(option, "drop_membership")) {
+                       return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_DROP_MEMBERSHIP,
+                                       set);
+               } else {
+                       return luaL_argerror(L, 3,
+                               "supported values: hdrincl, mtu, multicast_loop, "
+                               "multicast_ttl, multicast_if, add_membership, drop_membership");
+               }
+       } else if (!strcmp(level, "ipv6")) {
+               if (!strcmp(option, "mtu")) {
+#ifdef IPV6_MTU
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, IPV6_MTU, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else if (!strcmp(option, "v6only")) {
+#ifdef IPV6_V6ONLY
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, IPV6_V6ONLY, set);
+#else
+                       return nixio__pstatus(L, !(errno = ENOPROTOOPT));
+#endif
+               } else if (!strcmp(option, "multicast_loop")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IPV6,
+                                       IPV6_MULTICAST_LOOP, set);
+               } else if (!strcmp(option, "multicast_hops")) {
+                       return nixio__gso_int(L, sock->fd, IPPROTO_IPV6,
+                                       IPV6_MULTICAST_HOPS, set);
+               } else if (!strcmp(option, "multicast_if")) {
+                       return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6,
+                                       IPV6_MULTICAST_IF, set);
+               } else if (!strcmp(option, "add_membership")) {
+                       return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6,
+                                       IPV6_ADD_MEMBERSHIP, set);
+               } else if (!strcmp(option, "drop_membership")) {
+                       return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6,
+                                       IPV6_DROP_MEMBERSHIP, set);
+               } else {
+                       return luaL_argerror(L, 3,
+                               "supported values: v6only, mtu, multicast_loop, multicast_hops,"
+                               " multicast_if, add_membership, drop_membership");
+               }
+       } else {
+               return luaL_argerror(L, 2, "supported values: socket, tcp, ip, ipv6");
+       }
+}
+
+/**
+ * getsockopt()
+ */
+static int nixio_sock_getsockopt(lua_State *L) {
+       return nixio__getsetsockopt(L, 0);
+}
+
+/**
+ * setsockopt()
+ */
+static int nixio_sock_setsockopt(lua_State *L) {
+       return nixio__getsetsockopt(L, 1);
+}
+
+/* module table */
+static const luaL_reg M[] = {
+       {"setblocking", nixio_sock_setblocking},
+       {"getsockopt",  nixio_sock_getsockopt},
+       {"setsockopt",  nixio_sock_setsockopt},
+       {"getopt",              nixio_sock_getsockopt},
+       {"setopt",              nixio_sock_setsockopt},
+       {"fileno",              nixio_sock_fileno},
+       {NULL,                  NULL}
+};
+
+void nixio_open_sockopt(lua_State *L) {
+       lua_pushvalue(L, -2);
+       luaL_register(L, NULL, M);
+       lua_pop(L, 1);
+
+       luaL_getmetatable(L, NIXIO_FILE_META);
+       lua_pushcfunction(L, nixio_sock_setblocking);
+       lua_setfield(L, -2, "setblocking");
+       lua_pushcfunction(L, nixio_sock_fileno);
+       lua_setfield(L, -2, "fileno");
+       lua_pop(L, 1);
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/splice.c b/package/luci/libs/luci-lib-nixio/src/splice.c
new file mode 100644 (file)
index 0000000..db63ea9
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#ifdef __linux__
+#define _GNU_SOURCE
+#endif
+
+#include "nixio.h"
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/param.h>
+
+
+#ifndef __WINNT__
+
+#ifndef BSD
+#include <sys/sendfile.h>
+#else
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/uio.h>
+#endif
+
+#ifdef _GNU_SOURCE
+#ifdef SPLICE_F_MOVE
+
+/* guess what sucks... */
+#ifdef __UCLIBC__
+#include <unistd.h>
+#include <sys/syscall.h>
+
+ssize_t splice(int __fdin, __off64_t *__offin, int __fdout,
+        __off64_t *__offout, size_t __len, unsigned int __flags) {
+#ifdef __NR_splice
+       return syscall(__NR_splice, __fdin, __offin, __fdout, __offout, __len, __flags);
+#else
+       (void)__fdin;
+       (void)__offin;
+       (void)__fdout;
+       (void)__offout;
+       (void)__len;
+       (void)__flags;
+       errno = ENOSYS;
+       return -1;
+#endif
+}
+
+#undef SPLICE_F_MOVE
+#undef SPLICE_F_NONBLOCK
+#undef SPLICE_F_MORE
+
+#define SPLICE_F_MOVE 1
+#define SPLICE_F_NONBLOCK 2
+#define SPLICE_F_MORE 4
+
+#endif /* __UCLIBC__ */
+
+/**
+ * splice(fd_in, fd_out, length, flags)
+ */
+static int nixio_splice(lua_State *L) {
+       int fd_in = nixio__checkfd(L, 1);
+       int fd_out = nixio__checkfd(L, 2);
+       size_t len = luaL_checkinteger(L, 3);
+       int flags = luaL_optinteger(L, 4, 0);
+       long spliced;
+
+       do {
+               spliced = splice(fd_in, NULL, fd_out, NULL, len, flags);
+       } while (spliced == -1 && errno == EINTR);
+
+       if (spliced < 0) {
+               return nixio__perror(L);
+       }
+
+       lua_pushinteger(L, spliced);
+       return 1;
+}
+
+/**
+ * Translate splice flags to integer
+ */
+static int nixio_splice_flags(lua_State *L) {
+       const int j = lua_gettop(L);
+       int flags = 0;
+       for (int i=1; i<=j; i++) {
+               const char *flag = luaL_checkstring(L, i);
+               if (!strcmp(flag, "move")) {
+                       flags |= SPLICE_F_MOVE;
+               } else if (!strcmp(flag, "nonblock")) {
+                       flags |= SPLICE_F_NONBLOCK;
+               } else if (!strcmp(flag, "more")) {
+                       flags |= SPLICE_F_MORE;
+               } else {
+                       return luaL_argerror(L, i, "supported values: "
+                        "move, nonblock, more");
+               }
+       }
+       lua_pushinteger(L, flags);
+
+       return 1;
+}
+
+#endif /* SPLICE_F_MOVE */
+#endif /* _GNU_SOURCE */
+
+/**
+ * sendfile(outfd, infd, length)
+ */
+static int nixio_sendfile(lua_State *L) {
+       int sock = nixio__checksockfd(L);
+       int infd = nixio__checkfd(L, 2);
+       size_t len = luaL_checkinteger(L, 3);
+       off_t spliced;
+
+#ifndef BSD
+       do {
+               spliced = sendfile(sock, infd, NULL, len);
+       } while (spliced == -1 && errno == EINTR);
+
+       if (spliced == -1) {
+               return nixio__perror(L);
+       }
+#else
+       int r;
+       const off_t offset = lseek(infd, 0, SEEK_CUR);
+
+       do {
+#ifdef __DARWIN__
+               r = sendfile(infd, sock, offset, (off_t *)&len, NULL, 0);
+               spliced = r;
+#else
+               r = sendfile(infd, sock, offset, len, NULL, &spliced, 0);
+#endif
+       } while (r == -1 && errno == EINTR);
+
+       if (r == -1) {
+               return nixio__perror(L);
+       }
+#endif
+
+       lua_pushinteger(L, spliced);
+       return 1;
+}
+
+/* module table */
+static const luaL_reg R[] = {
+#ifdef _GNU_SOURCE
+#ifdef SPLICE_F_MOVE
+       {"splice",                      nixio_splice},
+       {"splice_flags",        nixio_splice_flags},
+#endif
+#endif
+       {"sendfile",            nixio_sendfile},
+       {NULL,                  NULL}
+};
+
+
+void nixio_open_splice(lua_State *L) {
+       luaL_register(L, NULL, R);
+}
+
+#else /* __WINNT__ */
+
+void nixio_open_splice(lua_State *L) {
+}
+
+#endif /* !__WINNT__ */
diff --git a/package/luci/libs/luci-lib-nixio/src/syslog.c b/package/luci/libs/luci-lib-nixio/src/syslog.c
new file mode 100644 (file)
index 0000000..89f1b1d
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <string.h>
+
+#ifndef __WINNT__
+#include <syslog.h>
+
+
+static int nixio_openlog(lua_State *L) {
+       int option = 0, facility = LOG_USER;
+
+       const char *ident = luaL_optstring(L, 1, "nixio");
+       const int j = lua_gettop(L);
+       for (int i=2; i<=j; i++) {
+               const char *flag = luaL_checkstring(L, i);
+               if (!strcmp(flag, "cons")) {
+                       option |= LOG_CONS;
+               } else if (!strcmp(flag, "nowait")) {
+                       option |= LOG_NOWAIT;
+               } else if (!strcmp(flag, "pid")) {
+                       option |= LOG_PID;
+               } else if (!strcmp(flag, "perror")) {
+#ifdef LOG_PERROR
+                       option |= LOG_PERROR;
+#endif
+               } else if (!strcmp(flag, "ndelay")) {
+                       option |= LOG_NDELAY;
+               } else if (!strcmp(flag, "odelay")) {
+                       option |= LOG_ODELAY;
+               } else {
+                       return luaL_argerror(L, i,
+                               "supported values: cons, nowait, pid, perror, ndelay, odelay");
+               }
+       }
+
+       openlog(ident, option, facility);
+       return 0;
+}
+
+static int nixio_closelog(lua_State *L) {
+       closelog();
+       return 0;
+}
+
+static int nixio__syslogmask(lua_State *L, int dolog) {
+       int priority;
+
+       const char *flag = luaL_checkstring(L, 1);
+       if (!strcmp(flag, "emerg")) {
+               priority = LOG_EMERG;
+       } else if (!strcmp(flag, "alert")) {
+               priority = LOG_ALERT;
+       } else if (!strcmp(flag, "crit")) {
+               priority = LOG_CRIT;
+       } else if (!strcmp(flag, "err")) {
+               priority = LOG_ERR;
+       } else if (!strcmp(flag, "warning")) {
+               priority = LOG_WARNING;
+       } else if (!strcmp(flag, "notice")) {
+               priority = LOG_NOTICE;
+       } else if (!strcmp(flag, "info")) {
+               priority = LOG_INFO;
+       } else if (!strcmp(flag, "debug")) {
+               priority = LOG_DEBUG;
+       } else {
+               return luaL_argerror(L, 1, "supported values: emerg, alert, crit, err, "
+                               "warning, notice, info, debug");
+       }
+
+       if (dolog) {
+               const char *msg = luaL_checkstring(L, 2);
+               syslog(priority, "%s", msg);
+       } else {
+               setlogmask(LOG_UPTO(priority));
+       }
+       return 0;
+}
+
+static int nixio_setlogmask(lua_State *L) {
+       return nixio__syslogmask(L, 0);
+}
+
+static int nixio_syslog(lua_State *L) {
+       return nixio__syslogmask(L, 1);
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"openlog",             nixio_openlog},
+       {"syslog",              nixio_syslog},
+       {"setlogmask",  nixio_setlogmask},
+       {"closelog",    nixio_closelog},
+       {NULL,                  NULL}
+};
+
+void nixio_open_syslog(lua_State *L) {
+       luaL_register(L, NULL, R);
+}
+
+#else /* __WINNT__ */
+
+void nixio_open_syslog(lua_State *L) {
+}
+
+#endif /* __WINNT__ */
diff --git a/package/luci/libs/luci-lib-nixio/src/tls-context.c b/package/luci/libs/luci-lib-nixio/src/tls-context.c
new file mode 100644 (file)
index 0000000..e9a833f
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio-tls.h"
+#include <string.h>
+
+static SSL_CTX* nixio__checktlsctx(lua_State *L) {
+       SSL_CTX **ctx = (SSL_CTX **)luaL_checkudata(L, 1, NIXIO_TLS_CTX_META);
+       luaL_argcheck(L, *ctx, 1, "invalid context");
+       return *ctx;
+}
+
+static int nixio__tls_perror(lua_State *L, int code) {
+       lua_pushnil(L);
+       lua_pushinteger(L, code);
+       return 2;
+}
+
+static int nixio__tls_pstatus(lua_State *L, int code) {
+       if (code == 1) {
+               lua_pushboolean(L, 1);
+               return 1;
+       } else {
+               return nixio__tls_perror(L, code);
+       }
+}
+
+static int nixio_tls_ctx(lua_State * L) {
+       const char *method = luaL_optlstring(L, 1, "client", NULL);
+
+       luaL_getmetatable(L, NIXIO_TLS_CTX_META);
+       SSL_CTX **ctx = lua_newuserdata(L, sizeof(SSL_CTX *));
+       if (!ctx) {
+               return luaL_error(L, "out of memory");
+       }
+
+       /* create userdata */
+       lua_pushvalue(L, -2);
+       lua_setmetatable(L, -2);
+
+       if (!strcmp(method, "client")) {
+               *ctx = SSL_CTX_new(TLSv1_client_method());
+       } else if (!strcmp(method, "server")) {
+               *ctx = SSL_CTX_new(TLSv1_server_method());
+       } else {
+               return luaL_argerror(L, 1, "supported values: client, server");
+       }
+
+       if (!(*ctx)) {
+               return luaL_error(L, "unable to create TLS context");
+       }
+
+#ifdef WITH_CYASSL
+       SSL_CTX_set_verify(*ctx, SSL_VERIFY_NONE, NULL);
+#endif
+
+       return 1;
+}
+
+static int nixio_tls_ctx_create(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       int fd = nixio__checkfd(L, 2);
+
+       lua_createtable(L, 0, 3);
+       nixio_tls_sock *sock = lua_newuserdata(L, sizeof(nixio_tls_sock));
+       if (!sock) {
+               return luaL_error(L, "out of memory");
+       }
+       memset(sock, 0, sizeof(nixio_tls_sock));
+
+       /* create userdata */
+       luaL_getmetatable(L, NIXIO_TLS_SOCK_META);
+       lua_pushvalue(L, -1);
+       lua_setmetatable(L, -3);
+
+       sock->socket = SSL_new(ctx);
+       if (!sock->socket) {
+               return nixio__tls_perror(L, 0);
+       }
+
+       if (SSL_set_fd(sock->socket, fd) != 1) {
+               return nixio__tls_perror(L, 0);
+       }
+
+       /* save context and socket to prevent GC from collecting them */
+       lua_setmetatable(L, -3);
+       lua_setfield(L, -2, "connection");
+
+       lua_pushvalue(L, 1);
+       lua_setfield(L, -2, "context");
+
+       lua_pushvalue(L, 2);
+       lua_setfield(L, -2, "socket");
+
+       return 1;
+}
+
+static int nixio_tls_ctx_set_cert(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       const char *cert = luaL_checkstring(L, 2);
+       const char *type = luaL_optstring(L, 3, "chain");
+       int ktype;
+
+       if (!strcmp(type, "chain")) {
+               return nixio__tls_pstatus(L,
+                               SSL_CTX_use_certificate_chain_file(ctx, cert));
+       } else if (!strcmp(type, "pem")) {
+               ktype = SSL_FILETYPE_PEM;
+       } else if (!strcmp(type, "asn1")) {
+               ktype = SSL_FILETYPE_ASN1;
+       } else {
+               return luaL_argerror(L, 3, "supported values: chain, pem, asn1");
+       }
+
+       return nixio__tls_pstatus(L,
+                       SSL_CTX_use_certificate_file(ctx, cert, ktype));
+}
+
+static int nixio_tls_ctx_set_verify_locations(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       const char *CAfile = luaL_optstring(L, 2, NULL);
+       const char *CApath = luaL_optstring(L, 3, NULL);
+       return nixio__tls_pstatus(L, SSL_CTX_load_verify_locations(ctx, 
+                                       CAfile, CApath));
+}
+
+static int nixio_tls_ctx_set_key(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       const char *cert = luaL_checkstring(L, 2);
+       const char *type = luaL_optstring(L, 3, "pem");
+       int ktype;
+
+       if (!strcmp(type, "pem")) {
+               ktype = SSL_FILETYPE_PEM;
+       } else if (!strcmp(type, "asn1")) {
+               ktype = SSL_FILETYPE_ASN1;
+       } else {
+               return luaL_argerror(L, 3, "supported values: pem, asn1");
+       }
+
+       return nixio__tls_pstatus(L, SSL_CTX_use_PrivateKey_file(ctx, cert, ktype));
+}
+
+static int nixio_tls_ctx_set_ciphers(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       size_t len;
+       const char *ciphers = luaL_checklstring(L, 2, &len);
+       luaL_argcheck(L, len < 255, 2, "cipher string too long");
+       return nixio__tls_pstatus(L, SSL_CTX_set_cipher_list(ctx, ciphers));
+}
+
+static int nixio_tls_ctx_set_verify(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       const int j = lua_gettop(L);
+       int flags = 0;
+       for (int i=2; i<=j; i++) {
+               const char *flag = luaL_checkstring(L, i);
+               if (!strcmp(flag, "none")) {
+                       flags |= SSL_VERIFY_NONE;
+               } else if (!strcmp(flag, "peer")) {
+                       flags |= SSL_VERIFY_PEER;
+               } else if (!strcmp(flag, "verify_fail_if_no_peer_cert")) {
+                       flags |= SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
+               } else if (!strcmp(flag, "client_once")) {
+                       flags |= SSL_VERIFY_CLIENT_ONCE;
+               } else {
+                       return luaL_argerror(L, i, "supported values: none, peer, "
+                        "verify_fail_if_no_peer_cert, client_once");
+               }
+       }
+       SSL_CTX_set_verify(ctx, flags, NULL);
+       return 0;
+}
+
+static int nixio_tls_ctx__gc(lua_State *L) {
+       SSL_CTX **ctx = (SSL_CTX **)luaL_checkudata(L, 1, NIXIO_TLS_CTX_META);
+       if (*ctx) {
+               SSL_CTX_free(*ctx);
+               *ctx = NULL;
+       }
+       return 0;
+}
+
+static int nixio_tls_ctx__tostring(lua_State *L) {
+       SSL_CTX *ctx = nixio__checktlsctx(L);
+       lua_pushfstring(L, "nixio TLS context: %p", ctx);
+       return 1;
+}
+
+/* module table */
+static const luaL_reg R[] = {
+       {"tls",         nixio_tls_ctx},
+       {NULL,                  NULL}
+};
+
+/* ctx function table */
+static const luaL_reg CTX_M[] = {
+       {"set_cert",                    nixio_tls_ctx_set_cert},
+       {"set_verify_locations",       nixio_tls_ctx_set_verify_locations},
+       {"set_key",                             nixio_tls_ctx_set_key},
+       {"set_ciphers",                 nixio_tls_ctx_set_ciphers},
+       {"set_verify",                  nixio_tls_ctx_set_verify},
+       {"create",                              nixio_tls_ctx_create},
+       {"__gc",                                nixio_tls_ctx__gc},
+       {"__tostring",                  nixio_tls_ctx__tostring},
+       {NULL,                                  NULL}
+};
+
+
+void nixio_open_tls_context(lua_State *L) {
+       /* initialize tls library */
+    SSL_load_error_strings();
+    SSL_library_init();
+
+    /* register module functions */
+    luaL_register(L, NULL, R);
+
+#if defined (WITH_AXTLS)
+    lua_pushliteral(L, "axtls");
+#elif defined (WITH_CYASSL)
+    lua_pushliteral(L, "cyassl");
+#else
+    lua_pushliteral(L, "openssl");
+#endif
+    lua_setfield(L, -2, "tls_provider");
+
+       /* create context metatable */
+       luaL_newmetatable(L, NIXIO_TLS_CTX_META);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+       luaL_register(L, NULL, CTX_M);
+       lua_setfield(L, -2, "meta_tls_context");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/tls-crypto.c b/package/luci/libs/luci-lib-nixio/src/tls-crypto.c
new file mode 100644 (file)
index 0000000..714ec4e
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio-tls.h"
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+static int nixio_crypto_hash__init(lua_State *L, int hmac) {
+       const char *type = luaL_checkstring(L, 1);
+       nixio_hash *hash = lua_newuserdata(L, sizeof(nixio_hash));
+
+       if (!strcmp(type, "md5")) {
+               hash->type = NIXIO_HASH_MD5;
+               hash->digest_size = MD5_DIGEST_LENGTH;
+               hash->block_size = 64;
+               hash->ctx = malloc(sizeof(MD5_CTX));
+               if (!hash->ctx) {
+                       return luaL_error(L, NIXIO_OOM);
+               }
+               MD5_Init((MD5_CTX*)hash->ctx);
+               hash->init = (nixio_hash_initcb)MD5_Init;
+               hash->update = (nixio_hash_updatecb)MD5_Update;
+               hash->final = (nixio_hash_finalcb)MD5_Final;
+       } else if (!strcmp(type, "sha1")) {
+               hash->type = NIXIO_HASH_SHA1;
+               hash->digest_size = SHA_DIGEST_LENGTH;
+               hash->block_size = 64;
+               hash->ctx = malloc(sizeof(SHA_CTX));
+               if (!hash->ctx) {
+                       return luaL_error(L, NIXIO_OOM);
+               }
+               SHA1_Init((SHA_CTX*)hash->ctx);
+               hash->init = (nixio_hash_initcb)SHA1_Init;
+               hash->update = (nixio_hash_updatecb)SHA1_Update;
+               hash->final = (nixio_hash_finalcb)SHA1_Final;
+       } else {
+               luaL_argerror(L, 1, "supported values: md5, sha1");
+       }
+
+       luaL_getmetatable(L, NIXIO_CRYPTO_HASH_META);
+       lua_setmetatable(L, -2);
+
+       if (hmac) {
+               const char *key = luaL_checklstring(L, 2, &hash->key_size);
+               if (hash->key_size > hash->block_size) {
+                       hash->update(hash->ctx, key, hash->key_size);
+                       hash->final(hash->digest, hash->ctx);
+                       hash->init(hash->ctx);
+                       hash->key_size = hash->digest_size;
+                       memcpy(hash->key, hash->digest, hash->key_size);
+               } else {
+                       memcpy(hash->key, key, hash->key_size);
+               }
+
+               unsigned char pad[NIXIO_CRYPTO_BLOCK_SIZE];
+               for (uint i = 0; i < hash->block_size; i++) {
+                       pad[i] = (i < hash->key_size) ? (0x36 ^ hash->key[i]) : 0x36;
+               }
+               hash->update(hash->ctx, pad, hash->block_size);
+               hash->type |= NIXIO_HMAC_BIT;
+       }
+
+       return 1;
+}
+
+static int nixio_crypto_hash(lua_State *L) {
+       return nixio_crypto_hash__init(L, 0);
+}
+
+static int nixio_crypto_hmac(lua_State *L) {
+       return nixio_crypto_hash__init(L, 1);
+}
+
+static int nixio_crypto_hash_update(lua_State *L) {
+       nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META);
+       if (hash->type) {
+               size_t len;
+               const char *chunk = luaL_checklstring(L, 2, &len);
+               hash->update(hash->ctx, chunk, len);
+               lua_pushvalue(L, 1);
+               return 1;
+       } else {
+               return luaL_error(L, "Tried to update finalized hash object.");
+       }
+}
+
+static int nixio_crypto_hash_final(lua_State *L) {
+       nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META);
+       if (hash->type & NIXIO_HMAC_BIT) {
+               hash->final(hash->digest, hash->ctx);
+               hash->init(hash->ctx);
+
+               unsigned char pad[NIXIO_CRYPTO_BLOCK_SIZE];
+               for (uint i = 0; i < hash->block_size; i++) {
+                       pad[i] = (i < hash->key_size) ? (0x5c ^ hash->key[i]) : 0x5c;
+               }
+
+               hash->update(hash->ctx, pad, hash->block_size);
+               hash->update(hash->ctx, hash->digest, hash->digest_size);
+       }
+
+       if (hash->type) {
+               hash->type = NIXIO_HASH_NONE;
+               hash->final(hash->digest, hash->ctx);
+               free(hash->ctx);
+       }
+
+       char hashdigest[NIXIO_DIGEST_SIZE*2];
+       for (uint i=0; i < hash->digest_size; i++) {
+               hashdigest[2*i]   = nixio__bin2hex[(hash->digest[i] & 0xf0) >> 4];
+               hashdigest[2*i+1] = nixio__bin2hex[(hash->digest[i] & 0x0f)];
+       }
+
+       lua_pushlstring(L, hashdigest, hash->digest_size * 2);
+       memcpy(hashdigest, hash->digest, hash->digest_size);
+       lua_pushlstring(L, hashdigest, hash->digest_size);
+
+       return 2;
+}
+
+static int nixio_crypto_hash__gc(lua_State *L) {
+       nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META);
+       if (hash->type) {
+               hash->final(hash->digest, hash->ctx);
+               free(hash->ctx);
+               hash->type = NIXIO_HASH_NONE;
+       }
+       return 0;
+}
+
+static int nixio_crypto_hash__tostring(lua_State *L) {
+       nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META);
+       lua_pushfstring(L, "nixio hash object: %p", hash);
+       return 1;
+}
+
+
+/* module table */
+static const luaL_reg R[] = {
+       {"hash",                nixio_crypto_hash},
+       {"hmac",                nixio_crypto_hmac},
+       {NULL,                  NULL}
+};
+
+/* hash table */
+static const luaL_reg M[] = {
+       {"update",              nixio_crypto_hash_update},
+       {"final",               nixio_crypto_hash_final},
+       {"__gc",                nixio_crypto_hash__gc},
+       {"__tostring",  nixio_crypto_hash__tostring},
+       {NULL,                  NULL}
+};
+
+
+
+void nixio_open_tls_crypto(lua_State *L) {
+       luaL_newmetatable(L, NIXIO_CRYPTO_HASH_META);
+       luaL_register(L, NULL, M);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+       lua_pop(L, 1);
+
+       lua_newtable(L);
+    luaL_register(L, NULL, R);
+
+       lua_setfield(L, -2, "crypto");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/tls-socket.c b/package/luci/libs/luci-lib-nixio/src/tls-socket.c
new file mode 100644 (file)
index 0000000..fe4cb60
--- /dev/null
@@ -0,0 +1,263 @@
+ /*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio-tls.h"
+#include <string.h>
+#include <stdlib.h>
+
+static int nixio__tls_sock_perror(lua_State *L, SSL *sock, int code) {
+       lua_pushnil(L);
+       lua_pushinteger(L, SSL_get_error(sock, code));
+       return 2;
+}
+
+static int nixio__tls_sock_pstatus(lua_State *L, SSL *sock, int code) {
+       if (code > 0) {
+               lua_pushboolean(L, 1);
+               return 1;
+       } else {
+               return nixio__tls_sock_perror(L, sock, code);
+       }
+}
+
+static SSL* nixio__checktlssock(lua_State *L) {
+       if (lua_istable(L, 1)) {
+               lua_getfield(L, 1, "connection");
+               lua_replace(L, 1);
+       }
+       nixio_tls_sock *sock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META);
+       luaL_argcheck(L, sock->socket, 1, "invalid context");
+       return sock->socket;
+}
+
+#ifndef WITH_AXTLS
+#define nixio_tls__check_connected(L) ;
+
+#define nixio_tls__set_connected(L, val) ;
+#else
+#define nixio_tls__check_connected(L) \
+       nixio_tls_sock *ctsock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META);    \
+       if (!ctsock->connected) {       \
+               lua_pushnil(L);                 \
+               lua_pushinteger(L, 1);  \
+               return 2;                               \
+       }
+
+#define nixio_tls__set_connected(L, val) \
+((nixio_tls_sock*)luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META))->connected = val;
+#endif /* WITH_AXTLS */
+
+static int nixio_tls_sock_recv(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       nixio_tls__check_connected(L);
+       uint req = luaL_checkinteger(L, 2);
+
+       luaL_argcheck(L, req >= 0, 2, "out of range");
+
+       /* We limit the readsize to NIXIO_BUFFERSIZE */
+       req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req;
+
+#ifndef WITH_AXTLS
+
+       char buffer[NIXIO_BUFFERSIZE];
+       int readc = SSL_read(sock, buffer, req);
+
+       if (readc < 0) {
+               return nixio__tls_sock_pstatus(L, sock, readc);
+       } else {
+               lua_pushlstring(L, buffer, readc);
+               return 1;
+       }
+
+#else
+
+       if (!req) {
+               lua_pushliteral(L, "");
+               return 1;
+       }
+
+       nixio_tls_sock *t = lua_touserdata(L, 1);
+
+       /* AXTLS doesn't handle buffering for us, so we have to hack around*/
+       if (req < t->pbufsiz) {
+               lua_pushlstring(L, t->pbufpos, req);
+               t->pbufpos += req;
+               t->pbufsiz -= req;
+               return 1;
+       } else {
+               uint8_t *axbuf;
+               int axread;
+
+               /* while handshake pending */
+               while ((axread = ssl_read(sock, &axbuf)) == SSL_OK);
+
+               if (t->pbufsiz) {
+                       lua_pushlstring(L, t->pbufpos, t->pbufsiz);
+               }
+
+               if (axread < 0) {
+                       /* There is an error */
+                       free(t->pbuffer);
+                       t->pbuffer = t->pbufpos = NULL;
+
+                       if (axread != SSL_ERROR_CONN_LOST) {
+                               t->pbufsiz = 0;
+                               return nixio__tls_sock_perror(L, sock, axread);
+                       } else {
+                               if (!t->pbufsiz) {
+                                       lua_pushliteral(L, "");
+                               } else {
+                                       t->pbufsiz = 0;
+                               }
+                       }
+               } else {
+                       int stillwant = req - t->pbufsiz;
+                       if (stillwant < axread) {
+                               /* we got more data than we need */
+                               lua_pushlstring(L, (char *)axbuf, stillwant);
+                               if(t->pbufsiz) {
+                                       lua_concat(L, 2);
+                               }
+
+                               /* remaining data goes into the buffer */
+                               t->pbufpos = t->pbuffer;
+                               t->pbufsiz = axread - stillwant;
+                               t->pbuffer = realloc(t->pbuffer, t->pbufsiz);
+                               if (!t->pbuffer) {
+                                       free(t->pbufpos);
+                                       t->pbufpos = NULL;
+                                       t->pbufsiz = 0;
+                                       return luaL_error(L, "out of memory");
+                               }
+
+                               t->pbufpos = t->pbuffer;
+                               memcpy(t->pbufpos, axbuf + stillwant, t->pbufsiz);
+                       } else {
+                               lua_pushlstring(L, (char *)axbuf, axread);
+                               if(t->pbufsiz) {
+                                       lua_concat(L, 2);
+                               }
+
+                               /* free buffer */
+                               free(t->pbuffer);
+                               t->pbuffer = t->pbufpos = NULL;
+                               t->pbufsiz = 0;
+                       }
+               }
+               return 1;
+       }
+
+#endif /* WITH_AXTLS */
+
+}
+
+static int nixio_tls_sock_send(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       nixio_tls__check_connected(L);
+       size_t len;
+       ssize_t sent;
+       const char *data = luaL_checklstring(L, 2, &len);
+
+       if (lua_gettop(L) > 2) {
+               int offset = luaL_optint(L, 3, 0);
+               if (offset) {
+                       if (offset < len) {
+                               data += offset;
+                               len -= offset;
+                       } else {
+                               len = 0;
+                       }
+               }
+
+               unsigned int wlen = luaL_optint(L, 4, len);
+               if (wlen < len) {
+                       len = wlen;
+               }
+       }
+
+       sent = SSL_write(sock, data, len);
+       if (sent > 0) {
+               lua_pushinteger(L, sent);
+               return 1;
+       } else {
+               return nixio__tls_sock_pstatus(L, sock, sent);
+       }
+}
+
+static int nixio_tls_sock_accept(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       const int stat = SSL_accept(sock);
+       nixio_tls__set_connected(L, stat == 1);
+       return nixio__tls_sock_pstatus(L, sock, stat);
+}
+
+static int nixio_tls_sock_connect(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       const int stat = SSL_connect(sock);
+       nixio_tls__set_connected(L, stat == 1);
+       return nixio__tls_sock_pstatus(L, sock, stat);
+}
+
+static int nixio_tls_sock_shutdown(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       nixio_tls__set_connected(L, 0);
+       return nixio__tls_sock_pstatus(L, sock, SSL_shutdown(sock));
+}
+
+static int nixio_tls_sock__gc(lua_State *L) {
+       nixio_tls_sock *sock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META);
+       if (sock->socket) {
+               SSL_free(sock->socket);
+               sock->socket = NULL;
+#ifdef WITH_AXTLS
+               free(sock->pbuffer);
+#endif
+       }
+       return 0;
+}
+
+static int nixio_tls_sock__tostring(lua_State *L) {
+       SSL *sock = nixio__checktlssock(L);
+       lua_pushfstring(L, "nixio TLS connection: %p", sock);
+       return 1;
+}
+
+
+/* ctx function table */
+static const luaL_reg M[] = {
+       {"recv",                nixio_tls_sock_recv},
+       {"send",                nixio_tls_sock_send},
+       {"read",                nixio_tls_sock_recv},
+       {"write",               nixio_tls_sock_send},
+       {"accept",              nixio_tls_sock_accept},
+       {"connect",     nixio_tls_sock_connect},
+       {"shutdown",    nixio_tls_sock_shutdown},
+       {"__gc",                nixio_tls_sock__gc},
+       {"__tostring",  nixio_tls_sock__tostring},
+       {NULL,                  NULL}
+};
+
+
+void nixio_open_tls_socket(lua_State *L) {
+       /* create socket metatable */
+       luaL_newmetatable(L, NIXIO_TLS_SOCK_META);
+       luaL_register(L, NULL, M);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+       lua_setfield(L, -2, "meta_tls_socket");
+}
diff --git a/package/luci/libs/luci-lib-nixio/src/user.c b/package/luci/libs/luci-lib-nixio/src/user.c
new file mode 100644 (file)
index 0000000..b701bac
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * nixio - Linux I/O library for lua
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  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.
+ */
+
+#include "nixio.h"
+#include <sys/types.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/param.h>
+
+#ifndef __WINNT__
+
+#include <grp.h>
+#include <pwd.h>
+
+#ifndef BSD
+#ifndef NO_SHADOW
+#include <shadow.h>
+#endif
+#include <crypt.h>
+#endif
+
+int nixio__check_group(lua_State *L, int idx) {
+       if (lua_isnumber(L, idx)) {
+               return lua_tointeger(L, idx);
+       } else if (lua_isstring(L, idx)) {
+               struct group *g = getgrnam(lua_tostring(L, idx));
+               return (!g) ? -1 : g->gr_gid;
+       } else {
+               return luaL_argerror(L, idx, "supported values: <groupname>, <gid>");
+       }
+}
+
+int nixio__check_user(lua_State *L, int idx) {
+       if (lua_isnumber(L, idx)) {
+               return lua_tointeger(L, idx);
+       } else if (lua_isstring(L, idx)) {
+               struct passwd *p = getpwnam(lua_tostring(L, idx));
+               return (!p) ? -1 : p->pw_uid;
+       } else {
+               return luaL_argerror(L, idx, "supported values: <username>, <uid>");
+       }
+}
+
+
+static int nixio__push_group(lua_State *L, struct group *gr) {
+       lua_createtable(L, 0, 4);
+       lua_pushstring(L, gr->gr_name);
+       lua_setfield(L, -2, "name");
+       lua_pushstring(L, gr->gr_passwd);
+       lua_setfield(L, -2, "passwd");
+       lua_pushinteger(L, gr->gr_gid);
+       lua_setfield(L, -2, "gid");
+       lua_newtable(L);
+
+       for (int i=0; gr->gr_mem[i]; i++) {
+               lua_pushstring(L, gr->gr_mem[i]);
+               lua_rawseti(L, -2, i+1);
+       }
+
+       lua_setfield(L, -2, "mem");
+       return 1;
+}
+
+static int nixio_getgr(lua_State *L) {
+       struct group *gr;
+       errno = 0;
+       if (lua_isnumber(L, 1)) {
+               gr = getgrgid(lua_tointeger(L, 1));
+       } else if (lua_isstring(L, 1)) {
+               gr = getgrnam(lua_tostring(L, 1));
+       } else if (lua_isnoneornil(L, 1)) {
+               lua_newtable(L);
+               int i = 0;
+
+               setgrent();
+               while ((gr = getgrent())) {
+                       nixio__push_group(L, gr);
+                       lua_rawseti(L, -2, ++i);
+               }
+
+               if (errno) {
+                       return nixio__perror(L);
+               }
+
+               endgrent();
+               return 1;
+       } else {
+               return luaL_argerror(L, 1, "supported values: <groupname>, <gid>");
+       }
+
+       if (!gr) {
+               return nixio__perror(L);
+       } else {
+               return nixio__push_group(L, gr);
+       }
+}
+
+static int nixio__push_passwd(lua_State *L, struct passwd *pw) {
+       lua_createtable(L, 0, 7);
+       lua_pushstring(L, pw->pw_name);
+       lua_setfield(L, -2, "name");
+       lua_pushstring(L, pw->pw_passwd);
+       lua_setfield(L, -2, "passwd");
+       lua_pushinteger(L, pw->pw_gid);
+       lua_setfield(L, -2, "gid");
+       lua_pushinteger(L, pw->pw_uid);
+       lua_setfield(L, -2, "uid");
+       lua_pushstring(L, pw->pw_dir);
+       lua_setfield(L, -2, "dir");
+       lua_pushstring(L, pw->pw_gecos);
+       lua_setfield(L, -2, "gecos");
+       lua_pushstring(L, pw->pw_shell);
+       lua_setfield(L, -2, "shell");
+       return 1;
+}
+
+static int nixio_getpw(lua_State *L) {
+       struct passwd *pw;
+       errno = 0;
+       if (lua_isnumber(L, 1)) {
+               pw = getpwuid(lua_tointeger(L, 1));
+       } else if (lua_isstring(L, 1)) {
+               pw = getpwnam(lua_tostring(L, 1));
+       } else if (lua_isnoneornil(L, 1)) {
+               lua_newtable(L);
+               int i = 0;
+
+               setpwent();
+               while ((pw = getpwent())) {
+                       nixio__push_passwd(L, pw);
+                       lua_rawseti(L, -2, ++i);
+               }
+
+               if (errno) {
+                       return nixio__perror(L);
+               }
+
+               endpwent();
+               return 1;
+       } else {
+               return luaL_argerror(L, 1, "supported values: <username>, <uid>");
+       }
+
+       if (!pw) {
+               return nixio__perror(L);
+       } else {
+               return nixio__push_passwd(L, pw);
+       }
+}
+
+#ifndef BSD
+#ifndef NO_SHADOW
+static int nixio__push_spwd(lua_State *L, struct spwd *sp) {
+       lua_createtable(L, 0, 9);
+       lua_pushstring(L, sp->sp_namp);
+       lua_setfield(L, -2, "namp");
+       lua_pushinteger(L, sp->sp_expire);
+       lua_setfield(L, -2, "expire");
+       lua_pushinteger(L, sp->sp_flag);
+       lua_setfield(L, -2, "flag");
+       lua_pushinteger(L, sp->sp_inact);
+       lua_setfield(L, -2, "inact");
+       lua_pushinteger(L, sp->sp_lstchg);
+       lua_setfield(L, -2, "lstchg");
+       lua_pushinteger(L, sp->sp_max);
+       lua_setfield(L, -2, "max");
+       lua_pushinteger(L, sp->sp_min);
+       lua_setfield(L, -2, "min");
+       lua_pushinteger(L, sp->sp_warn);
+       lua_setfield(L, -2, "warn");
+       lua_pushstring(L, sp->sp_pwdp);
+       lua_setfield(L, -2, "pwdp");
+       return 1;
+}
+
+static int nixio_getsp(lua_State *L) {
+       struct spwd *sp;
+       errno = 0;
+       if (lua_isstring(L, 1)) {
+               sp = getspnam(lua_tostring(L, 1));
+       } else if (lua_isnoneornil(L, 1)) {
+               lua_newtable(L);
+               int i = 0;
+
+               setspent();
+               while ((sp = getspent())) {
+                       nixio__push_spwd(L, sp);
+                       lua_rawseti(L, -2, ++i);
+               }
+
+               if (errno) {
+                       return nixio__perror(L);
+               }
+
+               endspent();
+               return 1;
+       } else {
+               return luaL_argerror(L, 1, "supported values: <username>");
+       }
+
+       if (!sp) {
+               return nixio__perror(L);
+       } else {
+               return nixio__push_spwd(L, sp);
+       }
+}
+#endif /* !NO_SHADOW */
+#endif /* !BSD */
+
+static int nixio_crypt(lua_State *L) {
+       const char *key = luaL_checkstring(L, 1);
+       const char *salt = luaL_checkstring(L, 2);
+       const char *hash = crypt(key, salt);
+
+       if (hash) {
+               lua_pushstring(L, hash);
+       } else {
+               lua_pushnil(L);
+       }
+
+       return 1;
+}
+
+
+/* module table */
+static const luaL_reg R[] = {
+       {"crypt",               nixio_crypt},
+       {"getgr",               nixio_getgr},
+       {"getpw",               nixio_getpw},
+#ifndef BSD
+#ifndef NO_SHADOW
+       {"getsp",               nixio_getsp},
+#endif
+#endif
+       {NULL,                  NULL}
+};
+
+#else /* __WINNT__ */
+
+static const luaL_reg R[] = {
+               {NULL,                  NULL}
+};
+
+#endif
+
+void nixio_open_user(lua_State *L) {
+       luaL_register(L, NULL, R);
+}
diff --git a/package/luci/libs/luci-lib-px5g/Makefile b/package/luci/libs/luci-lib-px5g/Makefile
new file mode 100644 (file)
index 0000000..eefee10
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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:=RSA/X.509 Key Generator (required for LuCId SSL support)
+LUCI_DEPENDS:=+liblua
+
+PKG_USE_MIPS16:=0
+PKG_LICENSE:=LGPL-2.1
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-px5g/lua/px5g/util.lua b/package/luci/libs/luci-lib-px5g/lua/px5g/util.lua
new file mode 100644 (file)
index 0000000..0f07c81
--- /dev/null
@@ -0,0 +1,44 @@
+--[[
+ * px5g - Embedded x509 key and certificate generator based on PolarSSL
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License, version 2.1 as published by the Free Software Foundation.
+]]--
+
+local nixio = require "nixio"
+local table = require "table"
+
+module "px5g.util"
+
+local preamble = {
+       key = "-----BEGIN RSA PRIVATE KEY-----",
+       cert = "-----BEGIN CERTIFICATE-----",
+       request = "-----BEGIN CERTIFICATE REQUEST-----"
+}
+
+local postamble = {
+       key = "-----END RSA PRIVATE KEY-----",
+       cert = "-----END CERTIFICATE-----",
+       request = "-----END CERTIFICATE REQUEST-----"
+}
+
+function der2pem(data, type)
+       local b64 = nixio.bin.b64encode(data)
+       
+       local outdata = {preamble[type]}
+       for i = 1, #b64, 64 do
+               outdata[#outdata + 1] = b64:sub(i, i + 63) 
+       end
+       outdata[#outdata + 1] = postamble[type]
+       outdata[#outdata + 1] = ""
+       
+       return table.concat(outdata, "\n")
+end
+
+function pem2der(data)
+       local b64 = data:gsub({["\n"] = "", ["%-%-%-%-%-.-%-%-%-%-%-"] = ""})
+       return nixio.bin.b64decode(b64)
+end
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys b/package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys
new file mode 100755 (executable)
index 0000000..87a66bf
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/lua
+local keyfile = "/etc/nixio/rsa_main.der"
+local certfile = "/etc/nixio/cert_main.der"
+
+local px5g = require "px5g"
+local nixio = require "nixio"
+local fs = require "nixio.fs"
+local os = require "os"
+nixio.umask(77)
+
+if not fs.access(certfile) then
+       local key = px5g.genkey(2048)
+       fs.writefile(keyfile, key:asn1())
+
+       local cert = key:create_selfsigned(
+               {CN=nixio.uname().nodename, O="LuCI Keymaster"},
+               os.time(), os.time() + 3600 * 24 * 366 * 15)
+       fs.writefile(certfile, cert)
+end
diff --git a/package/luci/libs/luci-lib-px5g/src/Makefile b/package/luci/libs/luci-lib-px5g/src/Makefile
new file mode 100644 (file)
index 0000000..755565e
--- /dev/null
@@ -0,0 +1,17 @@
+PX5G_CFLAGS = -I. -include polarssl/rsa.h -include polarssl/x509.h -std=gnu99
+PX5G_LDFLAGS = -llua -lm
+PX5G_OBJ = px5g.o library/bignum.o library/havege.o library/rsa.o library/sha1.o library/timing.o library/x509write.o
+PX5G_LIB = px5g.so
+
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(PX5G_CFLAGS) $(FPIC) -c -o $@ $<
+
+compile: $(PX5G_OBJ)
+       $(CC) $(LDFLAGS) -shared -o $(PX5G_LIB) $(PX5G_OBJ) $(PX5G_LDFLAGS)
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/lib/lua
+       cp $(PX5G_LIB) $(DESTDIR)/usr/lib/lua/$(PX5G_LIB)
+
+clean:
+       rm -f *.o *.so
diff --git a/package/luci/libs/luci-lib-px5g/src/library/bignum.c b/package/luci/libs/luci-lib-px5g/src/library/bignum.c
new file mode 100644 (file)
index 0000000..d2a8ff4
--- /dev/null
@@ -0,0 +1,2010 @@
+/*
+ *  Multi-precision integer library
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *  This MPI implementation is based on:
+ *
+ *  http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
+ *  http://www.stillhq.com/extracted/gnupg-api/mpi/
+ *  http://math.libtomcrypt.com/files/tommath.pdf
+ */
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_BIGNUM_C)
+
+#include "polarssl/bignum.h"
+#include "polarssl/bn_mul.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#define ciL    ((int) sizeof(t_int))    /* chars in limb  */
+#define biL    (ciL << 3)               /* bits  in limb  */
+#define biH    (ciL << 2)               /* half limb size */
+
+/*
+ * Convert between bits/chars and number of limbs
+ */
+#define BITS_TO_LIMBS(i)  (((i) + biL - 1) / biL)
+#define CHARS_TO_LIMBS(i) (((i) + ciL - 1) / ciL)
+
+/*
+ * Initialize one or more mpi
+ */
+void mpi_init( mpi *X, ... )
+{
+    va_list args;
+
+    va_start( args, X );
+
+    while( X != NULL )
+    {
+        X->s = 1;
+        X->n = 0;
+        X->p = NULL;
+
+        X = va_arg( args, mpi* );
+    }
+
+    va_end( args );
+}
+
+/*
+ * Unallocate one or more mpi
+ */
+void mpi_free( mpi *X, ... )
+{
+    va_list args;
+
+    va_start( args, X );
+
+    while( X != NULL )
+    {
+        if( X->p != NULL )
+        {
+            memset( X->p, 0, X->n * ciL );
+            free( X->p );
+        }
+
+        X->s = 1;
+        X->n = 0;
+        X->p = NULL;
+
+        X = va_arg( args, mpi* );
+    }
+
+    va_end( args );
+}
+
+/*
+ * Enlarge to the specified number of limbs
+ */
+int mpi_grow( mpi *X, int nblimbs )
+{
+    t_int *p;
+
+    if( X->n < nblimbs )
+    {
+        if( ( p = (t_int *) malloc( nblimbs * ciL ) ) == NULL )
+            return( 1 );
+
+        memset( p, 0, nblimbs * ciL );
+
+        if( X->p != NULL )
+        {
+            memcpy( p, X->p, X->n * ciL );
+            memset( X->p, 0, X->n * ciL );
+            free( X->p );
+        }
+
+        X->n = nblimbs;
+        X->p = p;
+    }
+
+    return( 0 );
+}
+
+/*
+ * Copy the contents of Y into X
+ */
+int mpi_copy( mpi *X, mpi *Y )
+{
+    int ret, i;
+
+    if( X == Y )
+        return( 0 );
+
+    for( i = Y->n - 1; i > 0; i-- )
+        if( Y->p[i] != 0 )
+            break;
+    i++;
+
+    X->s = Y->s;
+
+    MPI_CHK( mpi_grow( X, i ) );
+
+    memset( X->p, 0, X->n * ciL );
+    memcpy( X->p, Y->p, i * ciL );
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Swap the contents of X and Y
+ */
+void mpi_swap( mpi *X, mpi *Y )
+{
+    mpi T;
+
+    memcpy( &T,  X, sizeof( mpi ) );
+    memcpy(  X,  Y, sizeof( mpi ) );
+    memcpy(  Y, &T, sizeof( mpi ) );
+}
+
+/*
+ * Set value from integer
+ */
+int mpi_lset( mpi *X, int z )
+{
+    int ret;
+
+    MPI_CHK( mpi_grow( X, 1 ) );
+    memset( X->p, 0, X->n * ciL );
+
+    X->p[0] = ( z < 0 ) ? -z : z;
+    X->s    = ( z < 0 ) ? -1 : 1;
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Return the number of least significant bits
+ */
+int mpi_lsb( mpi *X )
+{
+    int i, j, count = 0;
+
+    for( i = 0; i < X->n; i++ )
+        for( j = 0; j < (int) biL; j++, count++ )
+            if( ( ( X->p[i] >> j ) & 1 ) != 0 )
+                return( count );
+
+    return( 0 );
+}
+
+/*
+ * Return the number of most significant bits
+ */
+int mpi_msb( mpi *X )
+{
+    int i, j;
+
+    for( i = X->n - 1; i > 0; i-- )
+        if( X->p[i] != 0 )
+            break;
+
+    for( j = biL - 1; j >= 0; j-- )
+        if( ( ( X->p[i] >> j ) & 1 ) != 0 )
+            break;
+
+    return( ( i * biL ) + j + 1 );
+}
+
+/*
+ * Return the total size in bytes
+ */
+int mpi_size( mpi *X )
+{
+    return( ( mpi_msb( X ) + 7 ) >> 3 );
+}
+
+/*
+ * Convert an ASCII character to digit value
+ */
+static int mpi_get_digit( t_int *d, int radix, char c )
+{
+    *d = 255;
+
+    if( c >= 0x30 && c <= 0x39 ) *d = c - 0x30;
+    if( c >= 0x41 && c <= 0x46 ) *d = c - 0x37;
+    if( c >= 0x61 && c <= 0x66 ) *d = c - 0x57;
+
+    if( *d >= (t_int) radix )
+        return( POLARSSL_ERR_MPI_INVALID_CHARACTER );
+
+    return( 0 );
+}
+
+/*
+ * Import from an ASCII string
+ */
+int mpi_read_string( mpi *X, int radix, char *s )
+{
+    int ret, i, j, n;
+    t_int d;
+    mpi T;
+
+    if( radix < 2 || radix > 16 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    mpi_init( &T, NULL );
+
+    if( radix == 16 )
+    {
+        n = BITS_TO_LIMBS( strlen( s ) << 2 );
+
+        MPI_CHK( mpi_grow( X, n ) );
+        MPI_CHK( mpi_lset( X, 0 ) );
+
+        for( i = strlen( s ) - 1, j = 0; i >= 0; i--, j++ )
+        {
+            if( i == 0 && s[i] == '-' )
+            {
+                X->s = -1;
+                break;
+            }
+
+            MPI_CHK( mpi_get_digit( &d, radix, s[i] ) );
+            X->p[j / (2 * ciL)] |= d << ( (j % (2 * ciL)) << 2 );
+        }
+    }
+    else
+    {
+        MPI_CHK( mpi_lset( X, 0 ) );
+
+        for( i = 0; i < (int) strlen( s ); i++ )
+        {
+            if( i == 0 && s[i] == '-' )
+            {
+                X->s = -1;
+                continue;
+            }
+
+            MPI_CHK( mpi_get_digit( &d, radix, s[i] ) );
+            MPI_CHK( mpi_mul_int( &T, X, radix ) );
+            MPI_CHK( mpi_add_int( X, &T, d ) );
+        }
+    }
+
+cleanup:
+
+    mpi_free( &T, NULL );
+
+    return( ret );
+}
+
+/*
+ * Helper to write the digits high-order first
+ */
+static int mpi_write_hlp( mpi *X, int radix, char **p )
+{
+    int ret;
+    t_int r;
+
+    if( radix < 2 || radix > 16 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    MPI_CHK( mpi_mod_int( &r, X, radix ) );
+    MPI_CHK( mpi_div_int( X, NULL, X, radix ) );
+
+    if( mpi_cmp_int( X, 0 ) != 0 )
+        MPI_CHK( mpi_write_hlp( X, radix, p ) );
+
+    if( r < 10 )
+        *(*p)++ = (char)( r + 0x30 );
+    else
+        *(*p)++ = (char)( r + 0x37 );
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Export into an ASCII string
+ */
+int mpi_write_string( mpi *X, int radix, char *s, int *slen )
+{
+    int ret = 0, n;
+    char *p;
+    mpi T;
+
+    if( radix < 2 || radix > 16 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    n = mpi_msb( X );
+    if( radix >=  4 ) n >>= 1;
+    if( radix >= 16 ) n >>= 1;
+    n += 3;
+
+    if( *slen < n )
+    {
+        *slen = n;
+        return( POLARSSL_ERR_MPI_BUFFER_TOO_SMALL );
+    }
+
+    p = s;
+    mpi_init( &T, NULL );
+
+    if( X->s == -1 )
+        *p++ = '-';
+
+    if( radix == 16 )
+    {
+        int c, i, j, k;
+
+        for( i = X->n - 1, k = 0; i >= 0; i-- )
+        {
+            for( j = ciL - 1; j >= 0; j-- )
+            {
+                c = ( X->p[i] >> (j << 3) ) & 0xFF;
+
+                if( c == 0 && k == 0 && (i + j) != 0 )
+                    continue;
+
+                p += sprintf( p, "%02X", c );
+                k = 1;
+            }
+        }
+    }
+    else
+    {
+        MPI_CHK( mpi_copy( &T, X ) );
+        MPI_CHK( mpi_write_hlp( &T, radix, &p ) );
+    }
+
+    *p++ = '\0';
+    *slen = p - s;
+
+cleanup:
+
+    mpi_free( &T, NULL );
+
+    return( ret );
+}
+
+/*
+ * Read X from an opened file
+ */
+int mpi_read_file( mpi *X, int radix, FILE *fin )
+{
+    t_int d;
+    int slen;
+    char *p;
+    char s[1024];
+
+    memset( s, 0, sizeof( s ) );
+    if( fgets( s, sizeof( s ) - 1, fin ) == NULL )
+        return( POLARSSL_ERR_MPI_FILE_IO_ERROR );
+
+    slen = strlen( s );
+    if( s[slen - 1] == '\n' ) { slen--; s[slen] = '\0'; }
+    if( s[slen - 1] == '\r' ) { slen--; s[slen] = '\0'; }
+
+    p = s + slen;
+    while( --p >= s )
+        if( mpi_get_digit( &d, radix, *p ) != 0 )
+            break;
+
+    return( mpi_read_string( X, radix, p + 1 ) );
+}
+
+/*
+ * Write X into an opened file (or stdout if fout == NULL)
+ */
+int mpi_write_file( char *p, mpi *X, int radix, FILE *fout )
+{
+    int n, ret;
+    size_t slen;
+    size_t plen;
+    char s[1024];
+
+    n = sizeof( s );
+    memset( s, 0, n );
+    n -= 2;
+
+    MPI_CHK( mpi_write_string( X, radix, s, (int *) &n ) );
+
+    if( p == NULL ) p = "";
+
+    plen = strlen( p );
+    slen = strlen( s );
+    s[slen++] = '\r';
+    s[slen++] = '\n';
+
+    if( fout != NULL )
+    {
+        if( fwrite( p, 1, plen, fout ) != plen ||
+            fwrite( s, 1, slen, fout ) != slen )
+            return( POLARSSL_ERR_MPI_FILE_IO_ERROR );
+    }
+    else
+        printf( "%s%s", p, s );
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Import X from unsigned binary data, big endian
+ */
+int mpi_read_binary( mpi *X, unsigned char *buf, int buflen )
+{
+    int ret, i, j, n;
+
+    for( n = 0; n < buflen; n++ )
+        if( buf[n] != 0 )
+            break;
+
+    MPI_CHK( mpi_grow( X, CHARS_TO_LIMBS( buflen - n ) ) );
+    MPI_CHK( mpi_lset( X, 0 ) );
+
+    for( i = buflen - 1, j = 0; i >= n; i--, j++ )
+        X->p[j / ciL] |= ((t_int) buf[i]) << ((j % ciL) << 3);
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Export X into unsigned binary data, big endian
+ */
+int mpi_write_binary( mpi *X, unsigned char *buf, int buflen )
+{
+    int i, j, n;
+
+    n = mpi_size( X );
+
+    if( buflen < n )
+        return( POLARSSL_ERR_MPI_BUFFER_TOO_SMALL );
+
+    memset( buf, 0, buflen );
+
+    for( i = buflen - 1, j = 0; n > 0; i--, j++, n-- )
+        buf[i] = (unsigned char)( X->p[j / ciL] >> ((j % ciL) << 3) );
+
+    return( 0 );
+}
+
+/*
+ * Left-shift: X <<= count
+ */
+int mpi_shift_l( mpi *X, int count )
+{
+    int ret, i, v0, t1;
+    t_int r0 = 0, r1;
+
+    v0 = count / (biL    );
+    t1 = count & (biL - 1);
+
+    i = mpi_msb( X ) + count;
+
+    if( X->n * (int) biL < i )
+        MPI_CHK( mpi_grow( X, BITS_TO_LIMBS( i ) ) );
+
+    ret = 0;
+
+    /*
+     * shift by count / limb_size
+     */
+    if( v0 > 0 )
+    {
+        for( i = X->n - 1; i >= v0; i-- )
+            X->p[i] = X->p[i - v0];
+
+        for( ; i >= 0; i-- )
+            X->p[i] = 0;
+    }
+
+    /*
+     * shift by count % limb_size
+     */
+    if( t1 > 0 )
+    {
+        for( i = v0; i < X->n; i++ )
+        {
+            r1 = X->p[i] >> (biL - t1);
+            X->p[i] <<= t1;
+            X->p[i] |= r0;
+            r0 = r1;
+        }
+    }
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Right-shift: X >>= count
+ */
+int mpi_shift_r( mpi *X, int count )
+{
+    int i, v0, v1;
+    t_int r0 = 0, r1;
+
+    v0 = count /  biL;
+    v1 = count & (biL - 1);
+
+    /*
+     * shift by count / limb_size
+     */
+    if( v0 > 0 )
+    {
+        for( i = 0; i < X->n - v0; i++ )
+            X->p[i] = X->p[i + v0];
+
+        for( ; i < X->n; i++ )
+            X->p[i] = 0;
+    }
+
+    /*
+     * shift by count % limb_size
+     */
+    if( v1 > 0 )
+    {
+        for( i = X->n - 1; i >= 0; i-- )
+        {
+            r1 = X->p[i] << (biL - v1);
+            X->p[i] >>= v1;
+            X->p[i] |= r0;
+            r0 = r1;
+        }
+    }
+
+    return( 0 );
+}
+
+/*
+ * Compare unsigned values
+ */
+int mpi_cmp_abs( mpi *X, mpi *Y )
+{
+    int i, j;
+
+    for( i = X->n - 1; i >= 0; i-- )
+        if( X->p[i] != 0 )
+            break;
+
+    for( j = Y->n - 1; j >= 0; j-- )
+        if( Y->p[j] != 0 )
+            break;
+
+    if( i < 0 && j < 0 )
+        return( 0 );
+
+    if( i > j ) return(  1 );
+    if( j > i ) return( -1 );
+
+    for( ; i >= 0; i-- )
+    {
+        if( X->p[i] > Y->p[i] ) return(  1 );
+        if( X->p[i] < Y->p[i] ) return( -1 );
+    }
+
+    return( 0 );
+}
+
+/*
+ * Compare signed values
+ */
+int mpi_cmp_mpi( mpi *X, mpi *Y )
+{
+    int i, j;
+
+    for( i = X->n - 1; i >= 0; i-- )
+        if( X->p[i] != 0 )
+            break;
+
+    for( j = Y->n - 1; j >= 0; j-- )
+        if( Y->p[j] != 0 )
+            break;
+
+    if( i < 0 && j < 0 )
+        return( 0 );
+
+    if( i > j ) return(  X->s );
+    if( j > i ) return( -X->s );
+
+    if( X->s > 0 && Y->s < 0 ) return(  1 );
+    if( Y->s > 0 && X->s < 0 ) return( -1 );
+
+    for( ; i >= 0; i-- )
+    {
+        if( X->p[i] > Y->p[i] ) return(  X->s );
+        if( X->p[i] < Y->p[i] ) return( -X->s );
+    }
+
+    return( 0 );
+}
+
+/*
+ * Compare signed values
+ */
+int mpi_cmp_int( mpi *X, int z )
+{
+    mpi Y;
+    t_int p[1];
+
+    *p  = ( z < 0 ) ? -z : z;
+    Y.s = ( z < 0 ) ? -1 : 1;
+    Y.n = 1;
+    Y.p = p;
+
+    return( mpi_cmp_mpi( X, &Y ) );
+}
+
+/*
+ * Unsigned addition: X = |A| + |B|  (HAC 14.7)
+ */
+int mpi_add_abs( mpi *X, mpi *A, mpi *B )
+{
+    int ret, i, j;
+    t_int *o, *p, c;
+
+    if( X == B )
+    {
+        mpi *T = A; A = X; B = T;
+    }
+
+    if( X != A )
+        MPI_CHK( mpi_copy( X, A ) );
+
+    for( j = B->n - 1; j >= 0; j-- )
+        if( B->p[j] != 0 )
+            break;
+
+    MPI_CHK( mpi_grow( X, j + 1 ) );
+
+    o = B->p; p = X->p; c = 0;
+
+    for( i = 0; i <= j; i++, o++, p++ )
+    {
+        *p +=  c; c  = ( *p <  c );
+        *p += *o; c += ( *p < *o );
+    }
+
+    while( c != 0 )
+    {
+        if( i >= X->n )
+        {
+            MPI_CHK( mpi_grow( X, i + 1 ) );
+            p = X->p + i;
+        }
+
+        *p += c; c = ( *p < c ); i++;
+    }
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Helper for mpi subtraction
+ */
+static void mpi_sub_hlp( int n, t_int *s, t_int *d )
+{
+    int i;
+    t_int c, z;
+
+    for( i = c = 0; i < n; i++, s++, d++ )
+    {
+        z = ( *d <  c );     *d -=  c;
+        c = ( *d < *s ) + z; *d -= *s;
+    }
+
+    while( c != 0 )
+    {
+        z = ( *d < c ); *d -= c;
+        c = z; i++; d++;
+    }
+}
+
+/*
+ * Unsigned subtraction: X = |A| - |B|  (HAC 14.9)
+ */
+int mpi_sub_abs( mpi *X, mpi *A, mpi *B )
+{
+    mpi TB;
+    int ret, n;
+
+    if( mpi_cmp_abs( A, B ) < 0 )
+        return( POLARSSL_ERR_MPI_NEGATIVE_VALUE );
+
+    mpi_init( &TB, NULL );
+
+    if( X == B )
+    {
+        MPI_CHK( mpi_copy( &TB, B ) );
+        B = &TB;
+    }
+
+    if( X != A )
+        MPI_CHK( mpi_copy( X, A ) );
+
+    ret = 0;
+
+    for( n = B->n - 1; n >= 0; n-- )
+        if( B->p[n] != 0 )
+            break;
+
+    mpi_sub_hlp( n + 1, B->p, X->p );
+
+cleanup:
+
+    mpi_free( &TB, NULL );
+
+    return( ret );
+}
+
+/*
+ * Signed addition: X = A + B
+ */
+int mpi_add_mpi( mpi *X, mpi *A, mpi *B )
+{
+    int ret, s = A->s;
+
+    if( A->s * B->s < 0 )
+    {
+        if( mpi_cmp_abs( A, B ) >= 0 )
+        {
+            MPI_CHK( mpi_sub_abs( X, A, B ) );
+            X->s =  s;
+        }
+        else
+        {
+            MPI_CHK( mpi_sub_abs( X, B, A ) );
+            X->s = -s;
+        }
+    }
+    else
+    {
+        MPI_CHK( mpi_add_abs( X, A, B ) );
+        X->s = s;
+    }
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Signed subtraction: X = A - B
+ */
+int mpi_sub_mpi( mpi *X, mpi *A, mpi *B )
+{
+    int ret, s = A->s;
+
+    if( A->s * B->s > 0 )
+    {
+        if( mpi_cmp_abs( A, B ) >= 0 )
+        {
+            MPI_CHK( mpi_sub_abs( X, A, B ) );
+            X->s =  s;
+        }
+        else
+        {
+            MPI_CHK( mpi_sub_abs( X, B, A ) );
+            X->s = -s;
+        }
+    }
+    else
+    {
+        MPI_CHK( mpi_add_abs( X, A, B ) );
+        X->s = s;
+    }
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Signed addition: X = A + b
+ */
+int mpi_add_int( mpi *X, mpi *A, int b )
+{
+    mpi _B;
+    t_int p[1];
+
+    p[0] = ( b < 0 ) ? -b : b;
+    _B.s = ( b < 0 ) ? -1 : 1;
+    _B.n = 1;
+    _B.p = p;
+
+    return( mpi_add_mpi( X, A, &_B ) );
+}
+
+/*
+ * Signed subtraction: X = A - b
+ */
+int mpi_sub_int( mpi *X, mpi *A, int b )
+{
+    mpi _B;
+    t_int p[1];
+
+    p[0] = ( b < 0 ) ? -b : b;
+    _B.s = ( b < 0 ) ? -1 : 1;
+    _B.n = 1;
+    _B.p = p;
+
+    return( mpi_sub_mpi( X, A, &_B ) );
+}
+
+/*
+ * Helper for mpi multiplication
+ */ 
+static void mpi_mul_hlp( int i, t_int *s, t_int *d, t_int b )
+{
+    t_int c = 0, t = 0;
+
+#if defined(MULADDC_HUIT)
+    for( ; i >= 8; i -= 8 )
+    {
+        MULADDC_INIT
+        MULADDC_HUIT
+        MULADDC_STOP
+    }
+
+    for( ; i > 0; i-- )
+    {
+        MULADDC_INIT
+        MULADDC_CORE
+        MULADDC_STOP
+    }
+#else
+    for( ; i >= 16; i -= 16 )
+    {
+        MULADDC_INIT
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_STOP
+    }
+
+    for( ; i >= 8; i -= 8 )
+    {
+        MULADDC_INIT
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_CORE   MULADDC_CORE
+        MULADDC_STOP
+    }
+
+    for( ; i > 0; i-- )
+    {
+        MULADDC_INIT
+        MULADDC_CORE
+        MULADDC_STOP
+    }
+#endif
+
+    t++;
+
+    do {
+        *d += c; c = ( *d < c ); d++;
+    }
+    while( c != 0 );
+}
+
+/*
+ * Baseline multiplication: X = A * B  (HAC 14.12)
+ */
+int mpi_mul_mpi( mpi *X, mpi *A, mpi *B )
+{
+    int ret, i, j;
+    mpi TA, TB;
+
+    mpi_init( &TA, &TB, NULL );
+
+    if( X == A ) { MPI_CHK( mpi_copy( &TA, A ) ); A = &TA; }
+    if( X == B ) { MPI_CHK( mpi_copy( &TB, B ) ); B = &TB; }
+
+    for( i = A->n - 1; i >= 0; i-- )
+        if( A->p[i] != 0 )
+            break;
+
+    for( j = B->n - 1; j >= 0; j-- )
+        if( B->p[j] != 0 )
+            break;
+
+    MPI_CHK( mpi_grow( X, i + j + 2 ) );
+    MPI_CHK( mpi_lset( X, 0 ) );
+
+    for( i++; j >= 0; j-- )
+        mpi_mul_hlp( i, A->p, X->p + j, B->p[j] );
+
+    X->s = A->s * B->s;
+
+cleanup:
+
+    mpi_free( &TB, &TA, NULL );
+
+    return( ret );
+}
+
+/*
+ * Baseline multiplication: X = A * b
+ */
+int mpi_mul_int( mpi *X, mpi *A, t_int b )
+{
+    mpi _B;
+    t_int p[1];
+
+    _B.s = 1;
+    _B.n = 1;
+    _B.p = p;
+    p[0] = b;
+
+    return( mpi_mul_mpi( X, A, &_B ) );
+}
+
+/*
+ * Division by mpi: A = Q * B + R  (HAC 14.20)
+ */
+int mpi_div_mpi( mpi *Q, mpi *R, mpi *A, mpi *B )
+{
+    int ret, i, n, t, k;
+    mpi X, Y, Z, T1, T2;
+
+    if( mpi_cmp_int( B, 0 ) == 0 )
+        return( POLARSSL_ERR_MPI_DIVISION_BY_ZERO );
+
+    mpi_init( &X, &Y, &Z, &T1, &T2, NULL );
+
+    if( mpi_cmp_abs( A, B ) < 0 )
+    {
+        if( Q != NULL ) MPI_CHK( mpi_lset( Q, 0 ) );
+        if( R != NULL ) MPI_CHK( mpi_copy( R, A ) );
+        return( 0 );
+    }
+
+    MPI_CHK( mpi_copy( &X, A ) );
+    MPI_CHK( mpi_copy( &Y, B ) );
+    X.s = Y.s = 1;
+
+    MPI_CHK( mpi_grow( &Z, A->n + 2 ) );
+    MPI_CHK( mpi_lset( &Z,  0 ) );
+    MPI_CHK( mpi_grow( &T1, 2 ) );
+    MPI_CHK( mpi_grow( &T2, 3 ) );
+
+    k = mpi_msb( &Y ) % biL;
+    if( k < (int) biL - 1 )
+    {
+        k = biL - 1 - k;
+        MPI_CHK( mpi_shift_l( &X, k ) );
+        MPI_CHK( mpi_shift_l( &Y, k ) );
+    }
+    else k = 0;
+
+    n = X.n - 1;
+    t = Y.n - 1;
+    mpi_shift_l( &Y, biL * (n - t) );
+
+    while( mpi_cmp_mpi( &X, &Y ) >= 0 )
+    {
+        Z.p[n - t]++;
+        mpi_sub_mpi( &X, &X, &Y );
+    }
+    mpi_shift_r( &Y, biL * (n - t) );
+
+    for( i = n; i > t ; i-- )
+    {
+        if( X.p[i] >= Y.p[t] )
+            Z.p[i - t - 1] = ~0;
+        else
+        {
+#if defined(POLARSSL_HAVE_LONGLONG)
+            t_dbl r;
+
+            r  = (t_dbl) X.p[i] << biL;
+            r |= (t_dbl) X.p[i - 1];
+            r /= Y.p[t];
+            if( r > ((t_dbl) 1 << biL) - 1)
+                r = ((t_dbl) 1 << biL) - 1;
+
+            Z.p[i - t - 1] = (t_int) r;
+#else
+            /*
+             * __udiv_qrnnd_c, from gmp/longlong.h
+             */
+            t_int q0, q1, r0, r1;
+            t_int d0, d1, d, m;
+
+            d  = Y.p[t];
+            d0 = ( d << biH ) >> biH;
+            d1 = ( d >> biH );
+
+            q1 = X.p[i] / d1;
+            r1 = X.p[i] - d1 * q1;
+            r1 <<= biH;
+            r1 |= ( X.p[i - 1] >> biH );
+
+            m = q1 * d0;
+            if( r1 < m )
+            {
+                q1--, r1 += d;
+                while( r1 >= d && r1 < m )
+                    q1--, r1 += d;
+            }
+            r1 -= m;
+
+            q0 = r1 / d1;
+            r0 = r1 - d1 * q0;
+            r0 <<= biH;
+            r0 |= ( X.p[i - 1] << biH ) >> biH;
+
+            m = q0 * d0;
+            if( r0 < m )
+            {
+                q0--, r0 += d;
+                while( r0 >= d && r0 < m )
+                    q0--, r0 += d;
+            }
+            r0 -= m;
+
+            Z.p[i - t - 1] = ( q1 << biH ) | q0;
+#endif
+        }
+
+        Z.p[i - t - 1]++;
+        do
+        {
+            Z.p[i - t - 1]--;
+
+            MPI_CHK( mpi_lset( &T1, 0 ) );
+            T1.p[0] = (t < 1) ? 0 : Y.p[t - 1];
+            T1.p[1] = Y.p[t];
+            MPI_CHK( mpi_mul_int( &T1, &T1, Z.p[i - t - 1] ) );
+
+            MPI_CHK( mpi_lset( &T2, 0 ) );
+            T2.p[0] = (i < 2) ? 0 : X.p[i - 2];
+            T2.p[1] = (i < 1) ? 0 : X.p[i - 1];
+            T2.p[2] = X.p[i];
+        }
+        while( mpi_cmp_mpi( &T1, &T2 ) > 0 );
+
+        MPI_CHK( mpi_mul_int( &T1, &Y, Z.p[i - t - 1] ) );
+        MPI_CHK( mpi_shift_l( &T1,  biL * (i - t - 1) ) );
+        MPI_CHK( mpi_sub_mpi( &X, &X, &T1 ) );
+
+        if( mpi_cmp_int( &X, 0 ) < 0 )
+        {
+            MPI_CHK( mpi_copy( &T1, &Y ) );
+            MPI_CHK( mpi_shift_l( &T1, biL * (i - t - 1) ) );
+            MPI_CHK( mpi_add_mpi( &X, &X, &T1 ) );
+            Z.p[i - t - 1]--;
+        }
+    }
+
+    if( Q != NULL )
+    {
+        mpi_copy( Q, &Z );
+        Q->s = A->s * B->s;
+    }
+
+    if( R != NULL )
+    {
+        mpi_shift_r( &X, k );
+        mpi_copy( R, &X );
+
+        R->s = A->s;
+        if( mpi_cmp_int( R, 0 ) == 0 )
+            R->s = 1;
+    }
+
+cleanup:
+
+    mpi_free( &X, &Y, &Z, &T1, &T2, NULL );
+
+    return( ret );
+}
+
+/*
+ * Division by int: A = Q * b + R
+ *
+ * Returns 0 if successful
+ *         1 if memory allocation failed
+ *         POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0
+ */
+int mpi_div_int( mpi *Q, mpi *R, mpi *A, int b )
+{
+    mpi _B;
+    t_int p[1];
+
+    p[0] = ( b < 0 ) ? -b : b;
+    _B.s = ( b < 0 ) ? -1 : 1;
+    _B.n = 1;
+    _B.p = p;
+
+    return( mpi_div_mpi( Q, R, A, &_B ) );
+}
+
+/*
+ * Modulo: R = A mod B
+ */
+int mpi_mod_mpi( mpi *R, mpi *A, mpi *B )
+{
+    int ret;
+
+    MPI_CHK( mpi_div_mpi( NULL, R, A, B ) );
+
+    while( mpi_cmp_int( R, 0 ) < 0 )
+      MPI_CHK( mpi_add_mpi( R, R, B ) );
+
+    while( mpi_cmp_mpi( R, B ) >= 0 )
+      MPI_CHK( mpi_sub_mpi( R, R, B ) );
+
+cleanup:
+
+    return( ret );
+}
+
+/*
+ * Modulo: r = A mod b
+ */
+int mpi_mod_int( t_int *r, mpi *A, int b )
+{
+    int i;
+    t_int x, y, z;
+
+    if( b == 0 )
+        return( POLARSSL_ERR_MPI_DIVISION_BY_ZERO );
+
+    if( b < 0 )
+        b = -b;
+
+    /*
+     * handle trivial cases
+     */
+    if( b == 1 )
+    {
+        *r = 0;
+        return( 0 );
+    }
+
+    if( b == 2 )
+    {
+        *r = A->p[0] & 1;
+        return( 0 );
+    }
+
+    /*
+     * general case
+     */
+    for( i = A->n - 1, y = 0; i >= 0; i-- )
+    {
+        x  = A->p[i];
+        y  = ( y << biH ) | ( x >> biH );
+        z  = y / b;
+        y -= z * b;
+
+        x <<= biH;
+        y  = ( y << biH ) | ( x >> biH );
+        z  = y / b;
+        y -= z * b;
+    }
+
+    *r = y;
+
+    return( 0 );
+}
+
+/*
+ * Fast Montgomery initialization (thanks to Tom St Denis)
+ */
+static void mpi_montg_init( t_int *mm, mpi *N )
+{
+    t_int x, m0 = N->p[0];
+
+    x  = m0;
+    x += ( ( m0 + 2 ) & 4 ) << 1;
+    x *= ( 2 - ( m0 * x ) );
+
+    if( biL >= 16 ) x *= ( 2 - ( m0 * x ) );
+    if( biL >= 32 ) x *= ( 2 - ( m0 * x ) );
+    if( biL >= 64 ) x *= ( 2 - ( m0 * x ) );
+
+    *mm = ~x + 1;
+}
+
+/*
+ * Montgomery multiplication: A = A * B * R^-1 mod N  (HAC 14.36)
+ */
+static void mpi_montmul( mpi *A, mpi *B, mpi *N, t_int mm, mpi *T )
+{
+    int i, n, m;
+    t_int u0, u1, *d;
+
+    memset( T->p, 0, T->n * ciL );
+
+    d = T->p;
+    n = N->n;
+    m = ( B->n < n ) ? B->n : n;
+
+    for( i = 0; i < n; i++ )
+    {
+        /*
+         * T = (T + u0*B + u1*N) / 2^biL
+         */
+        u0 = A->p[i];
+        u1 = ( d[0] + u0 * B->p[0] ) * mm;
+
+        mpi_mul_hlp( m, B->p, d, u0 );
+        mpi_mul_hlp( n, N->p, d, u1 );
+
+        *d++ = u0; d[n + 1] = 0;
+    }
+
+    memcpy( A->p, d, (n + 1) * ciL );
+
+    if( mpi_cmp_abs( A, N ) >= 0 )
+        mpi_sub_hlp( n, N->p, A->p );
+    else
+        /* prevent timing attacks */
+        mpi_sub_hlp( n, A->p, T->p );
+}
+
+/*
+ * Montgomery reduction: A = A * R^-1 mod N
+ */
+static void mpi_montred( mpi *A, mpi *N, t_int mm, mpi *T )
+{
+    t_int z = 1;
+    mpi U;
+
+    U.n = U.s = z;
+    U.p = &z;
+
+    mpi_montmul( A, &U, N, mm, T );
+}
+
+/*
+ * Sliding-window exponentiation: X = A^E mod N  (HAC 14.85)
+ */
+int mpi_exp_mod( mpi *X, mpi *A, mpi *E, mpi *N, mpi *_RR )
+{
+    int ret, i, j, wsize, wbits;
+    int bufsize, nblimbs, nbits;
+    t_int ei, mm, state;
+    mpi RR, T, W[64];
+
+    if( mpi_cmp_int( N, 0 ) < 0 || ( N->p[0] & 1 ) == 0 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    /*
+     * Init temps and window size
+     */
+    mpi_montg_init( &mm, N );
+    mpi_init( &RR, &T, NULL );
+    memset( W, 0, sizeof( W ) );
+
+    i = mpi_msb( E );
+
+    wsize = ( i > 671 ) ? 6 : ( i > 239 ) ? 5 :
+            ( i >  79 ) ? 4 : ( i >  23 ) ? 3 : 1;
+
+    j = N->n + 1;
+    MPI_CHK( mpi_grow( X, j ) );
+    MPI_CHK( mpi_grow( &W[1],  j ) );
+    MPI_CHK( mpi_grow( &T, j * 2 ) );
+
+    /*
+     * If 1st call, pre-compute R^2 mod N
+     */
+    if( _RR == NULL || _RR->p == NULL )
+    {
+        MPI_CHK( mpi_lset( &RR, 1 ) );
+        MPI_CHK( mpi_shift_l( &RR, N->n * 2 * biL ) );
+        MPI_CHK( mpi_mod_mpi( &RR, &RR, N ) );
+
+        if( _RR != NULL )
+            memcpy( _RR, &RR, sizeof( mpi ) );
+    }
+    else
+        memcpy( &RR, _RR, sizeof( mpi ) );
+
+    /*
+     * W[1] = A * R^2 * R^-1 mod N = A * R mod N
+     */
+    if( mpi_cmp_mpi( A, N ) >= 0 )
+        mpi_mod_mpi( &W[1], A, N );
+    else   mpi_copy( &W[1], A );
+
+    mpi_montmul( &W[1], &RR, N, mm, &T );
+
+    /*
+     * X = R^2 * R^-1 mod N = R mod N
+     */
+    MPI_CHK( mpi_copy( X, &RR ) );
+    mpi_montred( X, N, mm, &T );
+
+    if( wsize > 1 )
+    {
+        /*
+         * W[1 << (wsize - 1)] = W[1] ^ (wsize - 1)
+         */
+        j =  1 << (wsize - 1);
+
+        MPI_CHK( mpi_grow( &W[j], N->n + 1 ) );
+        MPI_CHK( mpi_copy( &W[j], &W[1]    ) );
+
+        for( i = 0; i < wsize - 1; i++ )
+            mpi_montmul( &W[j], &W[j], N, mm, &T );
+    
+        /*
+         * W[i] = W[i - 1] * W[1]
+         */
+        for( i = j + 1; i < (1 << wsize); i++ )
+        {
+            MPI_CHK( mpi_grow( &W[i], N->n + 1 ) );
+            MPI_CHK( mpi_copy( &W[i], &W[i - 1] ) );
+
+            mpi_montmul( &W[i], &W[1], N, mm, &T );
+        }
+    }
+
+    nblimbs = E->n;
+    bufsize = 0;
+    nbits   = 0;
+    wbits   = 0;
+    state   = 0;
+
+    while( 1 )
+    {
+        if( bufsize == 0 )
+        {
+            if( nblimbs-- == 0 )
+                break;
+
+            bufsize = sizeof( t_int ) << 3;
+        }
+
+        bufsize--;
+
+        ei = (E->p[nblimbs] >> bufsize) & 1;
+
+        /*
+         * skip leading 0s
+         */
+        if( ei == 0 && state == 0 )
+            continue;
+
+        if( ei == 0 && state == 1 )
+        {
+            /*
+             * out of window, square X
+             */
+            mpi_montmul( X, X, N, mm, &T );
+            continue;
+        }
+
+        /*
+         * add ei to current window
+         */
+        state = 2;
+
+        nbits++;
+        wbits |= (ei << (wsize - nbits));
+
+        if( nbits == wsize )
+        {
+            /*
+             * X = X^wsize R^-1 mod N
+             */
+            for( i = 0; i < wsize; i++ )
+                mpi_montmul( X, X, N, mm, &T );
+
+            /*
+             * X = X * W[wbits] R^-1 mod N
+             */
+            mpi_montmul( X, &W[wbits], N, mm, &T );
+
+            state--;
+            nbits = 0;
+            wbits = 0;
+        }
+    }
+
+    /*
+     * process the remaining bits
+     */
+    for( i = 0; i < nbits; i++ )
+    {
+        mpi_montmul( X, X, N, mm, &T );
+
+        wbits <<= 1;
+
+        if( (wbits & (1 << wsize)) != 0 )
+            mpi_montmul( X, &W[1], N, mm, &T );
+    }
+
+    /*
+     * X = A^E * R * R^-1 mod N = A^E mod N
+     */
+    mpi_montred( X, N, mm, &T );
+
+cleanup:
+
+    for( i = (1 << (wsize - 1)); i < (1 << wsize); i++ )
+        mpi_free( &W[i], NULL );
+
+    if( _RR != NULL )
+         mpi_free( &W[1], &T, NULL );
+    else mpi_free( &W[1], &T, &RR, NULL );
+
+    return( ret );
+}
+
+/*
+ * Greatest common divisor: G = gcd(A, B)  (HAC 14.54)
+ */
+int mpi_gcd( mpi *G, mpi *A, mpi *B )
+{
+    int ret, lz, lzt;
+    mpi TG, TA, TB;
+
+    mpi_init( &TG, &TA, &TB, NULL );
+
+    MPI_CHK( mpi_copy( &TA, A ) );
+    MPI_CHK( mpi_copy( &TB, B ) );
+
+    lz = mpi_lsb( &TA );
+    lzt = mpi_lsb( &TB );
+
+    if ( lzt < lz )
+        lz = lzt;
+
+    MPI_CHK( mpi_shift_r( &TA, lz ) );
+    MPI_CHK( mpi_shift_r( &TB, lz ) );
+
+    TA.s = TB.s = 1;
+
+    while( mpi_cmp_int( &TA, 0 ) != 0 )
+    {
+        MPI_CHK( mpi_shift_r( &TA, mpi_lsb( &TA ) ) );
+        MPI_CHK( mpi_shift_r( &TB, mpi_lsb( &TB ) ) );
+
+        if( mpi_cmp_mpi( &TA, &TB ) >= 0 )
+        {
+            MPI_CHK( mpi_sub_abs( &TA, &TA, &TB ) );
+            MPI_CHK( mpi_shift_r( &TA, 1 ) );
+        }
+        else
+        {
+            MPI_CHK( mpi_sub_abs( &TB, &TB, &TA ) );
+            MPI_CHK( mpi_shift_r( &TB, 1 ) );
+        }
+    }
+
+    MPI_CHK( mpi_shift_l( &TB, lz ) );
+    MPI_CHK( mpi_copy( G, &TB ) );
+
+cleanup:
+
+    mpi_free( &TB, &TA, &TG, NULL );
+
+    return( ret );
+}
+
+#if defined(POLARSSL_GENPRIME)
+
+/*
+ * Modular inverse: X = A^-1 mod N  (HAC 14.61 / 14.64)
+ */
+int mpi_inv_mod( mpi *X, mpi *A, mpi *N )
+{
+    int ret;
+    mpi G, TA, TU, U1, U2, TB, TV, V1, V2;
+
+    if( mpi_cmp_int( N, 0 ) <= 0 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    mpi_init( &TA, &TU, &U1, &U2, &G,
+              &TB, &TV, &V1, &V2, NULL );
+
+    MPI_CHK( mpi_gcd( &G, A, N ) );
+
+    if( mpi_cmp_int( &G, 1 ) != 0 )
+    {
+        ret = POLARSSL_ERR_MPI_NOT_ACCEPTABLE;
+        goto cleanup;
+    }
+
+    MPI_CHK( mpi_mod_mpi( &TA, A, N ) );
+    MPI_CHK( mpi_copy( &TU, &TA ) );
+    MPI_CHK( mpi_copy( &TB, N ) );
+    MPI_CHK( mpi_copy( &TV, N ) );
+
+    MPI_CHK( mpi_lset( &U1, 1 ) );
+    MPI_CHK( mpi_lset( &U2, 0 ) );
+    MPI_CHK( mpi_lset( &V1, 0 ) );
+    MPI_CHK( mpi_lset( &V2, 1 ) );
+
+    do
+    {
+        while( ( TU.p[0] & 1 ) == 0 )
+        {
+            MPI_CHK( mpi_shift_r( &TU, 1 ) );
+
+            if( ( U1.p[0] & 1 ) != 0 || ( U2.p[0] & 1 ) != 0 )
+            {
+                MPI_CHK( mpi_add_mpi( &U1, &U1, &TB ) );
+                MPI_CHK( mpi_sub_mpi( &U2, &U2, &TA ) );
+            }
+
+            MPI_CHK( mpi_shift_r( &U1, 1 ) );
+            MPI_CHK( mpi_shift_r( &U2, 1 ) );
+        }
+
+        while( ( TV.p[0] & 1 ) == 0 )
+        {
+            MPI_CHK( mpi_shift_r( &TV, 1 ) );
+
+            if( ( V1.p[0] & 1 ) != 0 || ( V2.p[0] & 1 ) != 0 )
+            {
+                MPI_CHK( mpi_add_mpi( &V1, &V1, &TB ) );
+                MPI_CHK( mpi_sub_mpi( &V2, &V2, &TA ) );
+            }
+
+            MPI_CHK( mpi_shift_r( &V1, 1 ) );
+            MPI_CHK( mpi_shift_r( &V2, 1 ) );
+        }
+
+        if( mpi_cmp_mpi( &TU, &TV ) >= 0 )
+        {
+            MPI_CHK( mpi_sub_mpi( &TU, &TU, &TV ) );
+            MPI_CHK( mpi_sub_mpi( &U1, &U1, &V1 ) );
+            MPI_CHK( mpi_sub_mpi( &U2, &U2, &V2 ) );
+        }
+        else
+        {
+            MPI_CHK( mpi_sub_mpi( &TV, &TV, &TU ) );
+            MPI_CHK( mpi_sub_mpi( &V1, &V1, &U1 ) );
+            MPI_CHK( mpi_sub_mpi( &V2, &V2, &U2 ) );
+        }
+    }
+    while( mpi_cmp_int( &TU, 0 ) != 0 );
+
+    while( mpi_cmp_int( &V1, 0 ) < 0 )
+        MPI_CHK( mpi_add_mpi( &V1, &V1, N ) );
+
+    while( mpi_cmp_mpi( &V1, N ) >= 0 )
+        MPI_CHK( mpi_sub_mpi( &V1, &V1, N ) );
+
+    MPI_CHK( mpi_copy( X, &V1 ) );
+
+cleanup:
+
+    mpi_free( &V2, &V1, &TV, &TB, &G,
+              &U2, &U1, &TU, &TA, NULL );
+
+    return( ret );
+}
+
+static const int small_prime[] =
+{
+        3,    5,    7,   11,   13,   17,   19,   23,
+       29,   31,   37,   41,   43,   47,   53,   59,
+       61,   67,   71,   73,   79,   83,   89,   97,
+      101,  103,  107,  109,  113,  127,  131,  137,
+      139,  149,  151,  157,  163,  167,  173,  179,
+      181,  191,  193,  197,  199,  211,  223,  227,
+      229,  233,  239,  241,  251,  257,  263,  269,
+      271,  277,  281,  283,  293,  307,  311,  313,
+      317,  331,  337,  347,  349,  353,  359,  367,
+      373,  379,  383,  389,  397,  401,  409,  419,
+      421,  431,  433,  439,  443,  449,  457,  461,
+      463,  467,  479,  487,  491,  499,  503,  509,
+      521,  523,  541,  547,  557,  563,  569,  571,
+      577,  587,  593,  599,  601,  607,  613,  617,
+      619,  631,  641,  643,  647,  653,  659,  661,
+      673,  677,  683,  691,  701,  709,  719,  727,
+      733,  739,  743,  751,  757,  761,  769,  773,
+      787,  797,  809,  811,  821,  823,  827,  829,
+      839,  853,  857,  859,  863,  877,  881,  883,
+      887,  907,  911,  919,  929,  937,  941,  947,
+      953,  967,  971,  977,  983,  991,  997, -103
+};
+
+/*
+ * Miller-Rabin primality test  (HAC 4.24)
+ */
+int mpi_is_prime( mpi *X, int (*f_rng)(void *), void *p_rng )
+{
+    int ret, i, j, n, s, xs;
+    mpi W, R, T, A, RR;
+    unsigned char *p;
+
+    if( mpi_cmp_int( X, 0 ) == 0 )
+        return( 0 );
+
+    mpi_init( &W, &R, &T, &A, &RR, NULL );
+
+    xs = X->s; X->s = 1;
+
+    /*
+     * test trivial factors first
+     */
+    if( ( X->p[0] & 1 ) == 0 )
+        return( POLARSSL_ERR_MPI_NOT_ACCEPTABLE );
+
+    for( i = 0; small_prime[i] > 0; i++ )
+    {
+        t_int r;
+
+        if( mpi_cmp_int( X, small_prime[i] ) <= 0 )
+            return( 0 );
+
+        MPI_CHK( mpi_mod_int( &r, X, small_prime[i] ) );
+
+        if( r == 0 )
+            return( POLARSSL_ERR_MPI_NOT_ACCEPTABLE );
+    }
+
+    /*
+     * W = |X| - 1
+     * R = W >> lsb( W )
+     */
+    s = mpi_lsb( &W );
+    MPI_CHK( mpi_sub_int( &W, X, 1 ) );
+    MPI_CHK( mpi_copy( &R, &W ) );
+    MPI_CHK( mpi_shift_r( &R, s ) );
+
+    i = mpi_msb( X );
+    /*
+     * HAC, table 4.4
+     */
+    n = ( ( i >= 1300 ) ?  2 : ( i >=  850 ) ?  3 :
+          ( i >=  650 ) ?  4 : ( i >=  350 ) ?  8 :
+          ( i >=  250 ) ? 12 : ( i >=  150 ) ? 18 : 27 );
+
+    for( i = 0; i < n; i++ )
+    {
+        /*
+         * pick a random A, 1 < A < |X| - 1
+         */
+        MPI_CHK( mpi_grow( &A, X->n ) );
+
+        p = (unsigned char *) A.p;
+        for( j = 0; j < A.n * ciL; j++ )
+            *p++ = (unsigned char) f_rng( p_rng );
+
+        j = mpi_msb( &A ) - mpi_msb( &W );
+        MPI_CHK( mpi_shift_r( &A, j + 1 ) );
+        A.p[0] |= 3;
+
+        /*
+         * A = A^R mod |X|
+         */
+        MPI_CHK( mpi_exp_mod( &A, &A, &R, X, &RR ) );
+
+        if( mpi_cmp_mpi( &A, &W ) == 0 ||
+            mpi_cmp_int( &A,  1 ) == 0 )
+            continue;
+
+        j = 1;
+        while( j < s && mpi_cmp_mpi( &A, &W ) != 0 )
+        {
+            /*
+             * A = A * A mod |X|
+             */
+            MPI_CHK( mpi_mul_mpi( &T, &A, &A ) );
+            MPI_CHK( mpi_mod_mpi( &A, &T, X  ) );
+
+            if( mpi_cmp_int( &A, 1 ) == 0 )
+                break;
+
+            j++;
+        }
+
+        /*
+         * not prime if A != |X| - 1 or A == 1
+         */
+        if( mpi_cmp_mpi( &A, &W ) != 0 ||
+            mpi_cmp_int( &A,  1 ) == 0 )
+        {
+            ret = POLARSSL_ERR_MPI_NOT_ACCEPTABLE;
+            break;
+        }
+    }
+
+cleanup:
+
+    X->s = xs;
+
+    mpi_free( &RR, &A, &T, &R, &W, NULL );
+
+    return( ret );
+}
+
+/*
+ * Prime number generation
+ */
+int mpi_gen_prime( mpi *X, int nbits, int dh_flag,
+                   int (*f_rng)(void *), void *p_rng )
+{
+    int ret, k, n;
+    unsigned char *p;
+    mpi Y;
+
+    if( nbits < 3 )
+        return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
+
+    mpi_init( &Y, NULL );
+
+    n = BITS_TO_LIMBS( nbits );
+
+    MPI_CHK( mpi_grow( X, n ) );
+    MPI_CHK( mpi_lset( X, 0 ) );
+
+    p = (unsigned char *) X->p;
+    for( k = 0; k < X->n * ciL; k++ )
+        *p++ = (unsigned char) f_rng( p_rng );
+
+    k = mpi_msb( X );
+    if( k < nbits ) MPI_CHK( mpi_shift_l( X, nbits - k ) );
+    if( k > nbits ) MPI_CHK( mpi_shift_r( X, k - nbits ) );
+
+    X->p[0] |= 3;
+
+    if( dh_flag == 0 )
+    {
+        while( ( ret = mpi_is_prime( X, f_rng, p_rng ) ) != 0 )
+        {
+            if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
+                goto cleanup;
+
+            MPI_CHK( mpi_add_int( X, X, 2 ) );
+        }
+    }
+    else
+    {
+        MPI_CHK( mpi_sub_int( &Y, X, 1 ) );
+        MPI_CHK( mpi_shift_r( &Y, 1 ) );
+
+        while( 1 )
+        {
+            if( ( ret = mpi_is_prime( X, f_rng, p_rng ) ) == 0 )
+            {
+                if( ( ret = mpi_is_prime( &Y, f_rng, p_rng ) ) == 0 )
+                    break;
+
+                if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
+                    goto cleanup;
+            }
+
+            if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
+                goto cleanup;
+
+            MPI_CHK( mpi_add_int( &Y, X, 1 ) );
+            MPI_CHK( mpi_add_int(  X, X, 2 ) );
+            MPI_CHK( mpi_shift_r( &Y, 1 ) );
+        }
+    }
+
+cleanup:
+
+    mpi_free( &Y, NULL );
+
+    return( ret );
+}
+
+#endif
+
+#if defined(POLARSSL_SELF_TEST)
+
+#define GCD_PAIR_COUNT 3
+
+static const int gcd_pairs[GCD_PAIR_COUNT][3] =
+{
+    { 693, 609, 21 },
+    { 1764, 868, 28 },
+    { 768454923, 542167814, 1 }
+};
+
+/*
+ * Checkup routine
+ */
+int mpi_self_test( int verbose )
+{
+    int ret, i;
+    mpi A, E, N, X, Y, U, V;
+
+    mpi_init( &A, &E, &N, &X, &Y, &U, &V, NULL );
+
+    MPI_CHK( mpi_read_string( &A, 16,
+        "EFE021C2645FD1DC586E69184AF4A31E" \
+        "D5F53E93B5F123FA41680867BA110131" \
+        "944FE7952E2517337780CB0DB80E61AA" \
+        "E7C8DDC6C5C6AADEB34EB38A2F40D5E6" ) );
+
+    MPI_CHK( mpi_read_string( &E, 16,
+        "B2E7EFD37075B9F03FF989C7C5051C20" \
+        "34D2A323810251127E7BF8625A4F49A5" \
+        "F3E27F4DA8BD59C47D6DAABA4C8127BD" \
+        "5B5C25763222FEFCCFC38B832366C29E" ) );
+
+    MPI_CHK( mpi_read_string( &N, 16,
+        "0066A198186C18C10B2F5ED9B522752A" \
+        "9830B69916E535C8F047518A889A43A5" \
+        "94B6BED27A168D31D4A52F88925AA8F5" ) );
+
+    MPI_CHK( mpi_mul_mpi( &X, &A, &N ) );
+
+    MPI_CHK( mpi_read_string( &U, 16,
+        "602AB7ECA597A3D6B56FF9829A5E8B85" \
+        "9E857EA95A03512E2BAE7391688D264A" \
+        "A5663B0341DB9CCFD2C4C5F421FEC814" \
+        "8001B72E848A38CAE1C65F78E56ABDEF" \
+        "E12D3C039B8A02D6BE593F0BBBDA56F1" \
+        "ECF677152EF804370C1A305CAF3B5BF1" \
+        "30879B56C61DE584A0F53A2447A51E" ) );
+
+    if( verbose != 0 )
+        printf( "  MPI test #1 (mul_mpi): " );
+
+    if( mpi_cmp_mpi( &X, &U ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n" );
+
+    MPI_CHK( mpi_div_mpi( &X, &Y, &A, &N ) );
+
+    MPI_CHK( mpi_read_string( &U, 16,
+        "256567336059E52CAE22925474705F39A94" ) );
+
+    MPI_CHK( mpi_read_string( &V, 16,
+        "6613F26162223DF488E9CD48CC132C7A" \
+        "0AC93C701B001B092E4E5B9F73BCD27B" \
+        "9EE50D0657C77F374E903CDFA4C642" ) );
+
+    if( verbose != 0 )
+        printf( "  MPI test #2 (div_mpi): " );
+
+    if( mpi_cmp_mpi( &X, &U ) != 0 ||
+        mpi_cmp_mpi( &Y, &V ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n" );
+
+    MPI_CHK( mpi_exp_mod( &X, &A, &E, &N, NULL ) );
+
+    MPI_CHK( mpi_read_string( &U, 16,
+        "36E139AEA55215609D2816998ED020BB" \
+        "BD96C37890F65171D948E9BC7CBAA4D9" \
+        "325D24D6A3C12710F10A09FA08AB87" ) );
+
+    if( verbose != 0 )
+        printf( "  MPI test #3 (exp_mod): " );
+
+    if( mpi_cmp_mpi( &X, &U ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n" );
+
+    MPI_CHK( mpi_inv_mod( &X, &A, &N ) );
+
+    MPI_CHK( mpi_read_string( &U, 16,
+        "003A0AAEDD7E784FC07D8F9EC6E3BFD5" \
+        "C3DBA76456363A10869622EAC2DD84EC" \
+        "C5B8A74DAC4D09E03B5E0BE779F2DF61" ) );
+
+    if( verbose != 0 )
+        printf( "  MPI test #4 (inv_mod): " );
+
+    if( mpi_cmp_mpi( &X, &U ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n" );
+
+    if( verbose != 0 )
+        printf( "  MPI test #5 (simple gcd): " );
+
+    for ( i = 0; i < GCD_PAIR_COUNT; i++)
+    {
+        MPI_CHK( mpi_lset( &X, gcd_pairs[i][0] ) );
+       MPI_CHK( mpi_lset( &Y, gcd_pairs[i][1] ) );
+
+       MPI_CHK( mpi_gcd( &A, &X, &Y ) );
+
+       if( mpi_cmp_int( &A, gcd_pairs[i][2] ) != 0 )
+       {
+               if( verbose != 0 )
+                       printf( "failed at %d\n", i );
+
+               return( 1 );
+       }
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n" );
+
+cleanup:
+
+    if( ret != 0 && verbose != 0 )
+        printf( "Unexpected error, return code = %08X\n", ret );
+
+    mpi_free( &V, &U, &Y, &X, &N, &E, &A, NULL );
+
+    if( verbose != 0 )
+        printf( "\n" );
+
+    return( ret );
+}
+
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-px5g/src/library/havege.c b/package/luci/libs/luci-lib-px5g/src/library/havege.c
new file mode 100644 (file)
index 0000000..266299d
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ *  HAVEGE: HArdware Volatile Entropy Gathering and Expansion
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *  The HAVEGE RNG was designed by Andre Seznec in 2002.
+ *
+ *  http://www.irisa.fr/caps/projects/hipsor/publi.php
+ *
+ *  Contact: seznec(at)irisa_dot_fr - orocheco(at)irisa_dot_fr
+ */
+
+#include <string.h>
+#include <time.h>
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_HAVEGE_C)
+
+#include "polarssl/havege.h"
+#include "polarssl/timing.h"
+
+/* ------------------------------------------------------------------------
+ * On average, one iteration accesses two 8-word blocks in the havege WALK
+ * table, and generates 16 words in the RES array.
+ *
+ * The data read in the WALK table is updated and permuted after each use.
+ * The result of the hardware clock counter read is used  for this update.
+ *
+ * 25 conditional tests are present.  The conditional tests are grouped in
+ * two nested  groups of 12 conditional tests and 1 test that controls the
+ * permutation; on average, there should be 6 tests executed and 3 of them
+ * should be mispredicted.
+ * ------------------------------------------------------------------------
+ */
+
+#define SWAP(X,Y) { int *T = X; X = Y; Y = T; }
+
+#define TST1_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1;
+#define TST2_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1;
+
+#define TST1_LEAVE U1++; }
+#define TST2_LEAVE U2++; }
+
+#define ONE_ITERATION                                   \
+                                                        \
+    PTEST = PT1 >> 20;                                  \
+                                                        \
+    TST1_ENTER  TST1_ENTER  TST1_ENTER  TST1_ENTER      \
+    TST1_ENTER  TST1_ENTER  TST1_ENTER  TST1_ENTER      \
+    TST1_ENTER  TST1_ENTER  TST1_ENTER  TST1_ENTER      \
+                                                        \
+    TST1_LEAVE  TST1_LEAVE  TST1_LEAVE  TST1_LEAVE      \
+    TST1_LEAVE  TST1_LEAVE  TST1_LEAVE  TST1_LEAVE      \
+    TST1_LEAVE  TST1_LEAVE  TST1_LEAVE  TST1_LEAVE      \
+                                                        \
+    PTX = (PT1 >> 18) & 7;                              \
+    PT1 &= 0x1FFF;                                      \
+    PT2 &= 0x1FFF;                                      \
+    CLK = (int) hardclock();                            \
+                                                        \
+    i = 0;                                              \
+    A = &WALK[PT1    ]; RES[i++] ^= *A;                 \
+    B = &WALK[PT2    ]; RES[i++] ^= *B;                 \
+    C = &WALK[PT1 ^ 1]; RES[i++] ^= *C;                 \
+    D = &WALK[PT2 ^ 4]; RES[i++] ^= *D;                 \
+                                                        \
+    IN = (*A >> (1)) ^ (*A << (31)) ^ CLK;              \
+    *A = (*B >> (2)) ^ (*B << (30)) ^ CLK;              \
+    *B = IN ^ U1;                                       \
+    *C = (*C >> (3)) ^ (*C << (29)) ^ CLK;              \
+    *D = (*D >> (4)) ^ (*D << (28)) ^ CLK;              \
+                                                        \
+    A = &WALK[PT1 ^ 2]; RES[i++] ^= *A;                 \
+    B = &WALK[PT2 ^ 2]; RES[i++] ^= *B;                 \
+    C = &WALK[PT1 ^ 3]; RES[i++] ^= *C;                 \
+    D = &WALK[PT2 ^ 6]; RES[i++] ^= *D;                 \
+                                                        \
+    if( PTEST & 1 ) SWAP( A, C );                       \
+                                                        \
+    IN = (*A >> (5)) ^ (*A << (27)) ^ CLK;              \
+    *A = (*B >> (6)) ^ (*B << (26)) ^ CLK;              \
+    *B = IN; CLK = (int) hardclock();                   \
+    *C = (*C >> (7)) ^ (*C << (25)) ^ CLK;              \
+    *D = (*D >> (8)) ^ (*D << (24)) ^ CLK;              \
+                                                        \
+    A = &WALK[PT1 ^ 4];                                 \
+    B = &WALK[PT2 ^ 1];                                 \
+                                                        \
+    PTEST = PT2 >> 1;                                   \
+                                                        \
+    PT2 = (RES[(i - 8) ^ PTY] ^ WALK[PT2 ^ PTY ^ 7]);   \
+    PT2 = ((PT2 & 0x1FFF) & (~8)) ^ ((PT1 ^ 8) & 0x8);  \
+    PTY = (PT2 >> 10) & 7;                              \
+                                                        \
+    TST2_ENTER  TST2_ENTER  TST2_ENTER  TST2_ENTER      \
+    TST2_ENTER  TST2_ENTER  TST2_ENTER  TST2_ENTER      \
+    TST2_ENTER  TST2_ENTER  TST2_ENTER  TST2_ENTER      \
+                                                        \
+    TST2_LEAVE  TST2_LEAVE  TST2_LEAVE  TST2_LEAVE      \
+    TST2_LEAVE  TST2_LEAVE  TST2_LEAVE  TST2_LEAVE      \
+    TST2_LEAVE  TST2_LEAVE  TST2_LEAVE  TST2_LEAVE      \
+                                                        \
+    C = &WALK[PT1 ^ 5];                                 \
+    D = &WALK[PT2 ^ 5];                                 \
+                                                        \
+    RES[i++] ^= *A;                                     \
+    RES[i++] ^= *B;                                     \
+    RES[i++] ^= *C;                                     \
+    RES[i++] ^= *D;                                     \
+                                                        \
+    IN = (*A >> ( 9)) ^ (*A << (23)) ^ CLK;             \
+    *A = (*B >> (10)) ^ (*B << (22)) ^ CLK;             \
+    *B = IN ^ U2;                                       \
+    *C = (*C >> (11)) ^ (*C << (21)) ^ CLK;             \
+    *D = (*D >> (12)) ^ (*D << (20)) ^ CLK;             \
+                                                        \
+    A = &WALK[PT1 ^ 6]; RES[i++] ^= *A;                 \
+    B = &WALK[PT2 ^ 3]; RES[i++] ^= *B;                 \
+    C = &WALK[PT1 ^ 7]; RES[i++] ^= *C;                 \
+    D = &WALK[PT2 ^ 7]; RES[i++] ^= *D;                 \
+                                                        \
+    IN = (*A >> (13)) ^ (*A << (19)) ^ CLK;             \
+    *A = (*B >> (14)) ^ (*B << (18)) ^ CLK;             \
+    *B = IN;                                            \
+    *C = (*C >> (15)) ^ (*C << (17)) ^ CLK;             \
+    *D = (*D >> (16)) ^ (*D << (16)) ^ CLK;             \
+                                                        \
+    PT1 = ( RES[(i - 8) ^ PTX] ^                        \
+            WALK[PT1 ^ PTX ^ 7] ) & (~1);               \
+    PT1 ^= (PT2 ^ 0x10) & 0x10;                         \
+                                                        \
+    for( n++, i = 0; i < 16; i++ )                      \
+        hs->pool[n % COLLECT_SIZE] ^= RES[i];
+
+/*
+ * Entropy gathering function
+ */
+static void havege_fill( havege_state *hs )
+{
+    int i, n = 0;
+    int  U1,  U2, *A, *B, *C, *D;
+    int PT1, PT2, *WALK, RES[16];
+    int PTX, PTY, CLK, PTEST, IN;
+
+    WALK = hs->WALK;
+    PT1  = hs->PT1;
+    PT2  = hs->PT2;
+
+    PTX  = U1 = 0;
+    PTY  = U2 = 0;
+
+    memset( RES, 0, sizeof( RES ) );
+
+    while( n < COLLECT_SIZE * 4 )
+    {
+        ONE_ITERATION
+        ONE_ITERATION
+        ONE_ITERATION
+        ONE_ITERATION
+    }
+
+    hs->PT1 = PT1;
+    hs->PT2 = PT2;
+
+    hs->offset[0] = 0;
+    hs->offset[1] = COLLECT_SIZE / 2;
+}
+
+/*
+ * HAVEGE initialization
+ */
+void havege_init( havege_state *hs )
+{
+    memset( hs, 0, sizeof( havege_state ) );
+
+    havege_fill( hs );
+}
+
+/*
+ * HAVEGE rand function
+ */
+int havege_rand( void *p_rng )
+{
+    int ret;
+    havege_state *hs = (havege_state *) p_rng;
+
+    if( hs->offset[1] >= COLLECT_SIZE )
+        havege_fill( hs );
+
+    ret  = hs->pool[hs->offset[0]++];
+    ret ^= hs->pool[hs->offset[1]++];
+
+    return( ret );
+}
+
+#if defined(POLARSSL_RAND_TEST)
+
+#include <stdio.h>
+
+int main( int argc, char *argv[] )
+{
+    FILE *f;
+    time_t t;
+    int i, j, k;
+    havege_state hs;
+    unsigned char buf[1024];
+
+    if( argc < 2 )
+    {
+        fprintf( stderr, "usage: %s <output filename>\n", argv[0] );
+        return( 1 );
+    }
+
+    if( ( f = fopen( argv[1], "wb+" ) ) == NULL )
+    {
+        printf( "failed to open '%s' for writing.\n", argv[0] );
+        return( 1 );
+    }
+
+    havege_init( &hs );
+
+    t = time( NULL );
+
+    for( i = 0, k = 32768; i < k; i++ )
+    {
+        for( j = 0; j < sizeof( buf ); j++ )
+            buf[j] = havege_rand( &hs );
+
+        fwrite( buf, sizeof( buf ), 1, f );
+
+        printf( "Generating 32Mb of data in file '%s'... %04.1f" \
+                "%% done\r", argv[1], (100 * (float) (i + 1)) / k );
+        fflush( stdout );
+    }
+
+    if( t == time( NULL ) )
+        t--;
+
+    fclose( f );
+    return( 0 );
+}
+
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-px5g/src/library/rsa.c b/package/luci/libs/luci-lib-px5g/src/library/rsa.c
new file mode 100644 (file)
index 0000000..131b6c6
--- /dev/null
@@ -0,0 +1,750 @@
+/*
+ *  The RSA public-key cryptosystem
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *  RSA was designed by Ron Rivest, Adi Shamir and Len Adleman.
+ *
+ *  http://theory.lcs.mit.edu/~rivest/rsapaper.pdf
+ *  http://www.cacr.math.uwaterloo.ca/hac/about/chap8.pdf
+ */
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_RSA_C)
+
+#include "polarssl/rsa.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+/*
+ * Initialize an RSA context
+ */
+void rsa_init( rsa_context *ctx,
+               int padding,
+               int hash_id,
+               int (*f_rng)(void *),
+               void *p_rng )
+{
+    memset( ctx, 0, sizeof( rsa_context ) );
+
+    ctx->padding = padding;
+    ctx->hash_id = hash_id;
+
+    ctx->f_rng = f_rng;
+    ctx->p_rng = p_rng;
+}
+
+#if defined(POLARSSL_GENPRIME)
+
+/*
+ * Generate an RSA keypair
+ */
+int rsa_gen_key( rsa_context *ctx, int nbits, int exponent )
+{
+    int ret;
+    mpi P1, Q1, H, G;
+
+    if( ctx->f_rng == NULL || nbits < 128 || exponent < 3 )
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+
+    mpi_init( &P1, &Q1, &H, &G, NULL );
+
+    /*
+     * find primes P and Q with Q < P so that:
+     * GCD( E, (P-1)*(Q-1) ) == 1
+     */
+    MPI_CHK( mpi_lset( &ctx->E, exponent ) );
+
+    do
+    {
+        MPI_CHK( mpi_gen_prime( &ctx->P, ( nbits + 1 ) >> 1, 0, 
+                                ctx->f_rng, ctx->p_rng ) );
+
+        MPI_CHK( mpi_gen_prime( &ctx->Q, ( nbits + 1 ) >> 1, 0,
+                                ctx->f_rng, ctx->p_rng ) );
+
+        if( mpi_cmp_mpi( &ctx->P, &ctx->Q ) < 0 )
+            mpi_swap( &ctx->P, &ctx->Q );
+
+        if( mpi_cmp_mpi( &ctx->P, &ctx->Q ) == 0 )
+            continue;
+
+        MPI_CHK( mpi_mul_mpi( &ctx->N, &ctx->P, &ctx->Q ) );
+        if( mpi_msb( &ctx->N ) != nbits )
+            continue;
+
+        MPI_CHK( mpi_sub_int( &P1, &ctx->P, 1 ) );
+        MPI_CHK( mpi_sub_int( &Q1, &ctx->Q, 1 ) );
+        MPI_CHK( mpi_mul_mpi( &H, &P1, &Q1 ) );
+        MPI_CHK( mpi_gcd( &G, &ctx->E, &H  ) );
+    }
+    while( mpi_cmp_int( &G, 1 ) != 0 );
+
+    /*
+     * D  = E^-1 mod ((P-1)*(Q-1))
+     * DP = D mod (P - 1)
+     * DQ = D mod (Q - 1)
+     * QP = Q^-1 mod P
+     */
+    MPI_CHK( mpi_inv_mod( &ctx->D , &ctx->E, &H  ) );
+    MPI_CHK( mpi_mod_mpi( &ctx->DP, &ctx->D, &P1 ) );
+    MPI_CHK( mpi_mod_mpi( &ctx->DQ, &ctx->D, &Q1 ) );
+    MPI_CHK( mpi_inv_mod( &ctx->QP, &ctx->Q, &ctx->P ) );
+
+    ctx->len = ( mpi_msb( &ctx->N ) + 7 ) >> 3;
+
+cleanup:
+
+    mpi_free( &G, &H, &Q1, &P1, NULL );
+
+    if( ret != 0 )
+    {
+        rsa_free( ctx );
+        return( POLARSSL_ERR_RSA_KEY_GEN_FAILED | ret );
+    }
+
+    return( 0 );   
+}
+
+#endif
+
+/*
+ * Check a public RSA key
+ */
+int rsa_check_pubkey( rsa_context *ctx )
+{
+    if( ( ctx->N.p[0] & 1 ) == 0 || 
+        ( ctx->E.p[0] & 1 ) == 0 )
+        return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED );
+
+    if( mpi_msb( &ctx->N ) < 128 ||
+        mpi_msb( &ctx->N ) > 4096 )
+        return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED );
+
+    if( mpi_msb( &ctx->E ) < 2 ||
+        mpi_msb( &ctx->E ) > 64 )
+        return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED );
+
+    return( 0 );
+}
+
+/*
+ * Check a private RSA key
+ */
+int rsa_check_privkey( rsa_context *ctx )
+{
+    int ret;
+    mpi PQ, DE, P1, Q1, H, I, G;
+
+    if( ( ret = rsa_check_pubkey( ctx ) ) != 0 )
+        return( ret );
+
+    mpi_init( &PQ, &DE, &P1, &Q1, &H, &I, &G, NULL );
+
+    MPI_CHK( mpi_mul_mpi( &PQ, &ctx->P, &ctx->Q ) );
+    MPI_CHK( mpi_mul_mpi( &DE, &ctx->D, &ctx->E ) );
+    MPI_CHK( mpi_sub_int( &P1, &ctx->P, 1 ) );
+    MPI_CHK( mpi_sub_int( &Q1, &ctx->Q, 1 ) );
+    MPI_CHK( mpi_mul_mpi( &H, &P1, &Q1 ) );
+    MPI_CHK( mpi_mod_mpi( &I, &DE, &H  ) );
+    MPI_CHK( mpi_gcd( &G, &ctx->E, &H  ) );
+
+    if( mpi_cmp_mpi( &PQ, &ctx->N ) == 0 &&
+        mpi_cmp_int( &I, 1 ) == 0 &&
+        mpi_cmp_int( &G, 1 ) == 0 )
+    {
+        mpi_free( &G, &I, &H, &Q1, &P1, &DE, &PQ, NULL );
+        return( 0 );
+    }
+
+cleanup:
+
+    mpi_free( &G, &I, &H, &Q1, &P1, &DE, &PQ, NULL );
+    return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED | ret );
+}
+
+/*
+ * Do an RSA public key operation
+ */
+int rsa_public( rsa_context *ctx,
+                unsigned char *input,
+                unsigned char *output )
+{
+    int ret, olen;
+    mpi T;
+
+    mpi_init( &T, NULL );
+
+    MPI_CHK( mpi_read_binary( &T, input, ctx->len ) );
+
+    if( mpi_cmp_mpi( &T, &ctx->N ) >= 0 )
+    {
+        mpi_free( &T, NULL );
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+    }
+
+    olen = ctx->len;
+    MPI_CHK( mpi_exp_mod( &T, &T, &ctx->E, &ctx->N, &ctx->RN ) );
+    MPI_CHK( mpi_write_binary( &T, output, olen ) );
+
+cleanup:
+
+    mpi_free( &T, NULL );
+
+    if( ret != 0 )
+        return( POLARSSL_ERR_RSA_PUBLIC_FAILED | ret );
+
+    return( 0 );
+}
+
+/*
+ * Do an RSA private key operation
+ */
+int rsa_private( rsa_context *ctx,
+                 unsigned char *input,
+                 unsigned char *output )
+{
+    int ret, olen;
+    mpi T, T1, T2;
+
+    mpi_init( &T, &T1, &T2, NULL );
+
+    MPI_CHK( mpi_read_binary( &T, input, ctx->len ) );
+
+    if( mpi_cmp_mpi( &T, &ctx->N ) >= 0 )
+    {
+        mpi_free( &T, NULL );
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+    }
+
+#if 0
+    MPI_CHK( mpi_exp_mod( &T, &T, &ctx->D, &ctx->N, &ctx->RN ) );
+#else
+    /*
+     * faster decryption using the CRT
+     *
+     * T1 = input ^ dP mod P
+     * T2 = input ^ dQ mod Q
+     */
+    MPI_CHK( mpi_exp_mod( &T1, &T, &ctx->DP, &ctx->P, &ctx->RP ) );
+    MPI_CHK( mpi_exp_mod( &T2, &T, &ctx->DQ, &ctx->Q, &ctx->RQ ) );
+
+    /*
+     * T = (T1 - T2) * (Q^-1 mod P) mod P
+     */
+    MPI_CHK( mpi_sub_mpi( &T, &T1, &T2 ) );
+    MPI_CHK( mpi_mul_mpi( &T1, &T, &ctx->QP ) );
+    MPI_CHK( mpi_mod_mpi( &T, &T1, &ctx->P ) );
+
+    /*
+     * output = T2 + T * Q
+     */
+    MPI_CHK( mpi_mul_mpi( &T1, &T, &ctx->Q ) );
+    MPI_CHK( mpi_add_mpi( &T, &T2, &T1 ) );
+#endif
+
+    olen = ctx->len;
+    MPI_CHK( mpi_write_binary( &T, output, olen ) );
+
+cleanup:
+
+    mpi_free( &T, &T1, &T2, NULL );
+
+    if( ret != 0 )
+        return( POLARSSL_ERR_RSA_PRIVATE_FAILED | ret );
+
+    return( 0 );
+}
+
+/*
+ * Add the message padding, then do an RSA operation
+ */
+int rsa_pkcs1_encrypt( rsa_context *ctx,
+                       int mode, int  ilen,
+                       unsigned char *input,
+                       unsigned char *output )
+{
+    int nb_pad, olen;
+    unsigned char *p = output;
+
+    olen = ctx->len;
+
+    switch( ctx->padding )
+    {
+        case RSA_PKCS_V15:
+
+            if( ilen < 0 || olen < ilen + 11 )
+                return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+
+            nb_pad = olen - 3 - ilen;
+
+            *p++ = 0;
+            *p++ = RSA_CRYPT;
+
+            while( nb_pad-- > 0 )
+            {
+                do {
+                    *p = (unsigned char) rand();
+                } while( *p == 0 );
+                p++;
+            }
+            *p++ = 0;
+            memcpy( p, input, ilen );
+            break;
+
+        default:
+
+            return( POLARSSL_ERR_RSA_INVALID_PADDING );
+    }
+
+    return( ( mode == RSA_PUBLIC )
+            ? rsa_public(  ctx, output, output )
+            : rsa_private( ctx, output, output ) );
+}
+
+/*
+ * Do an RSA operation, then remove the message padding
+ */
+int rsa_pkcs1_decrypt( rsa_context *ctx,
+                       int mode, int *olen,
+                       unsigned char *input,
+                       unsigned char *output,
+                      int output_max_len)
+{
+    int ret, ilen;
+    unsigned char *p;
+    unsigned char buf[512];
+
+    ilen = ctx->len;
+
+    if( ilen < 16 || ilen > (int) sizeof( buf ) )
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+
+    ret = ( mode == RSA_PUBLIC )
+          ? rsa_public(  ctx, input, buf )
+          : rsa_private( ctx, input, buf );
+
+    if( ret != 0 )
+        return( ret );
+
+    p = buf;
+
+    switch( ctx->padding )
+    {
+        case RSA_PKCS_V15:
+
+            if( *p++ != 0 || *p++ != RSA_CRYPT )
+                return( POLARSSL_ERR_RSA_INVALID_PADDING );
+
+            while( *p != 0 )
+            {
+                if( p >= buf + ilen - 1 )
+                    return( POLARSSL_ERR_RSA_INVALID_PADDING );
+                p++;
+            }
+            p++;
+            break;
+
+        default:
+
+            return( POLARSSL_ERR_RSA_INVALID_PADDING );
+    }
+
+    if (ilen - (int)(p - buf) > output_max_len)
+       return( POLARSSL_ERR_RSA_OUTPUT_TO_LARGE );
+
+    *olen = ilen - (int)(p - buf);
+    memcpy( output, p, *olen );
+
+    return( 0 );
+}
+
+/*
+ * Do an RSA operation to sign the message digest
+ */
+int rsa_pkcs1_sign( rsa_context *ctx,
+                    int mode,
+                    int hash_id,
+                    int hashlen,
+                    unsigned char *hash,
+                    unsigned char *sig )
+{
+    int nb_pad, olen;
+    unsigned char *p = sig;
+
+    olen = ctx->len;
+
+    switch( ctx->padding )
+    {
+        case RSA_PKCS_V15:
+
+            switch( hash_id )
+            {
+                case RSA_RAW:
+                    nb_pad = olen - 3 - hashlen;
+                    break;
+
+                case RSA_MD2:
+                case RSA_MD4:
+                case RSA_MD5:
+                    nb_pad = olen - 3 - 34;
+                    break;
+
+                case RSA_SHA1:
+                    nb_pad = olen - 3 - 35;
+                    break;
+
+                default:
+                    return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+            }
+
+            if( nb_pad < 8 )
+                return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+
+            *p++ = 0;
+            *p++ = RSA_SIGN;
+            memset( p, 0xFF, nb_pad );
+            p += nb_pad;
+            *p++ = 0;
+            break;
+
+        default:
+
+            return( POLARSSL_ERR_RSA_INVALID_PADDING );
+    }
+
+    switch( hash_id )
+    {
+        case RSA_RAW:
+            memcpy( p, hash, hashlen );
+            break;
+
+        case RSA_MD2:
+            memcpy( p, ASN1_HASH_MDX, 18 );
+            memcpy( p + 18, hash, 16 );
+            p[13] = 2; break;
+
+        case RSA_MD4:
+            memcpy( p, ASN1_HASH_MDX, 18 );
+            memcpy( p + 18, hash, 16 );
+            p[13] = 4; break;
+
+        case RSA_MD5:
+            memcpy( p, ASN1_HASH_MDX, 18 );
+            memcpy( p + 18, hash, 16 );
+            p[13] = 5; break;
+
+        case RSA_SHA1:
+            memcpy( p, ASN1_HASH_SHA1, 15 );
+            memcpy( p + 15, hash, 20 );
+            break;
+
+        default:
+            return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+    }
+
+    return( ( mode == RSA_PUBLIC )
+            ? rsa_public(  ctx, sig, sig )
+            : rsa_private( ctx, sig, sig ) );
+}
+
+/*
+ * Do an RSA operation and check the message digest
+ */
+int rsa_pkcs1_verify( rsa_context *ctx,
+                      int mode,
+                      int hash_id,
+                      int hashlen,
+                      unsigned char *hash,
+                      unsigned char *sig )
+{
+    int ret, len, siglen;
+    unsigned char *p, c;
+    unsigned char buf[512];
+
+    siglen = ctx->len;
+
+    if( siglen < 16 || siglen > (int) sizeof( buf ) )
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
+
+    ret = ( mode == RSA_PUBLIC )
+          ? rsa_public(  ctx, sig, buf )
+          : rsa_private( ctx, sig, buf );
+
+    if( ret != 0 )
+        return( ret );
+
+    p = buf;
+
+    switch( ctx->padding )
+    {
+        case RSA_PKCS_V15:
+
+            if( *p++ != 0 || *p++ != RSA_SIGN )
+                return( POLARSSL_ERR_RSA_INVALID_PADDING );
+
+            while( *p != 0 )
+            {
+                if( p >= buf + siglen - 1 || *p != 0xFF )
+                    return( POLARSSL_ERR_RSA_INVALID_PADDING );
+                p++;
+            }
+            p++;
+            break;
+
+        default:
+
+            return( POLARSSL_ERR_RSA_INVALID_PADDING );
+    }
+
+    len = siglen - (int)( p - buf );
+
+    if( len == 34 )
+    {
+        c = p[13];
+        p[13] = 0;
+
+        if( memcmp( p, ASN1_HASH_MDX, 18 ) != 0 )
+            return( POLARSSL_ERR_RSA_VERIFY_FAILED );
+
+        if( ( c == 2 && hash_id == RSA_MD2 ) ||
+            ( c == 4 && hash_id == RSA_MD4 ) ||
+            ( c == 5 && hash_id == RSA_MD5 ) )
+        {
+            if( memcmp( p + 18, hash, 16 ) == 0 ) 
+                return( 0 );
+            else
+                return( POLARSSL_ERR_RSA_VERIFY_FAILED );
+        }
+    }
+
+    if( len == 35 && hash_id == RSA_SHA1 )
+    {
+        if( memcmp( p, ASN1_HASH_SHA1, 15 ) == 0 &&
+            memcmp( p + 15, hash, 20 ) == 0 )
+            return( 0 );
+        else
+            return( POLARSSL_ERR_RSA_VERIFY_FAILED );
+    }
+
+    if( len == hashlen && hash_id == RSA_RAW )
+    {
+        if( memcmp( p, hash, hashlen ) == 0 )
+            return( 0 );
+        else
+            return( POLARSSL_ERR_RSA_VERIFY_FAILED );
+    }
+
+    return( POLARSSL_ERR_RSA_INVALID_PADDING );
+}
+
+/*
+ * Free the components of an RSA key
+ */
+void rsa_free( rsa_context *ctx )
+{
+    mpi_free( &ctx->RQ, &ctx->RP, &ctx->RN,
+              &ctx->QP, &ctx->DQ, &ctx->DP,
+              &ctx->Q,  &ctx->P,  &ctx->D,
+              &ctx->E,  &ctx->N,  NULL );
+}
+
+#if defined(POLARSSL_SELF_TEST)
+
+#include "polarssl/sha1.h"
+
+/*
+ * Example RSA-1024 keypair, for test purposes
+ */
+#define KEY_LEN 128
+
+#define RSA_N   "9292758453063D803DD603D5E777D788" \
+                "8ED1D5BF35786190FA2F23EBC0848AEA" \
+                "DDA92CA6C3D80B32C4D109BE0F36D6AE" \
+                "7130B9CED7ACDF54CFC7555AC14EEBAB" \
+                "93A89813FBF3C4F8066D2D800F7C38A8" \
+                "1AE31942917403FF4946B0A83D3D3E05" \
+                "EE57C6F5F5606FB5D4BC6CD34EE0801A" \
+                "5E94BB77B07507233A0BC7BAC8F90F79"
+
+#define RSA_E   "10001"
+
+#define RSA_D   "24BF6185468786FDD303083D25E64EFC" \
+                "66CA472BC44D253102F8B4A9D3BFA750" \
+                "91386C0077937FE33FA3252D28855837" \
+                "AE1B484A8A9A45F7EE8C0C634F99E8CD" \
+                "DF79C5CE07EE72C7F123142198164234" \
+                "CABB724CF78B8173B9F880FC86322407" \
+                "AF1FEDFDDE2BEB674CA15F3E81A1521E" \
+                "071513A1E85B5DFA031F21ECAE91A34D"
+
+#define RSA_P   "C36D0EB7FCD285223CFB5AABA5BDA3D8" \
+                "2C01CAD19EA484A87EA4377637E75500" \
+                "FCB2005C5C7DD6EC4AC023CDA285D796" \
+                "C3D9E75E1EFC42488BB4F1D13AC30A57"
+
+#define RSA_Q   "C000DF51A7C77AE8D7C7370C1FF55B69" \
+                "E211C2B9E5DB1ED0BF61D0D9899620F4" \
+                "910E4168387E3C30AA1E00C339A79508" \
+                "8452DD96A9A5EA5D9DCA68DA636032AF"
+
+#define RSA_DP  "C1ACF567564274FB07A0BBAD5D26E298" \
+                "3C94D22288ACD763FD8E5600ED4A702D" \
+                "F84198A5F06C2E72236AE490C93F07F8" \
+                "3CC559CD27BC2D1CA488811730BB5725"
+
+#define RSA_DQ  "4959CBF6F8FEF750AEE6977C155579C7" \
+                "D8AAEA56749EA28623272E4F7D0592AF" \
+                "7C1F1313CAC9471B5C523BFE592F517B" \
+                "407A1BD76C164B93DA2D32A383E58357"
+
+#define RSA_QP  "9AE7FBC99546432DF71896FC239EADAE" \
+                "F38D18D2B2F0E2DD275AA977E2BF4411" \
+                "F5A3B2A5D33605AEBBCCBA7FEB9F2D2F" \
+                "A74206CEC169D74BF5A8C50D6F48EA08"
+
+#define PT_LEN  24
+#define RSA_PT  "\xAA\xBB\xCC\x03\x02\x01\x00\xFF\xFF\xFF\xFF\xFF" \
+                "\x11\x22\x33\x0A\x0B\x0C\xCC\xDD\xDD\xDD\xDD\xDD"
+
+/*
+ * Checkup routine
+ */
+int rsa_self_test( int verbose )
+{
+    int len;
+    rsa_context rsa;
+    unsigned char sha1sum[20];
+    unsigned char rsa_plaintext[PT_LEN];
+    unsigned char rsa_decrypted[PT_LEN];
+    unsigned char rsa_ciphertext[KEY_LEN];
+
+    memset( &rsa, 0, sizeof( rsa_context ) );
+
+    rsa.len = KEY_LEN;
+    mpi_read_string( &rsa.N , 16, RSA_N  );
+    mpi_read_string( &rsa.E , 16, RSA_E  );
+    mpi_read_string( &rsa.D , 16, RSA_D  );
+    mpi_read_string( &rsa.P , 16, RSA_P  );
+    mpi_read_string( &rsa.Q , 16, RSA_Q  );
+    mpi_read_string( &rsa.DP, 16, RSA_DP );
+    mpi_read_string( &rsa.DQ, 16, RSA_DQ );
+    mpi_read_string( &rsa.QP, 16, RSA_QP );
+
+    if( verbose != 0 )
+        printf( "  RSA key validation: " );
+
+    if( rsa_check_pubkey(  &rsa ) != 0 ||
+        rsa_check_privkey( &rsa ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n  PKCS#1 encryption : " );
+
+    memcpy( rsa_plaintext, RSA_PT, PT_LEN );
+
+    if( rsa_pkcs1_encrypt( &rsa, RSA_PUBLIC, PT_LEN,
+                           rsa_plaintext, rsa_ciphertext ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n  PKCS#1 decryption : " );
+
+    if( rsa_pkcs1_decrypt( &rsa, RSA_PRIVATE, &len,
+                           rsa_ciphertext, rsa_decrypted,
+                          sizeof(rsa_decrypted) ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( memcmp( rsa_decrypted, rsa_plaintext, len ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n  PKCS#1 data sign  : " );
+
+    sha1( rsa_plaintext, PT_LEN, sha1sum );
+
+    if( rsa_pkcs1_sign( &rsa, RSA_PRIVATE, RSA_SHA1, 20,
+                        sha1sum, rsa_ciphertext ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n  PKCS#1 sig. verify: " );
+
+    if( rsa_pkcs1_verify( &rsa, RSA_PUBLIC, RSA_SHA1, 20,
+                          sha1sum, rsa_ciphertext ) != 0 )
+    {
+        if( verbose != 0 )
+            printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    if( verbose != 0 )
+        printf( "passed\n\n" );
+
+    rsa_free( &rsa );
+
+    return( 0 );
+}
+
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-px5g/src/library/sha1.c b/package/luci/libs/luci-lib-px5g/src/library/sha1.c
new file mode 100644 (file)
index 0000000..54a4416
--- /dev/null
@@ -0,0 +1,622 @@
+/*
+ *  FIPS-180-1 compliant SHA-1 implementation
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *  The SHA-1 standard was published by NIST in 1993.
+ *
+ *  http://www.itl.nist.gov/fipspubs/fip180-1.htm
+ */
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_SHA1_C)
+
+#include "polarssl/sha1.h"
+
+#include <string.h>
+#include <stdio.h>
+
+/*
+ * 32-bit integer manipulation macros (big endian)
+ */
+#ifndef GET_ULONG_BE
+#define GET_ULONG_BE(n,b,i)                             \
+{                                                       \
+    (n) = ( (unsigned long) (b)[(i)    ] << 24 )        \
+        | ( (unsigned long) (b)[(i) + 1] << 16 )        \
+        | ( (unsigned long) (b)[(i) + 2] <<  8 )        \
+        | ( (unsigned long) (b)[(i) + 3]       );       \
+}
+#endif
+
+#ifndef PUT_ULONG_BE
+#define PUT_ULONG_BE(n,b,i)                             \
+{                                                       \
+    (b)[(i)    ] = (unsigned char) ( (n) >> 24 );       \
+    (b)[(i) + 1] = (unsigned char) ( (n) >> 16 );       \
+    (b)[(i) + 2] = (unsigned char) ( (n) >>  8 );       \
+    (b)[(i) + 3] = (unsigned char) ( (n)       );       \
+}
+#endif
+
+/*
+ * SHA-1 context setup
+ */
+void sha1_starts( sha1_context *ctx )
+{
+    ctx->total[0] = 0;
+    ctx->total[1] = 0;
+
+    ctx->state[0] = 0x67452301;
+    ctx->state[1] = 0xEFCDAB89;
+    ctx->state[2] = 0x98BADCFE;
+    ctx->state[3] = 0x10325476;
+    ctx->state[4] = 0xC3D2E1F0;
+}
+
+static void sha1_process( sha1_context *ctx, unsigned char data[64] )
+{
+    unsigned long temp, W[16], A, B, C, D, E;
+
+    GET_ULONG_BE( W[ 0], data,  0 );
+    GET_ULONG_BE( W[ 1], data,  4 );
+    GET_ULONG_BE( W[ 2], data,  8 );
+    GET_ULONG_BE( W[ 3], data, 12 );
+    GET_ULONG_BE( W[ 4], data, 16 );
+    GET_ULONG_BE( W[ 5], data, 20 );
+    GET_ULONG_BE( W[ 6], data, 24 );
+    GET_ULONG_BE( W[ 7], data, 28 );
+    GET_ULONG_BE( W[ 8], data, 32 );
+    GET_ULONG_BE( W[ 9], data, 36 );
+    GET_ULONG_BE( W[10], data, 40 );
+    GET_ULONG_BE( W[11], data, 44 );
+    GET_ULONG_BE( W[12], data, 48 );
+    GET_ULONG_BE( W[13], data, 52 );
+    GET_ULONG_BE( W[14], data, 56 );
+    GET_ULONG_BE( W[15], data, 60 );
+
+#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
+
+#define R(t)                                            \
+(                                                       \
+    temp = W[(t -  3) & 0x0F] ^ W[(t - 8) & 0x0F] ^     \
+           W[(t - 14) & 0x0F] ^ W[ t      & 0x0F],      \
+    ( W[t & 0x0F] = S(temp,1) )                         \
+)
+
+#define P(a,b,c,d,e,x)                                  \
+{                                                       \
+    e += S(a,5) + F(b,c,d) + K + x; b = S(b,30);        \
+}
+
+    A = ctx->state[0];
+    B = ctx->state[1];
+    C = ctx->state[2];
+    D = ctx->state[3];
+    E = ctx->state[4];
+
+#define F(x,y,z) (z ^ (x & (y ^ z)))
+#define K 0x5A827999
+
+    P( A, B, C, D, E, W[0]  );
+    P( E, A, B, C, D, W[1]  );
+    P( D, E, A, B, C, W[2]  );
+    P( C, D, E, A, B, W[3]  );
+    P( B, C, D, E, A, W[4]  );
+    P( A, B, C, D, E, W[5]  );
+    P( E, A, B, C, D, W[6]  );
+    P( D, E, A, B, C, W[7]  );
+    P( C, D, E, A, B, W[8]  );
+    P( B, C, D, E, A, W[9]  );
+    P( A, B, C, D, E, W[10] );
+    P( E, A, B, C, D, W[11] );
+    P( D, E, A, B, C, W[12] );
+    P( C, D, E, A, B, W[13] );
+    P( B, C, D, E, A, W[14] );
+    P( A, B, C, D, E, W[15] );
+    P( E, A, B, C, D, R(16) );
+    P( D, E, A, B, C, R(17) );
+    P( C, D, E, A, B, R(18) );
+    P( B, C, D, E, A, R(19) );
+
+#undef K
+#undef F
+
+#define F(x,y,z) (x ^ y ^ z)
+#define K 0x6ED9EBA1
+
+    P( A, B, C, D, E, R(20) );
+    P( E, A, B, C, D, R(21) );
+    P( D, E, A, B, C, R(22) );
+    P( C, D, E, A, B, R(23) );
+    P( B, C, D, E, A, R(24) );
+    P( A, B, C, D, E, R(25) );
+    P( E, A, B, C, D, R(26) );
+    P( D, E, A, B, C, R(27) );
+    P( C, D, E, A, B, R(28) );
+    P( B, C, D, E, A, R(29) );
+    P( A, B, C, D, E, R(30) );
+    P( E, A, B, C, D, R(31) );
+    P( D, E, A, B, C, R(32) );
+    P( C, D, E, A, B, R(33) );
+    P( B, C, D, E, A, R(34) );
+    P( A, B, C, D, E, R(35) );
+    P( E, A, B, C, D, R(36) );
+    P( D, E, A, B, C, R(37) );
+    P( C, D, E, A, B, R(38) );
+    P( B, C, D, E, A, R(39) );
+
+#undef K
+#undef F
+
+#define F(x,y,z) ((x & y) | (z & (x | y)))
+#define K 0x8F1BBCDC
+
+    P( A, B, C, D, E, R(40) );
+    P( E, A, B, C, D, R(41) );
+    P( D, E, A, B, C, R(42) );
+    P( C, D, E, A, B, R(43) );
+    P( B, C, D, E, A, R(44) );
+    P( A, B, C, D, E, R(45) );
+    P( E, A, B, C, D, R(46) );
+    P( D, E, A, B, C, R(47) );
+    P( C, D, E, A, B, R(48) );
+    P( B, C, D, E, A, R(49) );
+    P( A, B, C, D, E, R(50) );
+    P( E, A, B, C, D, R(51) );
+    P( D, E, A, B, C, R(52) );
+    P( C, D, E, A, B, R(53) );
+    P( B, C, D, E, A, R(54) );
+    P( A, B, C, D, E, R(55) );
+    P( E, A, B, C, D, R(56) );
+    P( D, E, A, B, C, R(57) );
+    P( C, D, E, A, B, R(58) );
+    P( B, C, D, E, A, R(59) );
+
+#undef K
+#undef F
+
+#define F(x,y,z) (x ^ y ^ z)
+#define K 0xCA62C1D6
+
+    P( A, B, C, D, E, R(60) );
+    P( E, A, B, C, D, R(61) );
+    P( D, E, A, B, C, R(62) );
+    P( C, D, E, A, B, R(63) );
+    P( B, C, D, E, A, R(64) );
+    P( A, B, C, D, E, R(65) );
+    P( E, A, B, C, D, R(66) );
+    P( D, E, A, B, C, R(67) );
+    P( C, D, E, A, B, R(68) );
+    P( B, C, D, E, A, R(69) );
+    P( A, B, C, D, E, R(70) );
+    P( E, A, B, C, D, R(71) );
+    P( D, E, A, B, C, R(72) );
+    P( C, D, E, A, B, R(73) );
+    P( B, C, D, E, A, R(74) );
+    P( A, B, C, D, E, R(75) );
+    P( E, A, B, C, D, R(76) );
+    P( D, E, A, B, C, R(77) );
+    P( C, D, E, A, B, R(78) );
+    P( B, C, D, E, A, R(79) );
+
+#undef K
+#undef F
+
+    ctx->state[0] += A;
+    ctx->state[1] += B;
+    ctx->state[2] += C;
+    ctx->state[3] += D;
+    ctx->state[4] += E;
+}
+
+/*
+ * SHA-1 process buffer
+ */
+void sha1_update( sha1_context *ctx, unsigned char *input, int ilen )
+{
+    int fill;
+    unsigned long left;
+
+    if( ilen <= 0 )
+        return;
+
+    left = ctx->total[0] & 0x3F;
+    fill = 64 - left;
+
+    ctx->total[0] += ilen;
+    ctx->total[0] &= 0xFFFFFFFF;
+
+    if( ctx->total[0] < (unsigned long) ilen )
+        ctx->total[1]++;
+
+    if( left && ilen >= fill )
+    {
+        memcpy( (void *) (ctx->buffer + left),
+                (void *) input, fill );
+        sha1_process( ctx, ctx->buffer );
+        input += fill;
+        ilen  -= fill;
+        left = 0;
+    }
+
+    while( ilen >= 64 )
+    {
+        sha1_process( ctx, input );
+        input += 64;
+        ilen  -= 64;
+    }
+
+    if( ilen > 0 )
+    {
+        memcpy( (void *) (ctx->buffer + left),
+                (void *) input, ilen );
+    }
+}
+
+static const unsigned char sha1_padding[64] =
+{
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/*
+ * SHA-1 final digest
+ */
+void sha1_finish( sha1_context *ctx, unsigned char output[20] )
+{
+    unsigned long last, padn;
+    unsigned long high, low;
+    unsigned char msglen[8];
+
+    high = ( ctx->total[0] >> 29 )
+         | ( ctx->total[1] <<  3 );
+    low  = ( ctx->total[0] <<  3 );
+
+    PUT_ULONG_BE( high, msglen, 0 );
+    PUT_ULONG_BE( low,  msglen, 4 );
+
+    last = ctx->total[0] & 0x3F;
+    padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
+
+    sha1_update( ctx, (unsigned char *) sha1_padding, padn );
+    sha1_update( ctx, msglen, 8 );
+
+    PUT_ULONG_BE( ctx->state[0], output,  0 );
+    PUT_ULONG_BE( ctx->state[1], output,  4 );
+    PUT_ULONG_BE( ctx->state[2], output,  8 );
+    PUT_ULONG_BE( ctx->state[3], output, 12 );
+    PUT_ULONG_BE( ctx->state[4], output, 16 );
+}
+
+/*
+ * output = SHA-1( input buffer )
+ */
+void sha1( unsigned char *input, int ilen, unsigned char output[20] )
+{
+    sha1_context ctx;
+
+    sha1_starts( &ctx );
+    sha1_update( &ctx, input, ilen );
+    sha1_finish( &ctx, output );
+
+    memset( &ctx, 0, sizeof( sha1_context ) );
+}
+
+/*
+ * output = SHA-1( file contents )
+ */
+int sha1_file( char *path, unsigned char output[20] )
+{
+    FILE *f;
+    size_t n;
+    sha1_context ctx;
+    unsigned char buf[1024];
+
+    if( ( f = fopen( path, "rb" ) ) == NULL )
+        return( 1 );
+
+    sha1_starts( &ctx );
+
+    while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
+        sha1_update( &ctx, buf, (int) n );
+
+    sha1_finish( &ctx, output );
+
+    memset( &ctx, 0, sizeof( sha1_context ) );
+
+    if( ferror( f ) != 0 )
+    {
+        fclose( f );
+        return( 2 );
+    }
+
+    fclose( f );
+    return( 0 );
+}
+
+/*
+ * SHA-1 HMAC context setup
+ */
+void sha1_hmac_starts( sha1_context *ctx, unsigned char *key, int keylen )
+{
+    int i;
+    unsigned char sum[20];
+
+    if( keylen > 64 )
+    {
+        sha1( key, keylen, sum );
+        keylen = 20;
+        key = sum;
+    }
+
+    memset( ctx->ipad, 0x36, 64 );
+    memset( ctx->opad, 0x5C, 64 );
+
+    for( i = 0; i < keylen; i++ )
+    {
+        ctx->ipad[i] = (unsigned char)( ctx->ipad[i] ^ key[i] );
+        ctx->opad[i] = (unsigned char)( ctx->opad[i] ^ key[i] );
+    }
+
+    sha1_starts( ctx );
+    sha1_update( ctx, ctx->ipad, 64 );
+
+    memset( sum, 0, sizeof( sum ) );
+}
+
+/*
+ * SHA-1 HMAC process buffer
+ */
+void sha1_hmac_update( sha1_context *ctx, unsigned char *input, int ilen )
+{
+    sha1_update( ctx, input, ilen );
+}
+
+/*
+ * SHA-1 HMAC final digest
+ */
+void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] )
+{
+    unsigned char tmpbuf[20];
+
+    sha1_finish( ctx, tmpbuf );
+    sha1_starts( ctx );
+    sha1_update( ctx, ctx->opad, 64 );
+    sha1_update( ctx, tmpbuf, 20 );
+    sha1_finish( ctx, output );
+
+    memset( tmpbuf, 0, sizeof( tmpbuf ) );
+}
+
+/*
+ * output = HMAC-SHA-1( hmac key, input buffer )
+ */
+void sha1_hmac( unsigned char *key, int keylen,
+                unsigned char *input, int ilen,
+                unsigned char output[20] )
+{
+    sha1_context ctx;
+
+    sha1_hmac_starts( &ctx, key, keylen );
+    sha1_hmac_update( &ctx, input, ilen );
+    sha1_hmac_finish( &ctx, output );
+
+    memset( &ctx, 0, sizeof( sha1_context ) );
+}
+
+#if defined(POLARSSL_SELF_TEST)
+/*
+ * FIPS-180-1 test vectors
+ */
+static unsigned char sha1_test_buf[3][57] = 
+{
+    { "abc" },
+    { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" },
+    { "" }
+};
+
+static const int sha1_test_buflen[3] =
+{
+    3, 56, 1000
+};
+
+static const unsigned char sha1_test_sum[3][20] =
+{
+    { 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 0xBA, 0x3E,
+      0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D },
+    { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, 0xBA, 0xAE,
+      0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5, 0xE5, 0x46, 0x70, 0xF1 },
+    { 0x34, 0xAA, 0x97, 0x3C, 0xD4, 0xC4, 0xDA, 0xA4, 0xF6, 0x1E,
+      0xEB, 0x2B, 0xDB, 0xAD, 0x27, 0x31, 0x65, 0x34, 0x01, 0x6F }
+};
+
+/*
+ * RFC 2202 test vectors
+ */
+static unsigned char sha1_hmac_test_key[7][26] =
+{
+    { "\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B"
+      "\x0B\x0B\x0B\x0B" },
+    { "Jefe" },
+    { "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
+      "\xAA\xAA\xAA\xAA" },
+    { "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10"
+      "\x11\x12\x13\x14\x15\x16\x17\x18\x19" },
+    { "\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C"
+      "\x0C\x0C\x0C\x0C" },
+    { "" }, /* 0xAA 80 times */
+    { "" }
+};
+
+static const int sha1_hmac_test_keylen[7] =
+{
+    20, 4, 20, 25, 20, 80, 80
+};
+
+static unsigned char sha1_hmac_test_buf[7][74] =
+{
+    { "Hi There" },
+    { "what do ya want for nothing?" },
+    { "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
+      "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
+      "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
+      "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
+      "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" },
+    { "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
+      "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
+      "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
+      "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
+      "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" },
+    { "Test With Truncation" },
+    { "Test Using Larger Than Block-Size Key - Hash Key First" },
+    { "Test Using Larger Than Block-Size Key and Larger"
+      " Than One Block-Size Data" }
+};
+
+static const int sha1_hmac_test_buflen[7] =
+{
+    8, 28, 50, 50, 20, 54, 73
+};
+
+static const unsigned char sha1_hmac_test_sum[7][20] =
+{
+    { 0xB6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xE2, 0x8B,
+      0xC0, 0xB6, 0xFB, 0x37, 0x8C, 0x8E, 0xF1, 0x46, 0xBE, 0x00 },
+    { 0xEF, 0xFC, 0xDF, 0x6A, 0xE5, 0xEB, 0x2F, 0xA2, 0xD2, 0x74,
+      0x16, 0xD5, 0xF1, 0x84, 0xDF, 0x9C, 0x25, 0x9A, 0x7C, 0x79 },
+    { 0x12, 0x5D, 0x73, 0x42, 0xB9, 0xAC, 0x11, 0xCD, 0x91, 0xA3,
+      0x9A, 0xF4, 0x8A, 0xA1, 0x7B, 0x4F, 0x63, 0xF1, 0x75, 0xD3 },
+    { 0x4C, 0x90, 0x07, 0xF4, 0x02, 0x62, 0x50, 0xC6, 0xBC, 0x84,
+      0x14, 0xF9, 0xBF, 0x50, 0xC8, 0x6C, 0x2D, 0x72, 0x35, 0xDA },
+    { 0x4C, 0x1A, 0x03, 0x42, 0x4B, 0x55, 0xE0, 0x7F, 0xE7, 0xF2,
+      0x7B, 0xE1 },
+    { 0xAA, 0x4A, 0xE5, 0xE1, 0x52, 0x72, 0xD0, 0x0E, 0x95, 0x70,
+      0x56, 0x37, 0xCE, 0x8A, 0x3B, 0x55, 0xED, 0x40, 0x21, 0x12 },
+    { 0xE8, 0xE9, 0x9D, 0x0F, 0x45, 0x23, 0x7D, 0x78, 0x6D, 0x6B,
+      0xBA, 0xA7, 0x96, 0x5C, 0x78, 0x08, 0xBB, 0xFF, 0x1A, 0x91 }
+};
+
+/*
+ * Checkup routine
+ */
+int sha1_self_test( int verbose )
+{
+    int i, j, buflen;
+    unsigned char buf[1024];
+    unsigned char sha1sum[20];
+    sha1_context ctx;
+
+    /*
+     * SHA-1
+     */
+    for( i = 0; i < 3; i++ )
+    {
+        if( verbose != 0 )
+            printf( "  SHA-1 test #%d: ", i + 1 );
+
+        sha1_starts( &ctx );
+
+        if( i == 2 )
+        {
+            memset( buf, 'a', buflen = 1000 );
+
+            for( j = 0; j < 1000; j++ )
+                sha1_update( &ctx, buf, buflen );
+        }
+        else
+            sha1_update( &ctx, sha1_test_buf[i],
+                               sha1_test_buflen[i] );
+
+        sha1_finish( &ctx, sha1sum );
+
+        if( memcmp( sha1sum, sha1_test_sum[i], 20 ) != 0 )
+        {
+            if( verbose != 0 )
+                printf( "failed\n" );
+
+            return( 1 );
+        }
+
+        if( verbose != 0 )
+            printf( "passed\n" );
+    }
+
+    if( verbose != 0 )
+        printf( "\n" );
+
+    for( i = 0; i < 7; i++ )
+    {
+        if( verbose != 0 )
+            printf( "  HMAC-SHA-1 test #%d: ", i + 1 );
+
+        if( i == 5 || i == 6 )
+        {
+            memset( buf, '\xAA', buflen = 80 );
+            sha1_hmac_starts( &ctx, buf, buflen );
+        }
+        else
+            sha1_hmac_starts( &ctx, sha1_hmac_test_key[i],
+                                    sha1_hmac_test_keylen[i] );
+
+        sha1_hmac_update( &ctx, sha1_hmac_test_buf[i],
+                                sha1_hmac_test_buflen[i] );
+
+        sha1_hmac_finish( &ctx, sha1sum );
+
+        buflen = ( i == 4 ) ? 12 : 20;
+
+        if( memcmp( sha1sum, sha1_hmac_test_sum[i], buflen ) != 0 )
+        {
+            if( verbose != 0 )
+                printf( "failed\n" );
+
+            return( 1 );
+        }
+
+        if( verbose != 0 )
+            printf( "passed\n" );
+    }
+
+    if( verbose != 0 )
+        printf( "\n" );
+
+    return( 0 );
+}
+
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-px5g/src/library/timing.c b/package/luci/libs/luci-lib-px5g/src/library/timing.c
new file mode 100644 (file)
index 0000000..6b7ab74
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+ *  Portable interface to the CPU cycle counter
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_TIMING_C)
+
+#include "polarssl/timing.h"
+
+#if defined(WIN32)
+
+#include <windows.h>
+#include <winbase.h>
+
+struct _hr_time
+{
+    LARGE_INTEGER start;
+};
+
+#else
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <signal.h>
+#include <time.h>
+
+struct _hr_time
+{
+    struct timeval start;
+};
+
+#endif
+
+#if (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
+
+unsigned long hardclock( void )
+{
+    unsigned long tsc;
+    __asm   rdtsc
+    __asm   mov  [tsc], eax
+    return( tsc );
+}
+
+#else
+#if defined(__GNUC__) && defined(__i386__)
+
+unsigned long hardclock( void )
+{
+    unsigned long tsc;
+    asm( "rdtsc" : "=a" (tsc) );
+    return( tsc );
+}
+
+#else
+#if defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__))
+
+unsigned long hardclock( void )
+{
+    unsigned long lo, hi;
+    asm( "rdtsc" : "=a" (lo), "=d" (hi) );
+    return( lo | (hi << 32) );
+}
+
+#else
+#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
+
+unsigned long hardclock( void )
+{
+    unsigned long tbl, tbu0, tbu1;
+
+    do
+    {
+        asm( "mftbu %0" : "=r" (tbu0) );
+        asm( "mftb  %0" : "=r" (tbl ) );
+        asm( "mftbu %0" : "=r" (tbu1) );
+    }
+    while( tbu0 != tbu1 );
+
+    return( tbl );
+}
+
+#else
+#if defined(__GNUC__) && defined(__sparc__)
+
+unsigned long hardclock( void )
+{
+    unsigned long tick;
+    asm( ".byte 0x83, 0x41, 0x00, 0x00" );
+    asm( "mov   %%g1, %0" : "=r" (tick) );
+    return( tick );
+}
+
+#else
+#if defined(__GNUC__) && defined(__alpha__)
+
+unsigned long hardclock( void )
+{
+    unsigned long cc;
+    asm( "rpcc %0" : "=r" (cc) );
+    return( cc & 0xFFFFFFFF );
+}
+
+#else
+#if defined(__GNUC__) && defined(__ia64__)
+
+unsigned long hardclock( void )
+{
+    unsigned long itc;
+    asm( "mov %0 = ar.itc" : "=r" (itc) );
+    return( itc );
+}
+
+#else
+
+static int hardclock_init = 0;
+static struct timeval tv_init;
+
+unsigned long hardclock( void )
+{
+    struct timeval tv_cur;
+
+    if( hardclock_init == 0 )
+    {
+        gettimeofday( &tv_init, NULL );
+        hardclock_init = 1;
+    }
+
+    gettimeofday( &tv_cur, NULL );
+    return( ( tv_cur.tv_sec  - tv_init.tv_sec  ) * 1000000
+          + ( tv_cur.tv_usec - tv_init.tv_usec ) );
+}
+
+#endif /* generic */
+#endif /* IA-64   */
+#endif /* Alpha   */
+#endif /* SPARC8  */
+#endif /* PowerPC */
+#endif /* AMD64   */
+#endif /* i586+   */
+
+int alarmed = 0;
+
+#if defined(WIN32)
+
+unsigned long get_timer( struct hr_time *val, int reset )
+{
+    unsigned long delta;
+    LARGE_INTEGER offset, hfreq;
+    struct _hr_time *t = (struct _hr_time *) val;
+
+    QueryPerformanceCounter(  &offset );
+    QueryPerformanceFrequency( &hfreq );
+
+    delta = (unsigned long)( ( 1000 *
+        ( offset.QuadPart - t->start.QuadPart ) ) /
+           hfreq.QuadPart );
+
+    if( reset )
+        QueryPerformanceCounter( &t->start );
+
+    return( delta );
+}
+
+DWORD WINAPI TimerProc( LPVOID uElapse )
+{
+    Sleep( (DWORD) uElapse );
+    alarmed = 1;
+    return( TRUE );
+}
+
+void set_alarm( int seconds )
+{
+    DWORD ThreadId;
+
+    alarmed = 0;
+    CloseHandle( CreateThread( NULL, 0, TimerProc,
+        (LPVOID) ( seconds * 1000 ), 0, &ThreadId ) );
+}
+
+void m_sleep( int milliseconds )
+{
+    Sleep( milliseconds );
+}
+
+#else
+
+unsigned long get_timer( struct hr_time *val, int reset )
+{
+    unsigned long delta;
+    struct timeval offset;
+    struct _hr_time *t = (struct _hr_time *) val;
+
+    gettimeofday( &offset, NULL );
+
+    delta = ( offset.tv_sec  - t->start.tv_sec  ) * 1000
+          + ( offset.tv_usec - t->start.tv_usec ) / 1000;
+
+    if( reset )
+    {
+        t->start.tv_sec  = offset.tv_sec;
+        t->start.tv_usec = offset.tv_usec;
+    }
+
+    return( delta );
+}
+
+static void sighandler( int signum )
+{
+    alarmed = 1;
+    signal( signum, sighandler );
+}
+
+void set_alarm( int seconds )
+{
+    alarmed = 0;
+    signal( SIGALRM, sighandler );
+    alarm( seconds );
+}
+
+void m_sleep( int milliseconds )
+{
+    struct timeval tv;
+
+    tv.tv_sec  = milliseconds / 1000;
+    tv.tv_usec = milliseconds * 1000;
+
+    select( 0, NULL, NULL, NULL, &tv );
+}
+
+#endif
+
+#endif
diff --git a/package/luci/libs/luci-lib-px5g/src/library/x509write.c b/package/luci/libs/luci-lib-px5g/src/library/x509write.c
new file mode 100644 (file)
index 0000000..b9ebf35
--- /dev/null
@@ -0,0 +1,1137 @@
+/*
+ *  X.509 certificate and private key writing
+ *
+ *  Copyright (C) 2006-2007  Pascal Vizeli <pvizeli@yahoo.de>
+ *  Modifications (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License, version 2.1 as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA  02110-1301  USA
+ */
+/*
+ *  The ITU-T X.509 standard defines a certificate format for PKI.
+ *
+ *  http://www.ietf.org/rfc/rfc2459.txt
+ *  http://www.ietf.org/rfc/rfc3279.txt
+ *
+ *  ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-1v2.asc
+ *
+ *  http://www.itu.int/ITU-T/studygroups/com17/languages/X.680-0207.pdf
+ *  http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf
+ *
+ *  For CRS:
+ *  http://www.faqs.org/rfcs/rfc2314.html
+ */
+#include "polarssl/config.h"
+#include "polarssl/x509.h"
+/* #include "polarssl/base64.h" */
+#include "polarssl/sha1.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <time.h>
+
+#define and &&
+#define or ||
+
+#if defined _MSC_VER && !defined snprintf
+#define snprintf _snprintf
+#endif
+
+static int x509write_realloc_node(x509_node *node, size_t larger);
+static int x509write_file(x509_node *node, char *path, int format, const char* pem_prolog, const char* pem_epilog);
+
+/*
+ * evaluate how mani octet have this integer
+ */
+static int asn1_eval_octet(unsigned int digit)
+{
+    int i, byte;
+
+    for (byte = 4, i = 24; i >= 0; i -= 8, --byte)
+        if (((digit >> i) & 0xFF) != 0)
+            return byte;
+
+    return 0;
+}
+
+/*
+ * write the asn.1 length form into p
+ */
+static int asn1_add_len(unsigned int size, x509_node *node)
+{
+    if (size > 127) {
+
+        /* long size */
+        int byte = asn1_eval_octet(size);
+        int i = 0;
+
+        *(node->p) = (0x80 | byte) & 0xFF;
+        ++node->p;
+
+        for (i = byte; i > 0; --i) {
+
+            *(node->p) = (size >> ((i - 1) * 8)) & 0xFF;
+            ++node->p;
+        }
+
+    } else {
+
+        /* short size */
+        *(node->p) = size & 0xFF;
+        if (size != 0)
+            ++node->p;
+    }
+
+    return 0;
+}
+
+/*
+ * write a ans.1 object into p
+ */
+static int asn1_add_obj(unsigned char *value, unsigned int size, int tag,
+        x509_node *node)
+{
+    int tl = 2;
+
+    if (tag == ASN1_BIT_STRING)
+        ++tl;
+
+    if (size > 127)
+        x509write_realloc_node(node, (size_t) size + tl +
+                asn1_eval_octet(size));
+    else
+        x509write_realloc_node(node, (size_t) size + tl);
+
+    if (node->data == NULL)
+        return 1;
+
+    /* tag */
+    *(node->p) = tag & 0xFF;
+    ++node->p;
+
+    /* len */
+    if (tag == ASN1_BIT_STRING) {
+        asn1_add_len((unsigned int) size + 1, node);
+        *(node->p) = 0x00;
+        ++node->p;
+    } else {
+        asn1_add_len((unsigned int) size, node);
+    }
+
+    /* value */
+    if (size > 0) {
+
+        memcpy(node->p, value, (size_t) size);
+        if ((node->p += size -1) != node->end)
+            return POLARSSL_ERR_X509_POINT_ERROR;
+    } else {
+        /* make nothing -> NULL */
+    }
+
+    return 0;
+}
+
+/*
+ * write a asn.1 conform integer object
+ */
+static int asn1_add_int(signed int value, x509_node *node)
+{
+    signed int i = 0, neg = 1;
+    unsigned int byte, u_val = 0, tmp_val = 0;
+
+    /* if negate? */
+    if (value < 0) {
+        neg = -1;
+        u_val = ~value;
+    } else {
+        u_val = value;
+    }
+
+    byte = asn1_eval_octet(u_val);
+    /* 0 isn't NULL */
+    if (byte == 0)
+        byte = 1;
+
+    /* ASN.1 integer is signed! */
+    if (byte < 4 and ((u_val >> ((byte -1) * 8)) & 0xFF) == 0x80)
+        byte += 1;
+
+    if (x509write_realloc_node(node, (size_t) byte + 2) != 0)
+        return 1;
+
+    /* tag */
+    *(node->p) = ASN1_INTEGER;
+    ++node->p;
+
+    /* len */
+    asn1_add_len(byte, node);
+
+    /* value */
+    for (i = byte; i > 0; --i) {
+
+        tmp_val = (u_val >> ((i - 1) * 8)) & 0xFF;
+        if (neg == 1)
+            *(node->p) = tmp_val;
+        else
+            *(node->p) = ~tmp_val;
+
+        if (i > 1)
+          ++node->p;
+    }
+
+    if (node->p != node->end)
+        return POLARSSL_ERR_X509_POINT_ERROR;
+
+    return 0;
+}
+
+/*
+ * write a asn.1 conform mpi object
+ */
+static int asn1_add_mpi(mpi *value, int tag, x509_node *node)
+{
+    size_t size = (mpi_msb(value) / 8) + 1;
+    unsigned char *buf;
+    int buf_len = (int) size, tl = 2;
+
+    if (tag == ASN1_BIT_STRING)
+        ++tl;
+
+    if (size > 127)
+        x509write_realloc_node(node, size + (size_t) tl +
+            asn1_eval_octet((unsigned int)size));
+    else
+        x509write_realloc_node(node, size + (size_t) tl);
+
+    if (node->data == NULL)
+        return 1;
+
+    buf = (unsigned char*) malloc(size);
+    if (mpi_write_binary(value, buf, buf_len) != 0)
+        return POLARSSL_ERR_MPI_BUFFER_TOO_SMALL;
+
+    /* tag */
+    *(node->p) = tag & 0xFF;
+    ++node->p;
+
+    /* len */
+    if (tag == ASN1_BIT_STRING) {
+        asn1_add_len((unsigned int) size + 1, node);
+        *(node->p) = 0x00;
+        ++node->p;
+    } else {
+        asn1_add_len((unsigned int) size, node);
+    }
+
+    /* value */
+    memcpy(node->p, buf, size);
+    free(buf);
+
+    if ((node->p += (int) size -1) != node->end)
+        return POLARSSL_ERR_X509_POINT_ERROR;
+
+    return 0;
+}
+
+/*
+ * write a node into asn.1 conform object
+ */
+static int asn1_append_tag(x509_node *node, int tag)
+{
+    int tl = 2;
+
+    x509_node tmp;
+    x509write_init_node(&tmp);
+
+    if (tag == ASN1_BIT_STRING)
+        ++tl;
+
+    if (node->len > 127)
+        x509write_realloc_node(&tmp, node->len + (size_t) tl +
+            asn1_eval_octet((unsigned int)node->len));
+    else
+        x509write_realloc_node(&tmp, node->len + (size_t) tl);
+
+    if (tmp.data == NULL) {
+        x509write_free_node(&tmp);
+        return 1;
+    }
+
+    /* tag */
+    *(tmp.p) = tag & 0xFF;
+    ++tmp.p;
+
+    /* len */
+    if (tag == ASN1_BIT_STRING) {
+        asn1_add_len((unsigned int) node->len + 1, &tmp);
+        *(tmp.p) = 0x00;
+        ++tmp.p;
+    } else {
+        asn1_add_len((unsigned int) node->len, &tmp);
+    }
+
+    /* value */
+    memcpy(tmp.p, node->data, node->len);
+
+    /* good? */
+    if ((tmp.p += (int) node->len -1) != tmp.end) {
+        x509write_free_node(&tmp);
+        return POLARSSL_ERR_X509_POINT_ERROR;
+    }
+
+    free(node->data);
+    node->data = tmp.data;
+    node->p = tmp.p;
+    node->end = tmp.end;
+    node->len = tmp.len;
+
+    return 0;
+}
+
+/*
+ * write nodes into a asn.1 object
+ */
+static int asn1_append_nodes(x509_node *node, int tag, int anz, ...)
+{
+    va_list ap;
+    size_t size = 0;
+    x509_node *tmp;
+    int count;
+
+    va_start(ap, anz);
+    count = anz;
+
+    while (count--) {
+
+        tmp = va_arg(ap, x509_node*);
+        if (tmp->data != NULL)
+            size += tmp->len;
+    }
+
+    if ( size > 127) {
+        if (x509write_realloc_node(node, size + (size_t) 2 +
+                    asn1_eval_octet(size)) != 0)
+            return 1;
+    } else {
+        if (x509write_realloc_node(node, size + (size_t) 2) != 0)
+            return 1;
+    }
+
+    /* tag */
+    *(node->p) = tag & 0xFF;
+    ++node->p;
+
+    /* len */
+    asn1_add_len(size, node);
+
+    /* value */
+    va_start(ap, anz);
+    count = anz;
+
+    while (count--) {
+
+        tmp = va_arg(ap, x509_node*);
+        if (tmp->data != NULL) {
+
+            memcpy(node->p, tmp->data, tmp->len);
+            if ((node->p += (int) tmp->len -1) != node->end)
+                ++node->p;
+        }
+    }
+
+    va_end(ap);
+    return 0;
+}
+
+/*
+ * write a ASN.1 conform object identifiere include a "tag"
+ */
+static int asn1_add_oid(x509_node *node, unsigned char *oid, size_t len,
+        int tag, int tag_val, unsigned char *value, size_t val_len)
+{
+    int ret;
+    x509_node tmp;
+
+    x509write_init_node(&tmp);
+
+    /* OBJECT IDENTIFIER */
+    if ((ret = asn1_add_obj(oid, len, ASN1_OID, &tmp)) != 0) {
+        x509write_free_node(&tmp);
+        return ret;
+    }
+
+    /* value */
+    if ((ret = asn1_add_obj(value, val_len, tag_val, &tmp)) != 0) {
+        x509write_free_node(&tmp);
+        return ret;
+    }
+
+    /* SET/SEQUENCE */
+    if ((ret = asn1_append_nodes(node, tag, 1, &tmp)) != 0) {
+        x509write_free_node(&tmp);
+        return ret;
+    }
+
+    x509write_free_node(&tmp);
+    return 0;
+}
+
+/*
+ *  utcTime        UTCTime
+ */
+static int asn1_add_date_utc(unsigned char *time, x509_node *node)
+{
+    unsigned char date[13], *sp;
+    x509_time xtime;
+    int ret;
+
+    sscanf((char*)time, "%d-%d-%d %d:%d:%d", &xtime.year, &xtime.mon,
+       &xtime.day, &xtime.hour, &xtime.min, &xtime.sec);
+
+    /* convert to YY */
+    if (xtime.year > 2000)
+        xtime.year -= 2000;
+    else
+        xtime.year -= 1900;
+
+    snprintf((char*)date, 13, "%2d%2d%2d%2d%2d%2d", xtime.year, xtime.mon, xtime.day,
+        xtime.hour, xtime.min, xtime.sec);
+
+    /* replace ' ' to '0' */
+    for (sp = date; *sp != '\0'; ++sp)
+        if (*sp == '\x20')
+            *sp = '\x30';
+
+    date[12] = 'Z';
+
+    if ((ret = asn1_add_obj(date, 13, ASN1_UTC_TIME, node)) != 0)
+        return ret;
+
+    return 0;
+}
+
+/*
+ * serialize an rsa key into DER
+ */
+
+int x509write_serialize_key(rsa_context *rsa, x509_node *node)
+{
+    int ret = 0;
+    x509write_init_node(node);
+
+    /* vers, n, e, d, p, q, dp, dq, pq */
+    if ((ret = asn1_add_int(rsa->ver, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->N, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->E, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->D, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->P, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->Q, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->DP, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->DQ, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_add_mpi(&rsa->QP, ASN1_INTEGER, node)) != 0)
+        return ret;
+    if ((ret = asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0)
+        return ret;
+
+    return 0;
+}
+
+/*
+ * write a der/pem encoded rsa private key into a file
+ */
+int x509write_keyfile(rsa_context *rsa, char *path, int out_flag)
+{
+    int ret = 0;
+    const char key_beg[] = "-----BEGIN RSA PRIVATE KEY-----\n",
+                key_end[] = "-----END RSA PRIVATE KEY-----\n";
+    x509_node node;
+
+    x509write_init_node(&node);
+    if ((ret = x509write_serialize_key(rsa,&node)) != 0) {
+        x509write_free_node(&node);
+             return ret;
+    }
+
+    ret = x509write_file(&node,path,out_flag,key_beg,key_end);
+    x509write_free_node(&node);
+
+    return ret;
+}
+
+
+/*
+ * reasize the memory for node
+ */
+static int x509write_realloc_node(x509_node *node, size_t larger)
+{
+    /* init len */
+    if (node->data == NULL) {
+        node->len = 0;
+        node->data = malloc(larger);
+        if(node->data == NULL)
+            return 1;
+    } else {
+        /* realloc memory */
+        if ((node->data = realloc(node->data, node->len + larger)) == NULL)
+            return 1;
+    }
+
+    /* init pointer */
+    node->p = &node->data[node->len];
+    node->len += larger;
+    node->end = &node->data[node->len -1];
+
+    return 0;
+}
+
+/*
+ * init node
+ */
+void x509write_init_node(x509_node *node)
+{
+    memset(node, 0, sizeof(x509_node));
+}
+
+/*
+ * clean memory
+ */
+void x509write_free_node(x509_node *node)
+{
+    if (node->data != NULL)
+        free(node->data);
+    node->p = NULL;
+    node->end = NULL;
+    node->len = 0;
+}
+
+/*
+ * write a x509 certificate into file
+ */
+int x509write_crtfile(x509_raw *chain, unsigned char *path, int out_flag)
+{
+    const char cer_beg[] = "-----BEGIN CERTIFICATE-----\n",
+               cer_end[] = "-----END CERTIFICATE-----\n";
+
+    return x509write_file(&chain->raw, (char*)path, out_flag, cer_beg, cer_end);
+}
+
+/*
+ * write a x509 certificate into file
+ */
+int x509write_csrfile(x509_raw *chain, unsigned char *path, int out_flag)
+{
+    const char cer_beg[] = "-----BEGIN CERTIFICATE REQUEST-----\n",
+               cer_end[] = "-----END CERTIFICATE REQUEST-----\n";
+
+    return x509write_file(&chain->raw, (char*)path, out_flag, cer_beg, cer_end);
+}
+
+/*
+ * write an x509 file
+ */
+static int x509write_file(x509_node *node, char *path, int format,
+        const char* pem_prolog, const char* pem_epilog)
+{
+    FILE *ofstream;
+    int is_err = 1/*, buf_len, i, n*/;
+    /* char* base_buf; */
+
+    if ((ofstream = fopen(path, "wb")) == NULL)
+        return 1;
+
+    switch (format) {
+        case X509_OUTPUT_DER:
+            if (fwrite(node->data, 1, node->len, ofstream)
+                != node->len)
+                is_err = -1;
+            break;
+/*
+        case X509_OUTPUT_PEM:
+            if (fprintf(ofstream,pem_prolog)<0) {
+                is_err = -1;
+                break;
+            }
+
+            buf_len = node->len << 1;
+            base_buf = (char*) malloc((size_t)buf_len);
+            memset(base_buf,0,buf_len);
+            if (base64_encode(base_buf, &buf_len, node->data,
+                        (int) node->len) != 0) {
+                is_err = -1;
+                break;
+            }
+
+            n=strlen(base_buf);
+            for(i=0;i<n;i+=64) {
+                fprintf(ofstream,"%.64s\n",&base_buf[i]);
+            }
+
+            if (fprintf(ofstream, pem_epilog)<0) {
+                is_err = -1;
+                break;
+            }
+
+            free(base_buf); */
+    }
+
+    fclose(ofstream);
+
+    if (is_err == -1)
+        return 1;
+
+    return 0;
+}
+
+
+/*
+ * add the owner public key to x509 certificate
+ */
+int x509write_add_pubkey(x509_raw *chain, rsa_context *pubkey)
+{
+    x509_node n_tmp, n_tmp2, *node;
+    int ret;
+
+    node = &chain->subpubkey;
+
+    x509write_init_node(&n_tmp);
+    x509write_init_node(&n_tmp2);
+
+    /*
+    *  RSAPublicKey ::= SEQUENCE {
+    *      modulus           INTEGER,  -- n
+    *      publicExponent    INTEGER   -- e
+    *  }
+    */
+    if ((ret = asn1_add_mpi(&pubkey->N, ASN1_INTEGER, &n_tmp)) != 0) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+        return ret;
+    }
+    if ((ret = asn1_add_mpi(&pubkey->E, ASN1_INTEGER, &n_tmp)) != 0) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+        return ret;
+    }
+    if ((ret = asn1_append_tag(&n_tmp, ASN1_CONSTRUCTED | ASN1_SEQUENCE))
+            != 0) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+        return ret;
+    }
+
+    /*
+     *  SubjectPublicKeyInfo  ::=  SEQUENCE  {
+     *       algorithm            AlgorithmIdentifier,
+     *       subjectPublicKey     BIT STRING }
+     */
+    if ((ret = asn1_append_tag(&n_tmp, ASN1_BIT_STRING)) != 0) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+       return ret;
+    }
+    if ((ret = asn1_add_oid(&n_tmp2, (unsigned char*)OID_PKCS1_RSA, 9,
+                  ASN1_CONSTRUCTED | ASN1_SEQUENCE, ASN1_NULL,
+                  (unsigned char *)"", 0)) != 0) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+        return ret;
+    }
+
+    if ((ret = asn1_append_nodes(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE, 2,
+                   &n_tmp2, &n_tmp))) {
+        x509write_free_node(&n_tmp);
+        x509write_free_node(&n_tmp2);
+        return ret;
+    }
+
+    x509write_free_node(&n_tmp);
+    x509write_free_node(&n_tmp2);
+    return 0;
+}
+
+/*
+ *  RelativeDistinguishedName ::=
+ *    SET OF AttributeTypeAndValue
+ *
+ *  AttributeTypeAndValue ::= SEQUENCE {
+ *    type     AttributeType,
+ *    value    AttributeValue }
+ */
+static int x509write_add_name(x509_node *node, unsigned char *oid,
+        unsigned int oid_len, unsigned char *value, int len, int value_tag)
+{
+    int ret;
+    x509_node n_tmp;
+
+    x509write_init_node(&n_tmp);
+
+    if ((ret = asn1_add_oid(&n_tmp, oid, oid_len,
+                ASN1_CONSTRUCTED | ASN1_SEQUENCE, value_tag,
+                value, len))) {
+        x509write_free_node(&n_tmp);
+        return ret;
+    }
+
+    if ((asn1_append_nodes(node, ASN1_CONSTRUCTED | ASN1_SET, 1, &n_tmp))
+            != 0) {
+        x509write_free_node(&n_tmp);
+        return ret;
+    }
+
+    x509write_free_node(&n_tmp);
+    return 0;
+}
+
+/*
+ * Parse the name string and add to node
+ */
+static int x509write_parse_names(x509_node *node, unsigned char *names)
+{
+    unsigned char *sp, *begin = NULL;
+    unsigned char oid[3] = OID_X520, tag[4], *tag_sp = tag;
+    unsigned char *C = NULL, *CN = NULL, *O = NULL, *OU = NULL,
+                  *ST = NULL, *L = NULL, *R = NULL;
+    int C_len = 0, CN_len = 0, O_len = 0, OU_len = 0, ST_len = 0,
+               L_len = 0, R_len = 0;
+    int ret = 0, is_tag = 1, is_begin = -1, len = 0;
+
+
+    for (sp = names; ; ++sp) {
+
+        /* filter tag */
+        if (is_tag == 1) {
+
+            if (tag_sp == &tag[3])
+                return POLARSSL_ERR_X509_VALUE_TO_LENGTH;
+
+            /* is tag end? */
+            if (*sp == '=') {
+                is_tag = -1;
+                *tag_sp = '\0';
+                is_begin = 1;
+                /* set len 0 (reset) */
+                len = 0;
+            } else {
+                /* tag hasn't ' '! */
+                if (*sp != ' ') {
+                    *tag_sp = *sp;
+                    ++tag_sp;
+                }
+            }
+        /* filter value */
+        } else {
+
+            /* set pointer of value begin */
+            if (is_begin == 1) {
+                begin = sp;
+                is_begin = -1;
+            }
+
+            /* is value at end? */
+            if (*sp == ';' or *sp == '\0') {
+                is_tag = 1;
+
+                /* common name */
+                if (tag[0] == 'C' and tag[1] == 'N') {
+                    CN = begin;
+                    CN_len = len;
+
+                /* organization */
+                } else if (tag[0] == 'O' and tag[1] == '\0') {
+                    O = begin;
+                    O_len = len;
+
+                /* country */
+                } else if (tag[0] == 'C' and tag[1] == '\0') {
+                    C = begin;
+                    C_len = len;
+
+                /* organisation unit */
+                } else if (tag[0] == 'O' and tag[1] == 'U') {
+                    OU = begin;
+                    OU_len = len;
+
+                /* state */
+                } else if (tag[0] == 'S' and tag[1] == 'T') {
+                    ST = begin;
+                    ST_len = len;
+
+                /* locality */
+                } else if (tag[0] == 'L' and tag[1] == '\0') {
+                    L = begin;
+                    L_len = len;
+
+                /* email */
+                } else if (tag[0] == 'R' and tag[1] == '\0') {
+                    R = begin;
+                    R_len = len;
+                }
+
+                /* set tag pointer to begin */
+                tag_sp = tag;
+
+                /* is at end? */
+                if (*sp == '\0' or *(sp +1) == '\0')
+                    break;
+            } else {
+                ++len;
+            }
+        }
+
+        /* make saver */
+        if (*sp == '\0')
+          break;
+    } /* end for */
+
+    /* country */
+    if (C != NULL) {
+        oid[2] = X520_COUNTRY;
+        if ((ret = x509write_add_name(node, oid, 3, C, C_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* state */
+    if (ST != NULL) {
+        oid[2] = X520_STATE;
+        if ((ret = x509write_add_name(node, oid, 3, ST, ST_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* locality */
+    if (L != NULL) {
+        oid[2] = X520_LOCALITY;
+        if ((ret = x509write_add_name(node, oid, 3, L, L_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* organization */
+    if (O != NULL) {
+        oid[2] = X520_ORGANIZATION;
+        if ((ret = x509write_add_name(node, oid, 3, O, O_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* organisation unit */
+    if (OU != NULL) {
+        oid[2] = X520_ORG_UNIT;
+        if ((ret = x509write_add_name(node, oid, 3, OU, OU_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* common name */
+    if (CN != NULL) {
+        oid[2] = X520_COMMON_NAME;
+        if ((ret = x509write_add_name(node, oid, 3, CN, CN_len,
+                        ASN1_PRINTABLE_STRING)) != 0)
+            return ret;
+    }
+
+    /* email */
+    if (R != NULL) {
+        if ((ret = x509write_add_name(node, (unsigned char*)OID_PKCS9_EMAIL,
+                       9, R, R_len, ASN1_IA5_STRING)) != 0)
+            return ret;
+    }
+
+    if ((asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0)
+        return ret;
+
+    return 0;
+}
+
+/*
+ * Copy raw data from original ca to node
+ */
+static int x509write_copy_from_raw(x509_node *node, x509_buf *raw)
+{
+    if (x509write_realloc_node(node, raw->len) != 0)
+        return 1;
+
+    memcpy(node->p, raw->p, (size_t)raw->len);
+    if ((node->p += raw->len -1) != node->end)
+        return POLARSSL_ERR_X509_POINT_ERROR;
+
+    return 0;
+}
+
+/*
+ * Add the issuer
+ */
+
+int x509write_add_issuer(x509_raw *crt, unsigned char *issuer)
+{
+    return x509write_parse_names(&crt->issuer, issuer);
+}
+
+/*
+ * Add the subject
+ */
+int x509write_add_subject(x509_raw *crt, unsigned char *subject)
+{
+    return x509write_parse_names(&crt->subject, subject);
+}
+
+/*
+ * Copy issuer line from another cert to issuer
+ */
+int x509write_copy_issuer(x509_raw *crt, x509_cert *from_crt)
+{
+    return x509write_copy_from_raw(&crt->issuer, &from_crt->issuer_raw);
+}
+
+/*
+ * Copy subject line from another cert
+ */
+int x509write_copy_subject(x509_raw *crt, x509_cert *from_crt)
+{
+    return x509write_copy_from_raw(&crt->subject, &from_crt->subject_raw);
+}
+
+/*
+ * Copy subject line form antoher cert into issuer
+ */
+int x509write_copy_issuer_form_subject(x509_raw *crt,
+        x509_cert *from_crt)
+{
+    return x509write_copy_from_raw(&crt->issuer, &from_crt->subject_raw);
+}
+
+/*
+ * Copy issuer line from another cert into subject
+ */
+int x509write_copy_subject_from_issuer(x509_raw *crt,
+        x509_cert * from_crt)
+{
+    return x509write_copy_from_raw(&crt->subject, &from_crt->issuer_raw);
+}
+
+/*
+ *  Validity ::= SEQUENCE {
+ *       notBefore      Time,
+ *       notAfter       Time }
+ *
+ *  Time ::= CHOICE {
+ *       utcTime        UTCTime,
+ *       generalTime    GeneralizedTime }
+ */
+/* TODO: No handle GeneralizedTime! */
+int x509write_add_validity(x509_raw *chain, unsigned char *befor,
+        unsigned char *after)
+{
+    int ret;
+
+    x509_node *node = &chain->validity;
+
+    /* notBefore */
+    if ((ret = asn1_add_date_utc(befor, node)) != 0)
+        return ret;
+
+    /* notAfter */
+    if ((ret = asn1_add_date_utc(after, node)) != 0)
+        return ret;
+
+    if ((ret = asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0)
+        return ret;
+
+    return 0;
+}
+
+/*
+ * make hash from tbs and sign that with private key
+ */
+static int x509write_make_sign(x509_raw *chain, rsa_context *privkey)
+{
+    int ret;
+    unsigned char hash[20], *sign;
+    size_t sign_len = (size_t) mpi_size(&privkey->N);
+
+    /* make hash */
+    sha1(chain->tbs.data, chain->tbs.len, hash);
+
+    /* create sign */
+    sign = (unsigned char *) malloc(sign_len);
+    if (sign == NULL)
+        return 1;
+
+    if ((ret = rsa_pkcs1_sign(privkey, RSA_PRIVATE, RSA_SHA1, 20, hash,
+                    sign)) != 0)
+        return ret;
+
+    if ((ret = asn1_add_obj(sign, sign_len, ASN1_BIT_STRING,
+                    &chain->sign)) != 0)
+        return ret;
+
+    /*
+     *  AlgorithmIdentifier  ::=  SEQUENCE  {
+     *       algorithm               OBJECT IDENTIFIER,
+     *       parameters              ANY DEFINED BY algorithm OPTIONAL  }
+     */
+    return asn1_add_oid(&chain->signalg, (unsigned char*)OID_PKCS1_RSA_SHA, 9,
+                  ASN1_CONSTRUCTED | ASN1_SEQUENCE, ASN1_NULL,
+                  (unsigned char*)"", 0);
+}
+
+/*
+ * Create a self signed certificate
+ */
+int x509write_create_sign(x509_raw *chain, rsa_context *privkey)
+{
+    int ret, serial;
+
+    /*
+     *  Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
+     */
+    if ((ret = asn1_add_int(2, &chain->version)) != 0)
+        return ret;
+
+    if ((ret = asn1_append_tag(&chain->version, ASN1_CONTEXT_SPECIFIC |
+                    ASN1_CONSTRUCTED)) != 0)
+        return ret;
+
+
+    /*
+     *  CertificateSerialNumber  ::=  INTEGER
+     */
+    srand((unsigned int) time(NULL));
+    serial = rand();
+    if ((ret = asn1_add_int(serial, &chain->serial)) != 0)
+        return ret;
+
+    /*
+     *  AlgorithmIdentifier  ::=  SEQUENCE  {
+     *       algorithm               OBJECT IDENTIFIER,
+     *       parameters              ANY DEFINED BY algorithm OPTIONAL  }
+     */
+    if ((ret = asn1_add_oid(&chain->tbs_signalg,
+                               (unsigned char*)OID_PKCS1_RSA_SHA, 9, ASN1_CONSTRUCTED |
+                               ASN1_SEQUENCE, ASN1_NULL, (unsigned char*)"", 0)) != 0)
+        return ret;
+
+   /*
+    *  Create the tbs
+    */
+    if ((ret = asn1_append_nodes(&chain->tbs, ASN1_CONSTRUCTED |
+                    ASN1_SEQUENCE, 7, &chain->version, &chain->serial,
+                    &chain->tbs_signalg, &chain->issuer, &chain->validity,
+                    &chain->subject, &chain->subpubkey)) != 0)
+        return ret;
+
+    /* make signing */
+    if ((ret = x509write_make_sign(chain, privkey)) != 0)
+        return ret;
+
+    /* finishing */
+    if ((ret = asn1_append_nodes(&chain->raw, ASN1_CONSTRUCTED |
+                    ASN1_SEQUENCE, 3, &chain->tbs, &chain->signalg,
+                    &chain->sign)) != 0)
+        return ret;
+
+    return 0;
+}
+
+int x509write_create_selfsign(x509_raw *chain, rsa_context *privkey)
+{
+    /*
+     * On self signed certificate are subject and issuer the same
+     */
+    x509write_free_node(&chain->issuer);
+    chain->issuer = chain->subject;
+    return x509write_create_sign(chain, privkey);
+}
+
+/*
+ * CertificationRequestInfo ::= SEQUENCE                    {
+ *    version                       Version,
+ *    subject                       Name,
+ *    subjectPublicKeyInfo          SubjectPublicKeyInfo,
+ *    attributes                    [0] IMPLICIT Attributes }
+ *
+ * CertificationRequest ::=   SEQUENCE                      {
+ *    certificationRequestInfo  CertificationRequestInfo,
+ *    signatureAlgorithm        SignatureAlgorithmIdentifier,
+ *    signature                 Signature                   }
+ *
+ * It use chain.serail for attributes!
+ *
+ */
+int x509write_create_csr(x509_raw *chain, rsa_context *privkey)
+{
+    int ret;
+
+    /* version ::= INTEGER */
+    if ((ret = asn1_add_int(0, &chain->version)) != 0)
+        return ret;
+
+    /* write attributes */
+    if ((ret = asn1_add_obj((unsigned char*)"", 0, ASN1_CONTEXT_SPECIFIC |
+                    ASN1_CONSTRUCTED, &chain->serial)) != 0)
+        return ret;
+
+    /* create CertificationRequestInfo */
+    if ((ret = asn1_append_nodes(&chain->tbs, ASN1_CONSTRUCTED |
+                    ASN1_SEQUENCE, 4, &chain->version, &chain->subject,
+                    &chain->subpubkey, &chain->serial)) != 0)
+        return ret;
+
+    /* make signing */
+    if ((ret = x509write_make_sign(chain, privkey)) != 0)
+        return ret;
+
+    /* finish */
+    if ((ret = asn1_append_nodes(&chain->raw, ASN1_CONSTRUCTED | ASN1_SEQUENCE,
+                    3, &chain->tbs, &chain->signalg, &chain->sign)) != 0)
+        return ret;
+
+    return ret;
+}
+
+/*
+ * Free memory
+ */
+void x509write_free_raw(x509_raw *chain)
+{
+    x509write_free_node(&chain->raw);
+    x509write_free_node(&chain->tbs);
+    x509write_free_node(&chain->version);
+    x509write_free_node(&chain->serial);
+    x509write_free_node(&chain->tbs_signalg);
+    x509write_free_node(&chain->issuer);
+    x509write_free_node(&chain->validity);
+    if (chain->subject.data != chain->issuer.data)
+        x509write_free_node(&chain->subject);
+    x509write_free_node(&chain->subpubkey);
+    x509write_free_node(&chain->signalg);
+    x509write_free_node(&chain->sign);
+}
+
+void x509write_init_raw(x509_raw *chain)
+{
+    memset((void *) chain, 0, sizeof(x509_raw));
+}
+
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h b/package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h
new file mode 100644 (file)
index 0000000..cf443ea
--- /dev/null
@@ -0,0 +1,437 @@
+/**
+ * \file bignum.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_BIGNUM_H
+#define POLARSSL_BIGNUM_H
+
+#include <stdio.h>
+
+#define POLARSSL_ERR_MPI_FILE_IO_ERROR                     -0x0002
+#define POLARSSL_ERR_MPI_BAD_INPUT_DATA                    -0x0004
+#define POLARSSL_ERR_MPI_INVALID_CHARACTER                 -0x0006
+#define POLARSSL_ERR_MPI_BUFFER_TOO_SMALL                  -0x0008
+#define POLARSSL_ERR_MPI_NEGATIVE_VALUE                    -0x000A
+#define POLARSSL_ERR_MPI_DIVISION_BY_ZERO                  -0x000C
+#define POLARSSL_ERR_MPI_NOT_ACCEPTABLE                    -0x000E
+
+#define MPI_CHK(f) if( ( ret = f ) != 0 ) goto cleanup
+
+/*
+ * Define the base integer type, architecture-wise
+ */
+#if defined(POLARSSL_HAVE_INT8)
+typedef unsigned char  t_int;
+typedef unsigned short t_dbl;
+#else
+#if defined(POLARSSL_HAVE_INT16)
+typedef unsigned short t_int;
+typedef unsigned long  t_dbl;
+#else
+  typedef unsigned long t_int;
+  #if defined(_MSC_VER) && defined(_M_IX86)
+  typedef unsigned __int64 t_dbl;
+  #else
+    #if defined(__amd64__) || defined(__x86_64__)    || \
+        defined(__ppc64__) || defined(__powerpc64__) || \
+        defined(__ia64__)  || defined(__alpha__)
+    typedef unsigned int t_dbl __attribute__((mode(TI)));
+    #else
+    typedef unsigned long long t_dbl;
+    #endif
+  #endif
+#endif
+#endif
+
+/**
+ * \brief          MPI structure
+ */
+typedef struct
+{
+    int s;              /*!<  integer sign      */
+    int n;              /*!<  total # of limbs  */
+    t_int *p;           /*!<  pointer to limbs  */
+}
+mpi;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief          Initialize one or more mpi
+ */
+void mpi_init( mpi *X, ... );
+
+/**
+ * \brief          Unallocate one or more mpi
+ */
+void mpi_free( mpi *X, ... );
+
+/**
+ * \brief          Enlarge to the specified number of limbs
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_grow( mpi *X, int nblimbs );
+
+/**
+ * \brief          Copy the contents of Y into X
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_copy( mpi *X, mpi *Y );
+
+/**
+ * \brief          Swap the contents of X and Y
+ */
+void mpi_swap( mpi *X, mpi *Y );
+
+/**
+ * \brief          Set value from integer
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_lset( mpi *X, int z );
+
+/**
+ * \brief          Return the number of least significant bits
+ */
+int mpi_lsb( mpi *X );
+
+/**
+ * \brief          Return the number of most significant bits
+ */
+int mpi_msb( mpi *X );
+
+/**
+ * \brief          Return the total size in bytes
+ */
+int mpi_size( mpi *X );
+
+/**
+ * \brief          Import from an ASCII string
+ *
+ * \param X        destination mpi
+ * \param radix    input numeric base
+ * \param s        null-terminated string buffer
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_MPI_XXX error code
+ */
+int mpi_read_string( mpi *X, int radix, char *s );
+
+/**
+ * \brief          Export into an ASCII string
+ *
+ * \param X        source mpi
+ * \param radix    output numeric base
+ * \param s        string buffer
+ * \param slen     string buffer size
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_MPI_XXX error code
+ *
+ * \note           Call this function with *slen = 0 to obtain the
+ *                 minimum required buffer size in *slen.
+ */
+int mpi_write_string( mpi *X, int radix, char *s, int *slen );
+
+/**
+ * \brief          Read X from an opened file
+ *
+ * \param X        destination mpi
+ * \param radix    input numeric base
+ * \param fin      input file handle
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_MPI_XXX error code
+ */
+int mpi_read_file( mpi *X, int radix, FILE *fin );
+
+/**
+ * \brief          Write X into an opened file, or stdout
+ *
+ * \param p        prefix, can be NULL
+ * \param X        source mpi
+ * \param radix    output numeric base
+ * \param fout     output file handle
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_MPI_XXX error code
+ *
+ * \note           Set fout == NULL to print X on the console.
+ */
+int mpi_write_file( char *p, mpi *X, int radix, FILE *fout );
+
+/**
+ * \brief          Import X from unsigned binary data, big endian
+ *
+ * \param X        destination mpi
+ * \param buf      input buffer
+ * \param buflen   input buffer size
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_read_binary( mpi *X, unsigned char *buf, int buflen );
+
+/**
+ * \brief          Export X into unsigned binary data, big endian
+ *
+ * \param X        source mpi
+ * \param buf      output buffer
+ * \param buflen   output buffer size
+ *
+ * \return         0 if successful,
+ *                 POLARSSL_ERR_MPI_BUFFER_TOO_SMALL if buf isn't large enough
+ *
+ * \note           Call this function with *buflen = 0 to obtain the
+ *                 minimum required buffer size in *buflen.
+ */
+int mpi_write_binary( mpi *X, unsigned char *buf, int buflen );
+
+/**
+ * \brief          Left-shift: X <<= count
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_shift_l( mpi *X, int count );
+
+/**
+ * \brief          Right-shift: X >>= count
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_shift_r( mpi *X, int count );
+
+/**
+ * \brief          Compare unsigned values
+ *
+ * \return         1 if |X| is greater than |Y|,
+ *                -1 if |X| is lesser  than |Y| or
+ *                 0 if |X| is equal to |Y|
+ */
+int mpi_cmp_abs( mpi *X, mpi *Y );
+
+/**
+ * \brief          Compare signed values
+ *
+ * \return         1 if X is greater than Y,
+ *                -1 if X is lesser  than Y or
+ *                 0 if X is equal to Y
+ */
+int mpi_cmp_mpi( mpi *X, mpi *Y );
+
+/**
+ * \brief          Compare signed values
+ *
+ * \return         1 if X is greater than z,
+ *                -1 if X is lesser  than z or
+ *                 0 if X is equal to z
+ */
+int mpi_cmp_int( mpi *X, int z );
+
+/**
+ * \brief          Unsigned addition: X = |A| + |B|
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_add_abs( mpi *X, mpi *A, mpi *B );
+
+/**
+ * \brief          Unsigned subtraction: X = |A| - |B|
+ *
+ * \return         0 if successful,
+ *                 POLARSSL_ERR_MPI_NEGATIVE_VALUE if B is greater than A
+ */
+int mpi_sub_abs( mpi *X, mpi *A, mpi *B );
+
+/**
+ * \brief          Signed addition: X = A + B
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_add_mpi( mpi *X, mpi *A, mpi *B );
+
+/**
+ * \brief          Signed subtraction: X = A - B
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_sub_mpi( mpi *X, mpi *A, mpi *B );
+
+/**
+ * \brief          Signed addition: X = A + b
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_add_int( mpi *X, mpi *A, int b );
+
+/**
+ * \brief          Signed subtraction: X = A - b
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_sub_int( mpi *X, mpi *A, int b );
+
+/**
+ * \brief          Baseline multiplication: X = A * B
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_mul_mpi( mpi *X, mpi *A, mpi *B );
+
+/**
+ * \brief          Baseline multiplication: X = A * b
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_mul_int( mpi *X, mpi *A, t_int b );
+
+/**
+ * \brief          Division by mpi: A = Q * B + R
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0
+ *
+ * \note           Either Q or R can be NULL.
+ */
+int mpi_div_mpi( mpi *Q, mpi *R, mpi *A, mpi *B );
+
+/**
+ * \brief          Division by int: A = Q * b + R
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0
+ *
+ * \note           Either Q or R can be NULL.
+ */
+int mpi_div_int( mpi *Q, mpi *R, mpi *A, int b );
+
+/**
+ * \brief          Modulo: R = A mod B
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0
+ */
+int mpi_mod_mpi( mpi *R, mpi *A, mpi *B );
+
+/**
+ * \brief          Modulo: r = A mod b
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0
+ */
+int mpi_mod_int( t_int *r, mpi *A, int b );
+
+/**
+ * \brief          Sliding-window exponentiation: X = A^E mod N
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or even
+ *
+ * \note           _RR is used to avoid re-computing R*R mod N across
+ *                 multiple calls, which speeds up things a bit. It can
+ *                 be set to NULL if the extra performance is unneeded.
+ */
+int mpi_exp_mod( mpi *X, mpi *A, mpi *E, mpi *N, mpi *_RR );
+
+/**
+ * \brief          Greatest common divisor: G = gcd(A, B)
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed
+ */
+int mpi_gcd( mpi *G, mpi *A, mpi *B );
+
+/**
+ * \brief          Modular inverse: X = A^-1 mod N
+ *
+ * \return         0 if successful,
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or nil
+ *                 POLARSSL_ERR_MPI_NOT_ACCEPTABLE if A has no inverse mod N
+ */
+int mpi_inv_mod( mpi *X, mpi *A, mpi *N );
+
+/**
+ * \brief          Miller-Rabin primality test
+ *
+ * \return         0 if successful (probably prime),
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_NOT_ACCEPTABLE if X is not prime
+ */
+int mpi_is_prime( mpi *X, int (*f_rng)(void *), void *p_rng );
+
+/**
+ * \brief          Prime number generation
+ *
+ * \param X        destination mpi
+ * \param nbits    required size of X in bits
+ * \param dh_flag  if 1, then (X-1)/2 will be prime too
+ * \param f_rng    RNG function
+ * \param p_rng    RNG parameter
+ *
+ * \return         0 if successful (probably prime),
+ *                 1 if memory allocation failed,
+ *                 POLARSSL_ERR_MPI_BAD_INPUT_DATA if nbits is < 3
+ */
+int mpi_gen_prime( mpi *X, int nbits, int dh_flag,
+                   int (*f_rng)(void *), void *p_rng );
+
+/**
+ * \brief          Checkup routine
+ *
+ * \return         0 if successful, or 1 if the test failed
+ */
+int mpi_self_test( int verbose );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* bignum.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h b/package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h
new file mode 100644 (file)
index 0000000..f6d34da
--- /dev/null
@@ -0,0 +1,731 @@
+/**
+ * \file bn_mul.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *      Multiply source vector [s] with b, add result
+ *       to destination vector [d] and set carry c.
+ *
+ *      Currently supports:
+ *
+ *         . IA-32 (386+)         . AMD64 / EM64T
+ *         . IA-32 (SSE2)         . Motorola 68000
+ *         . PowerPC, 32-bit      . MicroBlaze
+ *         . PowerPC, 64-bit      . TriCore
+ *         . SPARC v8             . ARM v3+
+ *         . Alpha                . MIPS32
+ *         . C, longlong          . C, generic
+ */
+#ifndef POLARSSL_BN_MUL_H
+#define POLARSSL_BN_MUL_H
+
+#include "polarssl/config.h"
+
+#if defined(POLARSSL_HAVE_ASM)
+
+#if defined(__GNUC__)
+#if defined(__i386__)
+
+#define MULADDC_INIT                            \
+    asm( "movl   %%ebx, %0      " : "=m" (t));  \
+    asm( "movl   %0, %%esi      " :: "m" (s));  \
+    asm( "movl   %0, %%edi      " :: "m" (d));  \
+    asm( "movl   %0, %%ecx      " :: "m" (c));  \
+    asm( "movl   %0, %%ebx      " :: "m" (b));
+
+#define MULADDC_CORE                            \
+    asm( "lodsl                 " );            \
+    asm( "mull   %ebx           " );            \
+    asm( "addl   %ecx,   %eax   " );            \
+    asm( "adcl   $0,     %edx   " );            \
+    asm( "addl   (%edi), %eax   " );            \
+    asm( "adcl   $0,     %edx   " );            \
+    asm( "movl   %edx,   %ecx   " );            \
+    asm( "stosl                 " );
+
+#if defined(POLARSSL_HAVE_SSE2)
+
+#define MULADDC_HUIT                            \
+    asm( "movd     %ecx,     %mm1     " );      \
+    asm( "movd     %ebx,     %mm0     " );      \
+    asm( "movd     (%edi),   %mm3     " );      \
+    asm( "paddq    %mm3,     %mm1     " );      \
+    asm( "movd     (%esi),   %mm2     " );      \
+    asm( "pmuludq  %mm0,     %mm2     " );      \
+    asm( "movd     4(%esi),  %mm4     " );      \
+    asm( "pmuludq  %mm0,     %mm4     " );      \
+    asm( "movd     8(%esi),  %mm6     " );      \
+    asm( "pmuludq  %mm0,     %mm6     " );      \
+    asm( "movd     12(%esi), %mm7     " );      \
+    asm( "pmuludq  %mm0,     %mm7     " );      \
+    asm( "paddq    %mm2,     %mm1     " );      \
+    asm( "movd     4(%edi),  %mm3     " );      \
+    asm( "paddq    %mm4,     %mm3     " );      \
+    asm( "movd     8(%edi),  %mm5     " );      \
+    asm( "paddq    %mm6,     %mm5     " );      \
+    asm( "movd     12(%edi), %mm4     " );      \
+    asm( "paddq    %mm4,     %mm7     " );      \
+    asm( "movd     %mm1,     (%edi)   " );      \
+    asm( "movd     16(%esi), %mm2     " );      \
+    asm( "pmuludq  %mm0,     %mm2     " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "movd     20(%esi), %mm4     " );      \
+    asm( "pmuludq  %mm0,     %mm4     " );      \
+    asm( "paddq    %mm3,     %mm1     " );      \
+    asm( "movd     24(%esi), %mm6     " );      \
+    asm( "pmuludq  %mm0,     %mm6     " );      \
+    asm( "movd     %mm1,     4(%edi)  " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "movd     28(%esi), %mm3     " );      \
+    asm( "pmuludq  %mm0,     %mm3     " );      \
+    asm( "paddq    %mm5,     %mm1     " );      \
+    asm( "movd     16(%edi), %mm5     " );      \
+    asm( "paddq    %mm5,     %mm2     " );      \
+    asm( "movd     %mm1,     8(%edi)  " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "paddq    %mm7,     %mm1     " );      \
+    asm( "movd     20(%edi), %mm5     " );      \
+    asm( "paddq    %mm5,     %mm4     " );      \
+    asm( "movd     %mm1,     12(%edi) " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "paddq    %mm2,     %mm1     " );      \
+    asm( "movd     24(%edi), %mm5     " );      \
+    asm( "paddq    %mm5,     %mm6     " );      \
+    asm( "movd     %mm1,     16(%edi) " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "paddq    %mm4,     %mm1     " );      \
+    asm( "movd     28(%edi), %mm5     " );      \
+    asm( "paddq    %mm5,     %mm3     " );      \
+    asm( "movd     %mm1,     20(%edi) " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "paddq    %mm6,     %mm1     " );      \
+    asm( "movd     %mm1,     24(%edi) " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "paddq    %mm3,     %mm1     " );      \
+    asm( "movd     %mm1,     28(%edi) " );      \
+    asm( "addl     $32,      %edi     " );      \
+    asm( "addl     $32,      %esi     " );      \
+    asm( "psrlq    $32,      %mm1     " );      \
+    asm( "movd     %mm1,     %ecx     " );
+
+#define MULADDC_STOP                            \
+    asm( "emms                        " );      \
+    asm( "movl   %0, %%ebx      " :: "m" (t));  \
+    asm( "movl   %%ecx, %0      " : "=m" (c));  \
+    asm( "movl   %%edi, %0      " : "=m" (d));  \
+    asm( "movl   %%esi, %0      " : "=m" (s) :: \
+    "eax", "ecx", "edx", "esi", "edi" );
+
+#else
+
+#define MULADDC_STOP                            \
+    asm( "movl   %0, %%ebx      " :: "m" (t));  \
+    asm( "movl   %%ecx, %0      " : "=m" (c));  \
+    asm( "movl   %%edi, %0      " : "=m" (d));  \
+    asm( "movl   %%esi, %0      " : "=m" (s) :: \
+    "eax", "ecx", "edx", "esi", "edi" );
+
+#endif /* SSE2 */
+#endif /* i386 */
+
+#if defined(__amd64__) || defined (__x86_64__)
+
+#define MULADDC_INIT                            \
+    asm( "movq   %0, %%rsi      " :: "m" (s));  \
+    asm( "movq   %0, %%rdi      " :: "m" (d));  \
+    asm( "movq   %0, %%rcx      " :: "m" (c));  \
+    asm( "movq   %0, %%rbx      " :: "m" (b));  \
+    asm( "xorq   %r8, %r8       " );
+
+#define MULADDC_CORE                            \
+    asm( "movq  (%rsi),%rax     " );            \
+    asm( "mulq   %rbx           " );            \
+    asm( "addq   $8,   %rsi     " );            \
+    asm( "addq   %rcx, %rax     " );            \
+    asm( "movq   %r8,  %rcx     " );            \
+    asm( "adcq   $0,   %rdx     " );            \
+    asm( "nop                   " );            \
+    asm( "addq   %rax, (%rdi)   " );            \
+    asm( "adcq   %rdx, %rcx     " );            \
+    asm( "addq   $8,   %rdi     " );
+
+#define MULADDC_STOP                            \
+    asm( "movq   %%rcx, %0      " : "=m" (c));  \
+    asm( "movq   %%rdi, %0      " : "=m" (d));  \
+    asm( "movq   %%rsi, %0      " : "=m" (s) :: \
+    "rax", "rcx", "rdx", "rbx", "rsi", "rdi", "r8" );
+
+#endif /* AMD64 */
+
+#if defined(__mc68020__) || defined(__mcpu32__)
+
+#define MULADDC_INIT                            \
+    asm( "movl   %0, %%a2       " :: "m" (s));  \
+    asm( "movl   %0, %%a3       " :: "m" (d));  \
+    asm( "movl   %0, %%d3       " :: "m" (c));  \
+    asm( "movl   %0, %%d2       " :: "m" (b));  \
+    asm( "moveq  #0, %d0        " );
+
+#define MULADDC_CORE                            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d4:%d1   " );            \
+    asm( "addl   %d3, %d1       " );            \
+    asm( "addxl  %d0, %d4       " );            \
+    asm( "moveq  #0,  %d3       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "addxl  %d4, %d3       " );
+
+#define MULADDC_STOP                            \
+    asm( "movl   %%d3, %0       " : "=m" (c));  \
+    asm( "movl   %%a3, %0       " : "=m" (d));  \
+    asm( "movl   %%a2, %0       " : "=m" (s) :: \
+    "d0", "d1", "d2", "d3", "d4", "a2", "a3" );
+
+#define MULADDC_HUIT                            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d4:%d1   " );            \
+    asm( "addxl  %d3, %d1       " );            \
+    asm( "addxl  %d0, %d4       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d3:%d1   " );            \
+    asm( "addxl  %d4, %d1       " );            \
+    asm( "addxl  %d0, %d3       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d4:%d1   " );            \
+    asm( "addxl  %d3, %d1       " );            \
+    asm( "addxl  %d0, %d4       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d3:%d1   " );            \
+    asm( "addxl  %d4, %d1       " );            \
+    asm( "addxl  %d0, %d3       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d4:%d1   " );            \
+    asm( "addxl  %d3, %d1       " );            \
+    asm( "addxl  %d0, %d4       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d3:%d1   " );            \
+    asm( "addxl  %d4, %d1       " );            \
+    asm( "addxl  %d0, %d3       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d4:%d1   " );            \
+    asm( "addxl  %d3, %d1       " );            \
+    asm( "addxl  %d0, %d4       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "movel  %a2@+, %d1     " );            \
+    asm( "mulul  %d2, %d3:%d1   " );            \
+    asm( "addxl  %d4, %d1       " );            \
+    asm( "addxl  %d0, %d3       " );            \
+    asm( "addl   %d1, %a3@+     " );            \
+    asm( "addxl  %d0, %d3       " );
+
+#endif /* MC68000 */
+
+#if defined(__powerpc__)   || defined(__ppc__)
+#if defined(__powerpc64__) || defined(__ppc64__)
+
+#if defined(__MACH__) && defined(__APPLE__)
+
+#define MULADDC_INIT                            \
+    asm( "ld     r3, %0         " :: "m" (s));  \
+    asm( "ld     r4, %0         " :: "m" (d));  \
+    asm( "ld     r5, %0         " :: "m" (c));  \
+    asm( "ld     r6, %0         " :: "m" (b));  \
+    asm( "addi   r3, r3, -8     " );            \
+    asm( "addi   r4, r4, -8     " );            \
+    asm( "addic  r5, r5,  0     " );
+
+#define MULADDC_CORE                            \
+    asm( "ldu    r7, 8(r3)      " );            \
+    asm( "mulld  r8, r7, r6     " );            \
+    asm( "mulhdu r9, r7, r6     " );            \
+    asm( "adde   r8, r8, r5     " );            \
+    asm( "ld     r7, 8(r4)      " );            \
+    asm( "addze  r5, r9         " );            \
+    asm( "addc   r8, r8, r7     " );            \
+    asm( "stdu   r8, 8(r4)      " );
+
+#define MULADDC_STOP                            \
+    asm( "addze  r5, r5         " );            \
+    asm( "addi   r4, r4, 8      " );            \
+    asm( "addi   r3, r3, 8      " );            \
+    asm( "std    r5, %0         " : "=m" (c));  \
+    asm( "std    r4, %0         " : "=m" (d));  \
+    asm( "std    r3, %0         " : "=m" (s) :: \
+    "r3", "r4", "r5", "r6", "r7", "r8", "r9" );
+
+#else
+
+#define MULADDC_INIT                            \
+    asm( "ld     %%r3, %0       " :: "m" (s));  \
+    asm( "ld     %%r4, %0       " :: "m" (d));  \
+    asm( "ld     %%r5, %0       " :: "m" (c));  \
+    asm( "ld     %%r6, %0       " :: "m" (b));  \
+    asm( "addi   %r3, %r3, -8   " );            \
+    asm( "addi   %r4, %r4, -8   " );            \
+    asm( "addic  %r5, %r5,  0   " );
+
+#define MULADDC_CORE                            \
+    asm( "ldu    %r7, 8(%r3)    " );            \
+    asm( "mulld  %r8, %r7, %r6  " );            \
+    asm( "mulhdu %r9, %r7, %r6  " );            \
+    asm( "adde   %r8, %r8, %r5  " );            \
+    asm( "ld     %r7, 8(%r4)    " );            \
+    asm( "addze  %r5, %r9       " );            \
+    asm( "addc   %r8, %r8, %r7  " );            \
+    asm( "stdu   %r8, 8(%r4)    " );
+
+#define MULADDC_STOP                            \
+    asm( "addze  %r5, %r5       " );            \
+    asm( "addi   %r4, %r4, 8    " );            \
+    asm( "addi   %r3, %r3, 8    " );            \
+    asm( "std    %%r5, %0       " : "=m" (c));  \
+    asm( "std    %%r4, %0       " : "=m" (d));  \
+    asm( "std    %%r3, %0       " : "=m" (s) :: \
+    "r3", "r4", "r5", "r6", "r7", "r8", "r9" );
+
+#endif
+
+#else /* PPC32 */
+
+#if defined(__MACH__) && defined(__APPLE__)
+
+#define MULADDC_INIT                            \
+    asm( "lwz    r3, %0         " :: "m" (s));  \
+    asm( "lwz    r4, %0         " :: "m" (d));  \
+    asm( "lwz    r5, %0         " :: "m" (c));  \
+    asm( "lwz    r6, %0         " :: "m" (b));  \
+    asm( "addi   r3, r3, -4     " );            \
+    asm( "addi   r4, r4, -4     " );            \
+    asm( "addic  r5, r5,  0     " );
+
+#define MULADDC_CORE                            \
+    asm( "lwzu   r7, 4(r3)      " );            \
+    asm( "mullw  r8, r7, r6     " );            \
+    asm( "mulhwu r9, r7, r6     " );            \
+    asm( "adde   r8, r8, r5     " );            \
+    asm( "lwz    r7, 4(r4)      " );            \
+    asm( "addze  r5, r9         " );            \
+    asm( "addc   r8, r8, r7     " );            \
+    asm( "stwu   r8, 4(r4)      " );
+
+#define MULADDC_STOP                            \
+    asm( "addze  r5, r5         " );            \
+    asm( "addi   r4, r4, 4      " );            \
+    asm( "addi   r3, r3, 4      " );            \
+    asm( "stw    r5, %0         " : "=m" (c));  \
+    asm( "stw    r4, %0         " : "=m" (d));  \
+    asm( "stw    r3, %0         " : "=m" (s) :: \
+    "r3", "r4", "r5", "r6", "r7", "r8", "r9" );
+
+#else
+
+#define MULADDC_INIT                            \
+    asm( "lwz    %%r3, %0       " :: "m" (s));  \
+    asm( "lwz    %%r4, %0       " :: "m" (d));  \
+    asm( "lwz    %%r5, %0       " :: "m" (c));  \
+    asm( "lwz    %%r6, %0       " :: "m" (b));  \
+    asm( "addi   %r3, %r3, -4   " );            \
+    asm( "addi   %r4, %r4, -4   " );            \
+    asm( "addic  %r5, %r5,  0   " );
+
+#define MULADDC_CORE                            \
+    asm( "lwzu   %r7, 4(%r3)    " );            \
+    asm( "mullw  %r8, %r7, %r6  " );            \
+    asm( "mulhwu %r9, %r7, %r6  " );            \
+    asm( "adde   %r8, %r8, %r5  " );            \
+    asm( "lwz    %r7, 4(%r4)    " );            \
+    asm( "addze  %r5, %r9       " );            \
+    asm( "addc   %r8, %r8, %r7  " );            \
+    asm( "stwu   %r8, 4(%r4)    " );
+
+#define MULADDC_STOP                            \
+    asm( "addze  %r5, %r5       " );            \
+    asm( "addi   %r4, %r4, 4    " );            \
+    asm( "addi   %r3, %r3, 4    " );            \
+    asm( "stw    %%r5, %0       " : "=m" (c));  \
+    asm( "stw    %%r4, %0       " : "=m" (d));  \
+    asm( "stw    %%r3, %0       " : "=m" (s) :: \
+    "r3", "r4", "r5", "r6", "r7", "r8", "r9" );
+
+#endif
+
+#endif /* PPC32 */
+#endif /* PPC64 */
+
+#if defined(__sparc__)
+
+#define MULADDC_INIT                            \
+    asm( "ld     %0, %%o0       " :: "m" (s));  \
+    asm( "ld     %0, %%o1       " :: "m" (d));  \
+    asm( "ld     %0, %%o2       " :: "m" (c));  \
+    asm( "ld     %0, %%o3       " :: "m" (b));
+
+#define MULADDC_CORE                            \
+    asm( "ld    [%o0], %o4      " );            \
+    asm( "inc      4,  %o0      " );            \
+    asm( "ld    [%o1], %o5      " );            \
+    asm( "umul   %o3,  %o4, %o4 " );            \
+    asm( "addcc  %o4,  %o2, %o4 " );            \
+    asm( "rd      %y,  %g1      " );            \
+    asm( "addx   %g1,    0, %g1 " );            \
+    asm( "addcc  %o4,  %o5, %o4 " );            \
+    asm( "st     %o4, [%o1]     " );            \
+    asm( "addx   %g1,    0, %o2 " );            \
+    asm( "inc      4,  %o1      " );
+
+#define MULADDC_STOP                            \
+    asm( "st     %%o2, %0       " : "=m" (c));  \
+    asm( "st     %%o1, %0       " : "=m" (d));  \
+    asm( "st     %%o0, %0       " : "=m" (s) :: \
+    "g1", "o0", "o1", "o2", "o3", "o4", "o5" );
+
+#endif /* SPARCv8 */
+
+#if defined(__microblaze__) || defined(microblaze)
+
+#define MULADDC_INIT                            \
+    asm( "lwi   r3,   %0        " :: "m" (s));  \
+    asm( "lwi   r4,   %0        " :: "m" (d));  \
+    asm( "lwi   r5,   %0        " :: "m" (c));  \
+    asm( "lwi   r6,   %0        " :: "m" (b));  \
+    asm( "andi  r7,   r6, 0xffff" );            \
+    asm( "bsrli r6,   r6, 16    " );
+
+#define MULADDC_CORE                            \
+    asm( "lhui  r8,   r3,   0   " );            \
+    asm( "addi  r3,   r3,   2   " );            \
+    asm( "lhui  r9,   r3,   0   " );            \
+    asm( "addi  r3,   r3,   2   " );            \
+    asm( "mul   r10,  r9,  r6   " );            \
+    asm( "mul   r11,  r8,  r7   " );            \
+    asm( "mul   r12,  r9,  r7   " );            \
+    asm( "mul   r13,  r8,  r6   " );            \
+    asm( "bsrli  r8, r10,  16   " );            \
+    asm( "bsrli  r9, r11,  16   " );            \
+    asm( "add   r13, r13,  r8   " );            \
+    asm( "add   r13, r13,  r9   " );            \
+    asm( "bslli r10, r10,  16   " );            \
+    asm( "bslli r11, r11,  16   " );            \
+    asm( "add   r12, r12, r10   " );            \
+    asm( "addc  r13, r13,  r0   " );            \
+    asm( "add   r12, r12, r11   " );            \
+    asm( "addc  r13, r13,  r0   " );            \
+    asm( "lwi   r10,  r4,   0   " );            \
+    asm( "add   r12, r12, r10   " );            \
+    asm( "addc  r13, r13,  r0   " );            \
+    asm( "add   r12, r12,  r5   " );            \
+    asm( "addc   r5, r13,  r0   " );            \
+    asm( "swi   r12,  r4,   0   " );            \
+    asm( "addi   r4,  r4,   4   " );
+
+#define MULADDC_STOP                            \
+    asm( "swi   r5,   %0        " : "=m" (c));  \
+    asm( "swi   r4,   %0        " : "=m" (d));  \
+    asm( "swi   r3,   %0        " : "=m" (s) :: \
+     "r3", "r4" , "r5" , "r6" , "r7" , "r8" ,   \
+     "r9", "r10", "r11", "r12", "r13" );
+
+#endif /* MicroBlaze */
+
+#if defined(__tricore__)
+
+#define MULADDC_INIT                            \
+    asm( "ld.a   %%a2, %0       " :: "m" (s));  \
+    asm( "ld.a   %%a3, %0       " :: "m" (d));  \
+    asm( "ld.w   %%d4, %0       " :: "m" (c));  \
+    asm( "ld.w   %%d1, %0       " :: "m" (b));  \
+    asm( "xor    %d5, %d5       " );
+
+#define MULADDC_CORE                            \
+    asm( "ld.w   %d0,   [%a2+]      " );        \
+    asm( "madd.u %e2, %e4, %d0, %d1 " );        \
+    asm( "ld.w   %d0,   [%a3]       " );        \
+    asm( "addx   %d2,    %d2,  %d0  " );        \
+    asm( "addc   %d3,    %d3,    0  " );        \
+    asm( "mov    %d4,    %d3        " );        \
+    asm( "st.w  [%a3+],  %d2        " );
+
+#define MULADDC_STOP                            \
+    asm( "st.w   %0, %%d4       " : "=m" (c));  \
+    asm( "st.a   %0, %%a3       " : "=m" (d));  \
+    asm( "st.a   %0, %%a2       " : "=m" (s) :: \
+    "d0", "d1", "e2", "d4", "a2", "a3" );
+
+#endif /* TriCore */
+
+#if defined(__arm__)
+
+#define MULADDC_INIT                            \
+    asm( "ldr    r0, %0         " :: "m" (s));  \
+    asm( "ldr    r1, %0         " :: "m" (d));  \
+    asm( "ldr    r2, %0         " :: "m" (c));  \
+    asm( "ldr    r3, %0         " :: "m" (b));
+
+#define MULADDC_CORE                            \
+    asm( "ldr    r4, [r0], #4   " );            \
+    asm( "mov    r5, #0         " );            \
+    asm( "ldr    r6, [r1]       " );            \
+    asm( "umlal  r2, r5, r3, r4 " );            \
+    asm( "adds   r7, r6, r2     " );            \
+    asm( "adc    r2, r5, #0     " );            \
+    asm( "str    r7, [r1], #4   " );
+
+#define MULADDC_STOP                            \
+    asm( "str    r2, %0         " : "=m" (c));  \
+    asm( "str    r1, %0         " : "=m" (d));  \
+    asm( "str    r0, %0         " : "=m" (s) :: \
+    "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7" );
+
+#endif /* ARMv3 */
+
+#if defined(__alpha__)
+
+#define MULADDC_INIT                            \
+    asm( "ldq    $1, %0         " :: "m" (s));  \
+    asm( "ldq    $2, %0         " :: "m" (d));  \
+    asm( "ldq    $3, %0         " :: "m" (c));  \
+    asm( "ldq    $4, %0         " :: "m" (b));
+
+#define MULADDC_CORE                            \
+    asm( "ldq    $6,  0($1)     " );            \
+    asm( "addq   $1,  8, $1     " );            \
+    asm( "mulq   $6, $4, $7     " );            \
+    asm( "umulh  $6, $4, $6     " );            \
+    asm( "addq   $7, $3, $7     " );            \
+    asm( "cmpult $7, $3, $3     " );            \
+    asm( "ldq    $5,  0($2)     " );            \
+    asm( "addq   $7, $5, $7     " );            \
+    asm( "cmpult $7, $5, $5     " );            \
+    asm( "stq    $7,  0($2)     " );            \
+    asm( "addq   $2,  8, $2     " );            \
+    asm( "addq   $6, $3, $3     " );            \
+    asm( "addq   $5, $3, $3     " );
+
+#define MULADDC_STOP                            \
+    asm( "stq    $3, %0         " : "=m" (c));  \
+    asm( "stq    $2, %0         " : "=m" (d));  \
+    asm( "stq    $1, %0         " : "=m" (s) :: \
+    "$1", "$2", "$3", "$4", "$5", "$6", "$7" );
+
+#endif /* Alpha */
+
+#if defined(__mips__)
+
+#define MULADDC_INIT                            \
+    asm( "lw     $10, %0        " :: "m" (s));  \
+    asm( "lw     $11, %0        " :: "m" (d));  \
+    asm( "lw     $12, %0        " :: "m" (c));  \
+    asm( "lw     $13, %0        " :: "m" (b));
+
+#define MULADDC_CORE                            \
+    asm( "lw     $14, 0($10)    " );            \
+    asm( "multu  $13, $14       " );            \
+    asm( "addi   $10, $10, 4    " );            \
+    asm( "mflo   $14            " );            \
+    asm( "mfhi   $9             " );            \
+    asm( "addu   $14, $12, $14  " );            \
+    asm( "lw     $15, 0($11)    " );            \
+    asm( "sltu   $12, $14, $12  " );            \
+    asm( "addu   $15, $14, $15  " );            \
+    asm( "sltu   $14, $15, $14  " );            \
+    asm( "addu   $12, $12, $9   " );            \
+    asm( "sw     $15, 0($11)    " );            \
+    asm( "addu   $12, $12, $14  " );            \
+    asm( "addi   $11, $11, 4    " );
+
+#define MULADDC_STOP                            \
+    asm( "sw     $12, %0        " : "=m" (c));  \
+    asm( "sw     $11, %0        " : "=m" (d));  \
+    asm( "sw     $10, %0        " : "=m" (s) :: \
+    "$9", "$10", "$11", "$12", "$13", "$14", "$15" );
+
+#endif /* MIPS */
+#endif /* GNUC */
+
+#if (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)
+
+#define MULADDC_INIT                            \
+    __asm   mov     esi, s                      \
+    __asm   mov     edi, d                      \
+    __asm   mov     ecx, c                      \
+    __asm   mov     ebx, b
+
+#define MULADDC_CORE                            \
+    __asm   lodsd                               \
+    __asm   mul     ebx                         \
+    __asm   add     eax, ecx                    \
+    __asm   adc     edx, 0                      \
+    __asm   add     eax, [edi]                  \
+    __asm   adc     edx, 0                      \
+    __asm   mov     ecx, edx                    \
+    __asm   stosd
+
+#if defined(POLARSSL_HAVE_SSE2)
+
+#define EMIT __asm _emit
+
+#define MULADDC_HUIT                            \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0xC9             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0xC3             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x1F             \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCB             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x16             \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xD0             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x66  EMIT 0x04  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xE0             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x76  EMIT 0x08  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xF0             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x7E  EMIT 0x0C  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xF8             \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCA             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x5F  EMIT 0x04  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xDC             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x6F  EMIT 0x08  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xEE             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x67  EMIT 0x0C  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xFC             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x0F             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x56  EMIT 0x10  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xD0             \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x66  EMIT 0x14  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xE0             \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCB             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x76  EMIT 0x18  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xF0             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x04  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x5E  EMIT 0x1C  \
+    EMIT 0x0F  EMIT 0xF4  EMIT 0xD8             \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCD             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x6F  EMIT 0x10  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xD5             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x08  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCF             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x6F  EMIT 0x14  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xE5             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x0C  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCA             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x6F  EMIT 0x18  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xF5             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x10  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCC             \
+    EMIT 0x0F  EMIT 0x6E  EMIT 0x6F  EMIT 0x1C  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xDD             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x14  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCE             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x18  \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0xD4  EMIT 0xCB             \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0x4F  EMIT 0x1C  \
+    EMIT 0x83  EMIT 0xC7  EMIT 0x20             \
+    EMIT 0x83  EMIT 0xC6  EMIT 0x20             \
+    EMIT 0x0F  EMIT 0x73  EMIT 0xD1  EMIT 0x20  \
+    EMIT 0x0F  EMIT 0x7E  EMIT 0xC9
+
+#define MULADDC_STOP                            \
+    EMIT 0x0F  EMIT 0x77                        \
+    __asm   mov     c, ecx                      \
+    __asm   mov     d, edi                      \
+    __asm   mov     s, esi                      \
+
+#else
+
+#define MULADDC_STOP                            \
+    __asm   mov     c, ecx                      \
+    __asm   mov     d, edi                      \
+    __asm   mov     s, esi                      \
+
+#endif /* SSE2 */
+#endif /* MSVC */
+
+#endif /* POLARSSL_HAVE_ASM */
+
+#if !defined(MULADDC_CORE)
+#if defined(POLARSSL_HAVE_LONGLONG)
+
+#define MULADDC_INIT                    \
+{                                       \
+    t_dbl r;                            \
+    t_int r0, r1;
+
+#define MULADDC_CORE                    \
+    r   = *(s++) * (t_dbl) b;           \
+    r0  = r;                            \
+    r1  = r >> biL;                     \
+    r0 += c;  r1 += (r0 <  c);          \
+    r0 += *d; r1 += (r0 < *d);          \
+    c = r1; *(d++) = r0;
+
+#define MULADDC_STOP                    \
+}
+
+#else
+#define MULADDC_INIT                    \
+{                                       \
+    t_int s0, s1, b0, b1;               \
+    t_int r0, r1, rx, ry;               \
+    b0 = ( b << biH ) >> biH;           \
+    b1 = ( b >> biH );
+
+#define MULADDC_CORE                    \
+    s0 = ( *s << biH ) >> biH;          \
+    s1 = ( *s >> biH ); s++;            \
+    rx = s0 * b1; r0 = s0 * b0;         \
+    ry = s1 * b0; r1 = s1 * b1;         \
+    r1 += ( rx >> biH );                \
+    r1 += ( ry >> biH );                \
+    rx <<= biH; ry <<= biH;             \
+    r0 += rx; r1 += (r0 < rx);          \
+    r0 += ry; r1 += (r0 < ry);          \
+    r0 +=  c; r1 += (r0 <  c);          \
+    r0 += *d; r1 += (r0 < *d);          \
+    c = r1; *(d++) = r0;
+
+#define MULADDC_STOP                    \
+}
+
+#endif /* C (generic)  */
+#endif /* C (longlong) */
+
+#endif /* bn_mul.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/config.h b/package/luci/libs/luci-lib-px5g/src/polarssl/config.h
new file mode 100644 (file)
index 0000000..6463e52
--- /dev/null
@@ -0,0 +1,329 @@
+/**
+ * \file config.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This set of compile-time options may be used to enable
+ * or disable features selectively, and reduce the global
+ * memory footprint.
+ */
+#ifndef POLARSSL_CONFIG_H
+#define POLARSSL_CONFIG_H
+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+
+/*
+ * Uncomment if native integers are 8-bit wide.
+ *
+#define POLARSSL_HAVE_INT8
+ */
+
+/*
+ * Uncomment if native integers are 16-bit wide.
+ *
+#define POLARSSL_HAVE_INT16
+ */
+
+/*
+ * Uncomment if the compiler supports long long.
+ */
+#define POLARSSL_HAVE_LONGLONG
+
+
+/*
+ * Uncomment to enable the use of assembly code.
+ */
+#define POLARSSL_HAVE_ASM
+
+/*
+ * Uncomment if the CPU supports SSE2 (IA-32 specific).
+ *
+#define POLARSSL_HAVE_SSE2
+ */
+
+/*
+ * Enable all SSL/TLS debugging messages.
+ */
+#define POLARSSL_DEBUG_MSG
+
+/*
+ * Enable the checkup functions (*_self_test).
+ */
+#define POLARSSL_SELF_TEST
+
+/*
+ * Enable the prime-number generation code.
+ */
+#define POLARSSL_GENPRIME
+
+/*
+ * Uncomment this macro to store the AES tables in ROM.
+ *
+#define POLARSSL_AES_ROM_TABLES
+ */
+
+/*
+ * Module:  library/aes.c
+ * Caller:  library/ssl_tls.c
+ *
+ * This module enables the following ciphersuites:
+ *      SSL_RSA_AES_128_SHA
+ *      SSL_RSA_AES_256_SHA
+ *      SSL_EDH_RSA_AES_256_SHA
+ */
+#define POLARSSL_AES_C
+
+/*
+ * Module:  library/arc4.c
+ * Caller:  library/ssl_tls.c
+ *
+ * This module enables the following ciphersuites:
+ *      SSL_RSA_RC4_128_MD5
+ *      SSL_RSA_RC4_128_SHA
+ */
+#define POLARSSL_ARC4_C
+
+/*
+ * Module:  library/base64.c
+ * Caller:  library/x509parse.c
+ *
+ * This module is required for X.509 support.
+ */
+#define POLARSSL_BASE64_C
+
+/*
+ * Module:  library/bignum.c
+ * Caller:  library/dhm.c
+ *          library/rsa.c
+ *          library/ssl_tls.c
+ *          library/x509parse.c
+ *
+ * This module is required for RSA and DHM support.
+ */
+#define POLARSSL_BIGNUM_C
+
+/*
+ * Module:  library/camellia.c
+ * Caller:
+ *
+ * This module enabled the following cipher suites:
+ */
+#define POLARSSL_CAMELLIA_C
+
+/*
+ * Module:  library/certs.c
+ * Caller:
+ *
+ * This module is used for testing (ssl_client/server).
+ */
+#define POLARSSL_CERTS_C
+
+/*
+ * Module:  library/debug.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *
+ * This module provides debugging functions.
+ */
+#define POLARSSL_DEBUG_C
+
+/*
+ * Module:  library/des.c
+ * Caller:  library/ssl_tls.c
+ *
+ * This module enables the following ciphersuites:
+ *      SSL_RSA_DES_168_SHA
+ *      SSL_EDH_RSA_DES_168_SHA
+ */
+#define POLARSSL_DES_C
+
+/*
+ * Module:  library/dhm.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This module enables the following ciphersuites:
+ *      SSL_EDH_RSA_DES_168_SHA
+ *      SSL_EDH_RSA_AES_256_SHA
+ */
+#define POLARSSL_DHM_C
+
+/*
+ * Module:  library/havege.c
+ * Caller:
+ *
+ * This module enables the HAVEGE random number generator.
+ */
+#define POLARSSL_HAVEGE_C
+
+/*
+ * Module:  library/md2.c
+ * Caller:  library/x509parse.c
+ *
+ * Uncomment to enable support for (rare) MD2-signed X.509 certs.
+ *
+#define POLARSSL_MD2_C
+ */
+
+/*
+ * Module:  library/md4.c
+ * Caller:  library/x509parse.c
+ *
+ * Uncomment to enable support for (rare) MD4-signed X.509 certs.
+ *
+#define POLARSSL_MD4_C
+ */
+
+/*
+ * Module:  library/md5.c
+ * Caller:  library/ssl_tls.c
+ *          library/x509parse.c
+ *
+ * This module is required for SSL/TLS and X.509.
+ */
+#define POLARSSL_MD5_C
+
+/*
+ * Module:  library/net.c
+ * Caller:
+ *
+ * This module provides TCP/IP networking routines.
+ */
+#define POLARSSL_NET_C
+
+/*
+ * Module:  library/padlock.c
+ * Caller:  library/aes.c
+ *
+ * This modules adds support for the VIA PadLock on x86.
+ */
+#define POLARSSL_PADLOCK_C
+
+/*
+ * Module:  library/rsa.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *          library/x509.c
+ *
+ * This module is required for SSL/TLS and MD5-signed certificates.
+ */
+#define POLARSSL_RSA_C
+
+/*
+ * Module:  library/sha1.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *          library/x509parse.c
+ *
+ * This module is required for SSL/TLS and SHA1-signed certificates.
+ */
+#define POLARSSL_SHA1_C
+
+/*
+ * Module:  library/sha2.c
+ * Caller:
+ *
+ * This module adds support for SHA-224 and SHA-256.
+ */
+#define POLARSSL_SHA2_C
+
+/*
+ * Module:  library/sha4.c
+ * Caller:
+ *
+ * This module adds support for SHA-384 and SHA-512.
+ */
+#define POLARSSL_SHA4_C
+
+/*
+ * Module:  library/ssl_cli.c
+ * Caller:
+ *
+ * This module is required for SSL/TLS client support.
+ */
+#define POLARSSL_SSL_CLI_C
+
+/*
+ * Module:  library/ssl_srv.c
+ * Caller:
+ *
+ * This module is required for SSL/TLS server support.
+ */
+#define POLARSSL_SSL_SRV_C
+
+/*
+ * Module:  library/ssl_tls.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This module is required for SSL/TLS.
+ */
+#define POLARSSL_SSL_TLS_C
+
+/*
+ * Module:  library/timing.c
+ * Caller:  library/havege.c
+ *
+ * This module is used by the HAVEGE random number generator.
+ */
+#define POLARSSL_TIMING_C
+
+/*
+ * Module:  library/x509parse.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *
+ * This module is required for X.509 certificate parsing.
+ */
+#define POLARSSL_X509_PARSE_C
+
+/*
+ * Module:  library/x509_write.c
+ * Caller:
+ *
+ * This module is required for X.509 certificate writing.
+ */
+#define POLARSSL_X509_WRITE_C
+
+/*
+ * Module:  library/xtea.c
+ * Caller:
+ */
+#define POLARSSL_XTEA_C
+
+#endif /* config.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/havege.h b/package/luci/libs/luci-lib-px5g/src/polarssl/havege.h
new file mode 100644 (file)
index 0000000..c27ceca
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+ * \file havege.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_HAVEGE_H
+#define POLARSSL_HAVEGE_H
+
+#define COLLECT_SIZE 1024
+
+/**
+ * \brief          HAVEGE state structure
+ */
+typedef struct
+{
+    int PT1, PT2, offset[2];
+    int pool[COLLECT_SIZE];
+    int WALK[8192];
+}
+havege_state;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief          HAVEGE initialization
+ *
+ * \param hs       HAVEGE state to be initialized
+ */
+void havege_init( havege_state *hs );
+
+/**
+ * \brief          HAVEGE rand function
+ *
+ * \param rng_st   points to an HAVEGE state
+ *
+ * \return         A random int
+ */
+int havege_rand( void *p_rng );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* havege.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h b/package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h
new file mode 100644 (file)
index 0000000..b31dc2f
--- /dev/null
@@ -0,0 +1,309 @@
+/**
+ * \file rsa.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_RSA_H
+#define POLARSSL_RSA_H
+
+#include "polarssl/bignum.h"
+
+#define POLARSSL_ERR_RSA_BAD_INPUT_DATA                    -0x0400
+#define POLARSSL_ERR_RSA_INVALID_PADDING                   -0x0410
+#define POLARSSL_ERR_RSA_KEY_GEN_FAILED                    -0x0420
+#define POLARSSL_ERR_RSA_KEY_CHECK_FAILED                  -0x0430
+#define POLARSSL_ERR_RSA_PUBLIC_FAILED                     -0x0440
+#define POLARSSL_ERR_RSA_PRIVATE_FAILED                    -0x0450
+#define POLARSSL_ERR_RSA_VERIFY_FAILED                     -0x0460
+#define POLARSSL_ERR_RSA_OUTPUT_TO_LARGE                   -0x0470
+
+/*
+ * PKCS#1 constants
+ */
+#define RSA_RAW         0
+#define RSA_MD2         2
+#define RSA_MD4         3
+#define RSA_MD5         4
+#define RSA_SHA1        5
+#define RSA_SHA256      6
+
+#define RSA_PUBLIC      0
+#define RSA_PRIVATE     1
+
+#define RSA_PKCS_V15    0
+#define RSA_PKCS_V21    1
+
+#define RSA_SIGN        1
+#define RSA_CRYPT       2
+
+/*
+ * DigestInfo ::= SEQUENCE {
+ *   digestAlgorithm DigestAlgorithmIdentifier,
+ *   digest Digest }
+ *
+ * DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+ *
+ * Digest ::= OCTET STRING
+ */
+#define ASN1_HASH_MDX                       \
+    "\x30\x20\x30\x0C\x06\x08\x2A\x86\x48"  \
+    "\x86\xF7\x0D\x02\x00\x05\x00\x04\x10"
+
+#define ASN1_HASH_SHA1                      \
+    "\x30\x21\x30\x09\x06\x05\x2B\x0E\x03"  \
+    "\x02\x1A\x05\x00\x04\x14"
+
+/**
+ * \brief          RSA context structure
+ */
+typedef struct
+{
+    int ver;                    /*!<  always 0          */
+    int len;                    /*!<  size(N) in chars  */
+
+    mpi N;                      /*!<  public modulus    */
+    mpi E;                      /*!<  public exponent   */
+
+    mpi D;                      /*!<  private exponent  */
+    mpi P;                      /*!<  1st prime factor  */
+    mpi Q;                      /*!<  2nd prime factor  */
+    mpi DP;                     /*!<  D % (P - 1)       */
+    mpi DQ;                     /*!<  D % (Q - 1)       */
+    mpi QP;                     /*!<  1 / (Q % P)       */
+
+    mpi RN;                     /*!<  cached R^2 mod N  */
+    mpi RP;                     /*!<  cached R^2 mod P  */
+    mpi RQ;                     /*!<  cached R^2 mod Q  */
+
+    int padding;                /*!<  1.5 or OAEP/PSS   */
+    int hash_id;                /*!<  hash identifier   */
+    int (*f_rng)(void *);       /*!<  RNG function      */
+    void *p_rng;                /*!<  RNG parameter     */
+}
+rsa_context;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief          Initialize an RSA context
+ *
+ * \param ctx      RSA context to be initialized
+ * \param padding  RSA_PKCS_V15 or RSA_PKCS_V21
+ * \param hash_id  RSA_PKCS_V21 hash identifier
+ * \param f_rng    RNG function
+ * \param p_rng    RNG parameter
+ *
+ * \note           The hash_id parameter is actually ignored
+ *                 when using RSA_PKCS_V15 padding.
+ *
+ * \note           Currently (xyssl-0.8), RSA_PKCS_V21 padding
+ *                 is not supported.
+ */
+void rsa_init( rsa_context *ctx,
+               int padding,
+               int hash_id,
+               int (*f_rng)(void *),
+               void *p_rng );
+
+/**
+ * \brief          Generate an RSA keypair
+ *
+ * \param ctx      RSA context that will hold the key
+ * \param nbits    size of the public key in bits
+ * \param exponent public exponent (e.g., 65537)
+ *
+ * \note           rsa_init() must be called beforehand to setup
+ *                 the RSA context (especially f_rng and p_rng).
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ */
+int rsa_gen_key( rsa_context *ctx, int nbits, int exponent );
+
+/**
+ * \brief          Check a public RSA key
+ *
+ * \param ctx      RSA context to be checked
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ */
+int rsa_check_pubkey( rsa_context *ctx );
+
+/**
+ * \brief          Check a private RSA key
+ *
+ * \param ctx      RSA context to be checked
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ */
+int rsa_check_privkey( rsa_context *ctx );
+
+/**
+ * \brief          Do an RSA public key operation
+ *
+ * \param ctx      RSA context
+ * \param input    input buffer
+ * \param output   output buffer
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           This function does NOT take care of message
+ *                 padding. Also, be sure to set input[0] = 0.
+ *
+ * \note           The input and output buffers must be large
+ *                 enough (eg. 128 bytes if RSA-1024 is used).
+ */
+int rsa_public( rsa_context *ctx,
+                unsigned char *input,
+                unsigned char *output );
+
+/**
+ * \brief          Do an RSA private key operation
+ *
+ * \param ctx      RSA context
+ * \param input    input buffer
+ * \param output   output buffer
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           The input and output buffers must be large
+ *                 enough (eg. 128 bytes if RSA-1024 is used).
+ */
+int rsa_private( rsa_context *ctx,
+                 unsigned char *input,
+                 unsigned char *output );
+
+/**
+ * \brief          Add the message padding, then do an RSA operation
+ *
+ * \param ctx      RSA context
+ * \param mode     RSA_PUBLIC or RSA_PRIVATE
+ * \param ilen     contains the the plaintext length
+ * \param input    buffer holding the data to be encrypted
+ * \param output   buffer that will hold the ciphertext
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           The output buffer must be as large as the size
+ *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
+ */
+int rsa_pkcs1_encrypt( rsa_context *ctx,
+                       int mode, int  ilen,
+                       unsigned char *input,
+                       unsigned char *output );
+
+/**
+ * \brief          Do an RSA operation, then remove the message padding
+ *
+ * \param ctx      RSA context
+ * \param mode     RSA_PUBLIC or RSA_PRIVATE
+ * \param input    buffer holding the encrypted data
+ * \param output   buffer that will hold the plaintext
+ * \param olen     will contain the plaintext length
+ * \param output_max_len       maximum length of the output buffer
+ *
+ * \return         0 if successful, or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           The output buffer must be as large as the size
+ *                 of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise
+ *                 an error is thrown.
+ */
+int rsa_pkcs1_decrypt( rsa_context *ctx,
+                       int mode, int *olen,
+                       unsigned char *input,
+                       unsigned char *output,
+                      int output_max_len);
+
+/**
+ * \brief          Do a private RSA to sign a message digest
+ *
+ * \param ctx      RSA context
+ * \param mode     RSA_PUBLIC or RSA_PRIVATE
+ * \param hash_id  RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256}
+ * \param hashlen  message digest length (for RSA_RAW only)
+ * \param hash     buffer holding the message digest
+ * \param sig      buffer that will hold the ciphertext
+ *
+ * \return         0 if the signing operation was successful,
+ *                 or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           The "sig" buffer must be as large as the size
+ *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
+ */
+int rsa_pkcs1_sign( rsa_context *ctx,
+                    int mode,
+                    int hash_id,
+                    int hashlen,
+                    unsigned char *hash,
+                    unsigned char *sig );
+
+/**
+ * \brief          Do a public RSA and check the message digest
+ *
+ * \param ctx      points to an RSA public key
+ * \param mode     RSA_PUBLIC or RSA_PRIVATE
+ * \param hash_id  RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256}
+ * \param hashlen  message digest length (for RSA_RAW only)
+ * \param hash     buffer holding the message digest
+ * \param sig      buffer holding the ciphertext
+ *
+ * \return         0 if the verify operation was successful,
+ *                 or an POLARSSL_ERR_RSA_XXX error code
+ *
+ * \note           The "sig" buffer must be as large as the size
+ *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
+ */
+int rsa_pkcs1_verify( rsa_context *ctx,
+                      int mode,
+                      int hash_id,
+                      int hashlen,
+                      unsigned char *hash,
+                      unsigned char *sig );
+
+/**
+ * \brief          Free the components of an RSA key
+ */
+void rsa_free( rsa_context *ctx );
+
+/**
+ * \brief          Checkup routine
+ *
+ * \return         0 if successful, or 1 if the test failed
+ */
+int rsa_self_test( int verbose );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* rsa.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h b/package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h
new file mode 100644 (file)
index 0000000..3ca7dc3
--- /dev/null
@@ -0,0 +1,150 @@
+/**
+ * \file sha1.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_SHA1_H
+#define POLARSSL_SHA1_H
+
+/**
+ * \brief          SHA-1 context structure
+ */
+typedef struct
+{
+    unsigned long total[2];     /*!< number of bytes processed  */
+    unsigned long state[5];     /*!< intermediate digest state  */
+    unsigned char buffer[64];   /*!< data block being processed */
+
+    unsigned char ipad[64];     /*!< HMAC: inner padding        */
+    unsigned char opad[64];     /*!< HMAC: outer padding        */
+}
+sha1_context;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief          SHA-1 context setup
+ *
+ * \param ctx      context to be initialized
+ */
+void sha1_starts( sha1_context *ctx );
+
+/**
+ * \brief          SHA-1 process buffer
+ *
+ * \param ctx      SHA-1 context
+ * \param input    buffer holding the  data
+ * \param ilen     length of the input data
+ */
+void sha1_update( sha1_context *ctx, unsigned char *input, int ilen );
+
+/**
+ * \brief          SHA-1 final digest
+ *
+ * \param ctx      SHA-1 context
+ * \param output   SHA-1 checksum result
+ */
+void sha1_finish( sha1_context *ctx, unsigned char output[20] );
+
+/**
+ * \brief          Output = SHA-1( input buffer )
+ *
+ * \param input    buffer holding the  data
+ * \param ilen     length of the input data
+ * \param output   SHA-1 checksum result
+ */
+void sha1( unsigned char *input, int ilen, unsigned char output[20] );
+
+/**
+ * \brief          Output = SHA-1( file contents )
+ *
+ * \param path     input file name
+ * \param output   SHA-1 checksum result
+ *
+ * \return         0 if successful, 1 if fopen failed,
+ *                 or 2 if fread failed
+ */
+int sha1_file( char *path, unsigned char output[20] );
+
+/**
+ * \brief          SHA-1 HMAC context setup
+ *
+ * \param ctx      HMAC context to be initialized
+ * \param key      HMAC secret key
+ * \param keylen   length of the HMAC key
+ */
+void sha1_hmac_starts( sha1_context *ctx, unsigned char *key, int keylen );
+
+/**
+ * \brief          SHA-1 HMAC process buffer
+ *
+ * \param ctx      HMAC context
+ * \param input    buffer holding the  data
+ * \param ilen     length of the input data
+ */
+void sha1_hmac_update( sha1_context *ctx, unsigned char *input, int ilen );
+
+/**
+ * \brief          SHA-1 HMAC final digest
+ *
+ * \param ctx      HMAC context
+ * \param output   SHA-1 HMAC checksum result
+ */
+void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] );
+
+/**
+ * \brief          Output = HMAC-SHA-1( hmac key, input buffer )
+ *
+ * \param key      HMAC secret key
+ * \param keylen   length of the HMAC key
+ * \param input    buffer holding the  data
+ * \param ilen     length of the input data
+ * \param output   HMAC-SHA-1 result
+ */
+void sha1_hmac( unsigned char *key, int keylen,
+                unsigned char *input, int ilen,
+                unsigned char output[20] );
+
+/**
+ * \brief          Checkup routine
+ *
+ * \return         0 if successful, or 1 if the test failed
+ */
+int sha1_self_test( int verbose );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sha1.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/timing.h b/package/luci/libs/luci-lib-px5g/src/polarssl/timing.h
new file mode 100644 (file)
index 0000000..62d627f
--- /dev/null
@@ -0,0 +1,81 @@
+/**
+ * \file timing.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_TIMING_H
+#define POLARSSL_TIMING_H
+
+/**
+ * \brief          timer structure
+ */
+struct hr_time
+{
+    unsigned char opaque[32];
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int alarmed;
+
+/**
+ * \brief          Return the CPU cycle counter value
+ */
+unsigned long hardclock( void );
+
+/**
+ * \brief          Return the elapsed time in milliseconds
+ *
+ * \param val      points to a timer structure
+ * \param reset    if set to 1, the timer is restarted
+ */
+unsigned long get_timer( struct hr_time *val, int reset );
+
+/**
+ * \brief          Setup an alarm clock
+ *
+ * \param seconds  delay before the "alarmed" flag is set
+ */
+void set_alarm( int seconds );
+
+/**
+ * \brief          Sleep for a certain amount of time
+ */
+void m_sleep( int milliseconds );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* timing.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/x509.h b/package/luci/libs/luci-lib-px5g/src/polarssl/x509.h
new file mode 100644 (file)
index 0000000..6c9ef99
--- /dev/null
@@ -0,0 +1,549 @@
+/**
+ * \file x509.h
+ *
+ *  Based on XySSL: Copyright (C) 2006-2008  Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *  
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef POLARSSL_X509_H
+#define POLARSSL_X509_H
+
+#include "polarssl/rsa.h"
+
+#define POLARSSL_ERR_ASN1_OUT_OF_DATA                      -0x0014
+#define POLARSSL_ERR_ASN1_UNEXPECTED_TAG                   -0x0016
+#define POLARSSL_ERR_ASN1_INVALID_LENGTH                   -0x0018
+#define POLARSSL_ERR_ASN1_LENGTH_MISMATCH                  -0x001A
+#define POLARSSL_ERR_ASN1_INVALID_DATA                     -0x001C
+
+#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE              -0x0020
+#define POLARSSL_ERR_X509_CERT_INVALID_PEM                 -0x0040
+#define POLARSSL_ERR_X509_CERT_INVALID_FORMAT              -0x0060
+#define POLARSSL_ERR_X509_CERT_INVALID_VERSION             -0x0080
+#define POLARSSL_ERR_X509_CERT_INVALID_SERIAL              -0x00A0
+#define POLARSSL_ERR_X509_CERT_INVALID_ALG                 -0x00C0
+#define POLARSSL_ERR_X509_CERT_INVALID_NAME                -0x00E0
+#define POLARSSL_ERR_X509_CERT_INVALID_DATE                -0x0100
+#define POLARSSL_ERR_X509_CERT_INVALID_PUBKEY              -0x0120
+#define POLARSSL_ERR_X509_CERT_INVALID_SIGNATURE           -0x0140
+#define POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS          -0x0160
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_VERSION             -0x0180
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_SIG_ALG             -0x01A0
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_PK_ALG              -0x01C0
+#define POLARSSL_ERR_X509_CERT_SIG_MISMATCH                -0x01E0
+#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED               -0x0200
+#define POLARSSL_ERR_X509_KEY_INVALID_PEM                  -0x0220
+#define POLARSSL_ERR_X509_KEY_INVALID_VERSION              -0x0240
+#define POLARSSL_ERR_X509_KEY_INVALID_FORMAT               -0x0260
+#define POLARSSL_ERR_X509_KEY_INVALID_ENC_IV               -0x0280
+#define POLARSSL_ERR_X509_KEY_UNKNOWN_ENC_ALG              -0x02A0
+#define POLARSSL_ERR_X509_KEY_PASSWORD_REQUIRED            -0x02C0
+#define POLARSSL_ERR_X509_KEY_PASSWORD_MISMATCH            -0x02E0
+#define POLARSSL_ERR_X509_POINT_ERROR                      -0x0300
+#define POLARSSL_ERR_X509_VALUE_TO_LENGTH                  -0x0320
+
+#define BADCERT_EXPIRED                 1
+#define BADCERT_REVOKED                 2
+#define BADCERT_CN_MISMATCH             4
+#define BADCERT_NOT_TRUSTED             8
+
+/*
+ * DER constants
+ */
+#define ASN1_BOOLEAN                 0x01
+#define ASN1_INTEGER                 0x02
+#define ASN1_BIT_STRING              0x03
+#define ASN1_OCTET_STRING            0x04
+#define ASN1_NULL                    0x05
+#define ASN1_OID                     0x06
+#define ASN1_UTF8_STRING             0x0C
+#define ASN1_SEQUENCE                0x10
+#define ASN1_SET                     0x11
+#define ASN1_PRINTABLE_STRING        0x13
+#define ASN1_T61_STRING              0x14
+#define ASN1_IA5_STRING              0x16
+#define ASN1_UTC_TIME                0x17
+#define ASN1_UNIVERSAL_STRING        0x1C
+#define ASN1_BMP_STRING              0x1E
+#define ASN1_PRIMITIVE               0x00
+#define ASN1_CONSTRUCTED             0x20
+#define ASN1_CONTEXT_SPECIFIC        0x80
+
+/*
+ * various object identifiers
+ */
+#define X520_COMMON_NAME                3
+#define X520_COUNTRY                    6
+#define X520_LOCALITY                   7
+#define X520_STATE                      8
+#define X520_ORGANIZATION              10
+#define X520_ORG_UNIT                  11
+#define PKCS9_EMAIL                     1
+
+#define X509_OUTPUT_DER              0x01
+#define X509_OUTPUT_PEM              0x02
+#define PEM_LINE_LENGTH                72
+#define X509_ISSUER                  0x01
+#define X509_SUBJECT                 0x02
+
+#define OID_X520                "\x55\x04"
+#define OID_CN                  "\x55\x04\x03"
+#define OID_PKCS1               "\x2A\x86\x48\x86\xF7\x0D\x01\x01"
+#define OID_PKCS1_RSA           "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01"
+#define OID_PKCS1_RSA_SHA       "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05"
+#define OID_PKCS9               "\x2A\x86\x48\x86\xF7\x0D\x01\x09"
+#define OID_PKCS9_EMAIL         "\x2A\x86\x48\x86\xF7\x0D\x01\x09\x01"
+
+/*
+ * Structures for parsing X.509 certificates
+ */
+typedef struct _x509_buf
+{
+    int tag;
+    int len;
+    unsigned char *p;
+}
+x509_buf;
+
+typedef struct _x509_name
+{
+    x509_buf oid;
+    x509_buf val;
+    struct _x509_name *next;
+}
+x509_name;
+
+typedef struct _x509_time
+{
+    int year, mon, day;
+    int hour, min, sec;
+}
+x509_time;
+
+typedef struct _x509_cert
+{
+    x509_buf raw;
+    x509_buf tbs;
+
+    int version;
+    x509_buf serial;
+    x509_buf sig_oid1;
+
+    x509_buf issuer_raw;
+    x509_buf subject_raw;
+
+    x509_name issuer;
+    x509_name subject;
+
+    x509_time valid_from;
+    x509_time valid_to;
+
+    x509_buf pk_oid;
+    rsa_context rsa;
+
+    x509_buf issuer_id;
+    x509_buf subject_id;
+    x509_buf v3_ext;
+
+    int ca_istrue;
+    int max_pathlen;
+
+    x509_buf sig_oid2;
+    x509_buf sig;
+
+    struct _x509_cert *next; 
+}
+x509_cert;
+
+/*
+ * Structures for writing X.509 certificates
+ */
+typedef struct _x509_node
+{
+    unsigned char *data;
+    unsigned char *p;
+    unsigned char *end;
+
+    size_t len;
+}
+x509_node;
+
+typedef struct _x509_raw
+{
+    x509_node raw;
+    x509_node tbs;
+
+    x509_node version;
+    x509_node serial;
+    x509_node tbs_signalg;
+    x509_node issuer;
+    x509_node validity;
+    x509_node subject;
+    x509_node subpubkey;
+
+    x509_node signalg;
+    x509_node sign;
+}
+x509_raw;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief          Parse one or more certificates and add them
+ *                 to the chained list
+ *
+ * \param chain    points to the start of the chain
+ * \param buf      buffer holding the certificate data
+ * \param buflen   size of the buffer
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509parse_crt( x509_cert *crt, unsigned char *buf, int buflen );
+
+/**
+ * \brief          Load one or more certificates and add them
+ *                 to the chained list
+ *
+ * \param chain    points to the start of the chain
+ * \param path     filename to read the certificates from
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509parse_crtfile( x509_cert *crt, char *path );
+
+/**
+ * \brief          Parse a private RSA key
+ *
+ * \param rsa      RSA context to be initialized
+ * \param buf      input buffer
+ * \param buflen   size of the buffer
+ * \param pwd      password for decryption (optional)
+ * \param pwdlen   size of the password
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509parse_key( rsa_context *rsa,
+                   unsigned char *buf, int buflen,
+                   unsigned char *pwd, int pwdlen );
+
+/**
+ * \brief          Load and parse a private RSA key
+ *
+ * \param rsa      RSA context to be initialized
+ * \param path     filename to read the private key from
+ * \param pwd      password to decrypt the file (can be NULL)
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509parse_keyfile( rsa_context *rsa, char *path, char *password );
+
+/**
+ * \brief          Store the certificate DN in printable form into buf;
+ *                 no more than (end - buf) characters will be written.
+ */
+int x509parse_dn_gets( char *buf, char *end, x509_name *dn );
+
+/**
+ * \brief          Returns an informational string about the
+ *                 certificate.
+ */
+char *x509parse_cert_info( char *prefix, x509_cert *crt );
+
+/**
+ * \brief          Return 0 if the certificate is still valid,
+ *                 or BADCERT_EXPIRED
+ */
+int x509parse_expired( x509_cert *crt );
+
+/**
+ * \brief          Verify the certificate signature
+ *
+ * \param crt      a certificate to be verified
+ * \param trust_ca the trusted CA chain
+ * \param cn       expected Common Name (can be set to
+ *                 NULL if the CN must not be verified)
+ * \param flags    result of the verification
+ *
+ * \return         0 if successful or POLARSSL_ERR_X509_SIG_VERIFY_FAILED,
+ *                 in which case *flags will have one or more of
+ *                 the following values set:
+ *                      BADCERT_EXPIRED --
+ *                      BADCERT_REVOKED --
+ *                      BADCERT_CN_MISMATCH --
+ *                      BADCERT_NOT_TRUSTED
+ *
+ * \note           TODO: add two arguments, depth and crl
+ */
+int x509parse_verify( x509_cert *crt,
+                      x509_cert *trust_ca,
+                      char *cn, int *flags );
+
+/**
+ * \brief          Unallocate all certificate data
+ */
+void x509_free( x509_cert *crt );
+
+/**
+ * \brief          Checkup routine
+ *
+ * \return         0 if successful, or 1 if the test failed
+ */
+int x509_self_test( int verbose );
+
+/**
+ * \brief          Write a certificate info file
+ *
+ * \param chain    points to the raw certificate data
+ * \param path     filename to write the certificate to
+ * \param format   X509_OUTPUT_DER or X509_OUTPUT_PEM
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_crtfile( x509_raw *chain,
+                       unsigned char *path,
+                       int format );
+
+/**
+ * \brief          Write a certificate signing request message format file
+ *
+ * \param chain    points to the raw certificate (with x509write_create_csr) data
+ * \param path     filename to write the certificate to
+ * \param format   X509_OUTPUT_DER or X509_OUTPUT_PEM
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_csrfile( x509_raw *chain,
+                       unsigned char *path,
+                       int format );
+
+/*
+ * \brief          Write a private RSA key into a file
+ *
+ * \param rsa      points to an RSA key
+ * \param path     filename to write the key to
+ * \param format   X509_OUTPUT_DER or X509_OUTPUT_PEM
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_keyfile( rsa_context *rsa,
+                       char *path,
+                       int format );
+
+/**
+ * \brief          Add a public key to certificate
+ *
+ * \param chain    points to the raw certificate data
+ * \param pubkey   points to an RSA key
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_add_pubkey( x509_raw *chain, rsa_context *pubkey );
+
+/**
+ * \brief          Create x509 subject/issuer field to raw certificate
+ *                 from string or CA cert. Make string NULL if you will
+ *                 use the CA copy function or make CA NULL then used
+ *                 the string parse.
+ *
+ * \param chain    points to the raw certificate data
+ * \param names    a string that can hold (separate with ";"):
+ *                     CN=CommonName
+ *                 --   O=Organization
+ *                 --  OU=OrgUnit
+ *                 --  ST=State
+ *                 --   L=Locality
+ *                 --   R=Email
+ *                 --   C=Country
+ *                 . Make that NULL if you didn't need that.
+ * \param flag     flag is X509_ISSUER or X509_SUBJECT that defined
+ *                 where change
+ * \param ca       the certificate for copy data. Make that NULL if you
+ *                 didn't need that.
+ * \param ca_flag  set the ca field from copy to crt
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_add_customize ( x509_raw *crt, 
+                          unsigned char *names, 
+                          int flag, 
+                          x509_cert *ca, 
+                          int ca_flag );
+
+/**
+* \brief          Add x509 issuer field
+*
+* \param chain    points to the raw certificate data
+* \param issuer   a string holding (separate with ";"):
+*                     CN=CommonName
+*                 --   O=Organization
+*                 --  OU=OrgUnit
+*                 --  ST=State
+*                 --   L=Locality
+*                 --   R=Email
+*                 --   C=Country
+*                 . Set this to NULL if not needed.
+* \return         0 if successful, or a specific X509 error code
+*/
+int x509write_add_issuer( x509_raw *crt, unsigned char *issuer);
+
+/**
+ * \brief          Add x509 subject field
+ *
+ * \param chain    points to the raw certificate data
+ * \param subject  a string holding (separate with ";"):
+ *                     CN=CommonName
+ *                 --   O=Organization
+ *                 --  OU=OrgUnit
+ *                 --  ST=State
+ *                 --   L=Locality
+ *                 --   R=Email
+ *                 --   C=Country
+ *                 . Set this to NULL if not needed.
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_add_subject( x509_raw *crt, unsigned char *subject);
+
+/**
+* \brief          Copy x509 issuer field from another certificate
+*
+* \param chain    points to the raw certificate data
+* \param from_crt the certificate whose issuer is to be copied.
+* \return         0 if successful, or a specific X509 error code
+*/
+int x509write_copy_issuer(x509_raw *crt, x509_cert *from_crt);
+
+/**
+* \brief          Copy x509 subject field from another certificate
+*
+* \param chain    points to the raw certificate data
+* \param from_crt the certificate whose subject is to be copied.
+* \return         0 if successful, or a specific X509 error code
+*/
+int x509write_copy_subject(x509_raw *crt, x509_cert *from_crt);
+
+/**
+* \brief          Copy x509 issuer field from the subject of another certificate
+*
+* \param chain    points to the raw certificate data
+* \param from_crt the certificate whose subject is to be copied.
+* \return         0 if successful, or a specific X509 error code
+*/
+int x509write_copy_issuer_from_subject(x509_raw *crt, x509_cert *from_crt);
+
+/**
+* \brief          Copy x509 subject field from the issuer of another certificate
+*
+* \param chain    points to the raw certificate data
+* \param from_crt the certificate whose issuer is to be copied.
+* \return         0 if successful, or a specific X509 error code
+*/
+int x509write_copy_subject_from_issuer(x509_raw *crt, x509_cert *from_crt);
+
+/**
+ * \brief          Create x509 validity time in UTC
+ *
+ * \param chain    points to the raw certificate data
+ * \param before   valid not before in format YYYY-MM-DD hh:mm:ss
+ * \param after    valid not after  in format YYYY-MM-DD hh:mm:ss
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_add_validity( x509_raw *crt,
+                               unsigned char *before,
+                               unsigned char *after );
+
+/**
+ * \brief          Create a self-signed certificate
+ *
+ * \param chain    points to the raw certificate data
+ * \param rsa      a private key to sign the certificate
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_create_selfsign( x509_raw *crt, rsa_context *raw );
+
+/**
+ * \brief          Create a certificate
+ *
+ * \param chain    points to the raw certificate data
+ * \param rsa      a private key to sign the certificate
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_create_sign( x509_raw *crt, rsa_context *raw );
+
+/**
+ * \brief          Create a certificate signing request
+ *
+ * \param chain    points to the raw certificate data. Didn't use the
+ *                 same chain that u have use for certificate.
+ * \param privkey  a rsa private key
+ *
+ * \return         0 if successful, or a specific X509 error code
+ */
+int x509write_create_csr( x509_raw *chain, rsa_context *privkey );
+
+/**
+ * \brief           Serialize an rsa key into DER
+ *
+ * \param rsa       a rsa key for output
+ * \param node      a x509 node for write into
+ *
+ * \return          0 if successful, or a specific X509 error code
+ */
+int x509write_serialize_key( rsa_context *rsa, x509_node *node );
+
+/**
+ * \brief          Unallocate all raw certificate data
+ */
+void x509write_free_raw( x509_raw *crt );
+
+/**
+ * \brief          Allocate all raw certificate data
+ */
+void x509write_init_raw( x509_raw *crt );
+
+/**
+ * \brief          Unallocate all node certificate data
+ */
+void x509write_free_node( x509_node *crt_node );
+
+/**
+ * \brief          Allocate all node certificate data
+ */
+void x509write_init_node( x509_node *crt_node );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* x509.h */
diff --git a/package/luci/libs/luci-lib-px5g/src/px5g.c b/package/luci/libs/luci-lib-px5g/src/px5g.c
new file mode 100644 (file)
index 0000000..feecd01
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * px5g - Embedded x509 key and certificate generator based on PolarSSL
+ *
+ *   Copyright (C) 2009 Steven Barth <steven@midlink.org>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License, version 2.1 as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA  02110-1301  USA
+ */
+
+#include "px5g.h"
+#include <time.h>
+#include <string.h>
+#define VERSION 0.1
+
+static char *xfields[] = {"CN", "O", "C", "OU", "ST", "L", "R"};
+
+static int px5g_genkey(lua_State *L) {
+       int keysize = luaL_checkint(L, 1), pexp = luaL_optint(L, 2, 65537), ret;
+       px5g_rsa *px5g = lua_newuserdata(L, sizeof(px5g_rsa));
+       if (!px5g) {
+               return luaL_error(L, "out of memory");
+       }
+
+       px5g->stat = 1;
+       havege_init(&px5g->hs);
+       rsa_init(&px5g->rsa, RSA_PKCS_V15, 0, havege_rand, &px5g->hs);
+
+       if ((ret = rsa_gen_key(&px5g->rsa, keysize, pexp))) {
+               lua_pushnil(L);
+               lua_pushinteger(L, ret);
+               return 2;
+       }
+
+       luaL_getmetatable(L, PX5G_KEY_META);
+       lua_setmetatable(L, -2);
+       return 1;
+}
+
+static int px5g_rsa_asn1(lua_State *L) {
+       int ret;
+       px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META);
+       x509_node node;
+
+       x509write_init_node(&node);
+       if ((ret = x509write_serialize_key(&px5g->rsa, &node))) {
+               x509write_free_node(&node);
+               lua_pushnil(L);
+               lua_pushinteger(L, ret);
+               return 2;
+       }
+
+       lua_pushlstring(L, (char*)node.data, node.len);
+       x509write_free_node(&node);
+       return 1;
+}
+
+static int px5g_rsa_create_selfsigned(lua_State *L) {
+       px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META);
+       luaL_checktype(L, 2, LUA_TTABLE);
+       time_t from = (time_t)luaL_checknumber(L, 3);
+       time_t to = (time_t)luaL_checknumber(L, 4);
+       char fstr[20], tstr[20];
+
+       lua_pushliteral(L, "CN");
+       lua_rawget(L, 2);
+       luaL_argcheck(L, lua_isstring(L, -1), 2, "CN missing");
+       lua_pop(L, 1);
+
+       luaL_argcheck(L,
+               strftime(fstr, sizeof(fstr), "%F %H:%M:%S", gmtime(&from)),
+       3, "Invalid Time");
+
+       luaL_argcheck(L,
+               strftime(tstr, sizeof(tstr), "%F %H:%M:%S", gmtime(&to)),
+       4, "Invalid Time");
+
+       size_t join = 1;
+       lua_pushliteral(L, "");
+       for (int i = 0; i < (sizeof(xfields) / sizeof(*xfields)); i++) {
+               lua_pushstring(L, xfields[i]);
+               lua_rawget(L, 2);
+               if (lua_isstring(L, -1)) {
+                       const char *val = lua_tostring(L, -1);
+                       luaL_argcheck(L, !strchr(val, ';'), 2, "Invalid Value");
+                       lua_pushfstring(L, "%s=%s;", xfields[i], val);
+                       lua_remove(L, -2);
+                       join++;
+               } else {
+                       lua_pop(L, 1);
+               }
+       }
+       lua_concat(L, join);
+
+       x509_raw cert;
+       x509write_init_raw(&cert);
+       x509write_add_pubkey(&cert, &px5g->rsa);
+       x509write_add_subject(&cert, (unsigned char*)lua_tostring(L, -1));
+       x509write_add_validity(&cert, (unsigned char*)fstr, (unsigned char*)tstr);
+       x509write_create_selfsign(&cert, &px5g->rsa);
+
+       lua_pushlstring(L, (char*)cert.raw.data, cert.raw.len);
+       x509write_free_raw(&cert);
+       return 1;
+}
+
+static int px5g_rsa__gc(lua_State *L) {
+       px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META);
+       if (px5g->stat) {
+               rsa_free(&px5g->rsa);
+               px5g->stat = 0;
+       }
+       return 0;
+}
+
+static int px5g_rsa__tostring(lua_State *L) {
+       px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META);
+       lua_pushfstring(L, "px5g context %p", px5g);
+       return 1;
+}
+
+/* method table */
+static const luaL_reg M[] = {
+       {"asn1",                                px5g_rsa_asn1},
+       {"create_selfsigned",   px5g_rsa_create_selfsigned},
+       {"__gc",                                px5g_rsa__gc},
+       {"__tostring",                  px5g_rsa__tostring},
+       {NULL,                  NULL}
+};
+
+/* module table */
+static const luaL_reg R[] = {
+       {"genkey",              px5g_genkey},
+       {NULL,                  NULL}
+};
+
+int luaopen_px5g(lua_State *L) {
+       /* register module */
+       luaL_register(L, "px5g", R);
+
+       /* Meta Table */
+       luaL_newmetatable(L, PX5G_KEY_META);
+       luaL_register(L, NULL, M);
+       lua_pushvalue(L, -1);
+       lua_setfield(L, -2, "__index");
+
+       lua_setfield(L, -2, "meta_key");
+       return 1;
+}
diff --git a/package/luci/libs/luci-lib-px5g/src/px5g.h b/package/luci/libs/luci-lib-px5g/src/px5g.h
new file mode 100644 (file)
index 0000000..47542b5
--- /dev/null
@@ -0,0 +1,16 @@
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+
+#include "polarssl/havege.h"
+#include "polarssl/bignum.h"
+#include "polarssl/x509.h"
+#include "polarssl/rsa.h"
+
+#define PX5G_KEY_META "px5g.key"
+
+typedef struct px5g_rsa {
+       int stat;
+       havege_state hs;
+       rsa_context rsa;
+} px5g_rsa;
diff --git a/package/luci/libs/luci-lib-rpcc/Makefile b/package/luci/libs/luci-lib-rpcc/Makefile
new file mode 100644 (file)
index 0000000..e0fea28
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI Support for AHCPd
+LUCI_DEPENDS:=@BROKEN
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua
new file mode 100644 (file)
index 0000000..5558910
--- /dev/null
@@ -0,0 +1,59 @@
+-- Copyright 2009 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local util = require "luci.util"
+local json = require "luci.json"
+local ltn12 = require "luci.ltn12"
+local nixio = require "nixio", require "nixio.util"
+
+local tostring, assert, setmetatable = tostring, assert, setmetatable
+local error = error
+
+module "luci.rpcc"
+
+RQLIMIT = 32 * nixio.const.buffersize
+
+Client = util.class()
+
+function Client.__init__(self, fd, v1)
+       self.fd = fd
+       self.uniqueid = tostring(self):match("0x([a-f0-9]+)")
+       self.msgid = 1
+       self.v1 = v1
+end
+
+function Client.request(self, method, params, notification)
+       local oldchunk = self.decoder and self.decoder.chunk
+       self.decoder = json.ActiveDecoder(self.fd:blocksource(nil, RQLIMIT))
+       self.decoder.chunk = oldchunk
+       
+       local reqid = self.msgid .. self.uniqueid
+       local reqdata = json.Encoder({
+               id = (not notification) and (self.msgid .. self.uniqueid) or nil,
+               jsonrpc = (not self.v1) and "2.0" or nil,
+               method = method,
+               params = params
+       })
+       ltn12.pump.all(reqdata:source(), self.fd:sink())
+       if not notification then
+               self.msgid = self.msgid + 1
+               local response = self.decoder:get()
+               assert(response.id == reqid, "Invalid response id")
+               if response.error then
+                       error(response.error.message or response.error)
+               end
+               return response.result
+       end
+end
+
+function Client.proxy(self, prefix)
+       prefix = prefix or ""
+       return setmetatable({}, {
+               __call = function(proxy, ...)
+                       return self:request(prefix, {...})
+               end,
+               __index = function(proxy, name)
+                       return self:proxy(prefix .. name .. ".")
+               end
+       })
+end
\ No newline at end of file
diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc
new file mode 100644 (file)
index 0000000..5609bfd
--- /dev/null
@@ -0,0 +1,36 @@
+---[[
+LuCI RPC Client.
+
+@cstyle instance
+]]
+module "luci.rpcc"
+
+---[[
+Create a new JSON-RPC stream client.
+
+@class function
+@param fd File descriptor
+@param v1 Use protocol version 1.0
+@return RPC Client
+]]
+
+---[[
+Request an RP call and get the response.
+
+@class function
+@name Client.request
+@param method Remote method
+@param params Parameters
+@param notification Notification only?
+@return response 
+]]
+
+---[[
+Create a transparent RPC proxy.
+
+@class function
+@name Client.proxy
+@param prefix Method prefix
+@return RPC Proxy object
+]]
+
diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua
new file mode 100644 (file)
index 0000000..275c396
--- /dev/null
@@ -0,0 +1,48 @@
+-- Copyright 2009 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local util = require "luci.util"
+local rawget, setmetatable = rawget, setmetatable
+local ipairs = ipairs
+
+module "luci.rpcc.ruci"
+
+
+local Proxy = util.class()
+
+function factory(rpccl)
+       return {
+               cursor = function(...)
+                       return Proxy(rpccl, rpccl:request("ruci.cursor", {...}))
+               end,
+               cursor_state = function(...)
+                       return Proxy(rpccl, rpccl:request("ruci.cursor_state", {...}))
+               end
+       }
+end
+
+function Proxy.__init__(self, rpccl, objid)
+       self.__rpccl = rpccl
+       self.__objid = objid
+
+       setmetatable(self, {
+               __index = function(self, key)
+                       return rawget(self, key) or Proxy[key] or function(self, ...)
+                               local argv = {self.__objid, ...}
+                               return self.__rpccl:request("ruci."..key, argv)
+                       end
+               end
+       })
+end
+
+function Proxy.foreach(self, config, section, callback)
+       local sections = self.__rpccl:request("ruci.foreach", {self.__objid, config, section})
+       if sections then
+               for _, s in ipairs(sections) do
+                       callback(s)
+               end
+               return true
+       else
+               return false
+       end
+end
diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc
new file mode 100644 (file)
index 0000000..9c842c5
--- /dev/null
@@ -0,0 +1,16 @@
+---[[
+Transparent UCI over RPC client.
+
+@cstyle instance
+]]
+module "luci.rpcc.ruci"
+
+---[[
+Create a new UCI over RPC proxy.
+
+@class function
+@name factory
+@param rpccl RPC client
+@return Network transparent UCI module 
+]]
+
diff --git a/package/luci/libs/rpcd-mod-rad2-enc/Makefile b/package/luci/libs/rpcd-mod-rad2-enc/Makefile
new file mode 100644 (file)
index 0000000..4cffc01
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io>
+#
+# Licensed under the Apache License, Version 2.0.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-rad2-enc
+PKG_VERSION:=20190109
+PKG_MAINTAINER:=Daniel Dickinson <cshored@thecshore.com>
+
+PKG_LICENSE:=Apache-2.0
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Build/Prepare
+       true
+endef
+
+define Build/Compile
+       true
+endef
+
+define Package/rpcd-mod-rad2-enc
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=Radicale 2.x Hashing RPC module
+  DEPENDS:=+rpcd +python3 +python3-passlib
+endef
+
+define Package/rpcd-mod-rad2-enc/description
+  Python3 password hashing module for use Radicale 2.x LuCI app
+endef
+
+define Package/rpcd-mod-rad2-enc/install
+       $(INSTALL_DIR) $(1)/usr/libexec/rpcd
+       $(INSTALL_BIN) ./files/rad2-enc $(1)/usr/libexec/rpcd
+endef
+
+define Package/rpcd-mod-rad2-enc/postinst
+#!/bin/sh
+killall -HUP rpcd 2>/dev/null
+exit 0
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-rad2-enc))
diff --git a/package/luci/libs/rpcd-mod-rad2-enc/files/rad2-enc b/package/luci/libs/rpcd-mod-rad2-enc/files/rad2-enc
new file mode 100755 (executable)
index 0000000..43bc493
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/python3
+
+import base64
+import sys
+import json
+from passlib import hash
+
+def main():
+
+    if len(sys.argv) < 2:
+        return -1
+
+    if sys.argv[1] == 'list':
+        print('{ "encrypt": { "type": "str", "plainpass": "str" } }\n')
+        return 0
+
+    if sys.argv[1] == 'call':
+        if len(sys.argv) < 3:
+            return -1
+
+    if sys.argv[2] != 'encrypt':
+        return -1
+
+    encpass = ""
+    try:
+        jsonin = json.loads(sys.stdin.readline())
+        enctype = jsonin['type'].strip()
+        plainpass = jsonin['plainpass']
+
+        if enctype == 'ssha':
+            encpass = hash.ldap_salted_sha1.hash(plainpass)
+        elif enctype == 'sha1':
+            encpass = hash.ldap_sha1.hash(plainpass)
+        elif enctype == 'plain':
+            encpass = plainpass
+        elif enctype == 'md5':
+            encpass = hash.apr_md5_crypt.hash(plainpass)
+        elif enctype == 'bcrypt':
+            encpass = hash.bcrypt.hash(plainpass)
+        elif enctype == 'crypt':
+            encpass = hash.des_crypt.hash(plainpass)
+
+    except:
+        encpass = ""
+
+    print(json.dumps({ "encrypted_password": encpass}))
+
+    return 0
+
+main()
diff --git a/package/luci/libs/rpcd-mod-rrdns/Makefile b/package/luci/libs/rpcd-mod-rrdns/Makefile
new file mode 100644 (file)
index 0000000..f0bf140
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io>
+#
+# Licensed under the Apache License, Version 2.0.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-rrdns
+PKG_VERSION:=20170710
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+
+PKG_LICENSE:=Apache-2.0
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Build/Prepare
+       $(INSTALL_DIR) $(PKG_BUILD_DIR)
+       $(CP) ./src/* $(PKG_BUILD_DIR)/
+endef
+
+define Package/rpcd-mod-rrdns
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=Rapid reverse DNS rpcd module
+  DEPENDS:=+rpcd +libubox +libubus
+endef
+
+define Package/rpcd-mod-rrdns/description
+ Provides rapid mass reverse DNS lookup functionality.
+endef
+
+define Package/rpcd-mod-rrdns/install
+       $(INSTALL_DIR) $(1)/usr/lib/rpcd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/rrdns.so $(1)/usr/lib/rpcd/
+endef
+
+define Package/rpcd-mod-rrdns/postinst
+#!/bin/sh
+killall -HUP rpcd 2>/dev/null
+exit 0
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-rrdns))
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt b/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ace6ac8
--- /dev/null
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(rpcd-mod-rrdns C)
+
+ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
+
+SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+
+IF(APPLE)
+  INCLUDE_DIRECTORIES(/opt/local/include)
+  LINK_DIRECTORIES(/opt/local/lib)
+ENDIF()
+
+FIND_LIBRARY(resolv NAMES resolv)
+IF(resolv STREQUAL "LIBS-NOTFOUND")
+  SET(resolv "")
+ENDIF()
+
+ADD_LIBRARY(rpcd-mod-rrdns MODULE rrdns.c)
+TARGET_LINK_LIBRARIES(rpcd-mod-rrdns ubox ubus ${resolv})
+SET_TARGET_PROPERTIES(rpcd-mod-rrdns PROPERTIES OUTPUT_NAME rrdns PREFIX "")
+
+INSTALL(TARGETS rpcd-mod-rrdns LIBRARY DESTINATION lib)
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c
new file mode 100644 (file)
index 0000000..691db9c
--- /dev/null
@@ -0,0 +1,389 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ *   Copyright (C) 2016 Jo-Philipp Wich <jow@openwrt.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <arpa/nameser.h>
+#include <arpa/inet.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <resolv.h>
+
+#include <libubox/avl.h>
+#include <libubox/usock.h>
+#include <libubox/uloop.h>
+
+#include <rpcd/plugin.h>
+
+#include "rrdns.h"
+
+
+enum {
+       RPC_L_ADDRS,
+       RPC_L_TIMEOUT,
+       RPC_L_SERVER,
+       RPC_L_PORT,
+       RPC_L_LIMIT,
+       __RPC_L_MAX,
+};
+
+static const struct blobmsg_policy rpc_lookup_policy[__RPC_L_MAX] = {
+       [RPC_L_ADDRS]   = { .name = "addrs",   .type = BLOBMSG_TYPE_ARRAY  },
+       [RPC_L_TIMEOUT] = { .name = "timeout", .type = BLOBMSG_TYPE_INT32  },
+       [RPC_L_SERVER]  = { .name = "server",  .type = BLOBMSG_TYPE_STRING },
+       [RPC_L_PORT]    = { .name = "port",    .type = BLOBMSG_TYPE_INT16  },
+       [RPC_L_LIMIT]   = { .name = "limit",   .type = BLOBMSG_TYPE_INT32  },
+};
+
+
+static int
+rrdns_cmp_id(const void *k1, const void *k2, void *ptr)
+{
+       const uint16_t *id1 = k1, *id2 = k2;
+       return (*id1 - *id2);
+}
+
+static int
+rrdns_cmp_addr(const void *k1, const void *k2, void *ptr)
+{
+       const struct in6_addr *a1 = k1, *a2 = k2;
+       return memcmp(a1, a2, sizeof(*a1));
+}
+
+static int
+rrdns_parse_response(struct rrdns_context *rctx)
+{
+       int n, len;
+       uint16_t id;
+       struct rrdns_request *req;
+       unsigned char res[512];
+       char buf[INET6_ADDRSTRLEN], dname[MAXDNAME];
+       HEADER *hdr;
+       ns_msg handle;
+       ns_rr rr;
+
+       len = recv(rctx->socket.fd, res, sizeof(res), 0);
+
+       if (len < sizeof(*hdr))
+               return -ENODATA;
+
+       hdr = (HEADER *)res;
+       id  = hdr->id;
+       req = avl_find_element(&rctx->request_ids, &id, req, by_id);
+
+       if (!req)
+               return -ENOENT;
+
+       avl_delete(&rctx->request_ids, &req->by_id);
+
+       if (ns_initparse(res, len, &handle))
+               return -EINVAL;
+
+       for (n = 0; n < ns_msg_count(handle, ns_s_an); n++) {
+               if (ns_parserr(&handle, ns_s_an, n, &rr))
+                       return -EINVAL;
+
+               if (ns_rr_type(rr) != ns_t_ptr)
+                       continue;
+
+               if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle),
+                                      ns_rr_rdata(rr), dname, sizeof(dname)) < 0)
+                       return -EINVAL;
+
+               inet_ntop(req->family, &req->addr, buf, sizeof(buf));
+               blobmsg_add_string(&rctx->blob, buf, dname);
+       }
+
+       return 0;
+}
+
+static int
+rrdns_next_query(struct rrdns_context *rctx)
+{
+       const char *addr = NULL, *hex = "0123456789abcdef";
+       struct rrdns_request *req;
+       int i, alen, family;
+       char *p, dname[73];
+
+       union {
+               unsigned char uchar[4];
+               struct in6_addr in6;
+               struct in_addr in;
+       } a = { };
+
+       union {
+               unsigned char buf[512];
+               HEADER hdr;
+       } msg;
+
+       if (rctx->addr_rem > 0 &&
+           blob_pad_len(rctx->addr_cur) <= rctx->addr_rem &&
+           blob_pad_len(rctx->addr_cur) >= sizeof(struct blob_attr)) {
+
+               addr = blobmsg_get_string(rctx->addr_cur);
+               rctx->addr_rem -= blob_pad_len(rctx->addr_cur);
+               rctx->addr_cur = blob_next(rctx->addr_cur);
+       }
+
+       if (!addr)
+               return 0;
+
+       if (inet_pton(AF_INET6, addr, &a.in6)) {
+               memset(dname, 0, sizeof(dname));
+
+               for (i = 0, p = dname; i < 16; i++) {
+                       *p++ = hex[a.in6.s6_addr[15-i] % 16];
+                       *p++ = '.';
+                       *p++ = hex[a.in6.s6_addr[15-i] / 16];
+                       *p++ = '.';
+               }
+
+               p += snprintf(p, p - dname - 1, "ip6.arpa");
+
+               family = AF_INET6;
+               alen = p - dname;
+       }
+       else if (inet_pton(AF_INET, addr, &a.in)) {
+               family = AF_INET;
+               alen = snprintf(dname, sizeof(dname), "%u.%u.%u.%u.in-addr.arpa",
+                               a.uchar[3], a.uchar[2], a.uchar[1], a.uchar[0]);
+       }
+       else {
+               return -EINVAL;
+       }
+
+       alen = res_mkquery(QUERY, dname, C_IN, T_PTR, NULL, 0, NULL,
+                          msg.buf, sizeof(msg.buf));
+
+       if (alen < 0)
+               return alen;
+
+       if (avl_find(&rctx->request_addrs, &a.in6))
+               return -ENOTUNIQ;
+
+       if (send(rctx->socket.fd, msg.buf, alen, 0) != alen)
+               return -errno;
+
+       req = calloc(1, sizeof(*req));
+
+       if (!req)
+               return -ENOMEM;
+
+       req->id = msg.hdr.id;
+       req->by_id.key = &req->id;
+       avl_insert(&rctx->request_ids, &req->by_id);
+
+       req->family = family;
+       req->addr.in6 = a.in6;
+       req->by_addr.key = &req->addr.in6;
+       avl_insert(&rctx->request_addrs, &req->by_addr);
+
+       return 0;
+}
+
+static void
+rdns_shutdown(struct rrdns_context *rctx)
+{
+       struct rrdns_request *req, *tmp;
+
+       uloop_timeout_cancel(&rctx->timeout);
+       uloop_fd_delete(&rctx->socket);
+
+       close(rctx->socket.fd);
+
+       ubus_send_reply(rctx->context, &rctx->request, rctx->blob.head);
+       ubus_complete_deferred_request(rctx->context, &rctx->request,
+                                      UBUS_STATUS_OK);
+
+       avl_remove_all_elements(&rctx->request_addrs, req, by_addr, tmp)
+               free(req);
+
+       blob_buf_free(&rctx->blob);
+       free(rctx);
+}
+
+static void
+rrdns_handle_timeout(struct uloop_timeout *utm)
+{
+       struct rrdns_context *rctx =
+               container_of(utm, struct rrdns_context, timeout);
+
+       rdns_shutdown(rctx);
+}
+
+static void
+rrdns_handle_response(struct uloop_fd *ufd, unsigned int ev)
+{
+       struct rrdns_context *rctx =
+               container_of(ufd, struct rrdns_context, socket);
+
+       int err = rrdns_parse_response(rctx);
+
+       if (err != -ENODATA && err != -ENOENT)
+               rrdns_next_query(rctx);
+
+       if (avl_is_empty(&rctx->request_ids))
+               rdns_shutdown(rctx);
+}
+
+static char *
+rrdns_find_nameserver(void)
+{
+       static char line[2*INET6_ADDRSTRLEN];
+       struct in6_addr in6;
+       FILE *resolvconf;
+       char *p;
+
+       resolvconf = fopen("/etc/resolv.conf", "r");
+
+       if (!resolvconf)
+               return NULL;
+
+       while (fgets(line, sizeof(line), resolvconf)) {
+               p = strtok(line, " \t");
+
+               if (!p || strcmp(p, "nameserver"))
+                       continue;
+
+               p = strtok(NULL, " \t\r\n");
+
+               if (!p)
+                       continue;
+
+               if (!inet_pton(AF_INET6, p, &in6) && !inet_pton(AF_INET, p, &in6))
+                       continue;
+
+               fclose(resolvconf);
+               return p;
+       }
+
+       fclose(resolvconf);
+       return NULL;
+}
+
+static int
+rpc_rrdns_lookup(struct ubus_context *ctx, struct ubus_object *obj,
+                    struct ubus_request_data *req, const char *method,
+                    struct blob_attr *msg)
+{
+       int port = 53, limit = RRDNS_DEF_LIMIT, timeout = RRDNS_DEF_TIMEOUT;
+       struct blob_attr *tb[__RPC_L_MAX];
+       struct rrdns_context *rctx;
+       const char *server = NULL;
+
+       blobmsg_parse(rpc_lookup_policy, __RPC_L_MAX, tb,
+                     blob_data(msg), blob_len(msg));
+
+       if (tb[RPC_L_PORT])
+               port = blobmsg_get_u16(tb[RPC_L_PORT]);
+
+       if (tb[RPC_L_LIMIT])
+               limit = blobmsg_get_u32(tb[RPC_L_LIMIT]);
+
+       if (tb[RPC_L_TIMEOUT])
+               timeout = blobmsg_get_u32(tb[RPC_L_TIMEOUT]);
+
+       if (tb[RPC_L_SERVER])
+               server = blobmsg_get_string(tb[RPC_L_SERVER]);
+
+
+       if (!tb[RPC_L_ADDRS])
+               return UBUS_STATUS_INVALID_ARGUMENT;
+
+       if (port <= 0)
+               return UBUS_STATUS_INVALID_ARGUMENT;
+
+       if (limit <= 0 || limit > RRDNS_MAX_LIMIT)
+               return UBUS_STATUS_INVALID_ARGUMENT;
+
+       if (timeout <= 0 || timeout > RRDNS_MAX_TIMEOUT)
+               return UBUS_STATUS_INVALID_ARGUMENT;
+
+
+       if (!server || !*server)
+               server = rrdns_find_nameserver();
+
+       if (!server)
+               return UBUS_STATUS_NOT_FOUND;
+
+       rctx = calloc(1, sizeof(*rctx));
+
+       if (!rctx)
+               return UBUS_STATUS_UNKNOWN_ERROR;
+
+       rctx->socket.fd = usock(USOCK_UDP, server, usock_port(port));
+
+       if (rctx->socket.fd < 0) {
+               free(rctx);
+               return UBUS_STATUS_UNKNOWN_ERROR;
+       }
+
+       rctx->context = ctx;
+       rctx->addr_cur = blobmsg_data(tb[RPC_L_ADDRS]);
+       rctx->addr_rem = blobmsg_data_len(tb[RPC_L_ADDRS]);
+
+       avl_init(&rctx->request_ids, rrdns_cmp_id, false, NULL);
+       avl_init(&rctx->request_addrs, rrdns_cmp_addr, false, NULL);
+
+       rctx->timeout.cb = rrdns_handle_timeout;
+       uloop_timeout_set(&rctx->timeout, timeout);
+
+       rctx->socket.cb = rrdns_handle_response;
+       uloop_fd_add(&rctx->socket, ULOOP_READ);
+
+       blob_buf_init(&rctx->blob, 0);
+
+       while (limit--)
+               rrdns_next_query(rctx);
+
+       ubus_defer_request(ctx, req, &rctx->request);
+
+       return UBUS_STATUS_OK;
+}
+
+
+static int
+rpc_rrdns_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
+{
+       static const struct ubus_method rrdns_methods[] = {
+               UBUS_METHOD("lookup", rpc_rrdns_lookup, rpc_lookup_policy),
+       };
+
+       static struct ubus_object_type rrdns_type =
+               UBUS_OBJECT_TYPE("rpcd-rrdns", rrdns_methods);
+
+       static struct ubus_object obj = {
+               .name = "network.rrdns",
+               .type = &rrdns_type,
+               .methods = rrdns_methods,
+               .n_methods = ARRAY_SIZE(rrdns_methods),
+       };
+
+       return ubus_add_object(ctx, &obj);
+}
+
+struct rpc_plugin rpc_plugin = {
+       .init = rpc_rrdns_api_init
+};
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h
new file mode 100644 (file)
index 0000000..3f95116
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ *   Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <libubus.h>
+#include <libubox/avl.h>
+#include <libubox/uloop.h>
+
+#define RRDNS_MAX_TIMEOUT 5000
+#define RRDNS_DEF_TIMEOUT 250
+
+#define RRDNS_MAX_LIMIT 1000
+#define RRDNS_DEF_LIMIT 10
+
+
+struct rrdns_request {
+       struct avl_node by_id;
+       struct avl_node by_addr;
+       uint16_t id;
+       uint16_t family;
+       union {
+               struct in_addr in;
+               struct in6_addr in6;
+       } addr;
+};
+
+struct rrdns_context {
+       struct ubus_context *context;
+       struct ubus_request_data request;
+       struct uloop_timeout timeout;
+       struct blob_attr *addr_cur;
+       int addr_rem;
+       struct uloop_fd socket;
+       struct blob_buf blob;
+       struct avl_tree request_ids;
+       struct avl_tree request_addrs;
+};
diff --git a/package/luci/luci.mk b/package/luci/luci.mk
new file mode 100644 (file)
index 0000000..bb8ba8e
--- /dev/null
@@ -0,0 +1,265 @@
+#
+# Copyright (C) 2008-2015 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+LUCI_NAME?=$(notdir ${CURDIR})
+LUCI_TYPE?=$(word 2,$(subst -, ,$(LUCI_NAME)))
+LUCI_BASENAME?=$(patsubst luci-$(LUCI_TYPE)-%,%,$(LUCI_NAME))
+LUCI_LANGUAGES:=$(sort $(filter-out templates,$(notdir $(wildcard ${CURDIR}/po/*))))
+LUCI_DEFAULTS:=$(notdir $(wildcard ${CURDIR}/root/etc/uci-defaults/*))
+LUCI_PKGARCH?=$(if $(realpath src/Makefile),,all)
+
+# Language code titles
+LUCI_LANG.ca=Català (Catalan)
+LUCI_LANG.cs=Čeština (Czech)
+LUCI_LANG.de=Deutsch (German)
+LUCI_LANG.el=Ελληνικά (Greek)
+LUCI_LANG.en=English
+LUCI_LANG.es=Español (Spanish)
+LUCI_LANG.fr=Français (French)
+LUCI_LANG.he=עִבְרִית (Hebrew)
+LUCI_LANG.hi=हिंदी (Hindi)
+LUCI_LANG.hu=Magyar (Hungarian)
+LUCI_LANG.it=Italiano (Italian)
+LUCI_LANG.ja=日本語 (Japanese)
+LUCI_LANG.ko=한국어 (Korean)
+LUCI_LANG.ms=Bahasa Melayu (Malay)
+LUCI_LANG.no=Norsk (Norwegian)
+LUCI_LANG.pl=Polski (Polish)
+LUCI_LANG.pt-br=Português do Brasil (Brazialian Portuguese)
+LUCI_LANG.pt=Português (Portuguese)
+LUCI_LANG.ro=Română (Romanian)
+LUCI_LANG.ru=Русский (Russian)
+LUCI_LANG.sk=Slovenčina (Slovak)
+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-tw=臺灣華語 (Taiwanese)
+
+# Submenu titles
+LUCI_MENU.col=1. Collections
+LUCI_MENU.mod=2. Modules
+LUCI_MENU.app=3. Applications
+LUCI_MENU.theme=4. Themes
+LUCI_MENU.proto=5. Protocols
+LUCI_MENU.lib=6. Libraries
+
+
+PKG_NAME?=$(LUCI_NAME)
+
+PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
+       if svn info >/dev/null 2>/dev/null; then \
+               revision="svn-r$$(LC_ALL=C svn info | sed -ne 's/^Revision: //p')"; \
+       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" --abbrev=7); \
+                       secs="$$(($$1 % 86400))"; \
+                       yday="$$(date --utc --date="@$$1" "+%y.%j")"; \
+                       revision="$$(printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2")"; \
+               fi; \
+       else \
+               revision="unknown"; \
+       fi; \
+       echo "$$revision" \
+)))
+
+PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \
+       variant="LuCI"; \
+       if git log -1 >/dev/null 2>/dev/null; then \
+               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 \
+                       variant="LuCI Master"; \
+               fi; \
+       fi; \
+       echo "$$variant" \
+)))
+
+PKG_RELEASE?=1
+PKG_INSTALL:=$(if $(realpath src/Makefile),1)
+PKG_BUILD_DEPENDS += lua/host luci-base/host LUCI_CSSTIDY:csstidy/host $(LUCI_BUILD_DEPENDS)
+PKG_CONFIG_DEPENDS += CONFIG_LUCI_SRCDIET CONFIG_LUCI_JSMIN CONFIG_LUCI_CSSTIDY
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/$(PKG_NAME)
+  SECTION:=luci
+  CATEGORY:=LuCI
+  SUBMENU:=$(if $(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.app))
+  TITLE:=$(if $(LUCI_TITLE),$(LUCI_TITLE),LuCI $(LUCI_NAME) $(LUCI_TYPE))
+  DEPENDS:=$(LUCI_DEPENDS)
+  $(if $(LUCI_EXTRA_DEPENDS),EXTRA_DEPENDS:=$(LUCI_EXTRA_DEPENDS))
+  $(if $(LUCI_PKGARCH),PKGARCH:=$(LUCI_PKGARCH))
+endef
+
+ifneq ($(LUCI_DESCRIPTION),)
+ define Package/$(PKG_NAME)/description
+   $(strip $(LUCI_DESCRIPTION))
+ endef
+endif
+
+# Language selection for luci-base
+ifeq ($(PKG_NAME),luci-base)
+ define Package/luci-base/config
+   config LUCI_SRCDIET
+       bool "Minify Lua sources"
+       default n
+
+   config LUCI_JSMIN
+       bool "Minify JavaScript sources"
+       default y
+
+   config LUCI_CSSTIDY
+        bool "Minify CSS files"
+        default y
+
+   menu "Translations"$(foreach lang,$(LUCI_LANGUAGES),
+
+     config LUCI_LANG_$(lang)
+          tristate "$(shell echo '$(LUCI_LANG.$(lang))' | sed -e 's/^.* (\(.*\))$$/\1/') ($(lang))")
+
+   endmenu
+ endef
+endif
+
+define Build/Prepare
+       for d in luasrc htdocs root src; do \
+         if [ -d ./$$$$d ]; then \
+           mkdir -p $(PKG_BUILD_DIR)/$$$$d; \
+               $(CP) ./$$$$d/* $(PKG_BUILD_DIR)/$$$$d/; \
+         fi; \
+       done
+       $(call Build/Prepare/Default)
+endef
+
+define Build/Configure
+endef
+
+ifneq ($(wildcard ${CURDIR}/src/Makefile),)
+ MAKE_PATH := src/
+ MAKE_VARS += FPIC="$(FPIC)" LUCI_VERSION="$(PKG_VERSION)" LUCI_GITBRANCH="$(PKG_GITBRANCH)"
+
+ define Build/Compile
+       $(call Build/Compile/Default,clean compile)
+ endef
+else
+ define Build/Compile
+ endef
+endif
+
+HTDOCS = /www
+LUA_LIBRARYDIR = /usr/lib/lua
+LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci
+
+define SrcDiet
+       $(FIND) $(1) -type f -name '*.lua' | while read src; do \
+               if LUA_PATH="$(STAGING_DIR_HOSTPKG)/lib/lua/5.1/?.lua" luasrcdiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \
+               then mv "$$$$src.o" "$$$$src"; fi; \
+       done
+endef
+
+define JsMin
+       $(FIND) $(1) -type f -name '*.js' | while read src; do \
+               if jsmin < "$$$$src" > "$$$$src.o"; \
+               then mv "$$$$src.o" "$$$$src"; fi; \
+       done
+endef
+
+define CssTidy
+       $(FIND) $(1) -type f -name '*.css' | while read src; do \
+               if csstidy "$$$$src" --template=highest --remove_last_semicolon=true "$$$$src.o"; \
+               then mv "$$$$src.o" "$$$$src"; fi; \
+       done
+endef
+
+define SubstituteVersion
+       $(FIND) $(1) -type f -name '*.htm' | while read src; do \
+               $(SED) 's/<%# *\([^ ]*\)PKG_VERSION *%>/\1$(PKG_VERSION)/g' \
+                   -e 's/"\(<%= *\(media\|resource\) *%>[^"]*\.\(js\|css\)\)"/"\1?v=$(PKG_VERSION)"/g' \
+                       "$$$$src"; \
+       done
+endef
+
+define Package/$(PKG_NAME)/install
+       if [ -d $(PKG_BUILD_DIR)/luasrc ]; then \
+         $(INSTALL_DIR) $(1)$(LUCI_LIBRARYDIR); \
+         cp -pR $(PKG_BUILD_DIR)/luasrc/* $(1)$(LUCI_LIBRARYDIR)/; \
+         $(FIND) $(1)$(LUCI_LIBRARYDIR)/ -type f -name '*.luadoc' | $(XARGS) rm; \
+         $(if $(CONFIG_LUCI_SRCDIET),$(call SrcDiet,$(1)$(LUCI_LIBRARYDIR)/),true); \
+         $(call SubstituteVersion,$(1)$(LUCI_LIBRARYDIR)/); \
+       else true; fi
+       if [ -d $(PKG_BUILD_DIR)/htdocs ]; then \
+         $(INSTALL_DIR) $(1)$(HTDOCS); \
+         cp -pR $(PKG_BUILD_DIR)/htdocs/* $(1)$(HTDOCS)/; \
+         $(if $(CONFIG_LUCI_JSMIN),$(call JsMin,$(1)$(HTDOCS)/),true); \
+         $(if $(CONFIG_LUCI_CSSTIDY),$(call CssTidy,$(1)$(HTDOCS)/),true); \
+       else true; fi
+       if [ -d $(PKG_BUILD_DIR)/root ]; then \
+         $(INSTALL_DIR) $(1)/; \
+         cp -pR $(PKG_BUILD_DIR)/root/* $(1)/; \
+       else true; fi
+       if [ -d $(PKG_BUILD_DIR)/src ]; then \
+         $(call Build/Install/Default) \
+         $(CP) $(PKG_INSTALL_DIR)/* $(1)/; \
+       else true; fi
+endef
+
+ifneq ($(LUCI_DEFAULTS),)
+define Package/$(PKG_NAME)/postinst
+[ -n "$${IPKG_INSTROOT}" ] || {$(foreach script,$(LUCI_DEFAULTS),
+       (. /etc/uci-defaults/$(script)) && rm -f /etc/uci-defaults/$(script))
+       exit 0
+}
+endef
+endif
+
+
+LUCI_BUILD_PACKAGES := $(PKG_NAME)
+
+define LuciTranslation
+  define Package/luci-i18n-$(LUCI_BASENAME)-$(1)
+    SECTION:=luci
+    CATEGORY:=LuCI
+    TITLE:=$(PKG_NAME) - $(1) translation
+    HIDDEN:=1
+    DEFAULT:=LUCI_LANG_$(1)||(ALL&&m)
+    DEPENDS:=$(PKG_NAME)
+    PKGARCH:=all
+  endef
+
+  define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/description
+    Translation for $(PKG_NAME) - $(LUCI_LANG.$(1))
+  endef
+
+  define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/install
+       $$(INSTALL_DIR) $$(1)/etc/uci-defaults
+       echo "uci set luci.languages.$(subst -,_,$(1))='$(LUCI_LANG.$(1))'; uci commit luci" \
+               > $$(1)/etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1)
+       $$(INSTALL_DIR) $$(1)$(LUCI_LIBRARYDIR)/i18n
+       $(foreach po,$(wildcard ${CURDIR}/po/$(1)/*.po), \
+               po2lmo $(po) \
+                       $$(1)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(1).lmo;)
+  endef
+
+  define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/postinst
+       [ -n "$$$${IPKG_INSTROOT}" ] || {
+               (. /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1)) && rm -f /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1)
+               exit 0
+       }
+  endef
+
+  LUCI_BUILD_PACKAGES += luci-i18n-$(LUCI_BASENAME)-$(1)
+
+endef
+
+$(foreach lang,$(LUCI_LANGUAGES),$(eval $(call LuciTranslation,$(lang))))
+$(foreach pkg,$(LUCI_BUILD_PACKAGES),$(eval $(call BuildPackage,$(pkg))))
diff --git a/package/luci/modules/luci-base/Makefile b/package/luci/modules/luci-base/Makefile
new file mode 100644 (file)
index 0000000..9bc8ec1
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2008-2015 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=luci-base
+
+LUCI_TYPE:=mod
+LUCI_BASENAME:=base
+
+LUCI_TITLE:=LuCI core libraries
+LUCI_DEPENDS:=+lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +liblucihttp-lua
+
+
+PKG_SOURCE:=v1.0.0.tar.gz
+PKG_SOURCE_URL:=https://github.com/jirutka/luasrcdiet/archive/
+PKG_HASH:=48162e63e77d009f5848f18a5cabffbdfc867d0e5e73c6d407f6af5d6880151b
+PKG_LICENSE:=MIT
+
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/luasrcdiet-1.0.0
+
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/luci-base/conffiles
+/etc/luci-uploads
+/etc/config/luci
+/etc/config/ucitrack
+endef
+
+include ../../luci.mk
+
+define Host/Configure
+endef
+
+define Host/Compile
+       $(MAKE) -C src/ clean po2lmo jsmin
+endef
+
+define Host/Install
+       $(INSTALL_DIR) $(1)/bin
+       $(INSTALL_DIR) $(1)/lib/lua/5.1
+       $(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
+       $(INSTALL_BIN) src/jsmin $(1)/bin/jsmin
+       $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet
+       $(CP) $(HOST_BUILD_DIR)/luasrcdiet $(1)/lib/lua/5.1/
+endef
+
+$(eval $(call HostBuild))
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/modules/luci-base/htdocs/cgi-bin/luci b/package/luci/modules/luci-base/htdocs/cgi-bin/luci
new file mode 100755 (executable)
index 0000000..529d1d0
--- /dev/null
@@ -0,0 +1,5 @@
+#!/usr/bin/lua
+require "luci.cacheloader"
+require "luci.sgi.cgi"
+luci.dispatcher.indexcache = "/tmp/luci-indexcache"
+luci.sgi.cgi.run()
\ No newline at end of file
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js
new file mode 100644 (file)
index 0000000..fa61cf6
--- /dev/null
@@ -0,0 +1,2146 @@
+/*
+       LuCI - Lua Configuration Interface
+
+       Copyright 2008 Steven Barth <steven@midlink.org>
+       Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+
+       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
+*/
+
+var cbi_d = [];
+var cbi_strings = { path: {}, label: {} };
+
+function s8(bytes, off) {
+       var n = bytes[off];
+       return (n > 0x7F) ? (n - 256) >>> 0 : n;
+}
+
+function u16(bytes, off) {
+       return ((bytes[off + 1] << 8) + bytes[off]) >>> 0;
+}
+
+function sfh(s) {
+       if (s === null || s.length === 0)
+               return null;
+
+       var bytes = [];
+
+       for (var i = 0; i < s.length; i++) {
+               var ch = s.charCodeAt(i);
+
+               if (ch <= 0x7F)
+                       bytes.push(ch);
+               else if (ch <= 0x7FF)
+                       bytes.push(((ch >>>  6) & 0x1F) | 0xC0,
+                                  ( ch         & 0x3F) | 0x80);
+               else if (ch <= 0xFFFF)
+                       bytes.push(((ch >>> 12) & 0x0F) | 0xE0,
+                                  ((ch >>>  6) & 0x3F) | 0x80,
+                                  ( ch         & 0x3F) | 0x80);
+               else if (code <= 0x10FFFF)
+                       bytes.push(((ch >>> 18) & 0x07) | 0xF0,
+                                  ((ch >>> 12) & 0x3F) | 0x80,
+                                  ((ch >>   6) & 0x3F) | 0x80,
+                                  ( ch         & 0x3F) | 0x80);
+       }
+
+       if (!bytes.length)
+               return null;
+
+       var hash = (bytes.length >>> 0),
+           len = (bytes.length >>> 2),
+           off = 0, tmp;
+
+       while (len--) {
+               hash += u16(bytes, off);
+               tmp   = ((u16(bytes, off + 2) << 11) ^ hash) >>> 0;
+               hash  = ((hash << 16) ^ tmp) >>> 0;
+               hash += hash >>> 11;
+               off  += 4;
+       }
+
+       switch ((bytes.length & 3) >>> 0) {
+       case 3:
+               hash += u16(bytes, off);
+               hash  = (hash ^ (hash << 16)) >>> 0;
+               hash  = (hash ^ (s8(bytes, off + 2) << 18)) >>> 0;
+               hash += hash >>> 11;
+               break;
+
+       case 2:
+               hash += u16(bytes, off);
+               hash  = (hash ^ (hash << 11)) >>> 0;
+               hash += hash >>> 17;
+               break;
+
+       case 1:
+               hash += s8(bytes, off);
+               hash  = (hash ^ (hash << 10)) >>> 0;
+               hash += hash >>> 1;
+               break;
+       }
+
+       hash  = (hash ^ (hash << 3)) >>> 0;
+       hash += hash >>> 5;
+       hash  = (hash ^ (hash << 4)) >>> 0;
+       hash += hash >>> 17;
+       hash  = (hash ^ (hash << 25)) >>> 0;
+       hash += hash >>> 6;
+
+       return (0x100000000 + hash).toString(16).substr(1);
+}
+
+function _(s) {
+       return (window.TR && TR[sfh(s)]) || s;
+}
+
+function Int(x) {
+       return (/^-?\d+$/.test(x) ? +x : NaN);
+}
+
+function Dec(x) {
+       return (/^-?\d+(?:\.\d+)?$/.test(x) ? +x : NaN);
+}
+
+function IPv4(x) {
+       if (!x.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/))
+               return null;
+
+       if (RegExp.$1 > 255 || RegExp.$2 > 255 || RegExp.$3 > 255 || RegExp.$4 > 255)
+               return null;
+
+       return [ +RegExp.$1, +RegExp.$2, +RegExp.$3, +RegExp.$4 ];
+}
+
+function IPv6(x) {
+       if (x.match(/^([a-fA-F0-9:]+):(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)) {
+               var v6 = RegExp.$1, v4 = IPv4(RegExp.$2);
+
+               if (!v4)
+                       return null;
+
+               x = v6 + ':' + (v4[0] * 256 + v4[1]).toString(16)
+                      + ':' + (v4[2] * 256 + v4[3]).toString(16);
+       }
+
+       if (!x.match(/^[a-fA-F0-9:]+$/))
+               return null;
+
+       var prefix_suffix = x.split(/::/);
+
+       if (prefix_suffix.length > 2)
+               return null;
+
+       var prefix = (prefix_suffix[0] || '0').split(/:/);
+       var suffix = prefix_suffix.length > 1 ? (prefix_suffix[1] || '0').split(/:/) : [];
+
+       if (suffix.length ? (prefix.length + suffix.length > 7)
+                         : ((prefix_suffix.length < 2 && prefix.length < 8) || prefix.length > 8))
+               return null;
+
+       var i, word;
+       var words = [];
+
+       for (i = 0, word = parseInt(prefix[0], 16); i < prefix.length; word = parseInt(prefix[++i], 16))
+               if (prefix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF)
+                       words.push(word);
+               else
+                       return null;
+
+       for (i = 0; i < (8 - prefix.length - suffix.length); i++)
+               words.push(0);
+
+       for (i = 0, word = parseInt(suffix[0], 16); i < suffix.length; word = parseInt(suffix[++i], 16))
+               if (suffix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF)
+                       words.push(word);
+               else
+                       return null;
+
+       return words;
+}
+
+var CBIValidatorPrototype = {
+       apply: function(name, value, args) {
+               var func;
+
+               if (typeof(name) === 'function')
+                       func = name;
+               else if (typeof(this.types[name]) === 'function')
+                       func = this.types[name];
+               else
+                       return false;
+
+               if (value !== undefined && value !== null)
+                       this.value = value;
+
+               return func.apply(this, args);
+       },
+
+       assert: function(condition, message) {
+               if (!condition) {
+                       this.field.classList.add('cbi-input-invalid');
+                       this.error = message;
+                       return false;
+               }
+
+               this.field.classList.remove('cbi-input-invalid');
+               this.error = null;
+               return true;
+       },
+
+       compile: function(code) {
+               var pos = 0;
+               var esc = false;
+               var depth = 0;
+               var stack = [ ];
+
+               code += ',';
+
+               for (var i = 0; i < code.length; i++) {
+                       if (esc) {
+                               esc = false;
+                               continue;
+                       }
+
+                       switch (code.charCodeAt(i))
+                       {
+                       case 92:
+                               esc = true;
+                               break;
+
+                       case 40:
+                       case 44:
+                               if (depth <= 0) {
+                                       if (pos < i) {
+                                               var label = code.substring(pos, i);
+                                                       label = label.replace(/\\(.)/g, '$1');
+                                                       label = label.replace(/^[ \t]+/g, '');
+                                                       label = label.replace(/[ \t]+$/g, '');
+
+                                               if (label && !isNaN(label)) {
+                                                       stack.push(parseFloat(label));
+                                               }
+                                               else if (label.match(/^(['"]).*\1$/)) {
+                                                       stack.push(label.replace(/^(['"])(.*)\1$/, '$2'));
+                                               }
+                                               else if (typeof this.types[label] == 'function') {
+                                                       stack.push(this.types[label]);
+                                                       stack.push(null);
+                                               }
+                                               else {
+                                                       throw "Syntax error, unhandled token '"+label+"'";
+                                               }
+                                       }
+
+                                       pos = i+1;
+                               }
+
+                               depth += (code.charCodeAt(i) == 40);
+                               break;
+
+                       case 41:
+                               if (--depth <= 0) {
+                                       if (typeof stack[stack.length-2] != 'function')
+                                               throw "Syntax error, argument list follows non-function";
+
+                                       stack[stack.length-1] = this.compile(code.substring(pos, i));
+                                       pos = i+1;
+                               }
+
+                               break;
+                       }
+               }
+
+               return stack;
+       },
+
+       validate: function() {
+               /* element is detached */
+               if (!findParent(this.field, 'form'))
+                       return true;
+
+               this.field.classList.remove('cbi-input-invalid');
+               this.value = matchesElem(this.field, 'select') ? this.field.options[this.field.selectedIndex].value : this.field.value;
+               this.error = null;
+
+               var valid;
+
+               if (this.value.length === 0)
+                       valid = this.assert(this.optional, _('non-empty value'));
+               else
+                       valid = this.vstack[0].apply(this, this.vstack[1]);
+
+               if (!valid) {
+                       this.field.setAttribute('data-tooltip', _('Expecting %s').format(this.error));
+                       this.field.setAttribute('data-tooltip-style', 'error');
+                       this.field.dispatchEvent(new CustomEvent('validation-failure', { bubbles: true }));
+               }
+               else {
+                       this.field.removeAttribute('data-tooltip');
+                       this.field.removeAttribute('data-tooltip-style');
+                       this.field.dispatchEvent(new CustomEvent('validation-success', { bubbles: true }));
+               }
+
+               return valid;
+       },
+
+       types: {
+               integer: function() {
+                       return this.assert(Int(this.value) !== NaN, _('valid integer value'));
+               },
+
+               uinteger: function() {
+                       return this.assert(Int(this.value) >= 0, _('positive integer value'));
+               },
+
+               float: function() {
+                       return this.assert(Dec(this.value) !== NaN, _('valid decimal value'));
+               },
+
+               ufloat: function() {
+                       return this.assert(Dec(this.value) >= 0, _('positive decimal value'));
+               },
+
+               ipaddr: function(nomask) {
+                       return this.assert(this.apply('ip4addr', null, [nomask]) || this.apply('ip6addr', null, [nomask]),
+                               nomask ? _('valid IP address') : _('valid IP address or prefix'));
+               },
+
+               ip4addr: function(nomask) {
+                       var re = nomask ? /^(\d+\.\d+\.\d+\.\d+)$/ : /^(\d+\.\d+\.\d+\.\d+)(?:\/(\d+\.\d+\.\d+\.\d+)|\/(\d{1,2}))?$/,
+                           m = this.value.match(re);
+
+                       return this.assert(m && IPv4(m[1]) && (m[2] ? IPv4(m[2]) : (m[3] ? this.apply('ip4prefix', m[3]) : true)),
+                               nomask ? _('valid IPv4 address') : _('valid IPv4 address or network'));
+               },
+
+               ip6addr: function(nomask) {
+                       var re = nomask ? /^([0-9a-fA-F:.]+)$/ : /^([0-9a-fA-F:.]+)(?:\/(\d{1,3}))?$/,
+                           m = this.value.match(re);
+
+                       return this.assert(m && IPv6(m[1]) && (m[2] ? this.apply('ip6prefix', m[2]) : true),
+                               nomask ? _('valid IPv6 address') : _('valid IPv6 address or prefix'));
+               },
+
+               ip4prefix: function() {
+                       return this.assert(!isNaN(this.value) && this.value >= 0 && this.value <= 32,
+                               _('valid IPv4 prefix value (0-32)'));
+               },
+
+               ip6prefix: function() {
+                       return this.assert(!isNaN(this.value) && this.value >= 0 && this.value <= 128,
+                               _('valid IPv6 prefix value (0-128)'));
+               },
+
+               cidr: function() {
+                       return this.assert(this.apply('cidr4') || this.apply('cidr6'), _('valid IPv4 or IPv6 CIDR'));
+               },
+
+               cidr4: function() {
+                       var m = this.value.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,2})$/);
+                       return this.assert(m && IPv4(m[1]) && this.apply('ip4prefix', m[2]), _('valid IPv4 CIDR'));
+               },
+
+               cidr6: function() {
+                       var m = this.value.match(/^([0-9a-fA-F:.]+)\/(\d{1,3})$/);
+                       return this.assert(m && IPv6(m[1]) && this.apply('ip6prefix', m[2]), _('valid IPv6 CIDR'));
+               },
+
+               ipnet4: function() {
+                       var m = this.value.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/);
+                       return this.assert(m && IPv4(m[1]) && IPv4(m[2]), _('IPv4 network in address/netmask notation'));
+               },
+
+               ipnet6: function() {
+                       var m = this.value.match(/^([0-9a-fA-F:.]+)\/([0-9a-fA-F:.]+)$/);
+                       return this.assert(m && IPv6(m[1]) && IPv6(m[2]), _('IPv6 network in address/netmask notation'));
+               },
+
+               ip6hostid: function() {
+                       if (this.value == "eui64" || this.value == "random")
+                               return true;
+
+                       var v6 = IPv6(this.value);
+                       return this.assert(!(!v6 || v6[0] || v6[1] || v6[2] || v6[3]), _('valid IPv6 host id'));
+               },
+
+               ipmask: function() {
+                       return this.assert(this.apply('ipmask4') || this.apply('ipmask6'),
+                               _('valid network in address/netmask notation'));
+               },
+
+               ipmask4: function() {
+                       return this.assert(this.apply('cidr4') || this.apply('ipnet4') || this.apply('ip4addr'),
+                               _('valid IPv4 network'));
+               },
+
+               ipmask6: function() {
+                       return this.assert(this.apply('cidr6') || this.apply('ipnet6') || this.apply('ip6addr'),
+                               _('valid IPv6 network'));
+               },
+
+               port: function() {
+                       var p = Int(this.value);
+                       return this.assert(p >= 0 && p <= 65535, _('valid port value'));
+               },
+
+               portrange: function() {
+                       if (this.value.match(/^(\d+)-(\d+)$/)) {
+                               var p1 = +RegExp.$1;
+                               var p2 = +RegExp.$2;
+                               return this.assert(p1 <= p2 && p2 <= 65535,
+                                       _('valid port or port range (port1-port2)'));
+                       }
+
+                       return this.assert(this.apply('port'), _('valid port or port range (port1-port2)'));
+               },
+
+               macaddr: function() {
+                       return this.assert(this.value.match(/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/) != null,
+                               _('valid MAC address'));
+               },
+
+               host: function(ipv4only) {
+                       return this.assert(this.apply('hostname') || this.apply(ipv4only == 1 ? 'ip4addr' : 'ipaddr'),
+                               _('valid hostname or IP address'));
+               },
+
+               hostname: function(strict) {
+                       if (this.value.length <= 253)
+                               return this.assert(
+                                       (this.value.match(/^[a-zA-Z0-9_]+$/) != null ||
+                                               (this.value.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) &&
+                                                this.value.match(/[^0-9.]/))) &&
+                                       (!strict || !this.value.match(/^_/)),
+                                       _('valid hostname'));
+
+                       return this.assert(false, _('valid hostname'));
+               },
+
+               network: function() {
+                       return this.assert(this.apply('uciname') || this.apply('host'),
+                               _('valid UCI identifier, hostname or IP address'));
+               },
+
+               hostport: function(ipv4only) {
+                       var hp = this.value.split(/:/);
+                       return this.assert(hp.length == 2 && this.apply('host', hp[0], [ipv4only]) && this.apply('port', hp[1]),
+                               _('valid host:port'));
+               },
+
+               ip4addrport: function() {
+                       var hp = this.value.split(/:/);
+                       return this.assert(hp.length == 2 && this.apply('ip4addr', hp[0], [true]) && this.apply('port', hp[1]),
+                               _('valid IPv4 address:port'));
+               },
+
+               ipaddrport: function(bracket) {
+                       var m4 = this.value.match(/^([^\[\]:]+):(\d+)$/),
+                           m6 = this.value.match((bracket == 1) ? /^\[(.+)\]:(\d+)$/ : /^([^\[\]]+):(\d+)$/);
+
+                       if (m4)
+                               return this.assert(this.apply('ip4addr', m4[1], [true]) && this.apply('port', m4[2]),
+                                       _('valid address:port'));
+
+                       return this.assert(m6 && this.apply('ip6addr', m6[1], [true]) && this.apply('port', m6[2]),
+                               _('valid address:port'));
+               },
+
+               wpakey: function() {
+                       var v = this.value;
+
+                       if (v.length == 64)
+                               return this.assert(v.match(/^[a-fA-F0-9]{64}$/), _('valid hexadecimal WPA key'));
+
+                       return this.assert((v.length >= 8) && (v.length <= 63), _('key between 8 and 63 characters'));
+               },
+
+               wepkey: function() {
+                       var v = this.value;
+
+                       if (v.substr(0, 2) === 's:')
+                               v = v.substr(2);
+
+                       if ((v.length == 10) || (v.length == 26))
+                               return this.assert(v.match(/^[a-fA-F0-9]{10,26}$/), _('valid hexadecimal WEP key'));
+
+                       return this.assert((v.length === 5) || (v.length === 13), _('key with either 5 or 13 characters'));
+               },
+
+               uciname: function() {
+                       return this.assert(this.value.match(/^[a-zA-Z0-9_]+$/), _('valid UCI identifier'));
+               },
+
+               range: function(min, max) {
+                       var val = Dec(this.value);
+                       return this.assert(val >= +min && val <= +max, _('value between %f and %f').format(min, max));
+               },
+
+               min: function(min) {
+                       return this.assert(Dec(this.value) >= +min, _('value greater or equal to %f').format(min));
+               },
+
+               max: function(max) {
+                       return this.assert(Dec(this.value) <= +max, _('value smaller or equal to %f').format(max));
+               },
+
+               rangelength: function(min, max) {
+                       var val = '' + this.value;
+                       return this.assert((val.length >= +min) && (val.length <= +max),
+                               _('value between %d and %d characters').format(min, max));
+               },
+
+               minlength: function(min) {
+                       return this.assert((''+this.value).length >= +min,
+                               _('value with at least %d characters').format(min));
+               },
+
+               maxlength: function(max) {
+                       return this.assert((''+this.value).length <= +max,
+                               _('value with at most %d characters').format(max));
+               },
+
+               or: function() {
+                       var errors = [];
+
+                       for (var i = 0; i < arguments.length; i += 2) {
+                               if (typeof arguments[i] != 'function') {
+                                       if (arguments[i] == this.value)
+                                               return this.assert(true);
+                                       errors.push('"%s"'.format(arguments[i]));
+                                       i--;
+                               }
+                               else if (arguments[i].apply(this, arguments[i+1])) {
+                                       return this.assert(true);
+                               }
+                               else {
+                                       errors.push(this.error);
+                               }
+                       }
+
+                       return this.assert(false, _('one of:\n - %s'.format(errors.join('\n - '))));
+               },
+
+               and: function() {
+                       for (var i = 0; i < arguments.length; i += 2) {
+                               if (typeof arguments[i] != 'function') {
+                                       if (arguments[i] != this.value)
+                                               return this.assert(false, '"%s"'.format(arguments[i]));
+                                       i--;
+                               }
+                               else if (!arguments[i].apply(this, arguments[i+1])) {
+                                       return this.assert(false, this.error);
+                               }
+                       }
+
+                       return this.assert(true);
+               },
+
+               neg: function() {
+                       return this.apply('or', this.value.replace(/^[ \t]*![ \t]*/, ''), arguments);
+               },
+
+               list: function(subvalidator, subargs) {
+                       this.field.setAttribute('data-is-list', 'true');
+
+                       var tokens = this.value.match(/[^ \t]+/g);
+                       for (var i = 0; i < tokens.length; i++)
+                               if (!this.apply(subvalidator, tokens[i], subargs))
+                                       return this.assert(false, this.error);
+
+                       return this.assert(true);
+               },
+
+               phonedigit: function() {
+                       return this.assert(this.value.match(/^[0-9\*#!\.]+$/),
+                               _('valid phone digit (0-9, "*", "#", "!" or ".")'));
+               },
+
+               timehhmmss: function() {
+                       return this.assert(this.value.match(/^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$/),
+                               _('valid time (HH:MM:SS)'));
+               },
+
+               dateyyyymmdd: function() {
+                       if (this.value.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/)) {
+                               var year  = +RegExp.$1,
+                                   month = +RegExp.$2,
+                                   day   = +RegExp.$3,
+                                   days_in_month = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
+
+                               function is_leap_year(year) {
+                                       return ((!(year % 4) && (year % 100)) || !(year % 400));
+                               }
+
+                               function get_days_in_month(month, year) {
+                                       return (month === 2 && is_leap_year(year)) ? 29 : days_in_month[month - 1];
+                               }
+
+                               /* Firewall rules in the past don't make sense */
+                               return this.assert(year >= 2015 && month && month <= 12 && day && day <= get_days_in_month(month, year),
+                                       _('valid date (YYYY-MM-DD)'));
+
+                       }
+
+                       return this.assert(false, _('valid date (YYYY-MM-DD)'));
+               },
+
+               unique: function(subvalidator, subargs) {
+                       var ctx = this,
+                               option = findParent(ctx.field, '[data-type][data-name]'),
+                           section = findParent(option, '.cbi-section'),
+                           query = '[data-type="%s"][data-name="%s"]'.format(option.getAttribute('data-type'), option.getAttribute('data-name')),
+                           unique = true;
+
+                       section.querySelectorAll(query).forEach(function(sibling) {
+                               if (sibling === option)
+                                       return;
+
+                               var input = sibling.querySelector('[data-type]'),
+                                   values = input ? (input.getAttribute('data-is-list') ? input.value.match(/[^ \t]+/g) : [ input.value ]) : null;
+
+                               if (values !== null && values.indexOf(ctx.value) !== -1)
+                                       unique = false;
+                       });
+
+                       if (!unique)
+                               return this.assert(false, _('unique value'));
+
+                       if (typeof(subvalidator) === 'function')
+                               return this.apply(subvalidator, undefined, subargs);
+
+                       return this.assert(true);
+               },
+
+               hexstring: function() {
+                       return this.assert(this.value.match(/^([a-f0-9][a-f0-9]|[A-F0-9][A-F0-9])+$/),
+                               _('hexadecimal encoded value'));
+               }
+       }
+};
+
+function CBIValidator(field, type, optional)
+{
+       this.field = field;
+       this.optional = optional;
+       this.vstack = this.compile(type);
+}
+
+CBIValidator.prototype = CBIValidatorPrototype;
+
+
+function cbi_d_add(field, dep, index) {
+       var obj = (typeof(field) === 'string') ? document.getElementById(field) : field;
+       if (obj) {
+               var entry
+               for (var i=0; i<cbi_d.length; i++) {
+                       if (cbi_d[i].id == obj.id) {
+                               entry = cbi_d[i];
+                               break;
+                       }
+               }
+               if (!entry) {
+                       entry = {
+                               "node": obj,
+                               "id": obj.id,
+                               "parent": obj.parentNode.id,
+                               "deps": [],
+                               "index": index
+                       };
+                       cbi_d.unshift(entry);
+               }
+               entry.deps.push(dep)
+       }
+}
+
+function cbi_d_checkvalue(target, ref) {
+       var value = null,
+           query = 'input[id="'+target+'"], input[name="'+target+'"], ' +
+                   'select[id="'+target+'"], select[name="'+target+'"]';
+
+       document.querySelectorAll(query).forEach(function(i) {
+               if (value === null && ((i.type !== 'radio' && i.type !== 'checkbox') || i.checked === true))
+                       value = i.value;
+       });
+
+       return (((value !== null) ? value : "") == ref);
+}
+
+function cbi_d_check(deps) {
+       var reverse;
+       var def = false;
+       for (var i=0; i<deps.length; i++) {
+               var istat = true;
+               reverse = false;
+               for (var j in deps[i]) {
+                       if (j == "!reverse") {
+                               reverse = true;
+                       } else if (j == "!default") {
+                               def = true;
+                               istat = false;
+                       } else {
+                               istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
+                       }
+               }
+
+               if (istat ^ reverse) {
+                       return true;
+               }
+       }
+       return def;
+}
+
+function cbi_d_update() {
+       var state = false;
+       for (var i=0; i<cbi_d.length; i++) {
+               var entry = cbi_d[i];
+               var node  = document.getElementById(entry.id);
+               var parent = document.getElementById(entry.parent);
+
+               if (node && node.parentNode && !cbi_d_check(entry.deps)) {
+                       node.parentNode.removeChild(node);
+                       state = true;
+               }
+               else if (parent && (!node || !node.parentNode) && cbi_d_check(entry.deps)) {
+                       var next = undefined;
+
+                       for (next = parent.firstChild; next; next = next.nextSibling) {
+                               if (next.getAttribute && parseInt(next.getAttribute('data-index'), 10) > entry.index)
+                                       break;
+                       }
+
+                       if (!next)
+                               parent.appendChild(entry.node);
+                       else
+                               parent.insertBefore(entry.node, next);
+
+                       state = true;
+               }
+
+               // hide optionals widget if no choices remaining
+               if (parent && parent.parentNode && parent.getAttribute('data-optionals'))
+                       parent.parentNode.style.display = (parent.options.length <= 1) ? 'none' : '';
+       }
+
+       if (entry && entry.parent)
+               cbi_tag_last(parent);
+
+       if (state)
+               cbi_d_update();
+       else if (parent)
+               parent.dispatchEvent(new CustomEvent('dependency-update', { bubbles: true }));
+}
+
+function cbi_init() {
+       var nodes;
+
+       nodes = document.querySelectorAll('[data-strings]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               var str = JSON.parse(node.getAttribute('data-strings'));
+               for (var key in str) {
+                       for (var key2 in str[key]) {
+                               var dst = cbi_strings[key] || (cbi_strings[key] = { });
+                                   dst[key2] = str[key][key2];
+                       }
+               }
+       }
+
+       nodes = document.querySelectorAll('[data-depends]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               var index = parseInt(node.getAttribute('data-index'), 10);
+               var depends = JSON.parse(node.getAttribute('data-depends'));
+               if (!isNaN(index) && depends.length > 0) {
+                       for (var alt = 0; alt < depends.length; alt++)
+                               cbi_d_add(node, depends[alt], index);
+               }
+       }
+
+       nodes = document.querySelectorAll('[data-update]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               var events = node.getAttribute('data-update').split(' ');
+               for (var j = 0, event; (event = events[j]) !== undefined; j++)
+                       node.addEventListener(event, cbi_d_update);
+       }
+
+       nodes = document.querySelectorAll('[data-choices]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               var choices = JSON.parse(node.getAttribute('data-choices'));
+               var options = {};
+
+               for (var j = 0; j < choices[0].length; j++)
+                       options[choices[0][j]] = choices[1][j];
+
+               var def = (node.getAttribute('data-optional') === 'true')
+                       ? node.placeholder || '' : null;
+
+               cbi_combobox_init(node, options, def,
+                                 node.getAttribute('data-manual'));
+       }
+
+       nodes = document.querySelectorAll('[data-dynlist]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               var choices = JSON.parse(node.getAttribute('data-dynlist'));
+               var options = null;
+
+               if (choices[0] && choices[0].length) {
+                       options = {};
+
+                       for (var j = 0; j < choices[0].length; j++)
+                               options[choices[0][j]] = choices[1][j];
+               }
+
+               cbi_dynlist_init(node, choices[2], choices[3], options);
+       }
+
+       nodes = document.querySelectorAll('[data-type]');
+
+       for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+               cbi_validate_field(node, node.getAttribute('data-optional') === 'true',
+                                  node.getAttribute('data-type'));
+       }
+
+       document.querySelectorAll('.cbi-dropdown').forEach(cbi_dropdown_init);
+       document.querySelectorAll('[data-browser]').forEach(cbi_browser_init);
+
+       document.querySelectorAll('.cbi-tooltip:not(:empty)').forEach(function(s) {
+               s.parentNode.classList.add('cbi-tooltip-container');
+       });
+
+       document.querySelectorAll('.cbi-section-remove > input[name^="cbi.rts"]').forEach(function(i) {
+               var handler = function(ev) {
+                       var bits = this.name.split(/\./),
+                           section = document.getElementById('cbi-' + bits[2] + '-' + bits[3]);
+
+                   section.style.opacity = (ev.type === 'mouseover') ? 0.5 : '';
+               };
+
+               i.addEventListener('mouseover', handler);
+               i.addEventListener('mouseout', handler);
+       });
+
+       cbi_d_update();
+}
+
+function cbi_combobox_init(id, values, def, man) {
+       var obj = (typeof(id) === 'string') ? document.getElementById(id) : id;
+       var sb = E('div', {
+               'name': obj.name,
+               'class': 'cbi-dropdown',
+               'display-items': 5,
+               'optional': obj.getAttribute('data-optional'),
+               'placeholder': _('-- Please choose --'),
+               'data-type': obj.getAttribute('data-type'),
+               'data-optional': obj.getAttribute('data-optional')
+       }, [ E('ul') ]);
+
+       if (!(obj.value in values) && obj.value.length) {
+               sb.lastElementChild.appendChild(E('li', {
+                       'data-value': obj.value,
+                       'selected': ''
+               }, obj.value.length ? obj.value : (def || _('-- Please choose --'))));
+       }
+
+       for (var i in values) {
+               sb.lastElementChild.appendChild(E('li', {
+                       'data-value': i,
+                       'selected': (i == obj.value) ? '' : null
+               }, values[i]));
+       }
+
+       sb.lastElementChild.appendChild(E('li', { 'data-value': '-' }, [
+               E('input', {
+                       'type': 'text',
+                       'class': 'create-item-input',
+                       'data-type': obj.getAttribute('data-type'),
+                       'data-optional': true,
+                       'placeholder': (man || _('-- custom --'))
+               })
+       ]));
+
+       sb.value = obj.value;
+       obj.parentNode.replaceChild(sb, obj);
+}
+
+function cbi_filebrowser(id, defpath) {
+       var field   = L.dom.elem(id) ? id : document.getElementById(id);
+       var browser = window.open(
+               cbi_strings.path.browser + (field.value || defpath || '') + '?field=' + field.id,
+               "luci_filebrowser", "width=300,height=400,left=100,top=200,scrollbars=yes"
+       );
+
+       browser.focus();
+}
+
+function cbi_browser_init(field)
+{
+       field.parentNode.insertBefore(
+               E('img', {
+                       'src': L.resource('cbi/folder.gif'),
+                       'class': 'cbi-image-button',
+                       'click': function(ev) {
+                               cbi_filebrowser(field, field.getAttribute('data-browser'));
+                               ev.preventDefault();
+                       }
+               }), field.nextSibling);
+}
+
+CBIDynamicList = {
+       addItem: function(dl, value, text, flash) {
+               var exists = false,
+                   new_item = E('div', { 'class': flash ? 'item flash' : 'item', 'tabindex': 0 }, [
+                               E('span', {}, text || value),
+                               E('input', {
+                                       'type': 'hidden',
+                                       'name': dl.getAttribute('data-prefix'),
+                                       'value': value })]);
+
+               dl.querySelectorAll('.item').forEach(function(item) {
+                       if (exists)
+                               return;
+
+                       var hidden = item.querySelector('input[type="hidden"]');
+
+                       if (hidden && hidden.value === value)
+                               exists = true;
+               });
+
+               if (!exists) {
+                       var ai = dl.querySelector('.add-item');
+                       ai.parentNode.insertBefore(new_item, ai);
+               }
+
+               cbi_d_update();
+       },
+
+       removeItem: function(dl, item) {
+               var sb = dl.querySelector('.cbi-dropdown');
+               if (sb) {
+                       var value = item.querySelector('input[type="hidden"]').value;
+
+                       sb.querySelectorAll('ul > li').forEach(function(li) {
+                               if (li.getAttribute('data-value') === value)
+                                       li.removeAttribute('unselectable');
+                       });
+               }
+
+               item.parentNode.removeChild(item);
+               cbi_d_update();
+       },
+
+       handleClick: function(ev) {
+               var dl = ev.currentTarget,
+                   item = findParent(ev.target, '.item');
+
+               if (item) {
+                       this.removeItem(dl, item);
+               }
+               else if (matchesElem(ev.target, '.cbi-button-add')) {
+                       var input = ev.target.previousElementSibling;
+                       if (input.value.length && !input.classList.contains('cbi-input-invalid')) {
+                               this.addItem(dl, input.value, null, true);
+                               input.value = '';
+                       }
+               }
+       },
+
+       handleDropdownChange: function(ev) {
+               var dl = ev.currentTarget,
+                   sbIn = ev.detail.instance,
+                   sbEl = ev.detail.element,
+                   sbVal = ev.detail.value;
+
+               if (sbVal === null)
+                       return;
+
+               sbIn.setValues(sbEl, null);
+               sbVal.element.setAttribute('unselectable', '');
+
+               this.addItem(dl, sbVal.value, sbVal.text, true);
+       },
+
+       handleKeydown: function(ev) {
+               var dl = ev.currentTarget,
+                   item = findParent(ev.target, '.item');
+
+               if (item) {
+                       switch (ev.keyCode) {
+                       case 8: /* backspace */
+                               if (item.previousElementSibling)
+                                       item.previousElementSibling.focus();
+
+                               this.removeItem(dl, item);
+                               break;
+
+                       case 46: /* delete */
+                               if (item.nextElementSibling) {
+                                       if (item.nextElementSibling.classList.contains('item'))
+                                               item.nextElementSibling.focus();
+                                       else
+                                               item.nextElementSibling.firstElementChild.focus();
+                               }
+
+                               this.removeItem(dl, item);
+                               break;
+                       }
+               }
+               else if (matchesElem(ev.target, '.cbi-input-text')) {
+                       switch (ev.keyCode) {
+                       case 13: /* enter */
+                               if (ev.target.value.length && !ev.target.classList.contains('cbi-input-invalid')) {
+                                       this.addItem(dl, ev.target.value, null, true);
+                                       ev.target.value = '';
+                                       ev.target.blur();
+                                       ev.target.focus();
+                               }
+
+                               ev.preventDefault();
+                               break;
+                       }
+               }
+       }
+};
+
+function cbi_dynlist_init(dl, datatype, optional, choices)
+{
+       if (!(this instanceof cbi_dynlist_init))
+               return new cbi_dynlist_init(dl, datatype, optional, choices);
+
+       dl.classList.add('cbi-dynlist');
+       dl.appendChild(E('div', { 'class': 'add-item' }, E('input', {
+               'type': 'text',
+               'name': 'cbi.dynlist.' + dl.getAttribute('data-prefix'),
+               'class': 'cbi-input-text',
+               'placeholder': dl.getAttribute('data-placeholder'),
+               'data-type': datatype,
+               'data-optional': true,
+               'data-dynlist-add': true
+       })));
+
+       if (choices)
+               cbi_combobox_init(dl.lastElementChild.lastElementChild, choices, '', _('-- custom --'));
+       else
+               dl.lastElementChild.appendChild(E('div', { 'class': 'cbi-button cbi-button-add' }, '+'));
+
+       dl.addEventListener('click', this.handleClick.bind(this));
+       dl.addEventListener('keydown', this.handleKeydown.bind(this));
+       dl.addEventListener('cbi-dropdown-change', this.handleDropdownChange.bind(this));
+
+       try {
+               var values = JSON.parse(dl.getAttribute('data-values') || '[]');
+
+               if (typeof(values) === 'object' && Array.isArray(values))
+                       for (var i = 0; i < values.length; i++)
+                               this.addItem(dl, values[i], choices ? choices[values[i]] : null);
+       }
+       catch (e) {}
+}
+
+cbi_dynlist_init.prototype = CBIDynamicList;
+
+
+function cbi_validate_form(form, errmsg)
+{
+       var dynadd = form.querySelectorAll('input[data-dynlist-add="true"]');
+       for (var i = 0; i < dynadd.length; i++)
+               if (dynadd[i].value != '')
+                       dynadd[i].nextElementSibling.click();
+
+       /* if triggered by a section removal or addition, don't validate */
+       if (form.cbi_state == 'add-section' || form.cbi_state == 'del-section')
+               return true;
+
+       if (form.cbi_validators) {
+               for (var i = 0; i < form.cbi_validators.length; i++) {
+                       var validator = form.cbi_validators[i];
+
+                       if (!validator() && errmsg) {
+                               alert(errmsg);
+                               return false;
+                       }
+               }
+       }
+
+       return true;
+}
+
+function cbi_validate_reset(form)
+{
+       window.setTimeout(
+               function() { cbi_validate_form(form, null) }, 100
+       );
+
+       return true;
+}
+
+function cbi_validate_field(cbid, optional, type)
+{
+       var field = isElem(cbid) ? cbid : document.getElementById(cbid);
+       var validatorFn;
+
+       try {
+               var cbiValidator = new CBIValidator(field, type, optional);
+               validatorFn = cbiValidator.validate.bind(cbiValidator);
+       }
+       catch(e) {
+               validatorFn = null;
+       };
+
+       if (validatorFn !== null) {
+               var form = findParent(field, 'form');
+
+               if (!form.cbi_validators)
+                       form.cbi_validators = [ ];
+
+               form.cbi_validators.push(validatorFn);
+
+               field.addEventListener("blur",  validatorFn);
+               field.addEventListener("keyup", validatorFn);
+               field.addEventListener("cbi-dropdown-change", validatorFn);
+
+               if (matchesElem(field, 'select')) {
+                       field.addEventListener("change", validatorFn);
+                       field.addEventListener("click",  validatorFn);
+               }
+
+               validatorFn();
+       }
+}
+
+function cbi_row_swap(elem, up, store)
+{
+       var tr = findParent(elem.parentNode, '.cbi-section-table-row');
+
+       if (!tr)
+               return false;
+
+       tr.classList.remove('flash');
+
+       if (up) {
+               var prev = tr.previousElementSibling;
+
+               if (prev && prev.classList.contains('cbi-section-table-row'))
+                       tr.parentNode.insertBefore(tr, prev);
+               else
+                       return;
+       }
+       else {
+               var next = tr.nextElementSibling ? tr.nextElementSibling.nextElementSibling : null;
+
+               if (next && next.classList.contains('cbi-section-table-row'))
+                       tr.parentNode.insertBefore(tr, next);
+               else if (!next)
+                       tr.parentNode.appendChild(tr);
+               else
+                       return;
+       }
+
+       var ids = [ ];
+
+       for (var i = 0, n = 0; i < tr.parentNode.childNodes.length; i++) {
+               var node = tr.parentNode.childNodes[i];
+               if (node.classList && node.classList.contains('cbi-section-table-row')) {
+                       node.classList.remove('cbi-rowstyle-1');
+                       node.classList.remove('cbi-rowstyle-2');
+                       node.classList.add((n++ % 2) ? 'cbi-rowstyle-2' : 'cbi-rowstyle-1');
+
+                       if (/-([^\-]+)$/.test(node.id))
+                               ids.push(RegExp.$1);
+               }
+       }
+
+       var input = document.getElementById(store);
+       if (input)
+               input.value = ids.join(' ');
+
+       window.scrollTo(0, tr.offsetTop);
+       void tr.offsetWidth;
+       tr.classList.add('flash');
+
+       return false;
+}
+
+function cbi_tag_last(container)
+{
+       var last;
+
+       for (var i = 0; i < container.childNodes.length; i++) {
+               var c = container.childNodes[i];
+               if (matchesElem(c, 'div')) {
+                       c.classList.remove('cbi-value-last');
+                       last = c;
+               }
+       }
+
+       if (last)
+               last.classList.add('cbi-value-last');
+}
+
+function cbi_submit(elem, name, value, action)
+{
+       var form = elem.form || findParent(elem, 'form');
+
+       if (!form)
+               return false;
+
+       if (action)
+               form.action = action;
+
+       if (name) {
+               var hidden = form.querySelector('input[type="hidden"][name="%s"]'.format(name)) ||
+                       E('input', { type: 'hidden', name: name });
+
+               hidden.value = value || '1';
+               form.appendChild(hidden);
+       }
+
+       form.submit();
+       return true;
+}
+
+String.prototype.format = function()
+{
+       if (!RegExp)
+               return;
+
+       var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;'];
+       var quot_esc = [/"/g, '&#34;', /'/g, '&#39;'];
+
+       function esc(s, r) {
+               if (typeof(s) !== 'string' && !(s instanceof String))
+                       return '';
+
+               for (var i = 0; i < r.length; i += 2)
+                       s = s.replace(r[i], r[i+1]);
+
+               return s;
+       }
+
+       var str = this;
+       var out = '';
+       var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
+       var a = b = [], numSubstitutions = 0, numMatches = 0;
+
+       while (a = re.exec(str)) {
+               var m = a[1];
+               var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
+               var pPrecision = a[6], pType = a[7];
+
+               numMatches++;
+
+               if (pType == '%') {
+                       subst = '%';
+               }
+               else {
+                       if (numSubstitutions < arguments.length) {
+                               var param = arguments[numSubstitutions++];
+
+                               var pad = '';
+                               if (pPad && pPad.substr(0,1) == "'")
+                                       pad = leftpart.substr(1,1);
+                               else if (pPad)
+                                       pad = pPad;
+                               else
+                                       pad = ' ';
+
+                               var justifyRight = true;
+                               if (pJustify && pJustify === "-")
+                                       justifyRight = false;
+
+                               var minLength = -1;
+                               if (pMinLength)
+                                       minLength = +pMinLength;
+
+                               var precision = -1;
+                               if (pPrecision && pType == 'f')
+                                       precision = +pPrecision.substring(1);
+
+                               var subst = param;
+
+                               switch(pType) {
+                                       case 'b':
+                                               subst = (+param || 0).toString(2);
+                                               break;
+
+                                       case 'c':
+                                               subst = String.fromCharCode(+param || 0);
+                                               break;
+
+                                       case 'd':
+                                               subst = ~~(+param || 0);
+                                               break;
+
+                                       case 'u':
+                                               subst = ~~Math.abs(+param || 0);
+                                               break;
+
+                                       case 'f':
+                                               subst = (precision > -1)
+                                                       ? ((+param || 0.0)).toFixed(precision)
+                                                       : (+param || 0.0);
+                                               break;
+
+                                       case 'o':
+                                               subst = (+param || 0).toString(8);
+                                               break;
+
+                                       case 's':
+                                               subst = param;
+                                               break;
+
+                                       case 'x':
+                                               subst = ('' + (+param || 0).toString(16)).toLowerCase();
+                                               break;
+
+                                       case 'X':
+                                               subst = ('' + (+param || 0).toString(16)).toUpperCase();
+                                               break;
+
+                                       case 'h':
+                                               subst = esc(param, html_esc);
+                                               break;
+
+                                       case 'q':
+                                               subst = esc(param, quot_esc);
+                                               break;
+
+                                       case 't':
+                                               var td = 0;
+                                               var th = 0;
+                                               var tm = 0;
+                                               var ts = (param || 0);
+
+                                               if (ts > 60) {
+                                                       tm = Math.floor(ts / 60);
+                                                       ts = (ts % 60);
+                                               }
+
+                                               if (tm > 60) {
+                                                       th = Math.floor(tm / 60);
+                                                       tm = (tm % 60);
+                                               }
+
+                                               if (th > 24) {
+                                                       td = Math.floor(th / 24);
+                                                       th = (th % 24);
+                                               }
+
+                                               subst = (td > 0)
+                                                       ? String.format('%dd %dh %dm %ds', td, th, tm, ts)
+                                                       : String.format('%dh %dm %ds', th, tm, ts);
+
+                                               break;
+
+                                       case 'm':
+                                               var mf = pMinLength ? +pMinLength : 1000;
+                                               var pr = pPrecision ? ~~(10 * +('0' + pPrecision)) : 2;
+
+                                               var i = 0;
+                                               var val = (+param || 0);
+                                               var units = [ ' ', ' K', ' M', ' G', ' T', ' P', ' E' ];
+
+                                               for (i = 0; (i < units.length) && (val > mf); i++)
+                                                       val /= mf;
+
+                                               subst = (i ? val.toFixed(pr) : val) + units[i];
+                                               pMinLength = null;
+                                               break;
+                               }
+                       }
+               }
+
+               if (pMinLength) {
+                       subst = subst.toString();
+                       for (var i = subst.length; i < pMinLength; i++)
+                               if (pJustify == '-')
+                                       subst = subst + ' ';
+                               else
+                                       subst = pad + subst;
+               }
+
+               out += leftpart + subst;
+               str = str.substr(m.length);
+       }
+
+       return out + str;
+}
+
+String.prototype.nobr = function()
+{
+       return this.replace(/[\s\n]+/g, '&#160;');
+}
+
+String.format = function()
+{
+       var a = [ ];
+
+       for (var i = 1; i < arguments.length; i++)
+               a.push(arguments[i]);
+
+       return ''.format.apply(arguments[0], a);
+}
+
+String.nobr = function()
+{
+       var a = [ ];
+
+       for (var i = 1; i < arguments.length; i++)
+               a.push(arguments[i]);
+
+       return ''.nobr.apply(arguments[0], a);
+}
+
+if (window.NodeList && !NodeList.prototype.forEach) {
+       NodeList.prototype.forEach = function (callback, thisArg) {
+               thisArg = thisArg || window;
+               for (var i = 0; i < this.length; i++) {
+                       callback.call(thisArg, this[i], i, this);
+               }
+       };
+}
+
+if (!window.requestAnimationFrame) {
+       window.requestAnimationFrame = function(f) {
+               window.setTimeout(function() {
+                       f(new Date().getTime())
+               }, 1000/30);
+       };
+}
+
+
+function isElem(e) { return L.dom.elem(e) }
+function toElem(s) { return L.dom.parse(s) }
+function matchesElem(node, selector) { return L.dom.matches(node, selector) }
+function findParent(node, selector) { return L.dom.parent(node, selector) }
+function E() { return L.dom.create.apply(L.dom, arguments) }
+
+if (typeof(window.CustomEvent) !== 'function') {
+       function CustomEvent(event, params) {
+               params = params || { bubbles: false, cancelable: false, detail: undefined };
+               var evt = document.createEvent('CustomEvent');
+                   evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
+               return evt;
+       }
+
+       CustomEvent.prototype = window.Event.prototype;
+       window.CustomEvent = CustomEvent;
+}
+
+CBIDropdown = {
+       openDropdown: function(sb) {
+               var st = window.getComputedStyle(sb, null),
+                   ul = sb.querySelector('ul'),
+                   li = ul.querySelectorAll('li'),
+                   fl = findParent(sb, '.cbi-value-field'),
+                   sel = ul.querySelector('[selected]'),
+                   rect = sb.getBoundingClientRect(),
+                   items = Math.min(this.dropdown_items, li.length);
+
+               document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) {
+                       s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {}));
+               });
+
+               sb.setAttribute('open', '');
+
+               var pv = ul.cloneNode(true);
+                   pv.classList.add('preview');
+
+               if (fl)
+                       fl.classList.add('cbi-dropdown-open');
+
+               if ('ontouchstart' in window) {
+                       var vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
+                           vpHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
+                           scrollFrom = window.pageYOffset,
+                           scrollTo = scrollFrom + rect.top - vpHeight * 0.5,
+                           start = null;
+
+                       ul.style.top = sb.offsetHeight + 'px';
+                       ul.style.left = -rect.left + 'px';
+                       ul.style.right = (rect.right - vpWidth) + 'px';
+                       ul.style.maxHeight = (vpHeight * 0.5) + 'px';
+                       ul.style.WebkitOverflowScrolling = 'touch';
+
+                       var scrollStep = function(timestamp) {
+                               if (!start) {
+                                       start = timestamp;
+                                       ul.scrollTop = sel ? Math.max(sel.offsetTop - sel.offsetHeight, 0) : 0;
+                               }
+
+                               var duration = Math.max(timestamp - start, 1);
+                               if (duration < 100) {
+                                       document.body.scrollTop = scrollFrom + (scrollTo - scrollFrom) * (duration / 100);
+                                       window.requestAnimationFrame(scrollStep);
+                               }
+                               else {
+                                       document.body.scrollTop = scrollTo;
+                               }
+                       };
+
+                       window.requestAnimationFrame(scrollStep);
+               }
+               else {
+                       ul.style.maxHeight = '1px';
+                       ul.style.top = ul.style.bottom = '';
+
+                       window.requestAnimationFrame(function() {
+                               var height = items * li[Math.max(0, li.length - 2)].offsetHeight;
+
+                               ul.scrollTop = sel ? Math.max(sel.offsetTop - sel.offsetHeight, 0) : 0;
+                               ul.style[((rect.top + rect.height + height) > window.innerHeight) ? 'bottom' : 'top'] = rect.height + 'px';
+                               ul.style.maxHeight = height + 'px';
+                       });
+               }
+
+               ul.querySelectorAll('[selected] input[type="checkbox"]').forEach(function(c) {
+                       c.checked = true;
+               });
+
+               ul.classList.add('dropdown');
+
+               sb.insertBefore(pv, ul.nextElementSibling);
+
+               li.forEach(function(l) {
+                       l.setAttribute('tabindex', 0);
+               });
+
+               sb.lastElementChild.setAttribute('tabindex', 0);
+
+               this.setFocus(sb, sel || li[0], true);
+       },
+
+       closeDropdown: function(sb, no_focus) {
+               if (!sb.hasAttribute('open'))
+                       return;
+
+               var pv = sb.querySelector('ul.preview'),
+                   ul = sb.querySelector('ul.dropdown'),
+                   li = ul.querySelectorAll('li'),
+                   fl = findParent(sb, '.cbi-value-field');
+
+               li.forEach(function(l) { l.removeAttribute('tabindex'); });
+               sb.lastElementChild.removeAttribute('tabindex');
+
+               sb.removeChild(pv);
+               sb.removeAttribute('open');
+               sb.style.width = sb.style.height = '';
+
+               ul.classList.remove('dropdown');
+               ul.style.top = ul.style.bottom = ul.style.maxHeight = '';
+
+               if (fl)
+                       fl.classList.remove('cbi-dropdown-open');
+
+               if (!no_focus)
+                       this.setFocus(sb, sb);
+
+               this.saveValues(sb, ul);
+       },
+
+       toggleItem: function(sb, li, force_state) {
+               if (li.hasAttribute('unselectable'))
+                       return;
+
+               if (this.multi) {
+                       var cbox = li.querySelector('input[type="checkbox"]'),
+                           items = li.parentNode.querySelectorAll('li'),
+                           label = sb.querySelector('ul.preview'),
+                           sel = li.parentNode.querySelectorAll('[selected]').length,
+                           more = sb.querySelector('.more'),
+                           ndisplay = this.display_items,
+                           n = 0;
+
+                       if (li.hasAttribute('selected')) {
+                               if (force_state !== true) {
+                                       if (sel > 1 || this.optional) {
+                                               li.removeAttribute('selected');
+                                               cbox.checked = cbox.disabled = false;
+                                               sel--;
+                                       }
+                                       else {
+                                               cbox.disabled = true;
+                                       }
+                               }
+                       }
+                       else {
+                               if (force_state !== false) {
+                                       li.setAttribute('selected', '');
+                                       cbox.checked = true;
+                                       cbox.disabled = false;
+                                       sel++;
+                               }
+                       }
+
+                       while (label.firstElementChild)
+                               label.removeChild(label.firstElementChild);
+
+                       for (var i = 0; i < items.length; i++) {
+                               items[i].removeAttribute('display');
+                               if (items[i].hasAttribute('selected')) {
+                                       if (ndisplay-- > 0) {
+                                               items[i].setAttribute('display', n++);
+                                               label.appendChild(items[i].cloneNode(true));
+                                       }
+                                       var c = items[i].querySelector('input[type="checkbox"]');
+                                       if (c)
+                                               c.disabled = (sel == 1 && !this.optional);
+                               }
+                       }
+
+                       if (ndisplay < 0)
+                               sb.setAttribute('more', '');
+                       else
+                               sb.removeAttribute('more');
+
+                       if (ndisplay === this.display_items)
+                               sb.setAttribute('empty', '');
+                       else
+                               sb.removeAttribute('empty');
+
+                       more.innerHTML = (ndisplay === this.display_items) ? this.placeholder : '···';
+               }
+               else {
+                       var sel = li.parentNode.querySelector('[selected]');
+                       if (sel) {
+                               sel.removeAttribute('display');
+                               sel.removeAttribute('selected');
+                       }
+
+                       li.setAttribute('display', 0);
+                       li.setAttribute('selected', '');
+
+                       this.closeDropdown(sb, true);
+               }
+
+               this.saveValues(sb, li.parentNode);
+       },
+
+       transformItem: function(sb, li) {
+               var cbox = E('form', {}, E('input', { type: 'checkbox', tabindex: -1, onclick: 'event.preventDefault()' })),
+                   label = E('label');
+
+               while (li.firstChild)
+                       label.appendChild(li.firstChild);
+
+               li.appendChild(cbox);
+               li.appendChild(label);
+       },
+
+       saveValues: function(sb, ul) {
+               var sel = ul.querySelectorAll('li[selected]'),
+                   div = sb.lastElementChild,
+                   strval = '',
+                   values = [];
+
+               while (div.lastElementChild)
+                       div.removeChild(div.lastElementChild);
+
+               sel.forEach(function (s) {
+                       if (s.hasAttribute('placeholder'))
+                               return;
+
+                       var v = {
+                               text: s.innerText,
+                               value: s.hasAttribute('data-value') ? s.getAttribute('data-value') : s.innerText,
+                               element: s
+                       };
+
+                       div.appendChild(E('input', {
+                               type: 'hidden',
+                               name: s.hasAttribute('name') ? s.getAttribute('name') : (sb.getAttribute('name') || ''),
+                               value: v.value
+                       }));
+
+                       values.push(v);
+
+                       strval += strval.length ? ' ' + v.value : v.value;
+               });
+
+               var detail = {
+                       instance: this,
+                       element: sb
+               };
+
+               if (this.multi)
+                       detail.values = values;
+               else
+                       detail.value = values.length ? values[0] : null;
+
+               sb.value = strval;
+
+               sb.dispatchEvent(new CustomEvent('cbi-dropdown-change', {
+                       bubbles: true,
+                       detail: detail
+               }));
+
+               cbi_d_update();
+       },
+
+       setValues: function(sb, values) {
+               var ul = sb.querySelector('ul');
+
+               if (this.multi) {
+                       ul.querySelectorAll('li[data-value]').forEach(function(li) {
+                               if (values === null || !(li.getAttribute('data-value') in values))
+                                       this.toggleItem(sb, li, false);
+                               else
+                                       this.toggleItem(sb, li, true);
+                       });
+               }
+               else {
+                       var ph = ul.querySelector('li[placeholder]');
+                       if (ph)
+                               this.toggleItem(sb, ph);
+
+                       ul.querySelectorAll('li[data-value]').forEach(function(li) {
+                               if (values !== null && (li.getAttribute('data-value') in values))
+                                       this.toggleItem(sb, li);
+                       });
+               }
+       },
+
+       setFocus: function(sb, elem, scroll) {
+               if (sb && sb.hasAttribute && sb.hasAttribute('locked-in'))
+                       return;
+
+               if (sb.target && findParent(sb.target, 'ul.dropdown'))
+                       return;
+
+               document.querySelectorAll('.focus').forEach(function(e) {
+                       if (!matchesElem(e, 'input')) {
+                               e.classList.remove('focus');
+                               e.blur();
+                       }
+               });
+
+               if (elem) {
+                       elem.focus();
+                       elem.classList.add('focus');
+
+                       if (scroll)
+                               elem.parentNode.scrollTop = elem.offsetTop - elem.parentNode.offsetTop;
+               }
+       },
+
+       createItems: function(sb, value) {
+               var sbox = this,
+                   val = (value || '').trim(),
+                   ul = sb.querySelector('ul');
+
+               if (!sbox.multi)
+                       val = val.length ? [ val ] : [];
+               else
+                       val = val.length ? val.split(/\s+/) : [];
+
+               val.forEach(function(item) {
+                       var new_item = null;
+
+                       ul.childNodes.forEach(function(li) {
+                               if (li.getAttribute && li.getAttribute('data-value') === item)
+                                       new_item = li;
+                       });
+
+                       if (!new_item) {
+                               var markup,
+                                   tpl = sb.querySelector(sbox.template);
+
+                               if (tpl)
+                                       markup = (tpl.textContent || tpl.innerHTML || tpl.firstChild.data).replace(/^<!--|-->$/, '').trim();
+                               else
+                                       markup = '<li data-value="{{value}}">{{value}}</li>';
+
+                               new_item = E(markup.replace(/{{value}}/g, item));
+
+                               if (sbox.multi) {
+                                       sbox.transformItem(sb, new_item);
+                               }
+                               else {
+                                       var old = ul.querySelector('li[created]');
+                                       if (old)
+                                               ul.removeChild(old);
+
+                                       new_item.setAttribute('created', '');
+                               }
+
+                               new_item = ul.insertBefore(new_item, ul.lastElementChild);
+                       }
+
+                       sbox.toggleItem(sb, new_item, true);
+                       sbox.setFocus(sb, new_item, true);
+               });
+       },
+
+       closeAllDropdowns: function() {
+               document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) {
+                       s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {}));
+               });
+       },
+
+       handleClick: function(ev) {
+               var sb = ev.currentTarget;
+
+               if (!sb.hasAttribute('open')) {
+                       if (!matchesElem(ev.target, 'input'))
+                               this.openDropdown(sb);
+               }
+               else {
+                       var li = findParent(ev.target, 'li');
+                       if (li && li.parentNode.classList.contains('dropdown'))
+                               this.toggleItem(sb, li);
+                       else if (li && li.parentNode.classList.contains('preview'))
+                               this.closeDropdown(sb);
+               }
+
+               ev.preventDefault();
+               ev.stopPropagation();
+       },
+
+       handleKeydown: function(ev) {
+               var sb = ev.currentTarget;
+
+               if (matchesElem(ev.target, 'input'))
+                       return;
+
+               if (!sb.hasAttribute('open')) {
+                       switch (ev.keyCode) {
+                       case 37:
+                       case 38:
+                       case 39:
+                       case 40:
+                               this.openDropdown(sb);
+                               ev.preventDefault();
+                       }
+               }
+               else {
+                       var active = findParent(document.activeElement, 'li');
+
+                       switch (ev.keyCode) {
+                       case 27:
+                               this.closeDropdown(sb);
+                               break;
+
+                       case 13:
+                               if (active) {
+                                       if (!active.hasAttribute('selected'))
+                                               this.toggleItem(sb, active);
+                                       this.closeDropdown(sb);
+                                       ev.preventDefault();
+                               }
+                               break;
+
+                       case 32:
+                               if (active) {
+                                       this.toggleItem(sb, active);
+                                       ev.preventDefault();
+                               }
+                               break;
+
+                       case 38:
+                               if (active && active.previousElementSibling) {
+                                       this.setFocus(sb, active.previousElementSibling);
+                                       ev.preventDefault();
+                               }
+                               break;
+
+                       case 40:
+                               if (active && active.nextElementSibling) {
+                                       this.setFocus(sb, active.nextElementSibling);
+                                       ev.preventDefault();
+                               }
+                               break;
+                       }
+               }
+       },
+
+       handleDropdownClose: function(ev) {
+               var sb = ev.currentTarget;
+
+               this.closeDropdown(sb, true);
+       },
+
+       handleDropdownSelect: function(ev) {
+               var sb = ev.currentTarget,
+                   li = findParent(ev.target, 'li');
+
+               if (!li)
+                       return;
+
+               this.toggleItem(sb, li);
+               this.closeDropdown(sb, true);
+       },
+
+       handleMouseover: function(ev) {
+               var sb = ev.currentTarget;
+
+               if (!sb.hasAttribute('open'))
+                       return;
+
+               var li = findParent(ev.target, 'li');
+
+               if (li && li.parentNode.classList.contains('dropdown'))
+                       this.setFocus(sb, li);
+       },
+
+       handleFocus: function(ev) {
+               var sb = ev.currentTarget;
+
+               document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) {
+                       if (s !== sb || sb.hasAttribute('open'))
+                               s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {}));
+               });
+       },
+
+       handleCanaryFocus: function(ev) {
+               this.closeDropdown(ev.currentTarget.parentNode);
+       },
+
+       handleCreateKeydown: function(ev) {
+               var input = ev.currentTarget,
+                   sb = findParent(input, '.cbi-dropdown');
+
+               switch (ev.keyCode) {
+               case 13:
+                       ev.preventDefault();
+
+                       if (input.classList.contains('cbi-input-invalid'))
+                               return;
+
+                       this.createItems(sb, input.value);
+                       input.value = '';
+                       input.blur();
+                       break;
+               }
+       },
+
+       handleCreateFocus: function(ev) {
+               var input = ev.currentTarget,
+                   cbox = findParent(input, 'li').querySelector('input[type="checkbox"]'),
+                   sb = findParent(input, '.cbi-dropdown');
+
+               if (cbox)
+                       cbox.checked = true;
+
+               sb.setAttribute('locked-in', '');
+       },
+
+       handleCreateBlur: function(ev) {
+               var input = ev.currentTarget,
+                   cbox = findParent(input, 'li').querySelector('input[type="checkbox"]'),
+                   sb = findParent(input, '.cbi-dropdown');
+
+               if (cbox)
+                       cbox.checked = false;
+
+               sb.removeAttribute('locked-in');
+       },
+
+       handleCreateClick: function(ev) {
+               ev.currentTarget.querySelector(this.create).focus();
+       }
+};
+
+function cbi_dropdown_init(sb) {
+       if (!(this instanceof cbi_dropdown_init))
+               return new cbi_dropdown_init(sb);
+
+       this.multi = sb.hasAttribute('multiple');
+       this.optional = sb.hasAttribute('optional');
+       this.placeholder = sb.getAttribute('placeholder') || '---';
+       this.display_items = parseInt(sb.getAttribute('display-items') || 3);
+       this.dropdown_items = parseInt(sb.getAttribute('dropdown-items') || 5);
+       this.create = sb.getAttribute('item-create') || '.create-item-input';
+       this.template = sb.getAttribute('item-template') || 'script[type="item-template"]';
+
+       var ul = sb.querySelector('ul'),
+           more = sb.appendChild(E('span', { class: 'more', tabindex: -1 }, '···')),
+           open = sb.appendChild(E('span', { class: 'open', tabindex: -1 }, '▾')),
+           canary = sb.appendChild(E('div')),
+           create = sb.querySelector(this.create),
+           ndisplay = this.display_items,
+           n = 0;
+
+       if (this.multi) {
+               var items = ul.querySelectorAll('li');
+
+               for (var i = 0; i < items.length; i++) {
+                       this.transformItem(sb, items[i]);
+
+                       if (items[i].hasAttribute('selected') && ndisplay-- > 0)
+                               items[i].setAttribute('display', n++);
+               }
+       }
+       else {
+               if (this.optional && !ul.querySelector('li[data-value=""]')) {
+                       var placeholder = E('li', { placeholder: '' }, this.placeholder);
+                       ul.firstChild ? ul.insertBefore(placeholder, ul.firstChild) : ul.appendChild(placeholder);
+               }
+
+               var items = ul.querySelectorAll('li'),
+                   sel = sb.querySelectorAll('[selected]');
+
+               sel.forEach(function(s) {
+                       s.removeAttribute('selected');
+               });
+
+               var s = sel[0] || items[0];
+               if (s) {
+                       s.setAttribute('selected', '');
+                       s.setAttribute('display', n++);
+               }
+
+               ndisplay--;
+       }
+
+       this.saveValues(sb, ul);
+
+       ul.setAttribute('tabindex', -1);
+       sb.setAttribute('tabindex', 0);
+
+       if (ndisplay < 0)
+               sb.setAttribute('more', '')
+       else
+               sb.removeAttribute('more');
+
+       if (ndisplay === this.display_items)
+               sb.setAttribute('empty', '')
+       else
+               sb.removeAttribute('empty');
+
+       more.innerHTML = (ndisplay === this.display_items) ? this.placeholder : '···';
+
+
+       sb.addEventListener('click', this.handleClick.bind(this));
+       sb.addEventListener('keydown', this.handleKeydown.bind(this));
+       sb.addEventListener('cbi-dropdown-close', this.handleDropdownClose.bind(this));
+       sb.addEventListener('cbi-dropdown-select', this.handleDropdownSelect.bind(this));
+
+       if ('ontouchstart' in window) {
+               sb.addEventListener('touchstart', function(ev) { ev.stopPropagation(); });
+               window.addEventListener('touchstart', this.closeAllDropdowns);
+       }
+       else {
+               sb.addEventListener('mouseover', this.handleMouseover.bind(this));
+               sb.addEventListener('focus', this.handleFocus.bind(this));
+
+               canary.addEventListener('focus', this.handleCanaryFocus.bind(this));
+
+               window.addEventListener('mouseover', this.setFocus);
+               window.addEventListener('click', this.closeAllDropdowns);
+       }
+
+       if (create) {
+               create.addEventListener('keydown', this.handleCreateKeydown.bind(this));
+               create.addEventListener('focus', this.handleCreateFocus.bind(this));
+               create.addEventListener('blur', this.handleCreateBlur.bind(this));
+
+               var li = findParent(create, 'li');
+
+               li.setAttribute('unselectable', '');
+               li.addEventListener('click', this.handleCreateClick.bind(this));
+       }
+}
+
+cbi_dropdown_init.prototype = CBIDropdown;
+
+function cbi_update_table(table, data, placeholder) {
+       var target = isElem(table) ? table : document.querySelector(table);
+
+       if (!isElem(target))
+               return;
+
+       target.querySelectorAll('.tr.table-titles, .cbi-section-table-titles').forEach(function(thead) {
+               var titles = [];
+
+               thead.querySelectorAll('.th').forEach(function(th) {
+                       titles.push(th);
+               });
+
+               if (Array.isArray(data)) {
+                       var n = 0, rows = target.querySelectorAll('.tr');
+
+                       data.forEach(function(row) {
+                               var trow = E('div', { 'class': 'tr' });
+
+                               for (var i = 0; i < titles.length; i++) {
+                                       var text = (titles[i].innerText || '').trim();
+                                       var td = trow.appendChild(E('div', {
+                                               'class': titles[i].className,
+                                               'data-title': (text !== '') ? text : null
+                                       }, row[i] || ''));
+
+                                       td.classList.remove('th');
+                                       td.classList.add('td');
+                               }
+
+                               trow.classList.add('cbi-rowstyle-%d'.format((n++ % 2) ? 2 : 1));
+
+                               if (rows[n])
+                                       target.replaceChild(trow, rows[n]);
+                               else
+                                       target.appendChild(trow);
+                       });
+
+                       while (rows[++n])
+                               target.removeChild(rows[n]);
+
+                       if (placeholder && target.firstElementChild === target.lastElementChild) {
+                               var trow = target.appendChild(E('div', { 'class': 'tr placeholder' }));
+                               var td = trow.appendChild(E('div', { 'class': titles[0].className }, placeholder));
+
+                               td.classList.remove('th');
+                               td.classList.add('td');
+                       }
+               }
+               else {
+                       thead.parentNode.style.display = 'none';
+
+                       thead.parentNode.querySelectorAll('.tr, .cbi-section-table-row').forEach(function(trow) {
+                               if (trow !== thead) {
+                                       var n = 0;
+                                       trow.querySelectorAll('.th, .td').forEach(function(td) {
+                                               if (n < titles.length) {
+                                                       var text = (titles[n++].innerText || '').trim();
+                                                       if (text !== '')
+                                                               td.setAttribute('data-title', text);
+                                               }
+                                       });
+                               }
+                       });
+
+                       thead.parentNode.style.display = '';
+               }
+       });
+}
+
+function showModal(title, children)
+{
+       return L.showModal(title, children);
+}
+
+function hideModal()
+{
+       return L.hideModal();
+}
+
+
+document.addEventListener('DOMContentLoaded', function() {
+       document.addEventListener('validation-failure', function(ev) {
+               if (ev.target === document.activeElement)
+                       L.showTooltip(ev);
+       });
+
+       document.addEventListener('validation-success', function(ev) {
+               if (ev.target === document.activeElement)
+                       L.hideTooltip(ev);
+       });
+
+       document.querySelectorAll('.table').forEach(cbi_update_table);
+});
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif
new file mode 100644 (file)
index 0000000..0888abf
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif
new file mode 100644 (file)
index 0000000..82ae7ed
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/arrow.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/arrow.gif
new file mode 100644 (file)
index 0000000..10d797e
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/arrow.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif
new file mode 100644 (file)
index 0000000..f0bb6a4
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif
new file mode 100644 (file)
index 0000000..f99a538
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif
new file mode 100644 (file)
index 0000000..e06e37c
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif
new file mode 100644 (file)
index 0000000..eebe0ff
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif
new file mode 100644 (file)
index 0000000..342a846
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/find.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/find.gif
new file mode 100644 (file)
index 0000000..9ae5e34
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/find.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/folder.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/folder.gif
new file mode 100644 (file)
index 0000000..22b583b
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/folder.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/help.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/help.gif
new file mode 100644 (file)
index 0000000..9dfa0e1
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/help.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/key.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/key.gif
new file mode 100644 (file)
index 0000000..e3853e5
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/key.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif
new file mode 100644 (file)
index 0000000..f0bb78d
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif
new file mode 100644 (file)
index 0000000..8268958
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/remove.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/remove.gif
new file mode 100644 (file)
index 0000000..bf43a0a
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/remove.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reset.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reset.gif
new file mode 100644 (file)
index 0000000..c941c19
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reset.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif
new file mode 100644 (file)
index 0000000..35e9499
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif
new file mode 100644 (file)
index 0000000..e823417
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/user.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/user.gif
new file mode 100644 (file)
index 0000000..dcb5c2a
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/user.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias.png
new file mode 100644 (file)
index 0000000..8772bba
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png
new file mode 100644 (file)
index 0000000..38d0531
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png
new file mode 100644 (file)
index 0000000..7faadec
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png
new file mode 100644 (file)
index 0000000..b3e620b
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png
new file mode 100644 (file)
index 0000000..e3d24f2
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png
new file mode 100644 (file)
index 0000000..d8792df
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif
new file mode 100644 (file)
index 0000000..7154314
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png
new file mode 100644 (file)
index 0000000..5a2b235
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png
new file mode 100644 (file)
index 0000000..8105e77
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png
new file mode 100644 (file)
index 0000000..b3a8118
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png
new file mode 100644 (file)
index 0000000..333b155
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png
new file mode 100644 (file)
index 0000000..b465de3
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png
new file mode 100644 (file)
index 0000000..cd7bcaf
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png
new file mode 100644 (file)
index 0000000..f7a3658
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png
new file mode 100644 (file)
index 0000000..4a11356
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png
new file mode 100644 (file)
index 0000000..be99b19
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png
new file mode 100644 (file)
index 0000000..54588d2
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png
new file mode 100644 (file)
index 0000000..63eabfe
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png
new file mode 100644 (file)
index 0000000..ca79d81
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png
new file mode 100644 (file)
index 0000000..be99b19
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png
new file mode 100644 (file)
index 0000000..54588d2
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png
new file mode 100644 (file)
index 0000000..80a23e8
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png
new file mode 100644 (file)
index 0000000..e989a2b
Binary files /dev/null and b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png differ
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/luci.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/luci.js
new file mode 100644 (file)
index 0000000..4cb8bf4
--- /dev/null
@@ -0,0 +1,511 @@
+(function(window, document, undefined) {
+       var modalDiv = null,
+           tooltipDiv = null,
+           tooltipTimeout = null,
+           dummyElem = null,
+           domParser = null;
+
+       LuCI.prototype = {
+               /* URL construction helpers */
+               path: function(prefix, parts) {
+                       var url = [ prefix || '' ];
+
+                       for (var i = 0; i < parts.length; i++)
+                               if (/^(?:[a-zA-Z0-9_.%,;-]+\/)*[a-zA-Z0-9_.%,;-]+$/.test(parts[i]))
+                                       url.push('/', parts[i]);
+
+                       if (url.length === 1)
+                               url.push('/');
+
+                       return url.join('');
+               },
+
+               url: function() {
+                       return this.path(this.env.scriptname, arguments);
+               },
+
+               resource: function() {
+                       return this.path(this.env.resource, arguments);
+               },
+
+               location: function() {
+                       return this.path(this.env.scriptname, this.env.requestpath);
+               },
+
+
+               /* HTTP resource fetching */
+               get: function(url, args, cb) {
+                       return this.poll(0, url, args, cb, false);
+               },
+
+               post: function(url, args, cb) {
+                       return this.poll(0, url, args, cb, true);
+               },
+
+               poll: function(interval, url, args, cb, post) {
+                       var data = post ? { token: this.env.token } : null;
+
+                       if (!/^(?:\/|\S+:\/\/)/.test(url))
+                               url = this.url(url);
+
+                       if (typeof(args) === 'object' && args !== null) {
+                               data = data || {};
+
+                               for (var key in args)
+                                       if (args.hasOwnProperty(key))
+                                               switch (typeof(args[key])) {
+                                               case 'string':
+                                               case 'number':
+                                               case 'boolean':
+                                                       data[key] = args[key];
+                                                       break;
+
+                                               case 'object':
+                                                       data[key] = JSON.stringify(args[key]);
+                                                       break;
+                                               }
+                       }
+
+                       if (interval > 0)
+                               return XHR.poll(interval, url, data, cb, post);
+                       else if (post)
+                               return XHR.post(url, data, cb);
+                       else
+                               return XHR.get(url, data, cb);
+               },
+
+               stop: function(entry) { XHR.stop(entry) },
+               halt: function() { XHR.halt() },
+               run: function() { XHR.run() },
+
+
+               /* Modal dialog */
+               showModal: function(title, children) {
+                       var dlg = modalDiv.firstElementChild;
+
+                       dlg.setAttribute('class', 'modal');
+
+                       this.dom.content(dlg, this.dom.create('h4', {}, title));
+                       this.dom.append(dlg, children);
+
+                       document.body.classList.add('modal-overlay-active');
+
+                       return dlg;
+               },
+
+               hideModal: function() {
+                       document.body.classList.remove('modal-overlay-active');
+               },
+
+
+               /* Tooltip */
+               showTooltip: function(ev) {
+                       var target = findParent(ev.target, '[data-tooltip]');
+
+                       if (!target)
+                               return;
+
+                       if (tooltipTimeout !== null) {
+                               window.clearTimeout(tooltipTimeout);
+                               tooltipTimeout = null;
+                       }
+
+                       var rect = target.getBoundingClientRect(),
+                           x = rect.left              + window.pageXOffset,
+                           y = rect.top + rect.height + window.pageYOffset;
+
+                       tooltipDiv.className = 'cbi-tooltip';
+                       tooltipDiv.innerHTML = '▲ ';
+                       tooltipDiv.firstChild.data += target.getAttribute('data-tooltip');
+
+                       if (target.hasAttribute('data-tooltip-style'))
+                               tooltipDiv.classList.add(target.getAttribute('data-tooltip-style'));
+
+                       if ((y + tooltipDiv.offsetHeight) > (window.innerHeight + window.pageYOffset)) {
+                               y -= (tooltipDiv.offsetHeight + target.offsetHeight);
+                               tooltipDiv.firstChild.data = '▼ ' + tooltipDiv.firstChild.data.substr(2);
+                       }
+
+                       tooltipDiv.style.top = y + 'px';
+                       tooltipDiv.style.left = x + 'px';
+                       tooltipDiv.style.opacity = 1;
+
+                       tooltipDiv.dispatchEvent(new CustomEvent('tooltip-open', {
+                               bubbles: true,
+                               detail: { target: target }
+                       }));
+               },
+
+               hideTooltip: function(ev) {
+                       if (ev.target === tooltipDiv || ev.relatedTarget === tooltipDiv ||
+                           tooltipDiv.contains(ev.target) || tooltipDiv.contains(ev.relatedTarget))
+                               return;
+
+                       if (tooltipTimeout !== null) {
+                               window.clearTimeout(tooltipTimeout);
+                               tooltipTimeout = null;
+                       }
+
+                       tooltipDiv.style.opacity = 0;
+                       tooltipTimeout = window.setTimeout(function() { tooltipDiv.removeAttribute('style'); }, 250);
+
+                       tooltipDiv.dispatchEvent(new CustomEvent('tooltip-close', { bubbles: true }));
+               },
+
+
+               /* Widget helper */
+               itemlist: function(node, items, separators) {
+                       var children = [];
+
+                       if (!Array.isArray(separators))
+                               separators = [ separators || E('br') ];
+
+                       for (var i = 0; i < items.length; i += 2) {
+                               if (items[i+1] !== null && items[i+1] !== undefined) {
+                                       var sep = separators[(i/2) % separators.length],
+                                           cld = [];
+
+                                       children.push(E('span', { class: 'nowrap' }, [
+                                               items[i] ? E('strong', items[i] + ': ') : '',
+                                               items[i+1]
+                                       ]));
+
+                                       if ((i+2) < items.length)
+                                               children.push(this.dom.elem(sep) ? sep.cloneNode(true) : sep);
+                               }
+                       }
+
+                       this.dom.content(node, children);
+
+                       return node;
+               }
+       };
+
+       /* Tabs */
+       LuCI.prototype.tabs = {
+               init: function() {
+                       var groups = [], prevGroup = null, currGroup = null;
+
+                       document.querySelectorAll('[data-tab]').forEach(function(tab) {
+                               var parent = tab.parentNode;
+
+                               if (!parent.hasAttribute('data-tab-group'))
+                                       parent.setAttribute('data-tab-group', groups.length);
+
+                               currGroup = +parent.getAttribute('data-tab-group');
+
+                               if (currGroup !== prevGroup) {
+                                       prevGroup = currGroup;
+
+                                       if (!groups[currGroup])
+                                               groups[currGroup] = [];
+                               }
+
+                               groups[currGroup].push(tab);
+                       });
+
+                       for (var i = 0; i < groups.length; i++)
+                               this.initTabGroup(groups[i]);
+
+                       document.addEventListener('dependency-update', this.updateTabs.bind(this));
+
+                       this.updateTabs();
+
+                       if (!groups.length)
+                               this.setActiveTabId(-1, -1);
+               },
+
+               initTabGroup: function(panes) {
+                       if (!Array.isArray(panes) || panes.length === 0)
+                               return;
+
+                       var menu = E('ul', { 'class': 'cbi-tabmenu' }),
+                           group = panes[0].parentNode,
+                           groupId = +group.getAttribute('data-tab-group'),
+                           selected = null;
+
+                       for (var i = 0, pane; pane = panes[i]; i++) {
+                               var name = pane.getAttribute('data-tab'),
+                                   title = pane.getAttribute('data-tab-title'),
+                                   active = pane.getAttribute('data-tab-active') === 'true';
+
+                               menu.appendChild(E('li', {
+                                       'class': active ? 'cbi-tab' : 'cbi-tab-disabled',
+                                       'data-tab': name
+                               }, E('a', {
+                                       'href': '#',
+                                       'click': this.switchTab.bind(this)
+                               }, title)));
+
+                               if (active)
+                                       selected = i;
+                       }
+
+                       group.parentNode.insertBefore(menu, group);
+
+                       if (selected === null) {
+                               selected = this.getActiveTabId(groupId);
+
+                               if (selected < 0 || selected >= panes.length)
+                                       selected = 0;
+
+                               menu.childNodes[selected].classList.add('cbi-tab');
+                               menu.childNodes[selected].classList.remove('cbi-tab-disabled');
+                               panes[selected].setAttribute('data-tab-active', 'true');
+
+                               this.setActiveTabId(groupId, selected);
+                       }
+               },
+
+               getActiveTabState: function() {
+                       var page = document.body.getAttribute('data-page');
+
+                       try {
+                               var val = JSON.parse(window.sessionStorage.getItem('tab'));
+                               if (val.page === page && Array.isArray(val.groups))
+                                       return val;
+                       }
+                       catch(e) {}
+
+                       window.sessionStorage.removeItem('tab');
+                       return { page: page, groups: [] };
+               },
+
+               getActiveTabId: function(groupId) {
+                       return +this.getActiveTabState().groups[groupId] || 0;
+               },
+
+               setActiveTabId: function(groupId, tabIndex) {
+                       try {
+                               var state = this.getActiveTabState();
+                                   state.groups[groupId] = tabIndex;
+
+                           window.sessionStorage.setItem('tab', JSON.stringify(state));
+                       }
+                       catch (e) { return false; }
+
+                       return true;
+               },
+
+               updateTabs: function(ev) {
+                       document.querySelectorAll('[data-tab-title]').forEach(function(pane) {
+                               var menu = pane.parentNode.previousElementSibling,
+                                   tab = menu.querySelector('[data-tab="%s"]'.format(pane.getAttribute('data-tab'))),
+                                   n_errors = pane.querySelectorAll('.cbi-input-invalid').length;
+
+                               if (!pane.firstElementChild) {
+                                       tab.style.display = 'none';
+                                       tab.classList.remove('flash');
+                               }
+                               else if (tab.style.display === 'none') {
+                                       tab.style.display = '';
+                                       requestAnimationFrame(function() { tab.classList.add('flash') });
+                               }
+
+                               if (n_errors) {
+                                       tab.setAttribute('data-errors', n_errors);
+                                       tab.setAttribute('data-tooltip', _('%d invalid field(s)').format(n_errors));
+                                       tab.setAttribute('data-tooltip-style', 'error');
+                               }
+                               else {
+                                       tab.removeAttribute('data-errors');
+                                       tab.removeAttribute('data-tooltip');
+                               }
+                       });
+               },
+
+               switchTab: function(ev) {
+                       var tab = ev.target.parentNode,
+                           name = tab.getAttribute('data-tab'),
+                           menu = tab.parentNode,
+                           group = menu.nextElementSibling,
+                           groupId = +group.getAttribute('data-tab-group'),
+                           index = 0;
+
+                       ev.preventDefault();
+
+                       if (!tab.classList.contains('cbi-tab-disabled'))
+                               return;
+
+                       menu.querySelectorAll('[data-tab]').forEach(function(tab) {
+                               tab.classList.remove('cbi-tab');
+                               tab.classList.remove('cbi-tab-disabled');
+                               tab.classList.add(
+                                       tab.getAttribute('data-tab') === name ? 'cbi-tab' : 'cbi-tab-disabled');
+                       });
+
+                       group.childNodes.forEach(function(pane) {
+                               if (L.dom.matches(pane, '[data-tab]')) {
+                                       if (pane.getAttribute('data-tab') === name) {
+                                               pane.setAttribute('data-tab-active', 'true');
+                                               L.tabs.setActiveTabId(groupId, index);
+                                       }
+                                       else {
+                                               pane.setAttribute('data-tab-active', 'false');
+                                       }
+
+                                       index++;
+                               }
+                       });
+               }
+       };
+
+       /* DOM manipulation */
+       LuCI.prototype.dom = {
+               elem: function(e) {
+                       return (typeof(e) === 'object' && e !== null && 'nodeType' in e);
+               },
+
+               parse: function(s) {
+                       var elem;
+
+                       try {
+                               domParser = domParser || new DOMParser();
+                               elem = domParser.parseFromString(s, 'text/html').body.firstChild;
+                       }
+                       catch(e) {}
+
+                       if (!elem) {
+                               try {
+                                       dummyElem = dummyElem || document.createElement('div');
+                                       dummyElem.innerHTML = s;
+                                       elem = dummyElem.firstChild;
+                               }
+                               catch (e) {}
+                       }
+
+                       return elem || null;
+               },
+
+               matches: function(node, selector) {
+                       var m = this.elem(node) ? node.matches || node.msMatchesSelector : null;
+                       return m ? m.call(node, selector) : false;
+               },
+
+               parent: function(node, selector) {
+                       if (this.elem(node) && node.closest)
+                               return node.closest(selector);
+
+                       while (this.elem(node))
+                               if (this.matches(node, selector))
+                                       return node;
+                               else
+                                       node = node.parentNode;
+
+                       return null;
+               },
+
+               append: function(node, children) {
+                       if (!this.elem(node))
+                               return null;
+
+                       if (Array.isArray(children)) {
+                               for (var i = 0; i < children.length; i++)
+                                       if (this.elem(children[i]))
+                                               node.appendChild(children[i]);
+                                       else if (children !== null && children !== undefined)
+                                               node.appendChild(document.createTextNode('' + children[i]));
+
+                               return node.lastChild;
+                       }
+                       else if (typeof(children) === 'function') {
+                               return this.append(node, children(node));
+                       }
+                       else if (this.elem(children)) {
+                               return node.appendChild(children);
+                       }
+                       else if (children !== null && children !== undefined) {
+                               node.innerHTML = '' + children;
+                               return node.lastChild;
+                       }
+
+                       return null;
+               },
+
+               content: function(node, children) {
+                       if (!this.elem(node))
+                               return null;
+
+                       while (node.firstChild)
+                               node.removeChild(node.firstChild);
+
+                       return this.append(node, children);
+               },
+
+               attr: function(node, key, val) {
+                       if (!this.elem(node))
+                               return null;
+
+                       var attr = null;
+
+                       if (typeof(key) === 'object' && key !== null)
+                               attr = key;
+                       else if (typeof(key) === 'string')
+                               attr = {}, attr[key] = val;
+
+                       for (key in attr) {
+                               if (!attr.hasOwnProperty(key) || attr[key] === null || attr[key] === undefined)
+                                       continue;
+
+                               switch (typeof(attr[key])) {
+                               case 'function':
+                                       node.addEventListener(key, attr[key]);
+                                       break;
+
+                               case 'object':
+                                       node.setAttribute(key, JSON.stringify(attr[key]));
+                                       break;
+
+                               default:
+                                       node.setAttribute(key, attr[key]);
+                               }
+                       }
+               },
+
+               create: function() {
+                       var html = arguments[0],
+                           attr = (arguments[1] instanceof Object && !Array.isArray(arguments[1])) ? arguments[1] : null,
+                           data = attr ? arguments[2] : arguments[1],
+                           elem;
+
+                       if (this.elem(html))
+                               elem = html;
+                       else if (html.charCodeAt(0) === 60)
+                               elem = this.parse(html);
+                       else
+                               elem = document.createElement(html);
+
+                       if (!elem)
+                               return null;
+
+                       this.attr(elem, attr);
+                       this.append(elem, data);
+
+                       return elem;
+               }
+       };
+
+       /* Setup */
+       LuCI.prototype.setupDOM = function(ev) {
+               this.tabs.init();
+       };
+
+       function LuCI(env) {
+               this.env = env;
+
+               modalDiv = document.body.appendChild(
+                       this.dom.create('div', { id: 'modal_overlay' },
+                               this.dom.create('div', { class: 'modal', role: 'dialog', 'aria-modal': true })));
+
+               tooltipDiv = document.body.appendChild(this.dom.create('div', { class: 'cbi-tooltip' }));
+
+               document.addEventListener('mouseover', this.showTooltip.bind(this), true);
+               document.addEventListener('mouseout', this.hideTooltip.bind(this), true);
+               document.addEventListener('focus', this.showTooltip.bind(this), true);
+               document.addEventListener('blur', this.hideTooltip.bind(this), true);
+
+               document.addEventListener('DOMContentLoaded', this.setupDOM.bind(this));
+       }
+
+       window.LuCI = LuCI;
+})(window, document);
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js
new file mode 100644 (file)
index 0000000..3133898
--- /dev/null
@@ -0,0 +1,250 @@
+/*
+ * xhr.js - XMLHttpRequest helper class
+ * (c) 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ */
+
+XHR.prototype = {
+       _encode: function(obj) {
+               obj = obj ? obj : { };
+               obj['_'] = Math.random();
+
+               if (typeof obj == 'object') {
+                       var code = '';
+                       var self = this;
+
+                       for (var k in obj)
+                               code += (code ? '&' : '') +
+                                       k + '=' + encodeURIComponent(obj[k]);
+
+                       return code;
+               }
+
+               return obj;
+       },
+
+       _response: function(callback, ts) {
+               if (this._xmlHttp.readyState !== 4)
+                       return;
+
+               var status = this._xmlHttp.status,
+                   login = this._xmlHttp.getResponseHeader("X-LuCI-Login-Required"),
+                   type = this._xmlHttp.getResponseHeader("Content-Type"),
+                   json = null;
+
+               if (status === 403 && login === 'yes') {
+                       XHR.halt();
+
+                       showModal(_('Session expired'), [
+                               E('div', { class: 'alert-message warning' },
+                                       _('A new login is required since the authentication session expired.')),
+                               E('div', { class: 'right' },
+                                       E('div', {
+                                               class: 'btn primary',
+                                               click: function() {
+                                                       var loc = window.location;
+                                                       window.location = loc.protocol + '//' + loc.host + loc.pathname + loc.search;
+                                               }
+                                       }, _('To login…')))
+                       ]);
+               }
+               else if (type && type.toLowerCase().match(/^application\/json\b/)) {
+                       try {
+                               json = JSON.parse(this._xmlHttp.responseText);
+                       }
+                       catch(e) {
+                               json = null;
+                       }
+               }
+
+               callback(this._xmlHttp, json, Date.now() - ts);
+       },
+
+       busy: function() {
+               if (!this._xmlHttp)
+                       return false;
+
+               switch (this._xmlHttp.readyState)
+               {
+                       case 1:
+                       case 2:
+                       case 3:
+                               return true;
+
+                       default:
+                               return false;
+               }
+       },
+
+       abort: function() {
+               if (this.busy())
+                       this._xmlHttp.abort();
+       },
+
+       get: function(url, data, callback, timeout) {
+               this._xmlHttp = new XMLHttpRequest();
+
+               var xhr = this._xmlHttp,
+                   code = this._encode(data);
+
+               url = location.protocol + '//' + location.host + url;
+
+               if (code)
+                       if (url.substr(url.length-1,1) == '&')
+                               url += code;
+                       else
+                               url += '?' + code;
+
+               xhr.open('GET', url, true);
+
+               if (!isNaN(timeout))
+                       xhr.timeout = timeout;
+
+               xhr.onreadystatechange = this._response.bind(this, callback, Date.now());
+               xhr.send(null);
+       },
+
+       post: function(url, data, callback, timeout) {
+               this._xmlHttp = new XMLHttpRequest();
+
+               var xhr = this._xmlHttp,
+                   code = this._encode(data);
+
+               xhr.open('POST', url, true);
+
+               if (!isNaN(timeout))
+                       xhr.timeout = timeout;
+
+               xhr.onreadystatechange = this._response.bind(this, callback, Date.now());
+               xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+               xhr.send(code);
+       },
+
+       cancel: function() {
+               this._xmlHttp.onreadystatechange = function() {};
+               this._xmlHttp.abort();
+       },
+
+       send_form: function(form, callback, extra_values) {
+               var code = '';
+
+               for (var i = 0; i < form.elements.length; i++) {
+                       var e = form.elements[i];
+
+                       if (e.options) {
+                               code += (code ? '&' : '') +
+                                       form.elements[i].name + '=' + encodeURIComponent(
+                                               e.options[e.selectedIndex].value
+                                       );
+                       }
+                       else if (e.length) {
+                               for (var j = 0; j < e.length; j++)
+                                       if (e[j].name) {
+                                               code += (code ? '&' : '') +
+                                                       e[j].name + '=' + encodeURIComponent(e[j].value);
+                                       }
+                       }
+                       else {
+                               code += (code ? '&' : '') +
+                                       e.name + '=' + encodeURIComponent(e.value);
+                       }
+               }
+
+               if (typeof extra_values == 'object')
+                       for (var key in extra_values)
+                               code += (code ? '&' : '') +
+                                       key + '=' + encodeURIComponent(extra_values[key]);
+
+               return (form.method == 'get'
+                       ? this.get(form.getAttribute('action'), code, callback)
+                       : this.post(form.getAttribute('action'), code, callback));
+       }
+}
+
+XHR.get = function(url, data, callback) {
+       (new XHR()).get(url, data, callback);
+}
+
+XHR.post = function(url, data, callback) {
+       (new XHR()).post(url, data, callback);
+}
+
+XHR.poll = function(interval, url, data, callback, post) {
+       if (isNaN(interval) || interval <= 0)
+               interval = L.env.pollinterval;
+
+       if (!XHR._q) {
+               XHR._t = 0;
+               XHR._q = [ ];
+               XHR._r = function() {
+                       for (var i = 0, e = XHR._q[0]; i < XHR._q.length; e = XHR._q[++i])
+                       {
+                               if (!(XHR._t % e.interval) && !e.xhr.busy())
+                                       e.xhr[post ? 'post' : 'get'](e.url, e.data, e.callback, e.interval * 1000 * 5 - 5);
+                       }
+
+                       XHR._t++;
+               };
+       }
+
+       var e = {
+               interval: interval,
+               callback: callback,
+               url:      url,
+               data:     data,
+               xhr:      new XHR()
+       };
+
+       XHR._q.push(e);
+
+       return e;
+}
+
+XHR.stop = function(e) {
+       for (var i = 0; XHR._q && XHR._q[i]; i++) {
+               if (XHR._q[i] === e) {
+                       e.xhr.cancel();
+                       XHR._q.splice(i, 1);
+                       return true;
+               }
+       }
+
+       return false;
+}
+
+XHR.halt = function() {
+       if (XHR._i) {
+               /* show & set poll indicator */
+               try {
+                       document.getElementById('xhr_poll_status').style.display = '';
+                       document.getElementById('xhr_poll_status_on').style.display = 'none';
+                       document.getElementById('xhr_poll_status_off').style.display = '';
+               } catch(e) { }
+
+               window.clearInterval(XHR._i);
+               XHR._i = null;
+       }
+}
+
+XHR.run = function() {
+       if (XHR._r && !XHR._i) {
+               /* show & set poll indicator */
+               try {
+                       document.getElementById('xhr_poll_status').style.display = '';
+                       document.getElementById('xhr_poll_status_on').style.display = '';
+                       document.getElementById('xhr_poll_status_off').style.display = 'none';
+               } catch(e) { }
+
+               /* kick first round manually to prevent one second lag when setting up
+                * the poll interval */
+               XHR._r();
+               XHR._i = window.setInterval(XHR._r, 1000);
+       }
+}
+
+XHR.running = function() {
+       return !!(XHR._r && XHR._i);
+}
+
+function XHR() {}
+
+document.addEventListener('DOMContentLoaded', XHR.run);
diff --git a/package/luci/modules/luci-base/luasrc/cacheloader.lua b/package/luci/modules/luci-base/luasrc/cacheloader.lua
new file mode 100644 (file)
index 0000000..11e5f69
--- /dev/null
@@ -0,0 +1,12 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local config = require "luci.config"
+local ccache = require "luci.ccache"
+
+module "luci.cacheloader"
+
+if config.ccache and config.ccache.enable == "1" then
+       ccache.cache_ondemand()
+end
\ No newline at end of file
diff --git a/package/luci/modules/luci-base/luasrc/cbi.lua b/package/luci/modules/luci-base/luasrc/cbi.lua
new file mode 100644 (file)
index 0000000..971830f
--- /dev/null
@@ -0,0 +1,1965 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.cbi", package.seeall)
+
+require("luci.template")
+local util = require("luci.util")
+require("luci.http")
+
+
+--local event      = require "luci.sys.event"
+local fs         = require("nixio.fs")
+local uci        = require("luci.model.uci")
+local datatypes  = require("luci.cbi.datatypes")
+local dispatcher = require("luci.dispatcher")
+local class      = util.class
+local instanceof = util.instanceof
+
+FORM_NODATA  =  0
+FORM_PROCEED =  0
+FORM_VALID   =  1
+FORM_DONE       =  1
+FORM_INVALID = -1
+FORM_CHANGED =  2
+FORM_SKIP    =  4
+
+AUTO = true
+
+CREATE_PREFIX = "cbi.cts."
+REMOVE_PREFIX = "cbi.rts."
+RESORT_PREFIX = "cbi.sts."
+FEXIST_PREFIX = "cbi.cbe."
+
+-- Loads a CBI map from given file, creating an environment and returns it
+function load(cbimap, ...)
+       local fs   = require "nixio.fs"
+       local i18n = require "luci.i18n"
+       require("luci.config")
+       require("luci.util")
+
+       local upldir = "/etc/luci-uploads/"
+       local cbidir = luci.util.libpath() .. "/model/cbi/"
+       local func, err
+
+       if fs.access(cbidir..cbimap..".lua") then
+               func, err = loadfile(cbidir..cbimap..".lua")
+       elseif fs.access(cbimap) then
+               func, err = loadfile(cbimap)
+       else
+               func, err = nil, "Model '" .. cbimap .. "' not found!"
+       end
+
+       assert(func, err)
+
+       local env = {
+               translate=i18n.translate,
+               translatef=i18n.translatef,
+               arg={...}
+       }
+
+       setfenv(func, setmetatable(env, {__index =
+               function(tbl, key)
+                       return rawget(tbl, key) or _M[key] or _G[key]
+               end}))
+
+       local maps       = { func() }
+       local uploads    = { }
+       local has_upload = false
+
+       for i, map in ipairs(maps) do
+               if not instanceof(map, Node) then
+                       error("CBI map returns no valid map object!")
+                       return nil
+               else
+                       map:prepare()
+                       if map.upload_fields then
+                               has_upload = true
+                               for _, field in ipairs(map.upload_fields) do
+                                       uploads[
+                                               field.config .. '.' ..
+                                               (field.section.sectiontype or '1') .. '.' ..
+                                               field.option
+                                       ] = true
+                               end
+                       end
+               end
+       end
+
+       if has_upload then
+               local uci = luci.model.uci.cursor()
+               local prm = luci.http.context.request.message.params
+               local fd, cbid
+
+               luci.http.setfilehandler(
+                       function( field, chunk, eof )
+                               if not field then return end
+                               if field.name and not cbid then
+                                       local c, s, o = field.name:gmatch(
+                                               "cbid%.([^%.]+)%.([^%.]+)%.([^%.]+)"
+                                       )()
+
+                                       if c and s and o then
+                                               local t = uci:get( c, s ) or s
+                                               if uploads[c.."."..t.."."..o] then
+                                                       local path = upldir .. field.name
+                                                       fd = io.open(path, "w")
+                                                       if fd then
+                                                               cbid = field.name
+                                                               prm[cbid] = path
+                                                       end
+                                               end
+                                       end
+                               end
+
+                               if field.name == cbid and fd then
+                                       fd:write(chunk)
+                               end
+
+                               if eof and fd then
+                                       fd:close()
+                                       fd   = nil
+                                       cbid = nil
+                               end
+                       end
+               )
+       end
+
+       return maps
+end
+
+--
+-- Compile a datatype specification into a parse tree for evaluation later on
+--
+local cdt_cache = { }
+
+function compile_datatype(code)
+       local i
+       local pos = 0
+       local esc = false
+       local depth = 0
+       local stack = { }
+
+       for i = 1, #code+1 do
+               local byte = code:byte(i) or 44
+               if esc then
+                       esc = false
+               elseif byte == 92 then
+                       esc = true
+               elseif byte == 40 or byte == 44 then
+                       if depth <= 0 then
+                               if pos < i then
+                                       local label = code:sub(pos, i-1)
+                                               :gsub("\\(.)", "%1")
+                                               :gsub("^%s+", "")
+                                               :gsub("%s+$", "")
+
+                                       if #label > 0 and tonumber(label) then
+                                               stack[#stack+1] = tonumber(label)
+                                       elseif label:match("^'.*'$") or label:match('^".*"$') then
+                                               stack[#stack+1] = label:gsub("[\"'](.*)[\"']", "%1")
+                                       elseif type(datatypes[label]) == "function" then
+                                               stack[#stack+1] = datatypes[label]
+                                               stack[#stack+1] = { }
+                                       else
+                                               error("Datatype error, bad token %q" % label)
+                                       end
+                               end
+                               pos = i + 1
+                       end
+                       depth = depth + (byte == 40 and 1 or 0)
+               elseif byte == 41 then
+                       depth = depth - 1
+                       if depth <= 0 then
+                               if type(stack[#stack-1]) ~= "function" then
+                                       error("Datatype error, argument list follows non-function")
+                               end
+                               stack[#stack] = compile_datatype(code:sub(pos, i-1))
+                               pos = i + 1
+                       end
+               end
+       end
+
+       return stack
+end
+
+function verify_datatype(dt, value)
+       if dt and #dt > 0 then
+               if not cdt_cache[dt] then
+                       local c = compile_datatype(dt)
+                       if c and type(c[1]) == "function" then
+                               cdt_cache[dt] = c
+                       else
+                               error("Datatype error, not a function expression")
+                       end
+               end
+               if cdt_cache[dt] then
+                       return cdt_cache[dt][1](value, unpack(cdt_cache[dt][2]))
+               end
+       end
+       return true
+end
+
+
+-- Node pseudo abstract class
+Node = class()
+
+function Node.__init__(self, title, description)
+       self.children = {}
+       self.title = title or ""
+       self.description = description or ""
+       self.template = "cbi/node"
+end
+
+-- hook helper
+function Node._run_hook(self, hook)
+       if type(self[hook]) == "function" then
+               return self[hook](self)
+       end
+end
+
+function Node._run_hooks(self, ...)
+       local f
+       local r = false
+       for _, f in ipairs(arg) do
+               if type(self[f]) == "function" then
+                       self[f](self)
+                       r = true
+               end
+       end
+       return r
+end
+
+-- Prepare nodes
+function Node.prepare(self, ...)
+       for k, child in ipairs(self.children) do
+               child:prepare(...)
+       end
+end
+
+-- Append child nodes
+function Node.append(self, obj)
+       table.insert(self.children, obj)
+end
+
+-- Parse this node and its children
+function Node.parse(self, ...)
+       for k, child in ipairs(self.children) do
+               child:parse(...)
+       end
+end
+
+-- Render this node
+function Node.render(self, scope)
+       scope = scope or {}
+       scope.self = self
+
+       luci.template.render(self.template, scope)
+end
+
+-- Render the children
+function Node.render_children(self, ...)
+       local k, node
+       for k, node in ipairs(self.children) do
+               node.last_child = (k == #self.children)
+               node.index = k
+               node:render(...)
+       end
+end
+
+
+--[[
+A simple template element
+]]--
+Template = class(Node)
+
+function Template.__init__(self, template)
+       Node.__init__(self)
+       self.template = template
+end
+
+function Template.render(self)
+       luci.template.render(self.template, {self=self})
+end
+
+function Template.parse(self, readinput)
+       self.readinput = (readinput ~= false)
+       return Map.formvalue(self, "cbi.submit") and FORM_DONE or FORM_NODATA
+end
+
+
+--[[
+Map - A map describing a configuration file
+]]--
+Map = class(Node)
+
+function Map.__init__(self, config, ...)
+       Node.__init__(self, ...)
+
+       self.config = config
+       self.parsechain = {self.config}
+       self.template = "cbi/map"
+       self.apply_on_parse = nil
+       self.readinput = true
+       self.proceed = false
+       self.flow = {}
+
+       self.uci = uci.cursor()
+       self.save = true
+
+       self.changed = false
+
+       local path = "%s/%s" %{ self.uci:get_confdir(), self.config }
+       if fs.stat(path, "type") ~= "reg" then
+               fs.writefile(path, "")
+       end
+
+       local ok, err = self.uci:load(self.config)
+       if not ok then
+               local url = dispatcher.build_url(unpack(dispatcher.context.request))
+               local source = self:formvalue("cbi.source")
+               if type(source) == "string" then
+                       fs.writefile(path, source:gsub("\r\n", "\n"))
+                       ok, err = self.uci:load(self.config)
+                       if ok then
+                               luci.http.redirect(url)
+                       end
+               end
+               self.save = false
+       end
+
+       if not ok then
+               self.template   = "cbi/error"
+               self.error      = err
+               self.source     = fs.readfile(path) or ""
+               self.pageaction = false
+       end
+end
+
+function Map.formvalue(self, key)
+       return self.readinput and luci.http.formvalue(key) or nil
+end
+
+function Map.formvaluetable(self, key)
+       return self.readinput and luci.http.formvaluetable(key) or {}
+end
+
+function Map.get_scheme(self, sectiontype, option)
+       if not option then
+               return self.scheme and self.scheme.sections[sectiontype]
+       else
+               return self.scheme and self.scheme.variables[sectiontype]
+                and self.scheme.variables[sectiontype][option]
+       end
+end
+
+function Map.submitstate(self)
+       return self:formvalue("cbi.submit")
+end
+
+-- Chain foreign config
+function Map.chain(self, config)
+       table.insert(self.parsechain, config)
+end
+
+function Map.state_handler(self, state)
+       return state
+end
+
+-- Use optimized UCI writing
+function Map.parse(self, readinput, ...)
+       if self:formvalue("cbi.skip") then
+               self.state = FORM_SKIP
+       elseif not self.save then
+               self.state = FORM_INVALID
+       elseif not self:submitstate() then
+               self.state = FORM_NODATA
+       end
+
+       -- Back out early to prevent unauthorized changes on the subsequent parse
+       if self.state ~= nil then
+               return self:state_handler(self.state)
+       end
+
+       self.readinput = (readinput ~= false)
+       self:_run_hooks("on_parse")
+
+       Node.parse(self, ...)
+
+       if self.save then
+               self:_run_hooks("on_save", "on_before_save")
+               local i, config
+               for i, config in ipairs(self.parsechain) do
+                       self.uci:save(config)
+               end
+               self:_run_hooks("on_after_save")
+               if (not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply") then
+                       self:_run_hooks("on_before_commit")
+                       if self.apply_on_parse == false then
+                               for i, config in ipairs(self.parsechain) do
+                                       self.uci:commit(config)
+                               end
+                       end
+                       self:_run_hooks("on_commit", "on_after_commit", "on_before_apply")
+                       if self.apply_on_parse == true or self.apply_on_parse == false then
+                               self.uci:apply(self.apply_on_parse)
+                               self:_run_hooks("on_apply", "on_after_apply")
+                       else
+                               -- This is evaluated by the dispatcher and delegated to the
+                               -- template which in turn fires XHR to perform the actual
+                               -- apply actions.
+                               self.apply_needed = true
+                       end
+
+                       -- Reparse sections
+                       Node.parse(self, true)
+               end
+               for i, config in ipairs(self.parsechain) do
+                       self.uci:unload(config)
+               end
+               if type(self.commit_handler) == "function" then
+                       self:commit_handler(self:submitstate())
+               end
+       end
+
+       if not self.save then
+               self.state = FORM_INVALID
+       elseif self.proceed then
+               self.state = FORM_PROCEED
+       elseif self.changed then
+               self.state = FORM_CHANGED
+       else
+               self.state = FORM_VALID
+       end
+
+       return self:state_handler(self.state)
+end
+
+function Map.render(self, ...)
+       self:_run_hooks("on_init")
+       Node.render(self, ...)
+end
+
+-- Creates a child section
+function Map.section(self, class, ...)
+       if instanceof(class, AbstractSection) then
+               local obj  = class(self, ...)
+               self:append(obj)
+               return obj
+       else
+               error("class must be a descendent of AbstractSection")
+       end
+end
+
+-- UCI add
+function Map.add(self, sectiontype)
+       return self.uci:add(self.config, sectiontype)
+end
+
+-- UCI set
+function Map.set(self, section, option, value)
+       if type(value) ~= "table" or #value > 0 then
+               if option then
+                       return self.uci:set(self.config, section, option, value)
+               else
+                       return self.uci:set(self.config, section, value)
+               end
+       else
+               return Map.del(self, section, option)
+       end
+end
+
+-- UCI del
+function Map.del(self, section, option)
+       if option then
+               return self.uci:delete(self.config, section, option)
+       else
+               return self.uci:delete(self.config, section)
+       end
+end
+
+-- UCI get
+function Map.get(self, section, option)
+       if not section then
+               return self.uci:get_all(self.config)
+       elseif option then
+               return self.uci:get(self.config, section, option)
+       else
+               return self.uci:get_all(self.config, section)
+       end
+end
+
+--[[
+Compound - Container
+]]--
+Compound = class(Node)
+
+function Compound.__init__(self, ...)
+       Node.__init__(self)
+       self.template = "cbi/compound"
+       self.children = {...}
+end
+
+function Compound.populate_delegator(self, delegator)
+       for _, v in ipairs(self.children) do
+               v.delegator = delegator
+       end
+end
+
+function Compound.parse(self, ...)
+       local cstate, state = 0
+
+       for k, child in ipairs(self.children) do
+               cstate = child:parse(...)
+               state = (not state or cstate < state) and cstate or state
+       end
+
+       return state
+end
+
+
+--[[
+Delegator - Node controller
+]]--
+Delegator = class(Node)
+function Delegator.__init__(self, ...)
+       Node.__init__(self, ...)
+       self.nodes = {}
+       self.defaultpath = {}
+       self.pageaction = false
+       self.readinput = true
+       self.allow_reset = false
+       self.allow_cancel = false
+       self.allow_back = false
+       self.allow_finish = false
+       self.template = "cbi/delegator"
+end
+
+function Delegator.set(self, name, node)
+       assert(not self.nodes[name], "Duplicate entry")
+
+       self.nodes[name] = node
+end
+
+function Delegator.add(self, name, node)
+       node = self:set(name, node)
+       self.defaultpath[#self.defaultpath+1] = name
+end
+
+function Delegator.insert_after(self, name, after)
+       local n = #self.chain + 1
+       for k, v in ipairs(self.chain) do
+               if v == after then
+                       n = k + 1
+                       break
+               end
+       end
+       table.insert(self.chain, n, name)
+end
+
+function Delegator.set_route(self, ...)
+       local n, chain, route = 0, self.chain, {...}
+       for i = 1, #chain do
+               if chain[i] == self.current then
+                       n = i
+                       break
+               end
+       end
+       for i = 1, #route do
+               n = n + 1
+               chain[n] = route[i]
+       end
+       for i = n + 1, #chain do
+               chain[i] = nil
+       end
+end
+
+function Delegator.get(self, name)
+       local node = self.nodes[name]
+
+       if type(node) == "string" then
+               node = load(node, name)
+       end
+
+       if type(node) == "table" and getmetatable(node) == nil then
+               node = Compound(unpack(node))
+       end
+
+       return node
+end
+
+function Delegator.parse(self, ...)
+       if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then
+               if self:_run_hooks("on_cancel") then
+                       return FORM_DONE
+               end
+       end
+
+       if not Map.formvalue(self, "cbi.delg.current") then
+               self:_run_hooks("on_init")
+       end
+
+       local newcurrent
+       self.chain = self.chain or self:get_chain()
+       self.current = self.current or self:get_active()
+       self.active = self.active or self:get(self.current)
+       assert(self.active, "Invalid state")
+
+       local stat = FORM_DONE
+       if type(self.active) ~= "function" then
+               self.active:populate_delegator(self)
+               stat = self.active:parse()
+       else
+               self:active()
+       end
+
+       if stat > FORM_PROCEED then
+               if Map.formvalue(self, "cbi.delg.back") then
+                       newcurrent = self:get_prev(self.current)
+               else
+                       newcurrent = self:get_next(self.current)
+               end
+       elseif stat < FORM_PROCEED then
+               return stat
+       end
+
+
+       if not Map.formvalue(self, "cbi.submit") then
+               return FORM_NODATA
+       elseif stat > FORM_PROCEED
+       and (not newcurrent or not self:get(newcurrent)) then
+               return self:_run_hook("on_done") or FORM_DONE
+       else
+               self.current = newcurrent or self.current
+               self.active = self:get(self.current)
+               if type(self.active) ~= "function" then
+                       self.active:populate_delegator(self)
+                       local stat = self.active:parse(false)
+                       if stat == FORM_SKIP then
+                               return self:parse(...)
+                       else
+                               return FORM_PROCEED
+                       end
+               else
+                       return self:parse(...)
+               end
+       end
+end
+
+function Delegator.get_next(self, state)
+       for k, v in ipairs(self.chain) do
+               if v == state then
+                       return self.chain[k+1]
+               end
+       end
+end
+
+function Delegator.get_prev(self, state)
+       for k, v in ipairs(self.chain) do
+               if v == state then
+                       return self.chain[k-1]
+               end
+       end
+end
+
+function Delegator.get_chain(self)
+       local x = Map.formvalue(self, "cbi.delg.path") or self.defaultpath
+       return type(x) == "table" and x or {x}
+end
+
+function Delegator.get_active(self)
+       return Map.formvalue(self, "cbi.delg.current") or self.chain[1]
+end
+
+--[[
+Page - A simple node
+]]--
+
+Page = class(Node)
+Page.__init__ = Node.__init__
+Page.parse    = function() end
+
+
+--[[
+SimpleForm - A Simple non-UCI form
+]]--
+SimpleForm = class(Node)
+
+function SimpleForm.__init__(self, config, title, description, data)
+       Node.__init__(self, title, description)
+       self.config = config
+       self.data = data or {}
+       self.template = "cbi/simpleform"
+       self.dorender = true
+       self.pageaction = false
+       self.readinput = true
+end
+
+SimpleForm.formvalue = Map.formvalue
+SimpleForm.formvaluetable = Map.formvaluetable
+
+function SimpleForm.parse(self, readinput, ...)
+       self.readinput = (readinput ~= false)
+
+       if self:formvalue("cbi.skip") then
+               return FORM_SKIP
+       end
+
+       if self:formvalue("cbi.cancel") and self:_run_hooks("on_cancel") then
+               return FORM_DONE
+       end
+
+       if self:submitstate() then
+               Node.parse(self, 1, ...)
+       end
+
+       local valid = true
+       for k, j in ipairs(self.children) do
+               for i, v in ipairs(j.children) do
+                       valid = valid
+                        and (not v.tag_missing or not v.tag_missing[1])
+                        and (not v.tag_invalid or not v.tag_invalid[1])
+                        and (not v.error)
+               end
+       end
+
+       local state =
+               not self:submitstate() and FORM_NODATA
+               or valid and FORM_VALID
+               or FORM_INVALID
+
+       self.dorender = not self.handle
+       if self.handle then
+               local nrender, nstate = self:handle(state, self.data)
+               self.dorender = self.dorender or (nrender ~= false)
+               state = nstate or state
+       end
+       return state
+end
+
+function SimpleForm.render(self, ...)
+       if self.dorender then
+               Node.render(self, ...)
+       end
+end
+
+function SimpleForm.submitstate(self)
+       return self:formvalue("cbi.submit")
+end
+
+function SimpleForm.section(self, class, ...)
+       if instanceof(class, AbstractSection) then
+               local obj  = class(self, ...)
+               self:append(obj)
+               return obj
+       else
+               error("class must be a descendent of AbstractSection")
+       end
+end
+
+-- Creates a child field
+function SimpleForm.field(self, class, ...)
+       local section
+       for k, v in ipairs(self.children) do
+               if instanceof(v, SimpleSection) then
+                       section = v
+                       break
+               end
+       end
+       if not section then
+               section = self:section(SimpleSection)
+       end
+
+       if instanceof(class, AbstractValue) then
+               local obj  = class(self, section, ...)
+               obj.track_missing = true
+               section:append(obj)
+               return obj
+       else
+               error("class must be a descendent of AbstractValue")
+       end
+end
+
+function SimpleForm.set(self, section, option, value)
+       self.data[option] = value
+end
+
+
+function SimpleForm.del(self, section, option)
+       self.data[option] = nil
+end
+
+
+function SimpleForm.get(self, section, option)
+       return self.data[option]
+end
+
+
+function SimpleForm.get_scheme()
+       return nil
+end
+
+
+Form = class(SimpleForm)
+
+function Form.__init__(self, ...)
+       SimpleForm.__init__(self, ...)
+       self.embedded = true
+end
+
+
+--[[
+AbstractSection
+]]--
+AbstractSection = class(Node)
+
+function AbstractSection.__init__(self, map, sectiontype, ...)
+       Node.__init__(self, ...)
+       self.sectiontype = sectiontype
+       self.map = map
+       self.config = map.config
+       self.optionals = {}
+       self.defaults = {}
+       self.fields = {}
+       self.tag_error = {}
+       self.tag_invalid = {}
+       self.tag_deperror = {}
+       self.changed = false
+
+       self.optional = true
+       self.addremove = false
+       self.dynamic = false
+end
+
+-- Define a tab for the section
+function AbstractSection.tab(self, tab, title, desc)
+       self.tabs      = self.tabs      or { }
+       self.tab_names = self.tab_names or { }
+
+       self.tab_names[#self.tab_names+1] = tab
+       self.tabs[tab] = {
+               title       = title,
+               description = desc,
+               childs      = { }
+       }
+end
+
+-- Check whether the section has tabs
+function AbstractSection.has_tabs(self)
+       return (self.tabs ~= nil) and (next(self.tabs) ~= nil)
+end
+
+-- Appends a new option
+function AbstractSection.option(self, class, option, ...)
+       if instanceof(class, AbstractValue) then
+               local obj  = class(self.map, self, option, ...)
+               self:append(obj)
+               self.fields[option] = obj
+               return obj
+       elseif class == true then
+               error("No valid class was given and autodetection failed.")
+       else
+               error("class must be a descendant of AbstractValue")
+       end
+end
+
+-- Appends a new tabbed option
+function AbstractSection.taboption(self, tab, ...)
+
+       assert(tab and self.tabs and self.tabs[tab],
+               "Cannot assign option to not existing tab %q" % tostring(tab))
+
+       local l = self.tabs[tab].childs
+       local o = AbstractSection.option(self, ...)
+
+       if o then l[#l+1] = o end
+
+       return o
+end
+
+-- Render a single tab
+function AbstractSection.render_tab(self, tab, ...)
+
+       assert(tab and self.tabs and self.tabs[tab],
+               "Cannot render not existing tab %q" % tostring(tab))
+
+       local k, node
+       for k, node in ipairs(self.tabs[tab].childs) do
+               node.last_child = (k == #self.tabs[tab].childs)
+               node.index = k
+               node:render(...)
+       end
+end
+
+-- Parse optional options
+function AbstractSection.parse_optionals(self, section, noparse)
+       if not self.optional then
+               return
+       end
+
+       self.optionals[section] = {}
+
+       local field = nil
+       if not noparse then
+               field = self.map:formvalue("cbi.opt."..self.config.."."..section)
+       end
+
+       for k,v in ipairs(self.children) do
+               if v.optional and not v:cfgvalue(section) and not self:has_tabs() then
+                       if field == v.option then
+                               field = nil
+                               self.map.proceed = true
+                       else
+                               table.insert(self.optionals[section], v)
+                       end
+               end
+       end
+
+       if field and #field > 0 and self.dynamic then
+               self:add_dynamic(field)
+       end
+end
+
+-- Add a dynamic option
+function AbstractSection.add_dynamic(self, field, optional)
+       local o = self:option(Value, field, field)
+       o.optional = optional
+end
+
+-- Parse all dynamic options
+function AbstractSection.parse_dynamic(self, section)
+       if not self.dynamic then
+               return
+       end
+
+       local arr  = luci.util.clone(self:cfgvalue(section))
+       local form = self.map:formvaluetable("cbid."..self.config.."."..section)
+       for k, v in pairs(form) do
+               arr[k] = v
+       end
+
+       for key,val in pairs(arr) do
+               local create = true
+
+               for i,c in ipairs(self.children) do
+                       if c.option == key then
+                               create = false
+                       end
+               end
+
+               if create and key:sub(1, 1) ~= "." then
+                       self.map.proceed = true
+                       self:add_dynamic(key, true)
+               end
+       end
+end
+
+-- Returns the section's UCI table
+function AbstractSection.cfgvalue(self, section)
+       return self.map:get(section)
+end
+
+-- Push events
+function AbstractSection.push_events(self)
+       --luci.util.append(self.map.events, self.events)
+       self.map.changed = true
+end
+
+-- Removes the section
+function AbstractSection.remove(self, section)
+       self.map.proceed = true
+       return self.map:del(section)
+end
+
+-- Creates the section
+function AbstractSection.create(self, section)
+       local stat
+
+       if section then
+               stat = section:match("^[%w_]+$") and self.map:set(section, nil, self.sectiontype)
+       else
+               section = self.map:add(self.sectiontype)
+               stat = section
+       end
+
+       if stat then
+               for k,v in pairs(self.children) do
+                       if v.default then
+                               self.map:set(section, v.option, v.default)
+                       end
+               end
+
+               for k,v in pairs(self.defaults) do
+                       self.map:set(section, k, v)
+               end
+       end
+
+       self.map.proceed = true
+
+       return stat
+end
+
+
+SimpleSection = class(AbstractSection)
+
+function SimpleSection.__init__(self, form, ...)
+       AbstractSection.__init__(self, form, nil, ...)
+       self.template = "cbi/nullsection"
+end
+
+
+Table = class(AbstractSection)
+
+function Table.__init__(self, form, data, ...)
+       local datasource = {}
+       local tself = self
+       datasource.config = "table"
+       self.data = data or {}
+
+       datasource.formvalue = Map.formvalue
+       datasource.formvaluetable = Map.formvaluetable
+       datasource.readinput = true
+
+       function datasource.get(self, section, option)
+               return tself.data[section] and tself.data[section][option]
+       end
+
+       function datasource.submitstate(self)
+               return Map.formvalue(self, "cbi.submit")
+       end
+
+       function datasource.del(...)
+               return true
+       end
+
+       function datasource.get_scheme()
+               return nil
+       end
+
+       AbstractSection.__init__(self, datasource, "table", ...)
+       self.template = "cbi/tblsection"
+       self.rowcolors = true
+       self.anonymous = true
+end
+
+function Table.parse(self, readinput)
+       self.map.readinput = (readinput ~= false)
+       for i, k in ipairs(self:cfgsections()) do
+               if self.map:submitstate() then
+                       Node.parse(self, k)
+               end
+       end
+end
+
+function Table.cfgsections(self)
+       local sections = {}
+
+       for i, v in luci.util.kspairs(self.data) do
+               table.insert(sections, i)
+       end
+
+       return sections
+end
+
+function Table.update(self, data)
+       self.data = data
+end
+
+
+
+--[[
+NamedSection - A fixed configuration section defined by its name
+]]--
+NamedSection = class(AbstractSection)
+
+function NamedSection.__init__(self, map, section, stype, ...)
+       AbstractSection.__init__(self, map, stype, ...)
+
+       -- Defaults
+       self.addremove = false
+       self.template = "cbi/nsection"
+       self.section = section
+end
+
+function NamedSection.prepare(self)
+       AbstractSection.prepare(self)
+       AbstractSection.parse_optionals(self, self.section, true)
+end
+
+function NamedSection.parse(self, novld)
+       local s = self.section
+       local active = self:cfgvalue(s)
+
+       if self.addremove then
+               local path = self.config.."."..s
+               if active then -- Remove the section
+                       if self.map:formvalue("cbi.rns."..path) and self:remove(s) then
+                               self:push_events()
+                               return
+                       end
+               else           -- Create and apply default values
+                       if self.map:formvalue("cbi.cns."..path) then
+                               self:create(s)
+                               return
+                       end
+               end
+       end
+
+       if active then
+               AbstractSection.parse_dynamic(self, s)
+               if self.map:submitstate() then
+                       Node.parse(self, s)
+               end
+               AbstractSection.parse_optionals(self, s)
+
+               if self.changed then
+                       self:push_events()
+               end
+       end
+end
+
+
+--[[
+TypedSection - A (set of) configuration section(s) defined by the type
+       addremove:      Defines whether the user can add/remove sections of this type
+       anonymous:  Allow creating anonymous sections
+       validate:       a validation function returning nil if the section is invalid
+]]--
+TypedSection = class(AbstractSection)
+
+function TypedSection.__init__(self, map, type, ...)
+       AbstractSection.__init__(self, map, type, ...)
+
+       self.template = "cbi/tsection"
+       self.deps = {}
+       self.anonymous = false
+end
+
+function TypedSection.prepare(self)
+       AbstractSection.prepare(self)
+
+       local i, s
+       for i, s in ipairs(self:cfgsections()) do
+               AbstractSection.parse_optionals(self, s, true)
+       end
+end
+
+-- Return all matching UCI sections for this TypedSection
+function TypedSection.cfgsections(self)
+       local sections = {}
+       self.map.uci:foreach(self.map.config, self.sectiontype,
+               function (section)
+                       if self:checkscope(section[".name"]) then
+                               table.insert(sections, section[".name"])
+                       end
+               end)
+
+       return sections
+end
+
+-- Limits scope to sections that have certain option => value pairs
+function TypedSection.depends(self, option, value)
+       table.insert(self.deps, {option=option, value=value})
+end
+
+function TypedSection.parse(self, novld)
+       if self.addremove then
+               -- Remove
+               local crval = REMOVE_PREFIX .. self.config
+               local name = self.map:formvaluetable(crval)
+               for k,v in pairs(name) do
+                       if k:sub(-2) == ".x" then
+                               k = k:sub(1, #k - 2)
+                       end
+                       if self:cfgvalue(k) and self:checkscope(k) then
+                               self:remove(k)
+                       end
+               end
+       end
+
+       local co
+       for i, k in ipairs(self:cfgsections()) do
+               AbstractSection.parse_dynamic(self, k)
+               if self.map:submitstate() then
+                       Node.parse(self, k, novld)
+               end
+               AbstractSection.parse_optionals(self, k)
+       end
+
+       if self.addremove then
+               -- Create
+               local created
+               local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype
+               local origin, name = next(self.map:formvaluetable(crval))
+               if self.anonymous then
+                       if name then
+                               created = self:create(nil, origin)
+                       end
+               else
+                       if name then
+                               -- Ignore if it already exists
+                               if self:cfgvalue(name) then
+                                       name = nil
+                                       self.err_invalid = true
+                               else
+                                       name = self:checkscope(name)
+
+                                       if not name then
+                                               self.err_invalid = true
+                                       end
+
+                                       if name and #name > 0 then
+                                               created = self:create(name, origin) and name
+                                               if not created then
+                                                       self.invalid_cts = true
+                                               end
+                                       end
+                               end
+                       end
+               end
+
+               if created then
+                       AbstractSection.parse_optionals(self, created)
+               end
+       end
+
+       if self.sortable then
+               local stval = RESORT_PREFIX .. self.config .. "." .. self.sectiontype
+               local order = self.map:formvalue(stval)
+               if order and #order > 0 then
+                       local sids, sid = { }, nil
+                       for sid in util.imatch(order) do
+                               sids[#sids+1] = sid
+                       end
+                       if #sids > 0 then
+                               self.map.uci:reorder(self.config, sids)
+                               self.changed = true
+                       end
+               end
+       end
+
+       if created or self.changed then
+               self:push_events()
+       end
+end
+
+-- Verifies scope of sections
+function TypedSection.checkscope(self, section)
+       -- Check if we are not excluded
+       if self.filter and not self:filter(section) then
+               return nil
+       end
+
+       -- Check if at least one dependency is met
+       if #self.deps > 0 and self:cfgvalue(section) then
+               local stat = false
+
+               for k, v in ipairs(self.deps) do
+                       if self:cfgvalue(section)[v.option] == v.value then
+                               stat = true
+                       end
+               end
+
+               if not stat then
+                       return nil
+               end
+       end
+
+       return self:validate(section)
+end
+
+
+-- Dummy validate function
+function TypedSection.validate(self, section)
+       return section
+end
+
+
+--[[
+AbstractValue - An abstract Value Type
+       null:           Value can be empty
+       valid:          A function returning the value if it is valid otherwise nil
+       depends:        A table of option => value pairs of which one must be true
+       default:        The default value
+       size:           The size of the input fields
+       rmempty:        Unset value if empty
+       optional:       This value is optional (see AbstractSection.optionals)
+]]--
+AbstractValue = class(Node)
+
+function AbstractValue.__init__(self, map, section, option, ...)
+       Node.__init__(self, ...)
+       self.section = section
+       self.option  = option
+       self.map     = map
+       self.config  = map.config
+       self.tag_invalid = {}
+       self.tag_missing = {}
+       self.tag_reqerror = {}
+       self.tag_error = {}
+       self.deps = {}
+       --self.cast = "string"
+
+       self.track_missing = false
+       self.rmempty   = true
+       self.default   = nil
+       self.size      = nil
+       self.optional  = false
+end
+
+function AbstractValue.prepare(self)
+       self.cast = self.cast or "string"
+end
+
+-- Add a dependencie to another section field
+function AbstractValue.depends(self, field, value)
+       local deps
+       if type(field) == "string" then
+               deps = {}
+               deps[field] = value
+       else
+               deps = field
+       end
+
+       table.insert(self.deps, deps)
+end
+
+-- Serialize dependencies
+function AbstractValue.deplist2json(self, section, deplist)
+       local deps, i, d = { }
+
+       if type(self.deps) == "table" then
+               for i, d in ipairs(deplist or self.deps) do
+                       local a, k, v = { }
+                       for k, v in pairs(d) do
+                               if k:find("!", 1, true) then
+                                       a[k] = v
+                               elseif k:find(".", 1, true) then
+                                       a['cbid.%s' % k] = v
+                               else
+                                       a['cbid.%s.%s.%s' %{ self.config, section, k }] = v
+                               end
+                       end
+                       deps[#deps+1] = a
+               end
+       end
+
+       return util.serialize_json(deps)
+end
+
+-- Generates the unique CBID
+function AbstractValue.cbid(self, section)
+       return "cbid."..self.map.config.."."..section.."."..self.option
+end
+
+-- Return whether this object should be created
+function AbstractValue.formcreated(self, section)
+       local key = "cbi.opt."..self.config.."."..section
+       return (self.map:formvalue(key) == self.option)
+end
+
+-- Returns the formvalue for this object
+function AbstractValue.formvalue(self, section)
+       return self.map:formvalue(self:cbid(section))
+end
+
+function AbstractValue.additional(self, value)
+       self.optional = value
+end
+
+function AbstractValue.mandatory(self, value)
+       self.rmempty = not value
+end
+
+function AbstractValue.add_error(self, section, type, msg)
+       self.error = self.error or { }
+       self.error[section] = msg or type
+
+       self.section.error = self.section.error or { }
+       self.section.error[section] = self.section.error[section] or { }
+       table.insert(self.section.error[section], msg or type)
+
+       if type == "invalid" then
+               self.tag_invalid[section] = true
+       elseif type == "missing" then
+               self.tag_missing[section] = true
+       end
+
+       self.tag_error[section] = true
+       self.map.save = false
+end
+
+function AbstractValue.parse(self, section, novld)
+       local fvalue = self:formvalue(section)
+       local cvalue = self:cfgvalue(section)
+
+       -- If favlue and cvalue are both tables and have the same content
+       -- make them identical
+       if type(fvalue) == "table" and type(cvalue) == "table" then
+               local equal = #fvalue == #cvalue
+               if equal then
+                       for i=1, #fvalue do
+                               if cvalue[i] ~= fvalue[i] then
+                                       equal = false
+                               end
+                       end
+               end
+               if equal then
+                       fvalue = cvalue
+               end
+       end
+
+       if fvalue and #fvalue > 0 then -- If we have a form value, write it to UCI
+               local val_err
+               fvalue, val_err = self:validate(fvalue, section)
+               fvalue = self:transform(fvalue)
+
+               if not fvalue and not novld then
+                       self:add_error(section, "invalid", val_err)
+               end
+
+               if self.alias then
+                       self.section.aliased = self.section.aliased or {}
+                       self.section.aliased[section] = self.section.aliased[section] or {}
+                       self.section.aliased[section][self.alias] = true
+               end
+
+               if fvalue and (self.forcewrite or not (fvalue == cvalue)) then
+                       if self:write(section, fvalue) then
+                               -- Push events
+                               self.section.changed = true
+                               --luci.util.append(self.map.events, self.events)
+                       end
+               end
+       else                                                    -- Unset the UCI or error
+               if self.rmempty or self.optional then
+                       if not self.alias or
+                          not self.section.aliased or
+                          not self.section.aliased[section] or
+                          not self.section.aliased[section][self.alias]
+                       then
+                               if self:remove(section) then
+                                       -- Push events
+                                       self.section.changed = true
+                                       --luci.util.append(self.map.events, self.events)
+                               end
+                       end
+               elseif cvalue ~= fvalue and not novld then
+                       -- trigger validator with nil value to get custom user error msg.
+                       local _, val_err = self:validate(nil, section)
+                       self:add_error(section, "missing", val_err)
+               end
+       end
+end
+
+-- Render if this value exists or if it is mandatory
+function AbstractValue.render(self, s, scope)
+       if not self.optional or self.section:has_tabs() or self:cfgvalue(s) or self:formcreated(s) then
+               scope = scope or {}
+               scope.section = s
+               scope.cbid    = self:cbid(s)
+               Node.render(self, scope)
+       end
+end
+
+-- Return the UCI value of this object
+function AbstractValue.cfgvalue(self, section)
+       local value
+       if self.tag_error[section] then
+               value = self:formvalue(section)
+       else
+               value = self.map:get(section, self.alias or self.option)
+       end
+
+       if not value then
+               return nil
+       elseif not self.cast or self.cast == type(value) then
+               return value
+       elseif self.cast == "string" then
+               if type(value) == "table" then
+                       return value[1]
+               end
+       elseif self.cast == "table" then
+               return { value }
+       end
+end
+
+-- Validate the form value
+function AbstractValue.validate(self, value)
+       if self.datatype and value then
+               if type(value) == "table" then
+                       local v
+                       for _, v in ipairs(value) do
+                               if v and #v > 0 and not verify_datatype(self.datatype, v) then
+                                       return nil
+                               end
+                       end
+               else
+                       if not verify_datatype(self.datatype, value) then
+                               return nil
+                       end
+               end
+       end
+
+       return value
+end
+
+AbstractValue.transform = AbstractValue.validate
+
+
+-- Write to UCI
+function AbstractValue.write(self, section, value)
+       return self.map:set(section, self.alias or self.option, value)
+end
+
+-- Remove from UCI
+function AbstractValue.remove(self, section)
+       return self.map:del(section, self.alias or self.option)
+end
+
+
+
+
+--[[
+Value - A one-line value
+       maxlength:      The maximum length
+]]--
+Value = class(AbstractValue)
+
+function Value.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/value"
+       self.keylist = {}
+       self.vallist = {}
+       self.readonly = nil
+end
+
+function Value.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
+function Value.value(self, key, val)
+       val = val or key
+       table.insert(self.keylist, tostring(key))
+       table.insert(self.vallist, tostring(val))
+end
+
+function Value.parse(self, section, novld)
+       if self.readonly then return end
+       AbstractValue.parse(self, section, novld)
+end
+
+-- DummyValue - This does nothing except being there
+DummyValue = class(AbstractValue)
+
+function DummyValue.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template = "cbi/dvalue"
+       self.value = nil
+end
+
+function DummyValue.cfgvalue(self, section)
+       local value
+       if self.value then
+               if type(self.value) == "function" then
+                       value = self:value(section)
+               else
+                       value = self.value
+               end
+       else
+               value = AbstractValue.cfgvalue(self, section)
+       end
+       return value
+end
+
+function DummyValue.parse(self)
+
+end
+
+
+--[[
+Flag - A flag being enabled or disabled
+]]--
+Flag = class(AbstractValue)
+
+function Flag.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/fvalue"
+
+       self.enabled  = "1"
+       self.disabled = "0"
+       self.default  = self.disabled
+end
+
+-- A flag can only have two states: set or unset
+function Flag.parse(self, section, novld)
+       local fexists = self.map:formvalue(
+               FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option)
+
+       if fexists then
+               local fvalue = self:formvalue(section) and self.enabled or self.disabled
+               local cvalue = self:cfgvalue(section)
+               local val_err
+               fvalue, val_err = self:validate(fvalue, section)
+               if not fvalue then
+                       if not novld then
+                               self:add_error(section, "invalid", val_err)
+                       end
+                       return
+               end
+               if fvalue == self.default and (self.optional or self.rmempty) then
+                       self:remove(section)
+               else
+                       self:write(section, fvalue)
+               end
+               if (fvalue ~= cvalue) then self.section.changed = true end
+       else
+               self:remove(section)
+               self.section.changed = true
+       end
+end
+
+function Flag.cfgvalue(self, section)
+       return AbstractValue.cfgvalue(self, section) or self.default
+end
+function Flag.validate(self, value)
+       return value
+end
+
+--[[
+ListValue - A one-line value predefined in a list
+       widget: The widget that will be used (select, radio)
+]]--
+ListValue = class(AbstractValue)
+
+function ListValue.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/lvalue"
+
+       self.size   = 1
+       self.widget = "select"
+
+       self:reset_values()
+end
+
+function ListValue.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+       self.deplist = {}
+end
+
+function ListValue.value(self, key, val, ...)
+       if luci.util.contains(self.keylist, key) then
+               return
+       end
+
+       val = val or key
+       table.insert(self.keylist, tostring(key))
+       table.insert(self.vallist, tostring(val))
+       table.insert(self.deplist, {...})
+end
+
+function ListValue.validate(self, val)
+       if luci.util.contains(self.keylist, val) then
+               return val
+       else
+               return nil
+       end
+end
+
+
+
+--[[
+MultiValue - Multiple delimited values
+       widget: The widget that will be used (select, checkbox)
+       delimiter: The delimiter that will separate the values (default: " ")
+]]--
+MultiValue = class(AbstractValue)
+
+function MultiValue.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template = "cbi/mvalue"
+
+       self.widget = "checkbox"
+       self.delimiter = " "
+
+       self:reset_values()
+end
+
+function MultiValue.render(self, ...)
+       if self.widget == "select" and not self.size then
+               self.size = #self.vallist
+       end
+
+       AbstractValue.render(self, ...)
+end
+
+function MultiValue.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+       self.deplist = {}
+end
+
+function MultiValue.value(self, key, val)
+       if luci.util.contains(self.keylist, key) then
+               return
+       end
+
+       val = val or key
+       table.insert(self.keylist, tostring(key))
+       table.insert(self.vallist, tostring(val))
+end
+
+function MultiValue.valuelist(self, section)
+       local val = self:cfgvalue(section)
+
+       if not(type(val) == "string") then
+               return {}
+       end
+
+       return luci.util.split(val, self.delimiter)
+end
+
+function MultiValue.validate(self, val)
+       val = (type(val) == "table") and val or {val}
+
+       local result
+
+       for i, value in ipairs(val) do
+               if luci.util.contains(self.keylist, value) then
+                       result = result and (result .. self.delimiter .. value) or value
+               end
+       end
+
+       return result
+end
+
+
+StaticList = class(MultiValue)
+
+function StaticList.__init__(self, ...)
+       MultiValue.__init__(self, ...)
+       self.cast = "table"
+       self.valuelist = self.cfgvalue
+
+       if not self.override_scheme
+        and self.map:get_scheme(self.section.sectiontype, self.option) then
+               local vs = self.map:get_scheme(self.section.sectiontype, self.option)
+               if self.value and vs.values and not self.override_values then
+                       for k, v in pairs(vs.values) do
+                               self:value(k, v)
+                       end
+               end
+       end
+end
+
+function StaticList.validate(self, value)
+       value = (type(value) == "table") and value or {value}
+
+       local valid = {}
+       for i, v in ipairs(value) do
+               if luci.util.contains(self.keylist, v) then
+                       table.insert(valid, v)
+               end
+       end
+       return valid
+end
+
+
+DynamicList = class(AbstractValue)
+
+function DynamicList.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/dynlist"
+       self.cast = "table"
+       self:reset_values()
+end
+
+function DynamicList.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
+function DynamicList.value(self, key, val)
+       val = val or key
+       table.insert(self.keylist, tostring(key))
+       table.insert(self.vallist, tostring(val))
+end
+
+function DynamicList.write(self, section, value)
+       local t = { }
+
+       if type(value) == "table" then
+               local x
+               for _, x in ipairs(value) do
+                       if x and #x > 0 then
+                               t[#t+1] = x
+                       end
+               end
+       else
+               t = { value }
+       end
+
+       if self.cast == "string" then
+               value = table.concat(t, " ")
+       else
+               value = t
+       end
+
+       return AbstractValue.write(self, section, value)
+end
+
+function DynamicList.cfgvalue(self, section)
+       local value = AbstractValue.cfgvalue(self, section)
+
+       if type(value) == "string" then
+               local x
+               local t = { }
+               for x in value:gmatch("%S+") do
+                       if #x > 0 then
+                               t[#t+1] = x
+                       end
+               end
+               value = t
+       end
+
+       return value
+end
+
+function DynamicList.formvalue(self, section)
+       local value = AbstractValue.formvalue(self, section)
+
+       if type(value) == "string" then
+               if self.cast == "string" then
+                       local x
+                       local t = { }
+                       for x in value:gmatch("%S+") do
+                               t[#t+1] = x
+                       end
+                       value = t
+               else
+                       value = { value }
+               end
+       end
+
+       return value
+end
+
+
+DropDown = class(MultiValue)
+
+function DropDown.__init__(self, ...)
+       ListValue.__init__(self, ...)
+       self.template = "cbi/dropdown"
+       self.delimiter = " "
+end
+
+
+--[[
+TextValue - A multi-line value
+       rows:   Rows
+]]--
+TextValue = class(AbstractValue)
+
+function TextValue.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/tvalue"
+end
+
+--[[
+Button
+]]--
+Button = class(AbstractValue)
+
+function Button.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template  = "cbi/button"
+       self.inputstyle = nil
+       self.rmempty = true
+        self.unsafeupload = false
+end
+
+
+FileUpload = class(AbstractValue)
+
+function FileUpload.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template = "cbi/upload"
+       if not self.map.upload_fields then
+               self.map.upload_fields = { self }
+       else
+               self.map.upload_fields[#self.map.upload_fields+1] = self
+       end
+end
+
+function FileUpload.formcreated(self, section)
+       if self.unsafeupload then
+               return AbstractValue.formcreated(self, section) or
+                       self.map:formvalue("cbi.rlf."..section.."."..self.option) or
+                       self.map:formvalue("cbi.rlf."..section.."."..self.option..".x") or
+                       self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+       else
+               return AbstractValue.formcreated(self, section) or
+                       self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+       end
+end
+
+function FileUpload.cfgvalue(self, section)
+       local val = AbstractValue.cfgvalue(self, section)
+       if val and fs.access(val) then
+               return val
+       end
+       return nil
+end
+
+-- If we have a new value, use it
+-- otherwise use old value
+-- deletion should be managed by a separate button object
+-- unless self.unsafeupload is set in which case if the user
+-- choose to remove the old file we do so.
+-- Also, allow to specify (via textbox) a file already on router
+function FileUpload.formvalue(self, section)
+       local val = AbstractValue.formvalue(self, section)
+       if val then
+               if self.unsafeupload then
+                       if not self.map:formvalue("cbi.rlf."..section.."."..self.option) and
+                           not self.map:formvalue("cbi.rlf."..section.."."..self.option..".x")
+                       then
+                               return val
+                       end
+                       fs.unlink(val)
+                       self.value = nil
+                       return nil
+                elseif val ~= "" then
+                       return val
+                end
+       end
+       val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox")
+       if val == "" then
+               val = nil
+       end
+        if not self.unsafeupload then
+               if not val then
+                       val = self.map:formvalue("cbi.rlf."..section.."."..self.option)
+               end
+        end
+       return val
+end
+
+function FileUpload.remove(self, section)
+       if self.unsafeupload then
+               local val = AbstractValue.formvalue(self, section)
+               if val and fs.access(val) then fs.unlink(val) end
+               return AbstractValue.remove(self, section)
+       else
+               return nil
+       end
+end
+
+FileBrowser = class(AbstractValue)
+
+function FileBrowser.__init__(self, ...)
+       AbstractValue.__init__(self, ...)
+       self.template = "cbi/browser"
+end
diff --git a/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua b/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua
new file mode 100644 (file)
index 0000000..33d018d
--- /dev/null
@@ -0,0 +1,470 @@
+-- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2017 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+local ip = require "luci.ip"
+local math = require "math"
+local util = require "luci.util"
+local tonumber, tostring, type, unpack, select = tonumber, tostring, type, unpack, select
+
+
+module "luci.cbi.datatypes"
+
+
+_M['or'] = function(v, ...)
+       local i
+       for i = 1, select('#', ...), 2 do
+               local f = select(i, ...)
+               local a = select(i+1, ...)
+               if type(f) ~= "function" then
+                       if f == v then
+                               return true
+                       end
+                       i = i - 1
+               elseif f(v, unpack(a)) then
+                       return true
+               end
+       end
+       return false
+end
+
+_M['and'] = function(v, ...)
+       local i
+       for i = 1, select('#', ...), 2 do
+               local f = select(i, ...)
+               local a = select(i+1, ...)
+               if type(f) ~= "function" then
+                       if f ~= v then
+                               return false
+                       end
+                       i = i - 1
+               elseif not f(v, unpack(a)) then
+                       return false
+               end
+       end
+       return true
+end
+
+function neg(v, ...)
+       return _M['or'](v:gsub("^%s*!%s*", ""), ...)
+end
+
+function list(v, subvalidator, subargs)
+       if type(subvalidator) ~= "function" then
+               return false
+       end
+       local token
+       for token in v:gmatch("%S+") do
+               if not subvalidator(token, unpack(subargs)) then
+                       return false
+               end
+       end
+       return true
+end
+
+function bool(val)
+       if val == "1" or val == "yes" or val == "on" or val == "true" then
+               return true
+       elseif val == "0" or val == "no" or val == "off" or val == "false" then
+               return true
+       elseif val == "" or val == nil then
+               return true
+       end
+
+       return false
+end
+
+function uinteger(val)
+       local n = tonumber(val)
+       if n ~= nil and math.floor(n) == n and n >= 0 then
+               return true
+       end
+
+       return false
+end
+
+function integer(val)
+       local n = tonumber(val)
+       if n ~= nil and math.floor(n) == n then
+               return true
+       end
+
+       return false
+end
+
+function ufloat(val)
+       local n = tonumber(val)
+       return ( n ~= nil and n >= 0 )
+end
+
+function float(val)
+       return ( tonumber(val) ~= nil )
+end
+
+function ipaddr(val)
+       return ip4addr(val) or ip6addr(val)
+end
+
+function ip4addr(val)
+       if val then
+               return ip.IPv4(val) and true or false
+       end
+
+       return false
+end
+
+function ip4prefix(val)
+       val = tonumber(val)
+       return ( val and val >= 0 and val <= 32 )
+end
+
+function ip6addr(val)
+       if val then
+               return ip.IPv6(val) and true or false
+       end
+
+       return false
+end
+
+function ip6prefix(val)
+       val = tonumber(val)
+       return ( val and val >= 0 and val <= 128 )
+end
+
+function cidr(val)
+       return cidr4(val) or cidr6(val)
+end
+
+function cidr4(val)
+       local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+       return ip4addr(ip) and ip4prefix(mask)
+end
+
+function cidr6(val)
+       local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+       return ip6addr(ip) and ip6prefix(mask)
+end
+
+function ipnet4(val)
+       local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+       return ip4addr(ip) and ip4addr(mask)
+end
+
+function ipnet6(val)
+       local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+       return ip6addr(ip) and ip6addr(mask)
+end
+
+function ipmask(val)
+       return ipmask4(val) or ipmask6(val)
+end
+
+function ipmask4(val)
+       return cidr4(val) or ipnet4(val) or ip4addr(val)
+end
+
+function ipmask6(val)
+       return cidr6(val) or ipnet6(val) or ip6addr(val)
+end
+
+function ip6hostid(val)
+       if val == "eui64" or val == "random" then
+               return true
+       else
+               local addr = ip.IPv6(val)
+               if addr and addr:prefix() == 128 and addr:lower("::1:0:0:0:0") then
+                       return true
+               end
+       end
+
+       return false
+end
+
+function port(val)
+       val = tonumber(val)
+       return ( val and val >= 0 and val <= 65535 )
+end
+
+function portrange(val)
+       local p1, p2 = val:match("^(%d+)%-(%d+)$")
+       if p1 and p2 and port(p1) and port(p2) then
+               return true
+       else
+               return port(val)
+       end
+end
+
+function macaddr(val)
+       return ip.checkmac(val) and true or false
+end
+
+function hostname(val, strict)
+       if val and (#val < 254) and (
+          val:match("^[a-zA-Z_]+$") or
+          (val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and
+           val:match("[^0-9%.]"))
+       ) then
+               return (not strict or not val:match("^_"))
+       end
+       return false
+end
+
+function host(val, ipv4only)
+       return hostname(val) or ((ipv4only == 1) and ip4addr(val)) or ((not (ipv4only == 1)) and ipaddr(val))
+end
+
+function network(val)
+       return uciname(val) or host(val)
+end
+
+function hostport(val, ipv4only)
+       local h, p = val:match("^([^:]+):([^:]+)$")
+       return not not (h and p and host(h, ipv4only) and port(p))
+end
+
+function ip4addrport(val, bracket)
+       local h, p = val:match("^([^:]+):([^:]+)$")
+       return (h and p and ip4addr(h) and port(p))
+end
+
+function ip4addrport(val)
+       local h, p = val:match("^([^:]+):([^:]+)$")
+       return (h and p and ip4addr(h) and port(p))
+end
+
+function ipaddrport(val, bracket)
+       local h, p = val:match("^([^%[%]:]+):([^:]+)$")
+       if (h and p and ip4addr(h) and port(p)) then
+               return true
+       elseif (bracket == 1) then
+               h, p = val:match("^%[(.+)%]:([^:]+)$")
+               if  (h and p and ip6addr(h) and port(p)) then
+                       return true
+               end
+       end
+       h, p = val:match("^([^%[%]]+):([^:]+)$")
+       return (h and p and ip6addr(h) and port(p))
+end
+
+function wpakey(val)
+       if #val == 64 then
+               return (val:match("^[a-fA-F0-9]+$") ~= nil)
+       else
+               return (#val >= 8) and (#val <= 63)
+       end
+end
+
+function wepkey(val)
+       if val:sub(1, 2) == "s:" then
+               val = val:sub(3)
+       end
+
+       if (#val == 10) or (#val == 26) then
+               return (val:match("^[a-fA-F0-9]+$") ~= nil)
+       else
+               return (#val == 5) or (#val == 13)
+       end
+end
+
+function hexstring(val)
+       if val then
+               return (val:match("^[a-fA-F0-9]+$") ~= nil)
+       end
+       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)
+       end
+       return false
+end
+
+function string(val)
+       return true             -- Everything qualifies as valid string
+end
+
+function directory(val, seen)
+       local s = fs.stat(val)
+       seen = seen or { }
+
+       if s and not seen[s.ino] then
+               seen[s.ino] = true
+               if s.type == "dir" then
+                       return true
+               elseif s.type == "lnk" then
+                       return directory( fs.readlink(val), seen )
+               end
+       end
+
+       return false
+end
+
+function file(val, seen)
+       local s = fs.stat(val)
+       seen = seen or { }
+
+       if s and not seen[s.ino] then
+               seen[s.ino] = true
+               if s.type == "reg" then
+                       return true
+               elseif s.type == "lnk" then
+                       return file( fs.readlink(val), seen )
+               end
+       end
+
+       return false
+end
+
+function device(val, seen)
+       local s = fs.stat(val)
+       seen = seen or { }
+
+       if s and not seen[s.ino] then
+               seen[s.ino] = true
+               if s.type == "chr" or s.type == "blk" then
+                       return true
+               elseif s.type == "lnk" then
+                       return device( fs.readlink(val), seen )
+               end
+       end
+
+       return false
+end
+
+function uciname(val)
+       return (val:match("^[a-zA-Z0-9_]+$") ~= nil)
+end
+
+function range(val, min, max)
+       val = tonumber(val)
+       min = tonumber(min)
+       max = tonumber(max)
+
+       if val ~= nil and min ~= nil and max ~= nil then
+               return ((val >= min) and (val <= max))
+       end
+
+       return false
+end
+
+function min(val, min)
+       val = tonumber(val)
+       min = tonumber(min)
+
+       if val ~= nil and min ~= nil then
+               return (val >= min)
+       end
+
+       return false
+end
+
+function max(val, max)
+       val = tonumber(val)
+       max = tonumber(max)
+
+       if val ~= nil and max ~= nil then
+               return (val <= max)
+       end
+
+       return false
+end
+
+function rangelength(val, min, max)
+       val = tostring(val)
+       min = tonumber(min)
+       max = tonumber(max)
+
+       if val ~= nil and min ~= nil and max ~= nil then
+               return ((#val >= min) and (#val <= max))
+       end
+
+       return false
+end
+
+function minlength(val, min)
+       val = tostring(val)
+       min = tonumber(min)
+
+       if val ~= nil and min ~= nil then
+               return (#val >= min)
+       end
+
+       return false
+end
+
+function maxlength(val, max)
+       val = tostring(val)
+       max = tonumber(max)
+
+       if val ~= nil and max ~= nil then
+               return (#val <= max)
+       end
+
+       return false
+end
+
+function phonedigit(val)
+       return (val:match("^[0-9\*#!%.]+$") ~= nil)
+end
+
+function timehhmmss(val)
+       return (val:match("^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$") ~= nil)
+end
+
+function dateyyyymmdd(val)
+       if val ~= nil then
+               yearstr, monthstr, daystr = val:match("^(%d%d%d%d)-(%d%d)-(%d%d)$")
+               if (yearstr == nil) or (monthstr == nil) or (daystr == nil) then
+                       return false;
+               end
+               year = tonumber(yearstr)
+               month = tonumber(monthstr)
+               day = tonumber(daystr)
+               if (year == nil) or (month == nil) or (day == nil) then
+                       return false;
+               end
+
+               local days_in_month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+
+               local function is_leap_year(year)
+                       return (year % 4 == 0) and ((year % 100 ~= 0) or (year % 400 == 0))
+               end
+
+               function get_days_in_month(month, year)
+                       if (month == 2) and is_leap_year(year) then
+                               return 29
+                       else
+                               return days_in_month[month]
+                       end
+               end
+               if (year < 2015) then
+                       return false
+               end
+               if ((month == 0) or (month > 12)) then
+                       return false
+               end
+               if ((day == 0) or (day > get_days_in_month(month, year))) then
+                       return false
+               end
+               return true
+       end
+       return false
+end
+
+function unique(val)
+       return true
+end
diff --git a/package/luci/modules/luci-base/luasrc/ccache.lua b/package/luci/modules/luci-base/luasrc/ccache.lua
new file mode 100644 (file)
index 0000000..bcc76e6
--- /dev/null
@@ -0,0 +1,76 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local io = require "io"
+local fs = require "nixio.fs"
+local util = require "luci.util"
+local nixio = require "nixio"
+local debug = require "debug"
+local string = require "string"
+local package = require "package"
+
+local type, loadfile = type, loadfile
+
+
+module "luci.ccache"
+
+function cache_ondemand(...)
+       if debug.getinfo(1, 'S').source ~= "=?" then
+               cache_enable(...)
+       end
+end
+
+function cache_enable(cachepath, mode)
+       cachepath = cachepath or "/tmp/luci-modulecache"
+       mode = mode or "r--r--r--"
+
+       local loader = package.loaders[2]
+       local uid    = nixio.getuid()
+
+       if not fs.stat(cachepath) then
+               fs.mkdir(cachepath)
+       end
+
+       local function _encode_filename(name)
+               local encoded = ""
+               for i=1, #name do
+                       encoded = encoded .. ("%2X" % string.byte(name, i))
+               end
+               return encoded
+       end
+
+       local function _load_sane(file)
+               local stat = fs.stat(file)
+               if stat and stat.uid == uid and stat.modestr == mode then
+                       return loadfile(file)
+               end
+       end
+
+       local function _write_sane(file, func)
+               if nixio.getuid() == uid then
+                       local fp = io.open(file, "w")
+                       if fp then
+                               fp:write(util.get_bytecode(func))
+                               fp:close()
+                               fs.chmod(file, mode)
+                       end
+               end
+       end
+
+       package.loaders[2] = function(mod)
+               local encoded = cachepath .. "/" .. _encode_filename(mod)
+               local modcons = _load_sane(encoded)
+               
+               if modcons then
+                       return modcons
+               end
+
+               -- No cachefile
+               modcons = loader(mod)
+               if type(modcons) == "function" then
+                       _write_sane(encoded, modcons)
+               end
+               return modcons
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/config.lua b/package/luci/modules/luci-base/luasrc/config.lua
new file mode 100644 (file)
index 0000000..d01153f
--- /dev/null
@@ -0,0 +1,18 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local util = require "luci.util"
+module("luci.config",
+               function(m)
+                       if pcall(require, "luci.model.uci") then
+                               local config = util.threadlocal()
+                               setmetatable(m, {
+                                       __index = function(tbl, key)
+                                               if not config[key] then
+                                                       config[key] = luci.model.uci.cursor():get_all("luci", key)
+                                               end
+                                               return config[key]
+                                       end
+                               })
+                       end
+               end)
diff --git a/package/luci/modules/luci-base/luasrc/controller/admin/index.lua b/package/luci/modules/luci-base/luasrc/controller/admin/index.lua
new file mode 100644 (file)
index 0000000..1f7db0c
--- /dev/null
@@ -0,0 +1,164 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.index", package.seeall)
+
+function index()
+       function toplevel_page(page, preflookup, preftarget)
+               if preflookup and preftarget then
+                       if lookup(preflookup) then
+                               page.target = preftarget
+                       end
+               end
+
+               if not page.target then
+                       page.target = firstchild()
+               end
+       end
+
+       local uci = require("luci.model.uci").cursor()
+
+       local root = node()
+       if not root.target then
+               root.target = alias("admin")
+               root.index = true
+       end
+
+       local page   = node("admin")
+
+       page.title   = _("Administration")
+       page.order   = 10
+       page.sysauth = "root"
+       page.sysauth_authenticator = "htmlauth"
+       page.ucidata = true
+       page.index = true
+       page.target = firstnode()
+
+       -- Empty menu tree to be populated by addons and modules
+
+       page = node("admin", "status")
+       page.title = _("Status")
+       page.order = 10
+       page.index = true
+       -- overview is from mod-admin-full
+       toplevel_page(page, "admin/status/overview", alias("admin", "status", "overview"))
+
+       page = node("admin", "system")
+       page.title = _("System")
+       page.order = 20
+       page.index = true
+       -- system/system is from mod-admin-full
+       toplevel_page(page, "admin/system/system", alias("admin", "system", "system"))
+
+       -- Only used if applications add items
+       page = node("admin", "services")
+       page.title = _("Services")
+       page.order = 40
+       page.index = true
+       toplevel_page(page, false, false)
+
+       -- Even for mod-admin-full network just uses first submenu item as landing
+       page = node("admin", "network")
+       page.title = _("Network")
+       page.order = 50
+       page.index = true
+       toplevel_page(page, false, false)
+
+       if nixio.fs.access("/etc/config/dhcp") then
+               page = entry({"admin", "dhcplease_status"}, call("lease_status"), nil)
+               page.leaf = true
+       end
+
+       local has_wifi = false
+
+       uci:foreach("wireless", "wifi-device",
+               function(s)
+                       has_wifi = true
+                       return false
+               end)
+
+       if has_wifi then
+               page = entry({"admin", "wireless_assoclist"}, call("wifi_assoclist"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "wireless_deauth"}, post("wifi_deauth"), nil)
+               page.leaf = true
+       end
+
+       page = entry({"admin", "translations"}, call("action_translations"), nil)
+       page.leaf = true
+
+       -- Logout is last
+       entry({"admin", "logout"}, call("action_logout"), _("Logout"), 999)
+end
+
+function action_logout()
+       local dsp = require "luci.dispatcher"
+       local utl = require "luci.util"
+       local sid = dsp.context.authsession
+
+       if sid then
+               utl.ubus("session", "destroy", { ubus_rpc_session = sid })
+
+               luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s" %{
+                       '', 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url()
+               })
+       end
+
+       luci.http.redirect(dsp.build_url())
+end
+
+function action_translations(lang)
+       local i18n = require "luci.i18n"
+       local http = require "luci.http"
+       local fs = require "nixio".fs
+
+       if lang and #lang > 0 then
+               lang = i18n.setlanguage(lang)
+               if lang then
+                       local s = fs.stat("%s/base.%s.lmo" %{ i18n.i18ndir, lang })
+                       if s then
+                               http.header("Cache-Control", "public, max-age=31536000")
+                               http.header("ETag", "%x-%x-%x" %{ s["ino"], s["size"], s["mtime"] })
+                       end
+               end
+       end
+
+       http.prepare_content("application/javascript; charset=utf-8")
+       http.write("window.TR=")
+       http.write_json(i18n.dump())
+end
+
+
+function lease_status()
+       local s = require "luci.tools.status"
+
+       luci.http.prepare_content("application/json")
+       luci.http.write('[')
+       luci.http.write_json(s.dhcp_leases())
+       luci.http.write(',')
+       luci.http.write_json(s.dhcp6_leases())
+       luci.http.write(']')
+end
+
+function wifi_assoclist()
+       local s = require "luci.tools.status"
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(s.wifi_assoclist())
+end
+
+function wifi_deauth()
+       local iface = luci.http.formvalue("iface")
+       local bssid = luci.http.formvalue("bssid")
+
+       if iface and bssid then
+               luci.util.ubus("hostapd.%s" % iface, "del_client", {
+                       addr = bssid,
+                       deauth = true,
+                       reason = 5,
+                       ban_time = 60000
+               })
+       end
+       luci.http.status(200, "OK")
+end
diff --git a/package/luci/modules/luci-base/luasrc/controller/admin/uci.lua b/package/luci/modules/luci-base/luasrc/controller/admin/uci.lua
new file mode 100644 (file)
index 0000000..1d955dd
--- /dev/null
@@ -0,0 +1,109 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.uci", package.seeall)
+
+function index()
+       local redir = luci.http.formvalue("redir", true)
+               or table.concat(luci.dispatcher.context.request, "/")
+
+       entry({"admin", "uci"}, nil, _("Configuration"))
+       entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir}
+       entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
+
+       local node
+       local authen = function(checkpass, allowed_users)
+               return "root", luci.http.formvalue("sid")
+       end
+
+       node = entry({"admin", "uci", "apply_rollback"}, post("action_apply_rollback"), nil)
+       node.cors = true
+       node.sysauth_authenticator = authen
+
+       node = entry({"admin", "uci", "apply_unchecked"}, post("action_apply_unchecked"), nil)
+       node.cors = true
+       node.sysauth_authenticator = authen
+
+       node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil)
+       node.cors = true
+       node.sysauth = false
+end
+
+
+function action_changes()
+       local uci  = require "luci.model.uci"
+       local changes = uci:changes()
+
+       luci.template.render("admin_uci/changes", {
+               changes       = next(changes) and changes,
+               timeout       = timeout,
+               trigger_apply = luci.http.formvalue("trigger_apply") and true or false
+       })
+end
+
+function action_revert()
+       local uci = require "luci.model.uci"
+       local changes = uci:changes()
+
+       -- Collect files to be reverted
+       local r, tbl
+       for r, tbl in pairs(changes) do
+               uci:revert(r)
+       end
+
+       luci.template.render("admin_uci/revert", {
+               changes        = next(changes) and changes,
+               trigger_revert = true
+       })
+end
+
+
+local function ubus_state_to_http(errstr)
+       local map = {
+               ["Invalid command"]   = 400,
+               ["Invalid argument"]  = 400,
+               ["Method not found"]  = 404,
+               ["Entry not found"]   = 404,
+               ["No data"]           = 204,
+               ["Permission denied"] = 403,
+               ["Timeout"]           = 504,
+               ["Not supported"]     = 500,
+               ["Unknown error"]     = 500,
+               ["Connection failed"] = 503
+       }
+
+       local code = map[errstr] or 200
+       local msg  = errstr      or "OK"
+
+       luci.http.status(code, msg)
+
+       if code ~= 204 then
+               luci.http.prepare_content("text/plain")
+               luci.http.write(msg)
+       end
+end
+
+function action_apply_rollback()
+       local uci = require "luci.model.uci"
+       local token, errstr = uci:apply(true)
+       if token then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json({ token = token })
+       else
+               ubus_state_to_http(errstr)
+       end
+end
+
+function action_apply_unchecked()
+       local uci = require "luci.model.uci"
+       local _, errstr = uci:apply(false)
+       ubus_state_to_http(errstr)
+end
+
+function action_confirm()
+       local uci = require "luci.model.uci"
+       local token = luci.http.formvalue("token")
+       local _, errstr = uci:confirm(token)
+       ubus_state_to_http(errstr)
+end
diff --git a/package/luci/modules/luci-base/luasrc/debug.lua b/package/luci/modules/luci-base/luasrc/debug.lua
new file mode 100644 (file)
index 0000000..8ff1bb6
--- /dev/null
@@ -0,0 +1,37 @@
+local debug = require "debug"
+local io = require "io"
+local collectgarbage, floor = collectgarbage, math.floor
+
+module "luci.debug"
+__file__ = debug.getinfo(1, 'S').source:sub(2)
+
+-- Enables the memory tracer with given flags and returns a function to disable the tracer again
+function trap_memtrace(flags, dest)
+       flags = flags or "clr"
+       local tracefile = io.open(dest or "/tmp/memtrace", "w")
+       local peak = 0
+
+       local function trap(what, line)
+               local info = debug.getinfo(2, "Sn")
+               local size = floor(collectgarbage("count"))
+               if size > peak then
+                       peak = size
+               end
+               if tracefile then
+                       tracefile:write(
+                               "[", what, "] ", info.source, ":", (line or "?"), "\t",
+                               (info.namewhat or ""), "\t",
+                               (info.name or ""), "\t",
+                               size, " (", peak, ")\n"
+                       )
+               end
+       end
+
+       debug.sethook(trap, flags)
+
+       return function()
+               debug.sethook()
+               tracefile:close()
+       end
+end
+
diff --git a/package/luci/modules/luci-base/luasrc/dispatcher.lua b/package/luci/modules/luci-base/luasrc/dispatcher.lua
new file mode 100644 (file)
index 0000000..626a46d
--- /dev/null
@@ -0,0 +1,1031 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+local util = require "luci.util"
+local http = require "luci.http"
+local nixio = require "nixio", require "nixio.util"
+
+module("luci.dispatcher", package.seeall)
+context = util.threadlocal()
+uci = require "luci.model.uci"
+i18n = require "luci.i18n"
+_M.fs = fs
+
+-- Index table
+local index = nil
+
+-- Fastindex
+local fi
+
+
+function build_url(...)
+       local path = {...}
+       local url = { http.getenv("SCRIPT_NAME") or "" }
+
+       local p
+       for _, p in ipairs(path) do
+               if p:match("^[a-zA-Z0-9_%-%.%%/,;]+$") then
+                       url[#url+1] = "/"
+                       url[#url+1] = p
+               end
+       end
+
+       if #path == 0 then
+               url[#url+1] = "/"
+       end
+
+       return table.concat(url, "")
+end
+
+function _ordered_children(node)
+       local name, child, children = nil, nil, {}
+
+       for name, child in pairs(node.nodes) do
+               children[#children+1] = {
+                       name  = name,
+                       node  = child,
+                       order = child.order or 100
+               }
+       end
+
+       table.sort(children, function(a, b)
+               if a.order == b.order then
+                       return a.name < b.name
+               else
+                       return a.order < b.order
+               end
+       end)
+
+       return children
+end
+
+function node_visible(node)
+   if node then
+         return not (
+                (not node.title or #node.title == 0) or
+                (not node.target or node.hidden == true) or
+                (type(node.target) == "table" and node.target.type == "firstchild" and
+                 (type(node.nodes) ~= "table" or not next(node.nodes)))
+         )
+   end
+   return false
+end
+
+function node_childs(node)
+       local rv = { }
+       if node then
+               local _, child
+               for _, child in ipairs(_ordered_children(node)) do
+                       if node_visible(child.node) then
+                               rv[#rv+1] = child.name
+                       end
+               end
+       end
+       return rv
+end
+
+
+function error404(message)
+       http.status(404, "Not Found")
+       message = message or "Not Found"
+
+       local function render()
+               local template = require "luci.template"
+               template.render("error404")
+       end
+
+       if not util.copcall(render) then
+               http.prepare_content("text/plain")
+               http.write(message)
+       end
+
+       return false
+end
+
+function error500(message)
+       util.perror(message)
+       if not context.template_header_sent then
+               http.status(500, "Internal Server Error")
+               http.prepare_content("text/plain")
+               http.write(message)
+       else
+               require("luci.template")
+               if not util.copcall(luci.template.render, "error500", {message=message}) then
+                       http.prepare_content("text/plain")
+                       http.write(message)
+               end
+       end
+       return false
+end
+
+function httpdispatch(request, prefix)
+       http.context.request = request
+
+       local r = {}
+       context.request = r
+
+       local pathinfo = http.urldecode(request:getenv("PATH_INFO") or "", true)
+
+       if prefix then
+               for _, node in ipairs(prefix) do
+                       r[#r+1] = node
+               end
+       end
+
+       local node
+       for node in pathinfo:gmatch("[^/%z]+") do
+               r[#r+1] = node
+       end
+
+       local stat, err = util.coxpcall(function()
+               dispatch(context.request)
+       end, error500)
+
+       http.close()
+
+       --context._disable_memtrace()
+end
+
+local function require_post_security(target)
+       if type(target) == "table" then
+               if type(target.post) == "table" then
+                       local param_name, required_val, request_val
+
+                       for param_name, required_val in pairs(target.post) do
+                               request_val = http.formvalue(param_name)
+
+                               if (type(required_val) == "string" and
+                                   request_val ~= required_val) or
+                                  (required_val == true and request_val == nil)
+                               then
+                                       return false
+                               end
+                       end
+
+                       return true
+               end
+
+               return (target.post == true)
+       end
+
+       return false
+end
+
+function test_post_security()
+       if http.getenv("REQUEST_METHOD") ~= "POST" then
+               http.status(405, "Method Not Allowed")
+               http.header("Allow", "POST")
+               return false
+       end
+
+       if http.formvalue("token") ~= context.authtoken then
+               http.status(403, "Forbidden")
+               luci.template.render("csrftoken")
+               return false
+       end
+
+       return true
+end
+
+local function session_retrieve(sid, allowed_users)
+       local sdat = util.ubus("session", "get", { ubus_rpc_session = sid })
+
+       if type(sdat) == "table" and
+          type(sdat.values) == "table" and
+          type(sdat.values.token) == "string" and
+          (not allowed_users or
+           util.contains(allowed_users, sdat.values.username))
+       then
+               uci:set_session_id(sid)
+               return sid, sdat.values
+       end
+
+       return nil, nil
+end
+
+local function session_setup(user, pass, allowed_users)
+       if util.contains(allowed_users, user) then
+               local login = util.ubus("session", "login", {
+                       username = user,
+                       password = pass,
+                       timeout  = tonumber(luci.config.sauth.sessiontime)
+               })
+
+               local rp = context.requestpath
+                       and table.concat(context.requestpath, "/") or ""
+
+               if type(login) == "table" and
+                  type(login.ubus_rpc_session) == "string"
+               then
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = login.ubus_rpc_session,
+                               values = { token = sys.uniqueid(16) }
+                       })
+
+                       io.stderr:write("luci: accepted login on /%s for %s from %s\n"
+                               %{ rp, user, http.getenv("REMOTE_ADDR") or "?" })
+
+                       return session_retrieve(login.ubus_rpc_session)
+               end
+
+               io.stderr:write("luci: failed login on /%s for %s from %s\n"
+                       %{ rp, user, http.getenv("REMOTE_ADDR") or "?" })
+       end
+
+       return nil, nil
+end
+
+function dispatch(request)
+       --context._disable_memtrace = require "luci.debug".trap_memtrace("l")
+       local ctx = context
+       ctx.path = request
+
+       local conf = require "luci.config"
+       assert(conf.main,
+               "/etc/config/luci seems to be corrupt, unable to find section 'main'")
+
+       local i18n = require "luci.i18n"
+       local lang = conf.main.lang or "auto"
+       if lang == "auto" then
+               local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or ""
+               for aclang in aclang:gmatch("[%w_-]+") do
+                       local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$")
+                       if country and culture then
+                               local cc = "%s_%s" %{ country, culture:lower() }
+                               if conf.languages[cc] then
+                                       lang = cc
+                                       break
+                               elseif conf.languages[country] then
+                                       lang = country
+                                       break
+                               end
+                       elseif conf.languages[aclang] then
+                               lang = aclang
+                               break
+                       end
+               end
+       end
+       if lang == "auto" then
+               lang = i18n.default
+       end
+       i18n.setlanguage(lang)
+
+       local c = ctx.tree
+       local stat
+       if not c then
+               c = createtree()
+       end
+
+       local track = {}
+       local args = {}
+       ctx.args = args
+       ctx.requestargs = ctx.requestargs or args
+       local n
+       local preq = {}
+       local freq = {}
+
+       for i, s in ipairs(request) do
+               preq[#preq+1] = s
+               freq[#freq+1] = s
+               c = c.nodes[s]
+               n = i
+               if not c then
+                       break
+               end
+
+               util.update(track, c)
+
+               if c.leaf then
+                       break
+               end
+       end
+
+       if c and c.leaf then
+               for j=n+1, #request do
+                       args[#args+1] = request[j]
+                       freq[#freq+1] = request[j]
+               end
+       end
+
+       ctx.requestpath = ctx.requestpath or freq
+       ctx.path = preq
+
+       -- Init template engine
+       if (c and c.index) or not track.notemplate then
+               local tpl = require("luci.template")
+               local media = track.mediaurlbase or luci.config.main.mediaurlbase
+               if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then
+                       media = nil
+                       for name, theme in pairs(luci.config.themes) do
+                               if name:sub(1,1) ~= "." and pcall(tpl.Template,
+                                "themes/%s/header" % fs.basename(theme)) then
+                                       media = theme
+                               end
+                       end
+                       assert(media, "No valid theme found")
+               end
+
+               local function _ifattr(cond, key, val, noescape)
+                       if cond then
+                               local env = getfenv(3)
+                               local scope = (type(env.self) == "table") and env.self
+                               if type(val) == "table" then
+                                       if not next(val) then
+                                               return ''
+                                       else
+                                               val = util.serialize_json(val)
+                                       end
+                               end
+
+                               val = tostring(val or
+                                       (type(env[key]) ~= "function" and env[key]) or
+                                       (scope and type(scope[key]) ~= "function" and scope[key]) or "")
+
+                               if noescape ~= true then
+                                       val = util.pcdata(val)
+                               end
+
+                               return string.format(' %s="%s"', tostring(key), val)
+                       else
+                               return ''
+                       end
+               end
+
+               tpl.context.viewns = setmetatable({
+                  write       = http.write;
+                  include     = function(name) tpl.Template(name):render(getfenv(2)) end;
+                  translate   = i18n.translate;
+                  translatef  = i18n.translatef;
+                  export      = function(k, v) if tpl.context.viewns[k] == nil then tpl.context.viewns[k] = v end end;
+                  striptags   = util.striptags;
+                  pcdata      = util.pcdata;
+                  media       = media;
+                  theme       = fs.basename(media);
+                  resource    = luci.config.main.resourcebase;
+                  ifattr      = function(...) return _ifattr(...) end;
+                  attr        = function(...) return _ifattr(true, ...) end;
+                  url         = build_url;
+               }, {__index=function(tbl, key)
+                       if key == "controller" then
+                               return build_url()
+                       elseif key == "REQUEST_URI" then
+                               return build_url(unpack(ctx.requestpath))
+                       elseif key == "FULL_REQUEST_URI" then
+                               local url = { http.getenv("SCRIPT_NAME") or "", http.getenv("PATH_INFO") }
+                               local query = http.getenv("QUERY_STRING")
+                               if query and #query > 0 then
+                                       url[#url+1] = "?"
+                                       url[#url+1] = query
+                               end
+                               return table.concat(url, "")
+                       elseif key == "token" then
+                               return ctx.authtoken
+                       else
+                               return rawget(tbl, key) or _G[key]
+                       end
+               end})
+       end
+
+       track.dependent = (track.dependent ~= false)
+       assert(not track.dependent or not track.auto,
+               "Access Violation\nThe page at '" .. table.concat(request, "/") .. "/' " ..
+               "has no parent node so the access to this location has been denied.\n" ..
+               "This is a software bug, please report this message at " ..
+               "https://github.com/openwrt/luci/issues"
+       )
+
+       if track.sysauth and not ctx.authsession then
+               local authen = track.sysauth_authenticator
+               local _, sid, sdat, default_user, allowed_users
+
+               if type(authen) == "string" and authen ~= "htmlauth" then
+                       error500("Unsupported authenticator %q configured" % authen)
+                       return
+               end
+
+               if type(track.sysauth) == "table" then
+                       default_user, allowed_users = nil, track.sysauth
+               else
+                       default_user, allowed_users = track.sysauth, { track.sysauth }
+               end
+
+               if type(authen) == "function" then
+                       _, sid = authen(sys.user.checkpasswd, allowed_users)
+               else
+                       sid = http.getcookie("sysauth")
+               end
+
+               sid, sdat = session_retrieve(sid, allowed_users)
+
+               if not (sid and sdat) and authen == "htmlauth" then
+                       local user = http.getenv("HTTP_AUTH_USER")
+                       local pass = http.getenv("HTTP_AUTH_PASS")
+
+                       if user == nil and pass == nil then
+                               user = http.formvalue("luci_username")
+                               pass = http.formvalue("luci_password")
+                       end
+
+                       sid, sdat = session_setup(user, pass, allowed_users)
+
+                       if not sid then
+                               local tmpl = require "luci.template"
+
+                               context.path = {}
+
+                               http.status(403, "Forbidden")
+                               http.header("X-LuCI-Login-Required", "yes")
+                               tmpl.render(track.sysauth_template or "sysauth", {
+                                       duser = default_user,
+                                       fuser = user
+                               })
+
+                               return
+                       end
+
+                       http.header("Set-Cookie", 'sysauth=%s; path=%s; HttpOnly%s' %{
+                               sid, build_url(), http.getenv("HTTPS") == "on" and "; secure" or ""
+                       })
+                       http.redirect(build_url(unpack(ctx.requestpath)))
+               end
+
+               if not sid or not sdat then
+                       http.status(403, "Forbidden")
+                       http.header("X-LuCI-Login-Required", "yes")
+                       return
+               end
+
+               ctx.authsession = sid
+               ctx.authtoken = sdat.token
+               ctx.authuser = sdat.username
+       end
+
+       if track.cors and http.getenv("REQUEST_METHOD") == "OPTIONS" then
+               luci.http.status(200, "OK")
+               luci.http.header("Access-Control-Allow-Origin", http.getenv("HTTP_ORIGIN") or "*")
+               luci.http.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
+               return
+       end
+
+       if c and require_post_security(c.target) then
+               if not test_post_security(c) then
+                       return
+               end
+       end
+
+       if track.setgroup then
+               sys.process.setgroup(track.setgroup)
+       end
+
+       if track.setuser then
+               sys.process.setuser(track.setuser)
+       end
+
+       local target = nil
+       if c then
+               if type(c.target) == "function" then
+                       target = c.target
+               elseif type(c.target) == "table" then
+                       target = c.target.target
+               end
+       end
+
+       if c and (c.index or type(target) == "function") then
+               ctx.dispatched = c
+               ctx.requested = ctx.requested or ctx.dispatched
+       end
+
+       if c and c.index then
+               local tpl = require "luci.template"
+
+               if util.copcall(tpl.render, "indexer", {}) then
+                       return true
+               end
+       end
+
+       if type(target) == "function" then
+               util.copcall(function()
+                       local oldenv = getfenv(target)
+                       local module = require(c.module)
+                       local env = setmetatable({}, {__index=
+
+                       function(tbl, key)
+                               return rawget(tbl, key) or module[key] or oldenv[key]
+                       end})
+
+                       setfenv(target, env)
+               end)
+
+               local ok, err
+               if type(c.target) == "table" then
+                       ok, err = util.copcall(target, c.target, unpack(args))
+               else
+                       ok, err = util.copcall(target, unpack(args))
+               end
+               if not ok then
+                       error500("Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") ..
+                                " dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" ..
+                                "The called action terminated with an exception:\n" .. tostring(err or "(unknown)"))
+               end
+       else
+               local root = node()
+               if not root or not root.target then
+                       error404("No root node was registered, this usually happens if no module was installed.\n" ..
+                                "Install luci-mod-admin-full and retry. " ..
+                                "If the module is already installed, try removing the /tmp/luci-indexcache file.")
+               else
+                       error404("No page is registered at '/" .. table.concat(request, "/") .. "'.\n" ..
+                                "If this url belongs to an extension, make sure it is properly installed.\n" ..
+                                "If the extension was recently installed, try removing the /tmp/luci-indexcache file.")
+               end
+       end
+end
+
+function createindex()
+       local controllers = { }
+       local base = "%s/controller/" % util.libpath()
+       local _, path
+
+       for path in (fs.glob("%s*.lua" % base) or function() end) do
+               controllers[#controllers+1] = path
+       end
+
+       for path in (fs.glob("%s*/*.lua" % base) or function() end) do
+               controllers[#controllers+1] = path
+       end
+
+       if indexcache then
+               local cachedate = fs.stat(indexcache, "mtime")
+               if cachedate then
+                       local realdate = 0
+                       for _, obj in ipairs(controllers) do
+                               local omtime = fs.stat(obj, "mtime")
+                               realdate = (omtime and omtime > realdate) and omtime or realdate
+                       end
+
+                       if cachedate > realdate and sys.process.info("uid") == 0 then
+                               assert(
+                                       sys.process.info("uid") == fs.stat(indexcache, "uid")
+                                       and fs.stat(indexcache, "modestr") == "rw-------",
+                                       "Fatal: Indexcache is not sane!"
+                               )
+
+                               index = loadfile(indexcache)()
+                               return index
+                       end
+               end
+       end
+
+       index = {}
+
+       for _, path in ipairs(controllers) do
+               local modname = "luci.controller." .. path:sub(#base+1, #path-4):gsub("/", ".")
+               local mod = require(modname)
+               assert(mod ~= true,
+                      "Invalid controller file found\n" ..
+                      "The file '" .. path .. "' contains an invalid module line.\n" ..
+                      "Please verify whether the module name is set to '" .. modname ..
+                      "' - It must correspond to the file path!")
+
+               local idx = mod.index
+               assert(type(idx) == "function",
+                      "Invalid controller file found\n" ..
+                      "The file '" .. path .. "' contains no index() function.\n" ..
+                      "Please make sure that the controller contains a valid " ..
+                      "index function and verify the spelling!")
+
+               index[modname] = idx
+       end
+
+       if indexcache then
+               local f = nixio.open(indexcache, "w", 600)
+               f:writeall(util.get_bytecode(index))
+               f:close()
+       end
+end
+
+-- Build the index before if it does not exist yet.
+function createtree()
+       if not index then
+               createindex()
+       end
+
+       local ctx  = context
+       local tree = {nodes={}, inreq=true}
+
+       ctx.treecache = setmetatable({}, {__mode="v"})
+       ctx.tree = tree
+
+       local scope = setmetatable({}, {__index = luci.dispatcher})
+
+       for k, v in pairs(index) do
+               scope._NAME = k
+               setfenv(v, scope)
+               v()
+       end
+
+       return tree
+end
+
+function assign(path, clone, title, order)
+       local obj  = node(unpack(path))
+       obj.nodes  = nil
+       obj.module = nil
+
+       obj.title = title
+       obj.order = order
+
+       setmetatable(obj, {__index = _create_node(clone)})
+
+       return obj
+end
+
+function entry(path, target, title, order)
+       local c = node(unpack(path))
+
+       c.target = target
+       c.title  = title
+       c.order  = order
+       c.module = getfenv(2)._NAME
+
+       return c
+end
+
+-- enabling the node.
+function get(...)
+       return _create_node({...})
+end
+
+function node(...)
+       local c = _create_node({...})
+
+       c.module = getfenv(2)._NAME
+       c.auto = nil
+
+       return c
+end
+
+function lookup(...)
+       local i, path = nil, {}
+       for i = 1, select('#', ...) do
+               local name, arg = nil, tostring(select(i, ...))
+               for name in arg:gmatch("[^/]+") do
+                       path[#path+1] = name
+               end
+       end
+
+       for i = #path, 1, -1 do
+               local node = context.treecache[table.concat(path, ".", 1, i)]
+               if node and (i == #path or node.leaf) then
+                       return node, build_url(unpack(path))
+               end
+       end
+end
+
+function _create_node(path)
+       if #path == 0 then
+               return context.tree
+       end
+
+       local name = table.concat(path, ".")
+       local c = context.treecache[name]
+
+       if not c then
+               local last = table.remove(path)
+               local parent = _create_node(path)
+
+               c = {nodes={}, auto=true, inreq=true}
+
+               local _, n
+               for _, n in ipairs(path) do
+                       if context.path[_] ~= n then
+                               c.inreq = false
+                               break
+                       end
+               end
+
+               c.inreq = c.inreq and (context.path[#path + 1] == last)
+
+               parent.nodes[last] = c
+               context.treecache[name] = c
+       end
+
+       return c
+end
+
+-- Subdispatchers --
+
+function _find_eligible_node(root, prefix, deep, types, descend)
+       local children = _ordered_children(root)
+
+       if not root.leaf and deep ~= nil then
+               local sub_path = { unpack(prefix) }
+
+               if deep == false then
+                       deep = nil
+               end
+
+               local _, child
+               for _, child in ipairs(children) do
+                       sub_path[#prefix+1] = child.name
+
+                       local res_path = _find_eligible_node(child.node, sub_path,
+                                                            deep, types, true)
+
+                       if res_path then
+                               return res_path
+                       end
+               end
+       end
+
+       if descend and
+          (not types or
+           (type(root.target) == "table" and
+            util.contains(types, root.target.type)))
+       then
+               return prefix
+       end
+end
+
+function _find_node(recurse, types)
+       local path = { unpack(context.path) }
+       local name = table.concat(path, ".")
+       local node = context.treecache[name]
+
+       path = _find_eligible_node(node, path, recurse, types)
+
+       if path then
+               dispatch(path)
+       else
+               require "luci.template".render("empty_node_placeholder")
+       end
+end
+
+function _firstchild()
+       return _find_node(false, nil)
+end
+
+function firstchild()
+       return { type = "firstchild", target = _firstchild }
+end
+
+function _firstnode()
+       return _find_node(true, { "cbi", "form", "template", "arcombine" })
+end
+
+function firstnode()
+       return { type = "firstnode", target = _firstnode }
+end
+
+function alias(...)
+       local req = {...}
+       return function(...)
+               for _, r in ipairs({...}) do
+                       req[#req+1] = r
+               end
+
+               dispatch(req)
+       end
+end
+
+function rewrite(n, ...)
+       local req = {...}
+       return function(...)
+               local dispatched = util.clone(context.dispatched)
+
+               for i=1,n do
+                       table.remove(dispatched, 1)
+               end
+
+               for i, r in ipairs(req) do
+                       table.insert(dispatched, i, r)
+               end
+
+               for _, r in ipairs({...}) do
+                       dispatched[#dispatched+1] = r
+               end
+
+               dispatch(dispatched)
+       end
+end
+
+
+local function _call(self, ...)
+       local func = getfenv()[self.name]
+       assert(func ~= nil,
+              'Cannot resolve function "' .. self.name .. '". Is it misspelled or local?')
+
+       assert(type(func) == "function",
+              'The symbol "' .. self.name .. '" does not refer to a function but data ' ..
+              'of type "' .. type(func) .. '".')
+
+       if #self.argv > 0 then
+               return func(unpack(self.argv), ...)
+       else
+               return func(...)
+       end
+end
+
+function call(name, ...)
+       return {type = "call", argv = {...}, name = name, target = _call}
+end
+
+function post_on(params, name, ...)
+       return {
+               type = "call",
+               post = params,
+               argv = { ... },
+               name = name,
+               target = _call
+       }
+end
+
+function post(...)
+       return post_on(true, ...)
+end
+
+
+local _template = function(self, ...)
+       require "luci.template".render(self.view)
+end
+
+function template(name)
+       return {type = "template", view = name, target = _template}
+end
+
+
+local function _cbi(self, ...)
+       local cbi = require "luci.cbi"
+       local tpl = require "luci.template"
+       local http = require "luci.http"
+
+       local config = self.config or {}
+       local maps = cbi.load(self.model, ...)
+
+       local state = nil
+
+       local i, res
+       for i, res in ipairs(maps) do
+               if util.instanceof(res, cbi.SimpleForm) then
+                       io.stderr:write("Model %s returns SimpleForm but is dispatched via cbi(),\n"
+                               % self.model)
+
+                       io.stderr:write("please change %s to use the form() action instead.\n"
+                               % table.concat(context.request, "/"))
+               end
+
+               res.flow = config
+               local cstate = res:parse()
+               if cstate and (not state or cstate < state) then
+                       state = cstate
+               end
+       end
+
+       local function _resolve_path(path)
+               return type(path) == "table" and build_url(unpack(path)) or path
+       end
+
+       if config.on_valid_to and state and state > 0 and state < 2 then
+               http.redirect(_resolve_path(config.on_valid_to))
+               return
+       end
+
+       if config.on_changed_to and state and state > 1 then
+               http.redirect(_resolve_path(config.on_changed_to))
+               return
+       end
+
+       if config.on_success_to and state and state > 0 then
+               http.redirect(_resolve_path(config.on_success_to))
+               return
+       end
+
+       if config.state_handler then
+               if not config.state_handler(state, maps) then
+                       return
+               end
+       end
+
+       http.header("X-CBI-State", state or 0)
+
+       if not config.noheader then
+               tpl.render("cbi/header", {state = state})
+       end
+
+       local redirect
+       local messages
+       local applymap   = false
+       local pageaction = true
+       local parsechain = { }
+
+       for i, res in ipairs(maps) do
+               if res.apply_needed and res.parsechain then
+                       local c
+                       for _, c in ipairs(res.parsechain) do
+                               parsechain[#parsechain+1] = c
+                       end
+                       applymap = true
+               end
+
+               if res.redirect then
+                       redirect = redirect or res.redirect
+               end
+
+               if res.pageaction == false then
+                       pageaction = false
+               end
+
+               if res.message then
+                       messages = messages or { }
+                       messages[#messages+1] = res.message
+               end
+       end
+
+       for i, res in ipairs(maps) do
+               res:render({
+                       firstmap   = (i == 1),
+                       redirect   = redirect,
+                       messages   = messages,
+                       pageaction = pageaction,
+                       parsechain = parsechain
+               })
+       end
+
+       if not config.nofooter then
+               tpl.render("cbi/footer", {
+                       flow          = config,
+                       pageaction    = pageaction,
+                       redirect      = redirect,
+                       state         = state,
+                       autoapply     = config.autoapply,
+                       trigger_apply = applymap
+               })
+       end
+end
+
+function cbi(model, config)
+       return {
+               type = "cbi",
+               post = { ["cbi.submit"] = true },
+               config = config,
+               model = model,
+               target = _cbi
+       }
+end
+
+
+local function _arcombine(self, ...)
+       local argv = {...}
+       local target = #argv > 0 and self.targets[2] or self.targets[1]
+       setfenv(target.target, self.env)
+       target:target(unpack(argv))
+end
+
+function arcombine(trg1, trg2)
+       return {type = "arcombine", env = getfenv(), target = _arcombine, targets = {trg1, trg2}}
+end
+
+
+local function _form(self, ...)
+       local cbi = require "luci.cbi"
+       local tpl = require "luci.template"
+       local http = require "luci.http"
+
+       local maps = luci.cbi.load(self.model, ...)
+       local state = nil
+
+       local i, res
+       for i, res in ipairs(maps) do
+               local cstate = res:parse()
+               if cstate and (not state or cstate < state) then
+                       state = cstate
+               end
+       end
+
+       http.header("X-CBI-State", state or 0)
+       tpl.render("header")
+       for i, res in ipairs(maps) do
+               res:render()
+       end
+       tpl.render("footer")
+end
+
+function form(model)
+       return {
+               type = "cbi",
+               post = { ["cbi.submit"] = true },
+               model = model,
+               target = _form
+       }
+end
+
+translate = i18n.translate
+
+-- This function does not actually translate the given argument but
+-- is used by build/i18n-scan.pl to find translatable entries.
+function _(text)
+       return text
+end
diff --git a/package/luci/modules/luci-base/luasrc/dispatcher.luadoc b/package/luci/modules/luci-base/luasrc/dispatcher.luadoc
new file mode 100644 (file)
index 0000000..a77f8d8
--- /dev/null
@@ -0,0 +1,220 @@
+---[[
+LuCI web dispatcher.
+]]
+module "luci.dispatcher"
+
+---[[
+Build the URL relative to the server webroot from given virtual path.
+
+@class function
+@name build_url
+@param ...     Virtual path
+@return                Relative URL
+]]
+
+---[[
+Check whether a dispatch node shall be visible
+
+@class function
+@name node_visible
+@param node    Dispatch node
+@return                Boolean indicating whether the node should be visible
+]]
+
+---[[
+Return a sorted table of visible children within a given node
+
+@class function
+@name node_childs
+@param node    Dispatch node
+@return                Ordered table of child node names
+]]
+
+---[[
+Send a 404 error code and render the "error404" template if available.
+
+@class function
+@name error404
+@param message Custom error message (optional)
+@return                        false
+]]
+
+---[[
+Send a 500 error code and render the "error500" template if available.
+
+@class function
+@name error500
+@param message Custom error message (optional)#
+@return                        false
+]]
+
+---[[
+Dispatch an HTTP request.
+
+@class function
+@name httpdispatch
+@param request LuCI HTTP Request object
+]]
+
+---[[
+Dispatches a LuCI virtual path.
+
+@class function
+@name dispatch
+@param request Virtual path
+]]
+
+---[[
+Generate the dispatching index using the native file-cache based strategy.
+
+
+@class function
+@name createindex
+]]
+
+---[[
+Create the dispatching tree from the index.
+
+Build the index before if it does not exist yet.
+
+@class function
+@name createtree
+]]
+
+---[[
+Clone a node of the dispatching tree to another position.
+
+@class function
+@name assign
+@param path    Virtual path destination
+@param clone   Virtual path source
+@param title   Destination node title (optional)
+@param order   Destination node order value (optional)
+@return                        Dispatching tree node
+]]
+
+---[[
+Create a new dispatching node and define common parameters.
+
+@class function
+@name entry
+@param path    Virtual path
+@param target  Target function to call when dispatched.
+@param title   Destination node title
+@param order   Destination node order value (optional)
+@return                        Dispatching tree node
+]]
+
+---[[
+Fetch or create a dispatching node without setting the target module or
+enabling the node.
+
+@class function
+@name get
+@param ...             Virtual path
+@return                        Dispatching tree node
+]]
+
+---[[
+Fetch or create a new dispatching node.
+
+@class function
+@name node
+@param ...             Virtual path
+@return                        Dispatching tree node
+]]
+
+---[[
+Lookup node in dispatching tree.
+
+@class function
+@name lookup
+@param  ...            Virtual path
+@return Node object, canonical url or nil if the path was not found.
+]]
+
+---[[
+Alias the first (lowest order) page automatically
+
+
+@class function
+@name firstchild
+]]
+
+---[[
+Create a redirect to another dispatching node.
+
+@class function
+@name alias
+@param ...             Virtual path destination
+]]
+
+---[[
+Rewrite the first x path values of the request.
+
+@class function
+@name rewrite
+@param n               Number of path values to replace
+@param ...             Virtual path to replace removed path values with
+]]
+
+---[[
+Create a function-call dispatching target.
+
+@class function
+@name call
+@param name    Target function of local controller
+@param ...             Additional parameters passed to the function
+]]
+
+---[[
+Create a template render dispatching target.
+
+@class function
+@name template
+@param name    Template to be rendered
+]]
+
+---[[
+Create a CBI model dispatching target.
+
+@class function
+@name cbi
+@param model   CBI model to be rendered
+]]
+
+---[[
+Create a combined dispatching target for non argv and argv requests.
+
+@class function
+@name arcombine
+@param trg1    Overview Target
+@param trg2    Detail Target
+]]
+
+---[[
+Create a CBI form model dispatching target.
+
+@class function
+@name form
+@param model   CBI form model tpo be rendered
+]]
+
+---[[
+Access the luci.i18n translate() api.
+
+@class  function
+@name   translate
+@param  text    Text to translate
+]]
+
+---[[
+No-op function used to mark translation entries for menu labels.
+
+This function does not actually translate the given argument but
+is used by build/i18n-scan.pl to find translatable entries.
+
+@class function
+@name _
+]]
+
diff --git a/package/luci/modules/luci-base/luasrc/http.lua b/package/luci/modules/luci-base/luasrc/http.lua
new file mode 100644 (file)
index 0000000..20b55f2
--- /dev/null
@@ -0,0 +1,554 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io>
+-- Licensed to the public under the Apache License 2.0.
+
+local util  = require "luci.util"
+local coroutine = require "coroutine"
+local table = require "table"
+local lhttp = require "lucihttp"
+local nixio = require "nixio"
+local ltn12 = require "luci.ltn12"
+
+local table, ipairs, pairs, type, tostring, tonumber, error =
+       table, ipairs, pairs, type, tostring, tonumber, error
+
+module "luci.http"
+
+HTTP_MAX_CONTENT      = 1024*100               -- 100 kB maximum content size
+
+context = util.threadlocal()
+
+Request = util.class()
+function Request.__init__(self, env, sourcein, sinkerr)
+       self.input = sourcein
+       self.error = sinkerr
+
+
+       -- File handler nil by default to let .content() work
+       self.filehandler = nil
+
+       -- HTTP-Message table
+       self.message = {
+               env = env,
+               headers = {},
+               params = urldecode_params(env.QUERY_STRING or ""),
+       }
+
+       self.parsed_input = false
+end
+
+function Request.formvalue(self, name, noparse)
+       if not noparse and not self.parsed_input then
+               self:_parse_input()
+       end
+
+       if name then
+               return self.message.params[name]
+       else
+               return self.message.params
+       end
+end
+
+function Request.formvaluetable(self, prefix)
+       local vals = {}
+       prefix = prefix and prefix .. "." or "."
+
+       if not self.parsed_input then
+               self:_parse_input()
+       end
+
+       local void = self.message.params[nil]
+       for k, v in pairs(self.message.params) do
+               if k:find(prefix, 1, true) == 1 then
+                       vals[k:sub(#prefix + 1)] = tostring(v)
+               end
+       end
+
+       return vals
+end
+
+function Request.content(self)
+       if not self.parsed_input then
+               self:_parse_input()
+       end
+
+       return self.message.content, self.message.content_length
+end
+
+function Request.getcookie(self, name)
+       return lhttp.header_attribute("cookie; " .. (self:getenv("HTTP_COOKIE") or ""), name)
+end
+
+function Request.getenv(self, name)
+       if name then
+               return self.message.env[name]
+       else
+               return self.message.env
+       end
+end
+
+function Request.setfilehandler(self, callback)
+       self.filehandler = callback
+
+       if not self.parsed_input then
+               return
+       end
+
+       -- If input has already been parsed then uploads are stored as unlinked
+       -- temporary files pointed to by open file handles in the parameter
+       -- value table. Loop all params, and invoke the file callback for any
+       -- param with an open file handle.
+       local name, value
+       for name, value in pairs(self.message.params) do
+               if type(value) == "table" then
+                       while value.fd do
+                               local data = value.fd:read(1024)
+                               local eof = (not data or data == "")
+
+                               callback(value, data, eof)
+
+                               if eof then
+                                       value.fd:close()
+                                       value.fd = nil
+                               end
+                       end
+               end
+       end
+end
+
+function Request._parse_input(self)
+       parse_message_body(
+                self.input,
+                self.message,
+                self.filehandler
+       )
+       self.parsed_input = true
+end
+
+function close()
+       if not context.eoh then
+               context.eoh = true
+               coroutine.yield(3)
+       end
+
+       if not context.closed then
+               context.closed = true
+               coroutine.yield(5)
+       end
+end
+
+function content()
+       return context.request:content()
+end
+
+function formvalue(name, noparse)
+       return context.request:formvalue(name, noparse)
+end
+
+function formvaluetable(prefix)
+       return context.request:formvaluetable(prefix)
+end
+
+function getcookie(name)
+       return context.request:getcookie(name)
+end
+
+-- or the environment table itself.
+function getenv(name)
+       return context.request:getenv(name)
+end
+
+function setfilehandler(callback)
+       return context.request:setfilehandler(callback)
+end
+
+function header(key, value)
+       if not context.headers then
+               context.headers = {}
+       end
+       context.headers[key:lower()] = value
+       coroutine.yield(2, key, value)
+end
+
+function prepare_content(mime)
+       if not context.headers or not context.headers["content-type"] then
+               if mime == "application/xhtml+xml" then
+                       if not getenv("HTTP_ACCEPT") or
+                         not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then
+                               mime = "text/html; charset=UTF-8"
+                       end
+                       header("Vary", "Accept")
+               end
+               header("Content-Type", mime)
+       end
+end
+
+function source()
+       return context.request.input
+end
+
+function status(code, message)
+       code = code or 200
+       message = message or "OK"
+       context.status = code
+       coroutine.yield(1, code, message)
+end
+
+-- This function is as a valid LTN12 sink.
+-- If the content chunk is nil this function will automatically invoke close.
+function write(content, src_err)
+       if not content then
+               if src_err then
+                       error(src_err)
+               else
+                       close()
+               end
+               return true
+       elseif #content == 0 then
+               return true
+       else
+               if not context.eoh then
+                       if not context.status then
+                               status()
+                       end
+                       if not context.headers or not context.headers["content-type"] then
+                               header("Content-Type", "text/html; charset=utf-8")
+                       end
+                       if not context.headers["cache-control"] then
+                               header("Cache-Control", "no-cache")
+                               header("Expires", "0")
+                       end
+                       if not context.headers["x-frame-options"] then
+                               header("X-Frame-Options", "SAMEORIGIN")
+                       end
+                       if not context.headers["x-xss-protection"] then
+                               header("X-XSS-Protection", "1; mode=block")
+                       end
+                       if not context.headers["x-content-type-options"] then
+                               header("X-Content-Type-Options", "nosniff")
+                       end
+
+                       context.eoh = true
+                       coroutine.yield(3)
+               end
+               coroutine.yield(4, content)
+               return true
+       end
+end
+
+function splice(fd, size)
+       coroutine.yield(6, fd, size)
+end
+
+function redirect(url)
+       if url == "" then url = "/" end
+       status(302, "Found")
+       header("Location", url)
+       close()
+end
+
+function build_querystring(q)
+       local s, n, k, v = {}, 1, nil, nil
+
+       for k, v in pairs(q) do
+               s[n+0] = (n == 1) and "?" or "&"
+               s[n+1] = util.urlencode(k)
+               s[n+2] = "="
+               s[n+3] = util.urlencode(v)
+               n = n + 4
+       end
+
+       return table.concat(s, "")
+end
+
+urldecode = util.urldecode
+
+urlencode = util.urlencode
+
+function write_json(x)
+       util.serialize_json(x, write)
+end
+
+-- from given url or string. Returns a table with urldecoded values.
+-- Simple parameters are stored as string values associated with the parameter
+-- name within the table. Parameters with multiple values are stored as array
+-- containing the corresponding values.
+function urldecode_params(url, tbl)
+       local parser, name
+       local params = tbl or { }
+
+       parser = lhttp.urlencoded_parser(function (what, buffer, length)
+               if what == parser.TUPLE then
+                       name, value = nil, nil
+               elseif what == parser.NAME then
+                       name = lhttp.urldecode(buffer)
+               elseif what == parser.VALUE and name then
+                       params[name] = lhttp.urldecode(buffer) or ""
+               end
+
+               return true
+       end)
+
+       if parser then
+               parser:parse((url or ""):match("[^?]*$"))
+               parser:parse(nil)
+       end
+
+       return params
+end
+
+-- separated by "&". Tables are encoded as parameters with multiple values by
+-- repeating the parameter name with each value.
+function urlencode_params(tbl)
+       local k, v
+       local n, enc = 1, {}
+       for k, v in pairs(tbl) do
+               if type(v) == "table" then
+                       local i, v2
+                       for i, v2 in ipairs(v) do
+                               if enc[1] then
+                                       enc[n] = "&"
+                                       n = n + 1
+                               end
+
+                               enc[n+0] = lhttp.urlencode(k)
+                               enc[n+1] = "="
+                               enc[n+2] = lhttp.urlencode(v2)
+                               n = n + 3
+                       end
+               else
+                       if enc[1] then
+                               enc[n] = "&"
+                               n = n + 1
+                       end
+
+                       enc[n+0] = lhttp.urlencode(k)
+                       enc[n+1] = "="
+                       enc[n+2] = lhttp.urlencode(v)
+                       n = n + 3
+               end
+       end
+
+       return table.concat(enc, "")
+end
+
+-- Content-Type. Stores all extracted data associated with its parameter name
+-- in the params table within the given message object. Multiple parameter
+-- values are stored as tables, ordinary ones as strings.
+-- If an optional file callback function is given then it is fed with the
+-- file contents chunk by chunk and only the extracted file name is stored
+-- within the params table. The callback function will be called subsequently
+-- with three arguments:
+--  o Table containing decoded (name, file) and raw (headers) mime header data
+--  o String value containing a chunk of the file data
+--  o Boolean which indicates whether the current chunk is the last one (eof)
+function mimedecode_message_body(src, msg, file_cb)
+       local parser, header, field
+       local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil)
+
+       parser, err = lhttp.multipart_parser(msg.env.CONTENT_TYPE, function (what, buffer, length)
+               if what == parser.PART_INIT then
+                       field = { }
+
+               elseif what == parser.HEADER_NAME then
+                       header = buffer:lower()
+
+               elseif what == parser.HEADER_VALUE and header then
+                       if header:lower() == "content-disposition" and
+                          lhttp.header_attribute(buffer, nil) == "form-data"
+                       then
+                               field.name = lhttp.header_attribute(buffer, "name")
+                               field.file = lhttp.header_attribute(buffer, "filename")
+                               field[1] = field.file
+                       end
+
+                       if field.headers then
+                               field.headers[header] = buffer
+                       else
+                               field.headers = { [header] = buffer }
+                       end
+
+               elseif what == parser.PART_BEGIN then
+                       return not field.file
+
+               elseif what == parser.PART_DATA and field.name and length > 0 then
+                       if field.file then
+                               if file_cb then
+                                       file_cb(field, buffer, false)
+                                       msg.params[field.name] = msg.params[field.name] or field
+                               else
+                                       if not field.fd then
+                                               field.fd = nixio.mkstemp(field.name)
+                                       end
+
+                                       if field.fd then
+                                               field.fd:write(buffer)
+                                               msg.params[field.name] = msg.params[field.name] or field
+                                       end
+                               end
+                       else
+                               field.value = buffer
+                       end
+
+               elseif what == parser.PART_END and field.name then
+                       if field.file and msg.params[field.name] then
+                               if file_cb then
+                                       file_cb(field, "", true)
+                               elseif field.fd then
+                                       field.fd:seek(0, "set")
+                               end
+                       else
+                               local val = msg.params[field.name]
+
+                               if type(val) == "table" then
+                                       val[#val+1] = field.value or ""
+                               elseif val ~= nil then
+                                       msg.params[field.name] = { val, field.value or "" }
+                               else
+                                       msg.params[field.name] = field.value or ""
+                               end
+                       end
+
+                       field = nil
+
+               elseif what == parser.ERROR then
+                       err = buffer
+               end
+
+               return true
+       end, HTTP_MAX_CONTENT)
+
+       return ltn12.pump.all(src, function (chunk)
+               len = len + (chunk and #chunk or 0)
+
+               if maxlen and len > maxlen + 2 then
+                       return nil, "Message body size exceeds Content-Length"
+               end
+
+               if not parser or not parser:parse(chunk) then
+                       return nil, err
+               end
+
+               return true
+       end)
+end
+
+-- Content-Type. Stores all extracted data associated with its parameter name
+-- in the params table within the given message object. Multiple parameter
+-- values are stored as tables, ordinary ones as strings.
+function urldecode_message_body(src, msg)
+       local err, name, value, parser
+       local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil)
+
+       parser = lhttp.urlencoded_parser(function (what, buffer, length)
+               if what == parser.TUPLE then
+                       name, value = nil, nil
+               elseif what == parser.NAME then
+                       name = lhttp.urldecode(buffer, lhttp.DECODE_PLUS)
+               elseif what == parser.VALUE and name then
+                       local val = msg.params[name]
+
+                       if type(val) == "table" then
+                               val[#val+1] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or ""
+                       elseif val ~= nil then
+                               msg.params[name] = { val, lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" }
+                       else
+                               msg.params[name] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or ""
+                       end
+               elseif what == parser.ERROR then
+                       err = buffer
+               end
+
+               return true
+       end, HTTP_MAX_CONTENT)
+
+       return ltn12.pump.all(src, function (chunk)
+               len = len + (chunk and #chunk or 0)
+
+               if maxlen and len > maxlen + 2 then
+                       return nil, "Message body size exceeds Content-Length"
+               elseif len > HTTP_MAX_CONTENT then
+                       return nil, "Message body size exceeds maximum allowed length"
+               end
+
+               if not parser or not parser:parse(chunk) then
+                       return nil, err
+               end
+
+               return true
+       end)
+end
+
+-- This function will examine the Content-Type within the given message object
+-- to select the appropriate content decoder.
+-- Currently the application/x-www-urlencoded and application/form-data
+-- mime types are supported. If the encountered content encoding can't be
+-- handled then the whole message body will be stored unaltered as "content"
+-- property within the given message object.
+function parse_message_body(src, msg, filecb)
+       if msg.env.CONTENT_LENGTH or msg.env.REQUEST_METHOD == "POST" then
+               local ctype = lhttp.header_attribute(msg.env.CONTENT_TYPE, nil)
+
+               -- Is it multipart/mime ?
+               if ctype == "multipart/form-data" then
+                       return mimedecode_message_body(src, msg, filecb)
+
+               -- Is it application/x-www-form-urlencoded ?
+               elseif ctype == "application/x-www-form-urlencoded" then
+                       return urldecode_message_body(src, msg)
+
+               end
+
+               -- Unhandled encoding
+               -- If a file callback is given then feed it chunk by chunk, else
+               -- store whole buffer in message.content
+               local sink
+
+               -- If we have a file callback then feed it
+               if type(filecb) == "function" then
+                       local meta = {
+                               name = "raw",
+                               encoding = msg.env.CONTENT_TYPE
+                       }
+                       sink = function( chunk )
+                               if chunk then
+                                       return filecb(meta, chunk, false)
+                               else
+                                       return filecb(meta, nil, true)
+                               end
+                       end
+               -- ... else append to .content
+               else
+                       msg.content = ""
+                       msg.content_length = 0
+
+                       sink = function( chunk )
+                               if chunk then
+                                       if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then
+                                               msg.content        = msg.content        .. chunk
+                                               msg.content_length = msg.content_length + #chunk
+                                               return true
+                                       else
+                                               return nil, "POST data exceeds maximum allowed length"
+                                       end
+                               end
+                               return true
+                       end
+               end
+
+               -- Pump data...
+               while true do
+                       local ok, err = ltn12.pump.step( src, sink )
+
+                       if not ok and err then
+                               return nil, err
+                       elseif not ok then -- eof
+                               return true
+                       end
+               end
+
+               return true
+       end
+
+       return false
+end
diff --git a/package/luci/modules/luci-base/luasrc/http.luadoc b/package/luci/modules/luci-base/luasrc/http.luadoc
new file mode 100644 (file)
index 0000000..8f6f380
--- /dev/null
@@ -0,0 +1,260 @@
+---[[
+LuCI Web Framework high-level HTTP functions.
+]]
+module "luci.http"
+
+---[[
+Close the HTTP-Connection.
+
+@class                 function
+@name                  close
+]]
+
+---[[
+Return the request content if the request was of unknown type.
+
+@class                 function
+@name                  content
+@return                        HTTP request body
+@return                        HTTP request body length
+]]
+
+---[[
+Get a certain HTTP input value or a table of all input values.
+
+@class                 function
+@name                  formvalue
+@param name            Name of the GET or POST variable to fetch
+@param noparse Don't parse POST data before getting the value
+@return                        HTTP input value or table of all input value
+]]
+
+---[[
+Get a table of all HTTP input values with a certain prefix.
+
+@class                 function
+@name                  formvaluetable
+@param prefix  Prefix
+@return                        Table of all HTTP input values with given prefix
+]]
+
+---[[
+Get the value of a certain HTTP-Cookie.
+
+@class                 function
+@name                  getcookie
+@param name            Cookie Name
+@return                        String containing cookie data
+]]
+
+---[[
+Get the value of a certain HTTP environment variable
+or the environment table itself.
+
+@class                 function
+@name                  getenv
+@param name            Environment variable
+@return                        HTTP environment value or environment table
+]]
+
+---[[
+Set a handler function for incoming user file uploads.
+
+@class                 function
+@name                  setfilehandler
+@param callback        Handler function
+]]
+
+---[[
+Send a HTTP-Header.
+
+@class                 function
+@name                  header
+@param key             Header key
+@param value   Header value
+]]
+
+---[[
+Set the mime type of following content data.
+
+@class                 function
+@name                  prepare_content
+@param mime            Mimetype of following content
+]]
+
+---[[
+Get the RAW HTTP input source
+
+@class                 function
+@name                  source
+@return                        HTTP LTN12 source
+]]
+
+---[[
+Set the HTTP status code and status message.
+
+@class                 function
+@name                  status
+@param code            Status code
+@param message Status message
+]]
+
+---[[
+Send a chunk of content data to the client.
+
+This function is as a valid LTN12 sink.
+If the content chunk is nil this function will automatically invoke close.
+
+@class                 function
+@name                  write
+@param content Content chunk
+@param src_err Error object from source (optional)
+@see close
+]]
+
+---[[
+Splice data from a filedescriptor to the client.
+
+@class                 function
+@name                  splice
+@param fp              File descriptor
+@param size            Bytes to splice (optional)
+]]
+
+---[[
+Redirects the client to a new URL and closes the connection.
+
+@class                 function
+@name                  redirect
+@param url             Target URL
+]]
+
+---[[
+Create a querystring out of a table of key - value pairs.
+
+@class                 function
+@name                  build_querystring
+@param table   Query string source table
+@return                        Encoded HTTP query string
+]]
+
+---[[
+Return the URL-decoded equivalent of a string.
+
+@class                 function
+@name                  urldecode
+@param str             URL-encoded string
+@param no_plus Don't decode + to " "
+@return                        URL-decoded string
+@see                   urlencode
+]]
+
+---[[
+Return the URL-encoded equivalent of a string.
+
+@class                 function
+@name                  urlencode
+@param str             Source string
+@return                        URL-encoded string
+@see                   urldecode
+]]
+
+---[[
+Send the given data as JSON encoded string.
+
+@class                 function
+@name                  write_json
+@param data            Data to send
+]]
+
+---[[
+Extract and split urlencoded data pairs, separated bei either "&" or ";"
+from given url or string. Returns a table with urldecoded values.
+
+Simple parameters are stored as string values associated with the parameter
+name within the table. Parameters with multiple values are stored as array
+containing the corresponding values.
+
+@class                 function
+@name                  urldecode_params
+@param url             The url or string which contains x-www-urlencoded form data
+@param tbl             Use the given table for storing values (optional)
+@return                        Table containing the urldecoded parameters
+@see                   urlencode_params
+]]
+
+---[[
+Encode each key-value-pair in given table to x-www-urlencoded format,
+separated by "&".
+
+Tables are encoded as parameters with multiple values by repeating the
+parameter name with each value.
+
+@class                 function
+@name                  urlencode_params
+@param tbl             Table with the values
+@return                        String containing encoded values
+@see                   urldecode_params
+]]
+
+---[[
+Decode a mime encoded http message body with multipart/form-data Content-Type.
+
+Stores all extracted data associated with its parameter name
+in the params table within the given message object. Multiple parameter
+values are stored as tables, ordinary ones as strings.
+
+If an optional file callback function is given then it is fed with the
+file contents chunk by chunk and only the extracted file name is stored
+within the params table. The callback function will be called subsequently
+with three arguments:
+ o Table containing decoded (name, file) and raw (headers) mime header data
+ o String value containing a chunk of the file data
+ o Boolean which indicates whether the current chunk is the last one (eof)
+
+@class                 function
+@name                  mimedecode_message_body
+@param src             Ltn12 source function
+@param msg             HTTP message object
+@param filecb  File callback function (optional)
+@return                        Value indicating successful operation (not nil means "ok")
+@return                        String containing the error if unsuccessful
+@see                   parse_message_header
+]]
+
+---[[
+Decode an urlencoded http message body with application/x-www-urlencoded
+Content-Type.
+
+Stores all extracted data associated with its parameter name in the params
+table within the given message object. Multiple parameter values are stored
+as tables, ordinary ones as strings.
+
+@class                 function
+@name                  urldecode_message_body
+@param src             Ltn12 source function
+@param msg             HTTP message object
+@return                        Value indicating successful operation (not nil means "ok")
+@return                        String containing the error if unsuccessful
+@see                   parse_message_header
+]]
+
+---[[
+Try to extract and decode a http message body from the given ltn12 source.
+This function will examine the Content-Type within the given message object
+to select the appropriate content decoder.
+
+Currently the application/x-www-urlencoded and application/form-data
+mime types are supported. If the encountered content encoding can't be
+handled then the whole message body will be stored unaltered as "content"
+property within the given message object.
+
+@class                 function
+@name                  parse_message_body
+@param src             Ltn12 source function
+@param msg             HTTP message object
+@param filecb  File data callback (optional, see mimedecode_message_body())
+@return                        Value indicating successful operation (not nil means "ok")
+@return                        String containing the error if unsuccessful
+@see                   parse_message_header
+]]
diff --git a/package/luci/modules/luci-base/luasrc/i18n.lua b/package/luci/modules/luci-base/luasrc/i18n.lua
new file mode 100644 (file)
index 0000000..323912b
--- /dev/null
@@ -0,0 +1,55 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local tparser  = require "luci.template.parser"
+local util     = require "luci.util"
+local tostring = tostring
+
+module "luci.i18n"
+
+i18ndir = util.libpath() .. "/i18n/"
+context = util.threadlocal()
+default = "en"
+
+
+function setlanguage(lang)
+       local code, subcode = lang:match("^([A-Za-z][A-Za-z])[%-_]([A-Za-z][A-Za-z])$")
+       if not (code and subcode) then
+               subcode = lang:match("^([A-Za-z][A-Za-z])$")
+               if not subcode then
+                       return nil
+               end
+       end
+
+       context.parent = code and code:lower()
+       context.lang   = context.parent and context.parent.."-"..subcode:lower() or subcode:lower()
+
+       if tparser.load_catalog(context.lang, i18ndir) and
+          tparser.change_catalog(context.lang)
+       then
+               return context.lang
+
+       elseif context.parent then
+               if tparser.load_catalog(context.parent, i18ndir) and
+                  tparser.change_catalog(context.parent)
+               then
+                       return context.parent
+               end
+       end
+
+       return nil
+end
+
+function translate(key)
+       return tparser.translate(key) or key
+end
+
+function translatef(key, ...)
+       return tostring(translate(key)):format(...)
+end
+
+function dump()
+       local rv = {}
+       tparser.get_translations(function(k, v) rv[k] = v end)
+       return rv
+end
diff --git a/package/luci/modules/luci-base/luasrc/i18n.luadoc b/package/luci/modules/luci-base/luasrc/i18n.luadoc
new file mode 100644 (file)
index 0000000..b76c298
--- /dev/null
@@ -0,0 +1,42 @@
+---[[
+LuCI translation library.
+]]
+module "luci.i18n"
+
+---[[
+Set the context default translation language.
+
+@class function
+@name setlanguage
+@param lang    An IETF/BCP 47 language tag or ISO3166 country code, e.g. "en-US" or "de"
+@return                The effective loaded language, e.g. "en" for "en-US" - or nil on failure
+]]
+
+---[[
+Return the translated value for a specific translation key.
+
+@class function
+@name translate
+@param key     Default translation text
+@return                Translated string
+]]
+
+---[[
+Return the translated value for a specific translation key and use it as sprintf pattern.
+
+@class function
+@name translatef
+@param key             Default translation text
+@param ...             Format parameters
+@return                        Translated and formatted string
+]]
+
+---[[
+Return all currently loaded translation strings as a key-value table. The key is the
+hexadecimal representation of the translation key while the value is the translated
+text content.
+
+@class function
+@name dump
+@return                        Key-value translation string table.
+]]
diff --git a/package/luci/modules/luci-base/luasrc/ltn12.lua b/package/luci/modules/luci-base/luasrc/ltn12.lua
new file mode 100644 (file)
index 0000000..3a7268c
--- /dev/null
@@ -0,0 +1,316 @@
+--[[
+LuaSocket 2.0.2 license
+Copyright � 2004-2007 Diego Nehab
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+]]--
+--[[
+       Changes made by LuCI project:
+               * Renamed to luci.ltn12 to avoid collisions with luasocket
+               * Added inline documentation
+]]--
+-----------------------------------------------------------------------------
+-- LTN12 - Filters, sources, sinks and pumps.
+-- LuaSocket toolkit.
+-- Author: Diego Nehab
+-- RCS ID: $Id$
+-----------------------------------------------------------------------------
+
+-----------------------------------------------------------------------------
+-- Declare module
+-----------------------------------------------------------------------------
+local string = require("string")
+local table = require("table")
+local base = _G
+
+-- See http://lua-users.org/wiki/FiltersSourcesAndSinks for design concepts 
+module("luci.ltn12")
+
+filter = {}
+source = {}
+sink = {}
+pump = {}
+
+-- 2048 seems to be better in windows...
+BLOCKSIZE = 2048
+_VERSION = "LTN12 1.0.1"
+
+-----------------------------------------------------------------------------
+-- Filter stuff
+-----------------------------------------------------------------------------
+
+
+-- by passing it each chunk and updating a context between calls. 
+function filter.cycle(low, ctx, extra)
+    base.assert(low)
+    return function(chunk)
+        local ret
+        ret, ctx = low(ctx, chunk, extra)
+        return ret
+    end
+end
+
+-- (thanks to Wim Couwenberg)
+function filter.chain(...)
+    local n = table.getn(arg)
+    local top, index = 1, 1
+    local retry = ""
+    return function(chunk)
+        retry = chunk and retry
+        while true do
+            if index == top then
+                chunk = arg[index](chunk)
+                if chunk == "" or top == n then return chunk
+                elseif chunk then index = index + 1
+                else
+                    top = top+1
+                    index = top
+                end
+            else
+                chunk = arg[index](chunk or "")
+                if chunk == "" then
+                    index = index - 1
+                    chunk = retry
+                elseif chunk then
+                    if index == n then return chunk
+                    else index = index + 1 end
+                else base.error("filter returned inappropriate nil") end
+            end
+        end
+    end
+end
+
+-----------------------------------------------------------------------------
+-- Source stuff
+-----------------------------------------------------------------------------
+
+
+-- create an empty source
+local function empty()
+    return nil
+end
+
+function source.empty()
+    return empty
+end
+
+function source.error(err)
+    return function()
+        return nil, err
+    end
+end
+
+function source.file(handle, io_err)
+    if handle then
+        return function()
+            local chunk = handle:read(BLOCKSIZE)
+            if chunk and chunk:len() == 0 then chunk = nil end
+            if not chunk then handle:close() end
+            return chunk
+        end
+    else return source.error(io_err or "unable to open file") end
+end
+
+function source.simplify(src)
+    base.assert(src)
+    return function()
+        local chunk, err_or_new = src()
+        src = err_or_new or src
+        if not chunk then return nil, err_or_new
+        else return chunk end
+    end
+end
+
+function source.string(s)
+    if s then
+        local i = 1
+        return function()
+            local chunk = string.sub(s, i, i+BLOCKSIZE-1)
+            i = i + BLOCKSIZE
+            if chunk ~= "" then return chunk
+            else return nil end
+        end
+    else return source.empty() end
+end
+
+function source.rewind(src)
+    base.assert(src)
+    local t = {}
+    return function(chunk)
+        if not chunk then
+            chunk = table.remove(t)
+            if not chunk then return src()
+            else return chunk end
+        else
+            t[#t+1] = chunk
+        end
+    end
+end
+
+function source.chain(src, f)
+    base.assert(src and f)
+    local last_in, last_out = "", ""
+    local state = "feeding"
+    local err
+    return function()
+        if not last_out then
+            base.error('source is empty!', 2)
+        end
+        while true do
+            if state == "feeding" then
+                last_in, err = src()
+                if err then return nil, err end
+                last_out = f(last_in)
+                if not last_out then
+                    if last_in then
+                        base.error('filter returned inappropriate nil')
+                    else
+                        return nil
+                    end
+                elseif last_out ~= "" then
+                    state = "eating"
+                    if last_in then last_in = "" end
+                    return last_out
+                end
+            else
+                last_out = f(last_in)
+                if last_out == "" then
+                    if last_in == "" then
+                        state = "feeding"
+                    else
+                        base.error('filter returned ""')
+                    end
+                elseif not last_out then
+                    if last_in then
+                        base.error('filter returned inappropriate nil')
+                    else
+                        return nil
+                    end
+                else
+                    return last_out
+                end
+            end
+        end
+    end
+end
+
+-- Sources will be used one after the other, as if they were concatenated
+-- (thanks to Wim Couwenberg)
+function source.cat(...)
+    local src = table.remove(arg, 1)
+    return function()
+        while src do
+            local chunk, err = src()
+            if chunk then return chunk end
+            if err then return nil, err end
+            src = table.remove(arg, 1)
+        end
+    end
+end
+
+-----------------------------------------------------------------------------
+-- Sink stuff
+-----------------------------------------------------------------------------
+
+
+function sink.table(t)
+    t = t or {}
+    local f = function(chunk, err)
+        if chunk then t[#t+1] = chunk end
+        return 1
+    end
+    return f, t
+end
+
+function sink.simplify(snk)
+    base.assert(snk)
+    return function(chunk, err)
+        local ret, err_or_new = snk(chunk, err)
+        if not ret then return nil, err_or_new end
+        snk = err_or_new or snk
+        return 1
+    end
+end
+
+function sink.file(handle, io_err)
+    if handle then
+        return function(chunk, err)
+            if not chunk then
+                handle:close()
+                return 1
+            else return handle:write(chunk) end
+        end
+    else return sink.error(io_err or "unable to open file") end
+end
+
+-- creates a sink that discards data
+local function null()
+    return 1
+end
+
+function sink.null()
+    return null
+end
+
+function sink.error(err)
+    return function()
+        return nil, err
+    end
+end
+
+function sink.chain(f, snk)
+    base.assert(f and snk)
+    return function(chunk, err)
+        if chunk ~= "" then
+            local filtered = f(chunk)
+            local done = chunk and ""
+            while true do
+                local ret, snkerr = snk(filtered, err)
+                if not ret then return nil, snkerr end
+                if filtered == done then return 1 end
+                filtered = f(done)
+            end
+        else return 1 end
+    end
+end
+
+-----------------------------------------------------------------------------
+-- Pump stuff
+-----------------------------------------------------------------------------
+
+
+function pump.step(src, snk)
+    local chunk, src_err = src()
+    local ret, snk_err = snk(chunk, src_err)
+    if chunk and ret then return 1
+    else return nil, src_err or snk_err end
+end
+
+function pump.all(src, snk, step)
+    base.assert(src and snk)
+    step = step or pump.step
+    while true do
+        local ret, err = step(src, snk)
+        if not ret then
+            if err then return nil, err
+            else return 1 end
+        end
+    end
+end
+
diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua
new file mode 100644 (file)
index 0000000..6e04465
--- /dev/null
@@ -0,0 +1,68 @@
+-- Copyright 2011-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+local ifc = net:get_interface()
+
+local hostname, accept_ra, send_rs
+local bcast, defaultroute, peerdns, dns, metric, clientid, vendorclass
+
+
+hostname = section:taboption("general", Value, "hostname",
+       translate("Hostname to send when requesting DHCP"))
+
+hostname.placeholder = luci.sys.hostname()
+hostname.datatype    = "hostname"
+
+
+bcast = section:taboption("advanced", Flag, "broadcast",
+       translate("Use broadcast flag"),
+       translate("Required for certain ISPs, e.g. Charter with DOCSIS 3"))
+
+bcast.default = bcast.disabled
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = 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"
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+
+
+clientid = section:taboption("advanced", Value, "clientid",
+       translate("Client ID to send when requesting DHCP"))
+clientid.datatype  = "hexstring"
+
+
+vendorclass = section:taboption("advanced", Value, "vendorid",
+       translate("Vendor Class to send when requesting DHCP"))
+
+
+luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua
new file mode 100644 (file)
index 0000000..6fdded9
--- /dev/null
@@ -0,0 +1,4 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
new file mode 100644 (file)
index 0000000..246d2c0
--- /dev/null
@@ -0,0 +1,167 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+local ifc = net:get_interface()
+
+local netmask, gateway, broadcast, dns, accept_ra, send_rs, ip6addr, ip6gw
+local mtu, metric, usecidr, ipaddr_single, ipaddr_multi
+
+
+local function is_cidr(s)
+       return (type(s) == "string" and luci.ip.IPv4(s) and s:find("/"))
+end
+
+usecidr = section:taboption("general", Value, "ipaddr_usecidr")
+usecidr.forcewrite = true
+
+usecidr.cfgvalue = function(self, section)
+       local cfgvalue = self.map:get(section, "ipaddr")
+       return (type(cfgvalue) == "table" or is_cidr(cfgvalue)) and "1" or "0"
+end
+
+usecidr.render = function(self, section, scope)
+       luci.template.Template(nil, [[
+               <input type="hidden"<%= attr("id", cbid) .. attr("name", cbid) .. attr("value", value) %> />
+       ]]):render({
+               cbid = self:cbid(section),
+               value = self:cfgvalue(section)
+       })
+end
+
+usecidr.write = function(self, section)
+       local cfgvalue = self.map:get(section, "ipaddr")
+       local formvalue = (self:formvalue(section) == "1") and ipaddr_multi:formvalue(section) or ipaddr_single:formvalue(section)
+       local equal = (cfgvalue == formvalue)
+
+       if not equal and type(cfgvalue) == "table" and type(formvalue) == "table" and #cfgvalue == #formvalue then
+               equal = true
+
+               local _, v
+               for _, v in ipairs(cfgvalue) do
+                       if v ~= formvalue[_] then
+                               equal = false
+                               break
+                       end
+               end
+       end
+
+       if not equal then
+               self.map:set(section, "ipaddr", formvalue or "")
+       end
+
+       return not equal
+end
+
+
+ipaddr_multi = section:taboption("general", DynamicList, "ipaddrs", translate("IPv4 address"))
+ipaddr_multi:depends("ipaddr_usecidr", "1")
+ipaddr_multi.datatype = "or(cidr4,ipnet4)"
+ipaddr_multi.placeholder = translate("Add IPv4 address…")
+
+ipaddr_multi.alias = "ipaddr"
+ipaddr_multi.write = function() end
+ipaddr_multi.remove = function() end
+ipaddr_multi.cfgvalue = function(self, section)
+       local addr = self.map:get(section, "ipaddr")
+       local mask = self.map:get(section, "netmask")
+
+       if is_cidr(addr) then
+               return { addr }
+       elseif type(addr) == "string" and
+              type(mask) == "string" and
+              #addr > 0 and #mask > 0
+       then
+               return { "%s/%s" %{ addr, mask } }
+       elseif type(addr) == "table" then
+               return addr
+       else
+               return {}
+       end
+end
+
+
+ipaddr_single = section:taboption("general", Value, "ipaddr", translate("IPv4 address"))
+ipaddr_single:depends("ipaddr_usecidr", "0")
+ipaddr_single.datatype = "ip4addr"
+ipaddr_single.template = "cbi/ipaddr"
+ipaddr_single.write = function() end
+ipaddr_single.remove = function() end
+
+
+netmask = section:taboption("general", Value, "netmask", translate("IPv4 netmask"))
+netmask:depends("ipaddr_usecidr", "0")
+netmask.datatype = "ip4addr"
+netmask:value("255.255.255.0")
+netmask:value("255.255.0.0")
+netmask:value("255.0.0.0")
+
+
+gateway = section:taboption("general", Value, "gateway", translate("IPv4 gateway"))
+gateway.datatype = "ip4addr"
+
+
+broadcast = section:taboption("general", Value, "broadcast", translate("IPv4 broadcast"))
+broadcast.datatype = "ip4addr"
+
+
+dns = section:taboption("general", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+if luci.model.network:has_ipv6() then
+
+       local ip6assign = section:taboption("general", Value, "ip6assign", translate("IPv6 assignment length"),
+               translate("Assign a part of given length of every public IPv6-prefix to this interface"))
+       ip6assign:value("", translate("disabled"))
+       ip6assign:value("64")
+       ip6assign.datatype = "max(64)"
+
+       local ip6hint = section:taboption("general", Value, "ip6hint", translate("IPv6 assignment hint"),
+               translate("Assign prefix parts using this hexadecimal subprefix ID for this interface."))
+       for i=33,64 do ip6hint:depends("ip6assign", i) end
+
+       ip6addr = section:taboption("general", DynamicList, "ip6addr", translate("IPv6 address"))
+       ip6addr.datatype = "ip6addr"
+       ip6addr.placeholder = translate("Add IPv6 address…")
+       ip6addr:depends("ip6assign", "")
+
+
+       ip6gw = section:taboption("general", Value, "ip6gw", translate("IPv6 gateway"))
+       ip6gw.datatype = "ip6addr"
+       ip6gw:depends("ip6assign", "")
+
+
+       local ip6prefix = s:taboption("general", Value, "ip6prefix", translate("IPv6 routed prefix"),
+               translate("Public prefix routed to this device for distribution to clients."))
+       ip6prefix.datatype = "ip6addr"
+       ip6prefix:depends("ip6assign", "")
+
+       local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"),
+               translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " ..
+                       "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " ..
+                       "delegating server, use the suffix (like '::1') to form the IPv6 address " ..
+                       "('a:b:c:d::1') for the interface."))
+       ip6ifaceid.datatype = "ip6hostid"
+       ip6ifaceid.placeholder = "::1"
+       ip6ifaceid.rmempty = true
+
+end
+
+
+luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
diff --git a/package/luci/modules/luci-base/luasrc/model/firewall.lua b/package/luci/modules/luci-base/luasrc/model/firewall.lua
new file mode 100644 (file)
index 0000000..feff085
--- /dev/null
@@ -0,0 +1,568 @@
+-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local type, pairs, ipairs, table, luci, math
+       = type, pairs, ipairs, table, luci, math
+
+local tpl = require "luci.template.parser"
+local utl = require "luci.util"
+local uci = require "luci.model.uci"
+
+module "luci.model.firewall"
+
+
+local uci_r, uci_s
+
+function _valid_id(x)
+       return (x and #x > 0 and x:match("^[a-zA-Z0-9_]+$"))
+end
+
+function _get(c, s, o)
+       return uci_r:get(c, s, o)
+end
+
+function _set(c, s, o, v)
+       if v ~= nil then
+               if type(v) == "boolean" then v = v and "1" or "0" end
+               return uci_r:set(c, s, o, v)
+       else
+               return uci_r:delete(c, s, o)
+       end
+end
+
+
+function init(cursor)
+       uci_r = cursor or uci_r or uci.cursor()
+       uci_s = uci_r:substate()
+
+       return _M
+end
+
+function save(self, ...)
+       uci_r:save(...)
+       uci_r:load(...)
+end
+
+function commit(self, ...)
+       uci_r:commit(...)
+       uci_r:load(...)
+end
+
+function get_defaults()
+       return defaults()
+end
+
+function new_zone(self)
+       local name = "newzone"
+       local count = 1
+
+       while self:get_zone(name) do
+               count = count + 1
+               name = "newzone%d" % count
+       end
+
+       return self:add_zone(name)
+end
+
+function add_zone(self, n)
+       if _valid_id(n) and not self:get_zone(n) then
+               local d = defaults()
+               local z = uci_r:section("firewall", "zone", nil, {
+                       name    = n,
+                       network = " ",
+                       input   = d:input()   or "DROP",
+                       forward = d:forward() or "DROP",
+                       output  = d:output()  or "DROP"
+               })
+
+               return z and zone(z)
+       end
+end
+
+function get_zone(self, n)
+       if uci_r:get("firewall", n) == "zone" then
+               return zone(n)
+       else
+               local z
+               uci_r:foreach("firewall", "zone",
+                       function(s)
+                               if n and s.name == n then
+                                       z = s['.name']
+                                       return false
+                               end
+                       end)
+               return z and zone(z)
+       end
+end
+
+function get_zones(self)
+       local zones = { }
+       local znl = { }
+
+       uci_r:foreach("firewall", "zone",
+               function(s)
+                       if s.name then
+                               znl[s.name] = zone(s['.name'])
+                       end
+               end)
+
+       local z
+       for z in utl.kspairs(znl) do
+               zones[#zones+1] = znl[z]
+       end
+
+       return zones
+end
+
+function get_zone_by_network(self, net)
+       local z
+
+       uci_r:foreach("firewall", "zone",
+               function(s)
+                       if s.name and net then
+                               local n
+                               for n in utl.imatch(s.network or s.name) do
+                                       if n == net then
+                                               z = s['.name']
+                                               return false
+                                       end
+                               end
+                       end
+               end)
+
+       return z and zone(z)
+end
+
+function del_zone(self, n)
+       local r = false
+
+       if uci_r:get("firewall", n) == "zone" then
+               local z = uci_r:get("firewall", n, "name")
+               r = uci_r:delete("firewall", n)
+               n = z
+       else
+               uci_r:foreach("firewall", "zone",
+                       function(s)
+                               if n and s.name == n then
+                                       r = uci_r:delete("firewall", s['.name'])
+                                       return false
+                               end
+                       end)
+       end
+
+       if r then
+               uci_r:foreach("firewall", "rule",
+                       function(s)
+                               if s.src == n or s.dest == n then
+                                       uci_r:delete("firewall", s['.name'])
+                               end
+                       end)
+
+               uci_r:foreach("firewall", "redirect",
+                       function(s)
+                               if s.src == n or s.dest == n then
+                                       uci_r:delete("firewall", s['.name'])
+                               end
+                       end)
+
+               uci_r:foreach("firewall", "forwarding",
+                       function(s)
+                               if s.src == n or s.dest == n then
+                                       uci_r:delete("firewall", s['.name'])
+                               end
+                       end)
+       end
+
+       return r
+end
+
+function rename_zone(self, old, new)
+       local r = false
+
+       if _valid_id(new) and not self:get_zone(new) then
+               uci_r:foreach("firewall", "zone",
+                       function(s)
+                               if old and s.name == old then
+                                       if not s.network then
+                                               uci_r:set("firewall", s['.name'], "network", old)
+                                       end
+                                       uci_r:set("firewall", s['.name'], "name", new)
+                                       r = true
+                                       return false
+                               end
+                       end)
+
+               if r then
+                       uci_r:foreach("firewall", "rule",
+                               function(s)
+                                       if s.src == old then
+                                               uci_r:set("firewall", s['.name'], "src", new)
+                                       end
+                                       if s.dest == old then
+                                               uci_r:set("firewall", s['.name'], "dest", new)
+                                       end
+                               end)
+
+                       uci_r:foreach("firewall", "redirect",
+                               function(s)
+                                       if s.src == old then
+                                               uci_r:set("firewall", s['.name'], "src", new)
+                                       end
+                                       if s.dest == old then
+                                               uci_r:set("firewall", s['.name'], "dest", new)
+                                       end
+                               end)
+
+                       uci_r:foreach("firewall", "forwarding",
+                               function(s)
+                                       if s.src == old then
+                                               uci_r:set("firewall", s['.name'], "src", new)
+                                       end
+                                       if s.dest == old then
+                                               uci_r:set("firewall", s['.name'], "dest", new)
+                                       end
+                               end)
+               end
+       end
+
+       return r
+end
+
+function del_network(self, net)
+       local z
+       if net then
+               for _, z in ipairs(self:get_zones()) do
+                       z:del_network(net)
+               end
+       end
+end
+
+
+defaults = utl.class()
+function defaults.__init__(self)
+       uci_r:foreach("firewall", "defaults",
+               function(s)
+                       self.sid  = s['.name']
+                       return false
+               end)
+
+       self.sid = self.sid or uci_r:section("firewall", "defaults", nil, { })
+end
+
+function defaults.get(self, opt)
+       return _get("firewall", self.sid, opt)
+end
+
+function defaults.set(self, opt, val)
+       return _set("firewall", self.sid, opt, val)
+end
+
+function defaults.syn_flood(self)
+       return (self:get("syn_flood") == "1")
+end
+
+function defaults.drop_invalid(self)
+       return (self:get("drop_invalid") == "1")
+end
+
+function defaults.input(self)
+       return self:get("input") or "DROP"
+end
+
+function defaults.forward(self)
+       return self:get("forward") or "DROP"
+end
+
+function defaults.output(self)
+       return self:get("output") or "DROP"
+end
+
+
+zone = utl.class()
+function zone.__init__(self, z)
+       if uci_r:get("firewall", z) == "zone" then
+               self.sid  = z
+               self.data = uci_r:get_all("firewall", z)
+       else
+               uci_r:foreach("firewall", "zone",
+                       function(s)
+                               if s.name == z then
+                                       self.sid  = s['.name']
+                                       self.data = s
+                                       return false
+                               end
+                       end)
+       end
+end
+
+function zone.get(self, opt)
+       return _get("firewall", self.sid, opt)
+end
+
+function zone.set(self, opt, val)
+       return _set("firewall", self.sid, opt, val)
+end
+
+function zone.masq(self)
+       return (self:get("masq") == "1")
+end
+
+function zone.name(self)
+       return self:get("name")
+end
+
+function zone.network(self)
+       return self:get("network")
+end
+
+function zone.input(self)
+       return self:get("input") or defaults():input() or "DROP"
+end
+
+function zone.forward(self)
+       return self:get("forward") or defaults():forward() or "DROP"
+end
+
+function zone.output(self)
+       return self:get("output") or defaults():output() or "DROP"
+end
+
+function zone.add_network(self, net)
+       if uci_r:get("network", net) == "interface" then
+               local nets = { }
+
+               local n
+               for n in utl.imatch(self:get("network") or self:get("name")) do
+                       if n ~= net then
+                               nets[#nets+1] = n
+                       end
+               end
+
+               nets[#nets+1] = net
+
+               _M:del_network(net)
+               self:set("network", table.concat(nets, " "))
+       end
+end
+
+function zone.del_network(self, net)
+       local nets = { }
+
+       local n
+       for n in utl.imatch(self:get("network") or self:get("name")) do
+               if n ~= net then
+                       nets[#nets+1] = n
+               end
+       end
+
+       if #nets > 0 then
+               self:set("network", table.concat(nets, " "))
+       else
+               self:set("network", " ")
+       end
+end
+
+function zone.get_networks(self)
+       local nets = { }
+
+       local n
+       for n in utl.imatch(self:get("network") or self:get("name")) do
+               nets[#nets+1] = n
+       end
+
+       return nets
+end
+
+function zone.clear_networks(self)
+       self:set("network", " ")
+end
+
+function zone.get_forwardings_by(self, what)
+       local name = self:name()
+       local forwards = { }
+
+       uci_r:foreach("firewall", "forwarding",
+               function(s)
+                       if s.src and s.dest and s[what] == name then
+                               forwards[#forwards+1] = forwarding(s['.name'])
+                       end
+               end)
+
+       return forwards
+end
+
+function zone.add_forwarding_to(self, dest)
+       local exist, forward
+
+       for _, forward in ipairs(self:get_forwardings_by('src')) do
+               if forward:dest() == dest then
+                       exist = true
+                       break
+               end
+       end
+
+       if not exist and dest ~= self:name() and _valid_id(dest) then
+               local s = uci_r:section("firewall", "forwarding", nil, {
+                       src     = self:name(),
+                       dest    = dest
+               })
+
+               return s and forwarding(s)
+       end
+end
+
+function zone.add_forwarding_from(self, src)
+       local exist, forward
+
+       for _, forward in ipairs(self:get_forwardings_by('dest')) do
+               if forward:src() == src then
+                       exist = true
+                       break
+               end
+       end
+
+       if not exist and src ~= self:name() and _valid_id(src) then
+               local s = uci_r:section("firewall", "forwarding", nil, {
+                       src     = src,
+                       dest    = self:name()
+               })
+
+               return s and forwarding(s)
+       end
+end
+
+function zone.del_forwardings_by(self, what)
+       local name = self:name()
+
+       uci_r:delete_all("firewall", "forwarding",
+               function(s)
+                       return (s.src and s.dest and s[what] == name)
+               end)
+end
+
+function zone.add_redirect(self, options)
+       options = options or { }
+       options.src = self:name()
+
+       local s = uci_r:section("firewall", "redirect", nil, options)
+       return s and redirect(s)
+end
+
+function zone.add_rule(self, options)
+       options = options or { }
+       options.src = self:name()
+
+       local s = uci_r:section("firewall", "rule", nil, options)
+       return s and rule(s)
+end
+
+function zone.get_color(self)
+       if self and self:name() == "lan" then
+               return "#90f090"
+       elseif self and self:name() == "wan" then
+               return "#f09090"
+       elseif self then
+               math.randomseed(tpl.hash(self:name()))
+
+               local r   = math.random(128)
+               local g   = math.random(128)
+               local min = 0
+               local max = 128
+
+               if ( r + g ) < 128 then
+                       min = 128 - r - g
+               else
+                       max = 255 - r - g
+               end
+
+               local b = min + math.floor( math.random() * ( max - min ) )
+
+               return "#%02x%02x%02x" % { 0xFF - r, 0xFF - g, 0xFF - b }
+       else
+               return "#eeeeee"
+       end
+end
+
+
+forwarding = utl.class()
+function forwarding.__init__(self, f)
+       self.sid = f
+end
+
+function forwarding.src(self)
+       return uci_r:get("firewall", self.sid, "src")
+end
+
+function forwarding.dest(self)
+       return uci_r:get("firewall", self.sid, "dest")
+end
+
+function forwarding.src_zone(self)
+       local z = zone(self:src())
+       return z.sid and z
+end
+
+function forwarding.dest_zone(self)
+       local z = zone(self:dest())
+       return z.sid and z
+end
+
+
+rule = utl.class()
+function rule.__init__(self, f)
+       self.sid = f
+end
+
+function rule.get(self, opt)
+       return _get("firewall", self.sid, opt)
+end
+
+function rule.set(self, opt, val)
+       return _set("firewall", self.sid, opt, val)
+end
+
+function rule.src(self)
+       return uci_r:get("firewall", self.sid, "src")
+end
+
+function rule.dest(self)
+       return uci_r:get("firewall", self.sid, "dest")
+end
+
+function rule.src_zone(self)
+       return zone(self:src())
+end
+
+function rule.dest_zone(self)
+       return zone(self:dest())
+end
+
+
+redirect = utl.class()
+function redirect.__init__(self, f)
+       self.sid = f
+end
+
+function redirect.get(self, opt)
+       return _get("firewall", self.sid, opt)
+end
+
+function redirect.set(self, opt, val)
+       return _set("firewall", self.sid, opt, val)
+end
+
+function redirect.src(self)
+       return uci_r:get("firewall", self.sid, "src")
+end
+
+function redirect.dest(self)
+       return uci_r:get("firewall", self.sid, "dest")
+end
+
+function redirect.src_zone(self)
+       return zone(self:src())
+end
+
+function redirect.dest_zone(self)
+       return zone(self:dest())
+end
diff --git a/package/luci/modules/luci-base/luasrc/model/network.lua b/package/luci/modules/luci-base/luasrc/model/network.lua
new file mode 100644 (file)
index 0000000..a36a23f
--- /dev/null
@@ -0,0 +1,1912 @@
+-- Copyright 2009-2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local type, next, pairs, ipairs, loadfile, table, select
+       = type, next, pairs, ipairs, loadfile, table, select
+
+local tonumber, tostring, math = tonumber, tostring, math
+
+local pcall, require, setmetatable = pcall, require, setmetatable
+
+local nxo = require "nixio"
+local nfs = require "nixio.fs"
+local ipc = require "luci.ip"
+local utl = require "luci.util"
+local uci = require "luci.model.uci"
+local lng = require "luci.i18n"
+local jsc = require "luci.jsonc"
+
+module "luci.model.network"
+
+
+IFACE_PATTERNS_VIRTUAL  = { }
+IFACE_PATTERNS_IGNORE   = { "^wmaster%d", "^wifi%d", "^hwsim%d", "^imq%d", "^ifb%d", "^mon%.wlan%d", "^sit%d", "^gre%d", "^gretap%d", "^ip6gre%d", "^ip6tnl%d", "^tunl%d", "^lo$" }
+IFACE_PATTERNS_WIRELESS = { "^wlan%d", "^wl%d", "^ath%d", "^%w+%.network%d" }
+
+IFACE_ERRORS = {
+       CONNECT_FAILED                  = lng.translate("Connection attempt failed"),
+       INVALID_ADDRESS                 = lng.translate("IP address in invalid"),
+       INVALID_GATEWAY                 = lng.translate("Gateway address is invalid"),
+       INVALID_LOCAL_ADDRESS   = lng.translate("Local IP address is invalid"),
+       MISSING_ADDRESS                 = lng.translate("IP address is missing"),
+       MISSING_PEER_ADDRESS    = lng.translate("Peer address is missing"),
+       NO_DEVICE                               = lng.translate("Network device is not present"),
+       NO_IFACE                                = lng.translate("Unable to determine device name"),
+       NO_IFNAME                               = lng.translate("Unable to determine device name"),
+       NO_WAN_ADDRESS                  = lng.translate("Unable to determine external IP address"),
+       NO_WAN_LINK                             = lng.translate("Unable to determine upstream interface"),
+       PEER_RESOLVE_FAIL               = lng.translate("Unable to resolve peer host name"),
+       PIN_FAILED                              = lng.translate("PIN code rejected")
+}
+
+
+protocol = utl.class()
+
+local _protocols = { }
+
+local _interfaces, _bridge, _switch, _tunnel, _swtopo
+local _ubusnetcache, _ubusdevcache, _ubuswificache
+local _uci
+
+function _filter(c, s, o, r)
+       local val = _uci:get(c, s, o)
+       if val then
+               local l = { }
+               if type(val) == "string" then
+                       for val in val:gmatch("%S+") do
+                               if val ~= r then
+                                       l[#l+1] = val
+                               end
+                       end
+                       if #l > 0 then
+                               _uci:set(c, s, o, table.concat(l, " "))
+                       else
+                               _uci:delete(c, s, o)
+                       end
+               elseif type(val) == "table" then
+                       for _, val in ipairs(val) do
+                               if val ~= r then
+                                       l[#l+1] = val
+                               end
+                       end
+                       if #l > 0 then
+                               _uci:set(c, s, o, l)
+                       else
+                               _uci:delete(c, s, o)
+                       end
+               end
+       end
+end
+
+function _append(c, s, o, a)
+       local val = _uci:get(c, s, o) or ""
+       if type(val) == "string" then
+               local l = { }
+               for val in val:gmatch("%S+") do
+                       if val ~= a then
+                               l[#l+1] = val
+                       end
+               end
+               l[#l+1] = a
+               _uci:set(c, s, o, table.concat(l, " "))
+       elseif type(val) == "table" then
+               local l = { }
+               for _, val in ipairs(val) do
+                       if val ~= a then
+                               l[#l+1] = val
+                       end
+               end
+               l[#l+1] = a
+               _uci:set(c, s, o, l)
+       end
+end
+
+function _stror(s1, s2)
+       if not s1 or #s1 == 0 then
+               return s2 and #s2 > 0 and s2
+       else
+               return s1
+       end
+end
+
+function _get(c, s, o)
+       return _uci:get(c, s, o)
+end
+
+function _set(c, s, o, v)
+       if v ~= nil then
+               if type(v) == "boolean" then v = v and "1" or "0" end
+               return _uci:set(c, s, o, v)
+       else
+               return _uci:delete(c, s, o)
+       end
+end
+
+local function _wifi_state()
+       if not next(_ubuswificache) then
+               _ubuswificache = utl.ubus("network.wireless", "status", {}) or {}
+       end
+       return _ubuswificache
+end
+
+local function _wifi_state_by_sid(sid)
+       local t1, n1 = _uci:get("wireless", sid)
+       if t1 == "wifi-iface" and n1 ~= nil then
+               local radioname, radiostate
+               for radioname, radiostate in pairs(_wifi_state()) do
+                       if type(radiostate) == "table" and
+                          type(radiostate.interfaces) == "table"
+                       then
+                               local netidx, netstate
+                               for netidx, netstate in ipairs(radiostate.interfaces) do
+                                       if type(netstate) == "table" and
+                                          type(netstate.section) == "string"
+                                       then
+                                               local t2, n2 = _uci:get("wireless", netstate.section)
+                                               if t1 == t2 and n1 == n2 then
+                                                       return radioname, radiostate, netstate
+                                               end
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
+local function _wifi_state_by_ifname(ifname)
+       if type(ifname) == "string" then
+               local radioname, radiostate
+               for radioname, radiostate in pairs(_wifi_state()) do
+                       if type(radiostate) == "table" and
+                          type(radiostate.interfaces) == "table"
+                       then
+                               local netidx, netstate
+                               for netidx, netstate in ipairs(radiostate.interfaces) do
+                                       if type(netstate) == "table" and
+                                          type(netstate.ifname) == "string" and
+                                          netstate.ifname == ifname
+                                       then
+                                               return radioname, radiostate, netstate
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
+function _wifi_iface(x)
+       local _, p
+       for _, p in ipairs(IFACE_PATTERNS_WIRELESS) do
+               if x:match(p) then
+                       return true
+               end
+       end
+       return false
+end
+
+local function _wifi_iwinfo_by_ifname(ifname, force_phy_only)
+       local stat, iwinfo = pcall(require, "iwinfo")
+       local iwtype = stat and type(ifname) == "string" and iwinfo.type(ifname)
+       local is_nonphy_op = {
+               bitrate     = true,
+               quality     = true,
+               quality_max = true,
+               mode        = true,
+               ssid        = true,
+               bssid       = true,
+               assoclist   = true,
+               encryption  = true
+       }
+
+       if iwtype then
+               -- if we got a type but no real netdev, we're referring to a phy
+               local phy_only = force_phy_only or (ipc.link(ifname).type ~= 1)
+
+               return setmetatable({}, {
+                       __index = function(t, k)
+                               if k == "ifname" then
+                                       return ifname
+                               elseif phy_only and is_nonphy_op[k] then
+                                       return nil
+                               elseif iwinfo[iwtype][k] then
+                                       return iwinfo[iwtype][k](ifname)
+                               end
+                       end
+               })
+       end
+end
+
+local function _wifi_sid_by_netid(netid)
+       if type(netid) == "string" then
+               local radioname, netidx = netid:match("^(%w+)%.network(%d+)$")
+               if radioname and netidx then
+                       local i, n = 0, nil
+
+                       netidx = tonumber(netidx)
+                       _uci:foreach("wireless", "wifi-iface",
+                               function(s)
+                                       if s.device == radioname then
+                                               i = i + 1
+                                               if i == netidx then
+                                                       n = s[".name"]
+                                                       return false
+                                               end
+                                       end
+                               end)
+
+                       return n
+               end
+       end
+end
+
+function _wifi_sid_by_ifname(ifn)
+       local sid = _wifi_sid_by_netid(ifn)
+       if sid then
+               return sid
+       end
+
+       local _, _, netstate = _wifi_state_by_ifname(ifn)
+       if netstate and type(netstate.section) == "string" then
+               return netstate.section
+       end
+end
+
+local function _wifi_netid_by_sid(sid)
+       local t, n = _uci:get("wireless", sid)
+       if t == "wifi-iface" and n ~= nil then
+               local radioname = _uci:get("wireless", n, "device")
+               if type(radioname) == "string" then
+                       local i, netid = 0, nil
+
+                       _uci:foreach("wireless", "wifi-iface",
+                               function(s)
+                                       if s.device == radioname then
+                                               i = i + 1
+                                               if s[".name"] == n then
+                                                       netid = "%s.network%d" %{ radioname, i }
+                                                       return false
+                                               end
+                                       end
+                               end)
+
+                       return netid, radioname
+               end
+       end
+end
+
+local function _wifi_netid_by_netname(name)
+       local netid = nil
+
+       _uci:foreach("wireless", "wifi-iface",
+               function(s)
+                       local net
+                       for net in utl.imatch(s.network) do
+                               if net == name then
+                                       netid = _wifi_netid_by_sid(s[".name"])
+                                       return false
+                               end
+                       end
+               end)
+
+       return netid
+end
+
+function _iface_virtual(x)
+       local _, p
+       for _, p in ipairs(IFACE_PATTERNS_VIRTUAL) do
+               if x:match(p) then
+                       return true
+               end
+       end
+       return false
+end
+
+function _iface_ignore(x)
+       local _, p
+       for _, p in ipairs(IFACE_PATTERNS_IGNORE) do
+               if x:match(p) then
+                       return true
+               end
+       end
+       return false
+end
+
+function init(cursor)
+       _uci = cursor or _uci or uci.cursor()
+
+       _interfaces = { }
+       _bridge     = { }
+       _switch     = { }
+       _tunnel     = { }
+       _swtopo     = { }
+
+       _ubusnetcache  = { }
+       _ubusdevcache  = { }
+       _ubuswificache = { }
+
+       -- read interface information
+       local n, i
+       for n, i in ipairs(nxo.getifaddrs()) do
+               local name = i.name:match("[^:]+")
+
+               if _iface_virtual(name) then
+                       _tunnel[name] = true
+               end
+
+               if _tunnel[name] or not (_iface_ignore(name) or _iface_virtual(name)) then
+                       _interfaces[name] = _interfaces[name] or {
+                               idx      = i.ifindex or n,
+                               name     = name,
+                               rawname  = i.name,
+                               flags    = { },
+                               ipaddrs  = { },
+                               ip6addrs = { }
+                       }
+
+                       if i.family == "packet" then
+                               _interfaces[name].flags   = i.flags
+                               _interfaces[name].stats   = i.data
+                               _interfaces[name].macaddr = ipc.checkmac(i.addr)
+                       elseif i.family == "inet" then
+                               _interfaces[name].ipaddrs[#_interfaces[name].ipaddrs+1] = ipc.IPv4(i.addr, i.netmask)
+                       elseif i.family == "inet6" then
+                               _interfaces[name].ip6addrs[#_interfaces[name].ip6addrs+1] = ipc.IPv6(i.addr, i.netmask)
+                       end
+               end
+       end
+
+       -- read bridge informaton
+       local b, l
+       for l in utl.execi("brctl show") do
+               if not l:match("STP") then
+                       local r = utl.split(l, "%s+", nil, true)
+                       if #r == 4 then
+                               b = {
+                                       name    = r[1],
+                                       id      = r[2],
+                                       stp     = r[3] == "yes",
+                                       ifnames = { _interfaces[r[4]] }
+                               }
+                               if b.ifnames[1] then
+                                       b.ifnames[1].bridge = b
+                               end
+                               _bridge[r[1]] = b
+                       elseif b then
+                               b.ifnames[#b.ifnames+1] = _interfaces[r[2]]
+                               b.ifnames[#b.ifnames].bridge = b
+                       end
+               end
+       end
+
+       -- read switch topology
+       local boardinfo = jsc.parse(nfs.readfile("/etc/board.json") or "")
+       if type(boardinfo) == "table" and type(boardinfo.switch) == "table" then
+               local switch, layout
+               for switch, layout in pairs(boardinfo.switch) do
+                       if type(layout) == "table" and type(layout.ports) == "table" then
+                               local _, port
+                               local ports = { }
+                               local nports = { }
+                               local netdevs = { }
+
+                               for _, port in ipairs(layout.ports) do
+                                       if type(port) == "table" and
+                                          type(port.num) == "number" and
+                                          (type(port.role) == "string" or
+                                           type(port.device) == "string")
+                                       then
+                                               local spec = {
+                                                       num    = port.num,
+                                                       role   = port.role or "cpu",
+                                                       index  = port.index or port.num
+                                               }
+
+                                               if port.device then
+                                                       spec.device = port.device
+                                                       spec.tagged = port.need_tag
+                                                       netdevs[tostring(port.num)] = port.device
+                                               end
+
+                                               ports[#ports+1] = spec
+
+                                               if port.role then
+                                                       nports[port.role] = (nports[port.role] or 0) + 1
+                                               end
+                                       end
+                               end
+
+                               table.sort(ports, function(a, b)
+                                       if a.role ~= b.role then
+                                               return (a.role < b.role)
+                                       end
+
+                                       return (a.index < b.index)
+                               end)
+
+                               local pnum, role
+                               for _, port in ipairs(ports) do
+                                       if port.role ~= role then
+                                               role = port.role
+                                               pnum = 1
+                                       end
+
+                                       if role == "cpu" then
+                                               port.label = "CPU (%s)" % port.device
+                                       elseif nports[role] > 1 then
+                                               port.label = "%s %d" %{ role:upper(), pnum }
+                                               pnum = pnum + 1
+                                       else
+                                               port.label = role:upper()
+                                       end
+
+                                       port.role = nil
+                                       port.index = nil
+                               end
+
+                               _swtopo[switch] = {
+                                       ports = ports,
+                                       netdevs = netdevs
+                               }
+                       end
+               end
+       end
+
+       return _M
+end
+
+function save(self, ...)
+       _uci:save(...)
+       _uci:load(...)
+end
+
+function commit(self, ...)
+       _uci:commit(...)
+       _uci:load(...)
+end
+
+function ifnameof(self, x)
+       if utl.instanceof(x, interface) then
+               return x:name()
+       elseif utl.instanceof(x, protocol) then
+               return x:ifname()
+       elseif type(x) == "string" then
+               return x:match("^[^:]+")
+       end
+end
+
+function get_protocol(self, protoname, netname)
+       local v = _protocols[protoname]
+       if v then
+               return v(netname or "__dummy__")
+       end
+end
+
+function get_protocols(self)
+       local p = { }
+       local _, v
+       for _, v in ipairs(_protocols) do
+               p[#p+1] = v("__dummy__")
+       end
+       return p
+end
+
+function register_protocol(self, protoname)
+       local proto = utl.class(protocol)
+
+       function proto.__init__(self, name)
+               self.sid = name
+       end
+
+       function proto.proto(self)
+               return protoname
+       end
+
+       _protocols[#_protocols+1] = proto
+       _protocols[protoname]     = proto
+
+       return proto
+end
+
+function register_pattern_virtual(self, pat)
+       IFACE_PATTERNS_VIRTUAL[#IFACE_PATTERNS_VIRTUAL+1] = pat
+end
+
+function register_error_code(self, code, message)
+       if type(code) == "string" and
+          type(message) == "string" and
+          not IFACE_ERRORS[code]
+       then
+               IFACE_ERRORS[code] = message
+               return true
+       end
+
+       return false
+end
+
+function has_ipv6(self)
+       return nfs.access("/proc/net/ipv6_route")
+end
+
+function add_network(self, n, options)
+       local oldnet = self:get_network(n)
+       if n and #n > 0 and n:match("^[a-zA-Z0-9_]+$") and not oldnet then
+               if _uci:section("network", "interface", n, options) then
+                       return network(n)
+               end
+       elseif oldnet and oldnet:is_empty() then
+               if options then
+                       local k, v
+                       for k, v in pairs(options) do
+                               oldnet:set(k, v)
+                       end
+               end
+               return oldnet
+       end
+end
+
+function get_network(self, n)
+       if n and _uci:get("network", n) == "interface" then
+               return network(n)
+       elseif n then
+               local stat = utl.ubus("network.interface", "status", { interface = n })
+               if type(stat) == "table" and
+                  type(stat.proto) == "string"
+               then
+                       return network(n, stat.proto)
+               end
+       end
+end
+
+function get_networks(self)
+       local nets = { }
+       local nls = { }
+
+       _uci:foreach("network", "interface",
+               function(s)
+                       nls[s['.name']] = network(s['.name'])
+               end)
+
+       local dump = utl.ubus("network.interface", "dump", { })
+       if type(dump) == "table" and
+          type(dump.interface) == "table"
+       then
+               local _, net
+               for _, net in ipairs(dump.interface) do
+                       if type(net) == "table" and
+                          type(net.proto) == "string" and
+                          type(net.interface) == "string"
+                       then
+                               if not nls[net.interface] then
+                                       nls[net.interface] = network(net.interface, net.proto)
+                               end
+                       end
+               end
+       end
+
+       local n
+       for n in utl.kspairs(nls) do
+               nets[#nets+1] = nls[n]
+       end
+
+       return nets
+end
+
+function del_network(self, n)
+       local r = _uci:delete("network", n)
+       if r then
+               _uci:delete_all("luci", "ifstate",
+                       function(s) return (s.interface == n) end)
+
+               _uci:delete_all("network", "alias",
+                       function(s) return (s.interface == n) end)
+
+               _uci:delete_all("network", "route",
+                       function(s) return (s.interface == n) end)
+
+               _uci:delete_all("network", "route6",
+                       function(s) return (s.interface == n) end)
+
+               _uci:foreach("wireless", "wifi-iface",
+                       function(s)
+                               local net
+                               local rest = { }
+                               for net in utl.imatch(s.network) do
+                                       if net ~= n then
+                                               rest[#rest+1] = net
+                                       end
+                               end
+                               if #rest > 0 then
+                                       _uci:set("wireless", s['.name'], "network",
+                                                     table.concat(rest, " "))
+                               else
+                                       _uci:delete("wireless", s['.name'], "network")
+                               end
+                       end)
+
+               local ok, fw = pcall(require, "luci.model.firewall")
+               if ok then
+                       fw.init()
+                       fw:del_network(n)
+               end
+       end
+       return r
+end
+
+function rename_network(self, old, new)
+       local r
+       if new and #new > 0 and new:match("^[a-zA-Z0-9_]+$") and not self:get_network(new) then
+               r = _uci:section("network", "interface", new, _uci:get_all("network", old))
+
+               if r then
+                       _uci:foreach("network", "alias",
+                               function(s)
+                                       if s.interface == old then
+                                               _uci:set("network", s['.name'], "interface", new)
+                                       end
+                               end)
+
+                       _uci:foreach("network", "route",
+                               function(s)
+                                       if s.interface == old then
+                                               _uci:set("network", s['.name'], "interface", new)
+                                       end
+                               end)
+
+                       _uci:foreach("network", "route6",
+                               function(s)
+                                       if s.interface == old then
+                                               _uci:set("network", s['.name'], "interface", new)
+                                       end
+                               end)
+
+                       _uci:foreach("wireless", "wifi-iface",
+                               function(s)
+                                       local net
+                                       local list = { }
+                                       for net in utl.imatch(s.network) do
+                                               if net == old then
+                                                       list[#list+1] = new
+                                               else
+                                                       list[#list+1] = net
+                                               end
+                                       end
+                                       if #list > 0 then
+                                               _uci:set("wireless", s['.name'], "network",
+                                                             table.concat(list, " "))
+                                       end
+                               end)
+
+                       _uci:delete("network", old)
+               end
+       end
+       return r or false
+end
+
+function get_interface(self, i)
+       if _interfaces[i] or _wifi_iface(i) then
+               return interface(i)
+       else
+               local netid = _wifi_netid_by_sid(i)
+               return netid and interface(netid)
+       end
+end
+
+function get_interfaces(self)
+       local iface
+       local ifaces = { }
+       local nfs = { }
+
+       -- find normal interfaces
+       _uci:foreach("network", "interface",
+               function(s)
+                       for iface in utl.imatch(s.ifname) do
+                               if not _iface_ignore(iface) and not _iface_virtual(iface) and not _wifi_iface(iface) then
+                                       nfs[iface] = interface(iface)
+                               end
+                       end
+               end)
+
+       for iface in utl.kspairs(_interfaces) do
+               if not (nfs[iface] or _iface_ignore(iface) or _iface_virtual(iface) or _wifi_iface(iface)) then
+                       nfs[iface] = interface(iface)
+               end
+       end
+
+       -- find vlan interfaces
+       _uci:foreach("network", "switch_vlan",
+               function(s)
+                       if type(s.ports) ~= "string" or
+                          type(s.device) ~= "string" or
+                          type(_swtopo[s.device]) ~= "table"
+                       then
+                               return
+                       end
+
+                       local pnum, ptag
+                       for pnum, ptag in s.ports:gmatch("(%d+)([tu]?)") do
+                               local netdev = _swtopo[s.device].netdevs[pnum]
+                               if netdev then
+                                       if not nfs[netdev] then
+                                               nfs[netdev] = interface(netdev)
+                                       end
+                                       _switch[netdev] = true
+
+                                       if ptag == "t" then
+                                               local vid = tonumber(s.vid or s.vlan)
+                                               if vid ~= nil and vid >= 0 and vid <= 4095 then
+                                                       local iface = "%s.%d" %{ netdev, vid }
+                                                       if not nfs[iface] then
+                                                               nfs[iface] = interface(iface)
+                                                       end
+                                                       _switch[iface] = true
+                                               end
+                                       end
+                               end
+                       end
+               end)
+
+       for iface in utl.kspairs(nfs) do
+               ifaces[#ifaces+1] = nfs[iface]
+       end
+
+       -- find wifi interfaces
+       local num = { }
+       local wfs = { }
+       _uci:foreach("wireless", "wifi-iface",
+               function(s)
+                       if s.device then
+                               num[s.device] = num[s.device] and num[s.device] + 1 or 1
+                               local i = "%s.network%d" %{ s.device, num[s.device] }
+                               wfs[i] = interface(i)
+                       end
+               end)
+
+       for iface in utl.kspairs(wfs) do
+               ifaces[#ifaces+1] = wfs[iface]
+       end
+
+       return ifaces
+end
+
+function ignore_interface(self, x)
+       return _iface_ignore(x)
+end
+
+function get_wifidev(self, dev)
+       if _uci:get("wireless", dev) == "wifi-device" then
+               return wifidev(dev)
+       end
+end
+
+function get_wifidevs(self)
+       local devs = { }
+       local wfd  = { }
+
+       _uci:foreach("wireless", "wifi-device",
+               function(s) wfd[#wfd+1] = s['.name'] end)
+
+       local dev
+       for _, dev in utl.vspairs(wfd) do
+               devs[#devs+1] = wifidev(dev)
+       end
+
+       return devs
+end
+
+function get_wifinet(self, net)
+       local wnet = _wifi_sid_by_ifname(net)
+       if wnet then
+               return wifinet(wnet)
+       end
+end
+
+function add_wifinet(self, net, options)
+       if type(options) == "table" and options.device and
+               _uci:get("wireless", options.device) == "wifi-device"
+       then
+               local wnet = _uci:section("wireless", "wifi-iface", nil, options)
+               return wifinet(wnet)
+       end
+end
+
+function del_wifinet(self, net)
+       local wnet = _wifi_sid_by_ifname(net)
+       if wnet then
+               _uci:delete("wireless", wnet)
+               return true
+       end
+       return false
+end
+
+function get_status_by_route(self, addr, mask)
+       local route_statuses = { }
+       local _, object
+       for _, object in ipairs(utl.ubus()) do
+               local net = object:match("^network%.interface%.(.+)")
+               if net then
+                       local s = utl.ubus(object, "status", {})
+                       if s and s.route then
+                               local rt
+                               for _, rt in ipairs(s.route) do
+                                       if not rt.table and rt.target == addr and rt.mask == mask then
+                                               route_statuses[net] = s
+                                       end
+                               end
+                       end
+               end
+       end
+
+       return route_statuses
+end
+
+function get_status_by_address(self, addr)
+       local _, object
+       for _, object in ipairs(utl.ubus()) do
+               local net = object:match("^network%.interface%.(.+)")
+               if net then
+                       local s = utl.ubus(object, "status", {})
+                       if s and s['ipv4-address'] then
+                               local a
+                               for _, a in ipairs(s['ipv4-address']) do
+                                       if a.address == addr then
+                                               return net, s
+                                       end
+                               end
+                       end
+                       if s and s['ipv6-address'] then
+                               local a
+                               for _, a in ipairs(s['ipv6-address']) do
+                                       if a.address == addr then
+                                               return net, s
+                                       end
+                               end
+                       end
+                       if s and s['ipv6-prefix-assignment'] then
+                               local a
+                               for _, a in ipairs(s['ipv6-prefix-assignment']) do
+                                       if a and a['local-address'] and a['local-address'].address == addr then
+                                               return net, s
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
+function get_wan_networks(self)
+       local k, v
+       local wan_nets = { }
+       local route_statuses = self:get_status_by_route("0.0.0.0", 0)
+
+       for k, v in pairs(route_statuses) do
+               wan_nets[#wan_nets+1] = network(k, v.proto)
+       end
+
+       return wan_nets
+end
+
+function get_wan6_networks(self)
+       local k, v
+       local wan6_nets = { }
+       local route_statuses = self:get_status_by_route("::", 0)
+
+       for k, v in pairs(route_statuses) do
+               wan6_nets[#wan6_nets+1] = network(k, v.proto)
+       end
+
+       return wan6_nets
+end
+
+function get_switch_topologies(self)
+       return _swtopo
+end
+
+
+function network(name, proto)
+       if name then
+               local p = proto or _uci:get("network", name, "proto")
+               local c = p and _protocols[p] or protocol
+               return c(name)
+       end
+end
+
+function protocol.__init__(self, name)
+       self.sid = name
+end
+
+function protocol._get(self, opt)
+       local v = _uci:get("network", self.sid, opt)
+       if type(v) == "table" then
+               return table.concat(v, " ")
+       end
+       return v or ""
+end
+
+function protocol._ubus(self, field)
+       if not _ubusnetcache[self.sid] then
+               _ubusnetcache[self.sid] = utl.ubus("network.interface.%s" % self.sid,
+                                                  "status", { })
+       end
+       if _ubusnetcache[self.sid] and field then
+               return _ubusnetcache[self.sid][field]
+       end
+       return _ubusnetcache[self.sid]
+end
+
+function protocol.get(self, opt)
+       return _get("network", self.sid, opt)
+end
+
+function protocol.set(self, opt, val)
+       return _set("network", self.sid, opt, val)
+end
+
+function protocol.ifname(self)
+       local ifname
+       if self:is_floating() then
+               ifname = self:_ubus("l3_device")
+       else
+               ifname = self:_ubus("device")
+       end
+       if not ifname then
+               ifname = _wifi_netid_by_netname(self.sid)
+       end
+       return ifname
+end
+
+function protocol.proto(self)
+       return "none"
+end
+
+function protocol.get_i18n(self)
+       local p = self:proto()
+       if p == "none" then
+               return lng.translate("Unmanaged")
+       elseif p == "static" then
+               return lng.translate("Static address")
+       elseif p == "dhcp" then
+               return lng.translate("DHCP client")
+       else
+               return lng.translate("Unknown")
+       end
+end
+
+function protocol.type(self)
+       return self:_get("type")
+end
+
+function protocol.name(self)
+       return self.sid
+end
+
+function protocol.uptime(self)
+       return self:_ubus("uptime") or 0
+end
+
+function protocol.expires(self)
+       local u = self:_ubus("uptime")
+       local d = self:_ubus("data")
+
+       if type(u) == "number" and type(d) == "table" and
+          type(d.leasetime) == "number"
+       then
+               local r = (d.leasetime - (u % d.leasetime))
+               return r > 0 and r or 0
+       end
+
+       return -1
+end
+
+function protocol.metric(self)
+       return self:_ubus("metric") or 0
+end
+
+function protocol.zonename(self)
+       local d = self:_ubus("data")
+
+       if type(d) == "table" and type(d.zone) == "string" then
+               return d.zone
+       end
+
+       return nil
+end
+
+function protocol.ipaddr(self)
+       local addrs = self:_ubus("ipv4-address")
+       return addrs and #addrs > 0 and addrs[1].address
+end
+
+function protocol.ipaddrs(self)
+       local addrs = self:_ubus("ipv4-address")
+       local rv = { }
+
+       if type(addrs) == "table" then
+               local n, addr
+               for n, addr in ipairs(addrs) do
+                       rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask }
+               end
+       end
+
+       return rv
+end
+
+function protocol.netmask(self)
+       local addrs = self:_ubus("ipv4-address")
+       return addrs and #addrs > 0 and
+               ipc.IPv4("0.0.0.0/%d" % addrs[1].mask):mask():string()
+end
+
+function protocol.gwaddr(self)
+       local _, route
+       for _, route in ipairs(self:_ubus("route") or { }) do
+               if route.target == "0.0.0.0" and route.mask == 0 then
+                       return route.nexthop
+               end
+       end
+end
+
+function protocol.dnsaddrs(self)
+       local dns = { }
+       local _, addr
+       for _, addr in ipairs(self:_ubus("dns-server") or { }) do
+               if not addr:match(":") then
+                       dns[#dns+1] = addr
+               end
+       end
+       return dns
+end
+
+function protocol.ip6addr(self)
+       local addrs = self:_ubus("ipv6-address")
+       if addrs and #addrs > 0 then
+               return "%s/%d" %{ addrs[1].address, addrs[1].mask }
+       else
+               addrs = self:_ubus("ipv6-prefix-assignment")
+               if addrs and #addrs > 0 then
+                       return "%s/%d" %{ addrs[1].address, addrs[1].mask }
+               end
+       end
+end
+
+function protocol.ip6addrs(self)
+       local addrs = self:_ubus("ipv6-address")
+       local rv = { }
+       local n, addr
+
+       if type(addrs) == "table" then
+               for n, addr in ipairs(addrs) do
+                       rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask }
+               end
+       end
+
+       addrs = self:_ubus("ipv6-prefix-assignment")
+
+       if type(addrs) == "table" then
+               for n, addr in ipairs(addrs) do
+                       if type(addr["local-address"]) == "table" and
+                          type(addr["local-address"].mask) == "number" and
+                          type(addr["local-address"].address) == "string"
+                       then
+                               rv[#rv+1] = "%s/%d" %{
+                                       addr["local-address"].address,
+                                       addr["local-address"].mask
+                               }
+                       end
+               end
+       end
+
+       return rv
+end
+
+function protocol.gw6addr(self)
+       local _, route
+       for _, route in ipairs(self:_ubus("route") or { }) do
+               if route.target == "::" and route.mask == 0 then
+                       return ipc.IPv6(route.nexthop):string()
+               end
+       end
+end
+
+function protocol.dns6addrs(self)
+       local dns = { }
+       local _, addr
+       for _, addr in ipairs(self:_ubus("dns-server") or { }) do
+               if addr:match(":") then
+                       dns[#dns+1] = addr
+               end
+       end
+       return dns
+end
+
+function protocol.ip6prefix(self)
+       local prefix = self:_ubus("ipv6-prefix")
+       if prefix and #prefix > 0 then
+               return "%s/%d" %{ prefix[1].address, prefix[1].mask }
+       end
+end
+
+function protocol.errors(self)
+       local _, err, rv
+       local errors = self:_ubus("errors")
+       if type(errors) == "table" then
+               for _, err in ipairs(errors) do
+                       if type(err) == "table" and
+                          type(err.code) == "string"
+                       then
+                               rv = rv or { }
+                               rv[#rv+1] = IFACE_ERRORS[err.code] or lng.translatef("Unknown error (%s)", err.code)
+                       end
+               end
+       end
+       return rv
+end
+
+function protocol.is_bridge(self)
+       return (not self:is_virtual() and self:type() == "bridge")
+end
+
+function protocol.opkg_package(self)
+       return nil
+end
+
+function protocol.is_installed(self)
+       return true
+end
+
+function protocol.is_virtual(self)
+       return false
+end
+
+function protocol.is_floating(self)
+       return false
+end
+
+function protocol.is_dynamic(self)
+       return (self:_ubus("dynamic") == true)
+end
+
+function protocol.is_auto(self)
+       return (self:_get("auto") ~= "0")
+end
+
+function protocol.is_alias(self)
+       local ifn, parent = nil, nil
+
+       for ifn in utl.imatch(_uci:get("network", self.sid, "ifname")) do
+               if #ifn > 1 and ifn:byte(1) == 64 then
+                       parent = ifn:sub(2)
+               elseif parent ~= nil then
+                       parent = nil
+               end
+       end
+
+       return parent
+end
+
+function protocol.is_empty(self)
+       if self:is_floating() then
+               return false
+       else
+               local empty = true
+
+               if (self:_get("ifname") or ""):match("%S+") then
+                       empty = false
+               end
+
+               if empty and _wifi_netid_by_netname(self.sid) then
+                       empty = false
+               end
+
+               return empty
+       end
+end
+
+function protocol.is_up(self)
+       return (self:_ubus("up") == true)
+end
+
+function protocol.add_interface(self, ifname)
+       ifname = _M:ifnameof(ifname)
+       if ifname and not self:is_floating() then
+               -- if its a wifi interface, change its network option
+               local wif = _wifi_sid_by_ifname(ifname)
+               if wif then
+                       _append("wireless", wif, "network", self.sid)
+
+               -- add iface to our iface list
+               else
+                       _append("network", self.sid, "ifname", ifname)
+               end
+       end
+end
+
+function protocol.del_interface(self, ifname)
+       ifname = _M:ifnameof(ifname)
+       if ifname and not self:is_floating() then
+               -- if its a wireless interface, clear its network option
+               local wif = _wifi_sid_by_ifname(ifname)
+               if wif then _filter("wireless", wif, "network", self.sid) end
+
+               -- remove the interface
+               _filter("network", self.sid, "ifname", ifname)
+       end
+end
+
+function protocol.get_interface(self)
+       if self:is_virtual() then
+               _tunnel[self:proto() .. "-" .. self.sid] = true
+               return interface(self:proto() .. "-" .. self.sid, self)
+       elseif self:is_bridge() then
+               _bridge["br-" .. self.sid] = true
+               return interface("br-" .. self.sid, self)
+       else
+               local ifn = self:_ubus("l3_device") or self:_ubus("device")
+               if ifn then
+                       return interface(ifn, self)
+               end
+
+               for ifn in utl.imatch(_uci:get("network", self.sid, "ifname")) do
+                       ifn = ifn:match("^[^:/]+")
+                       return ifn and interface(ifn, self)
+               end
+
+               ifn = _wifi_netid_by_netname(self.sid)
+               return ifn and interface(ifn, self)
+       end
+end
+
+function protocol.get_interfaces(self)
+       if self:is_bridge() or (self:is_virtual() and not self:is_floating()) then
+               local ifaces = { }
+
+               local ifn
+               local nfs = { }
+               for ifn in utl.imatch(self:get("ifname")) do
+                       ifn = ifn:match("^[^:/]+")
+                       nfs[ifn] = interface(ifn, self)
+               end
+
+               for ifn in utl.kspairs(nfs) do
+                       ifaces[#ifaces+1] = nfs[ifn]
+               end
+
+               local wfs = { }
+               _uci:foreach("wireless", "wifi-iface",
+                       function(s)
+                               if s.device then
+                                       local net
+                                       for net in utl.imatch(s.network) do
+                                               if net == self.sid then
+                                                       ifn = _wifi_netid_by_sid(s[".name"])
+                                                       if ifn then
+                                                               wfs[ifn] = interface(ifn, self)
+                                                       end
+                                               end
+                                       end
+                               end
+                       end)
+
+               for ifn in utl.kspairs(wfs) do
+                       ifaces[#ifaces+1] = wfs[ifn]
+               end
+
+               return ifaces
+       end
+end
+
+function protocol.contains_interface(self, ifname)
+       ifname = _M:ifnameof(ifname)
+       if not ifname then
+               return false
+       elseif self:is_virtual() and self:proto() .. "-" .. self.sid == ifname then
+               return true
+       elseif self:is_bridge() and "br-" .. self.sid == ifname then
+               return true
+       else
+               local ifn
+               for ifn in utl.imatch(self:get("ifname")) do
+                       ifn = ifn:match("[^:]+")
+                       if ifn == ifname then
+                               return true
+                       end
+               end
+
+               local wif = _wifi_sid_by_ifname(ifname)
+               if wif then
+                       local n
+                       for n in utl.imatch(_uci:get("wireless", wif, "network")) do
+                               if n == self.sid then
+                                       return true
+                               end
+                       end
+               end
+       end
+
+       return false
+end
+
+function protocol.adminlink(self)
+       local stat, dsp = pcall(require, "luci.dispatcher")
+       return stat and dsp.build_url("admin", "network", "network", self.sid)
+end
+
+
+interface = utl.class()
+
+function interface.__init__(self, ifname, network)
+       local wif = _wifi_sid_by_ifname(ifname)
+       if wif then
+               self.wif    = wifinet(wif)
+               self.ifname = self.wif:ifname()
+       end
+
+       self.ifname  = self.ifname or ifname
+       self.dev     = _interfaces[self.ifname]
+       self.network = network
+end
+
+function interface._ubus(self, field)
+       if not _ubusdevcache[self.ifname] then
+               _ubusdevcache[self.ifname] = utl.ubus("network.device", "status",
+                                                     { name = self.ifname })
+       end
+       if _ubusdevcache[self.ifname] and field then
+               return _ubusdevcache[self.ifname][field]
+       end
+       return _ubusdevcache[self.ifname]
+end
+
+function interface.name(self)
+       return self.wif and self.wif:ifname() or self.ifname
+end
+
+function interface.mac(self)
+       return ipc.checkmac(self:_ubus("macaddr"))
+end
+
+function interface.ipaddrs(self)
+       return self.dev and self.dev.ipaddrs or { }
+end
+
+function interface.ip6addrs(self)
+       return self.dev and self.dev.ip6addrs or { }
+end
+
+function interface.type(self)
+       if self.ifname and self.ifname:byte(1) == 64 then
+               return "alias"
+       elseif self.wif or _wifi_iface(self.ifname) then
+               return "wifi"
+       elseif _bridge[self.ifname] then
+               return "bridge"
+       elseif _tunnel[self.ifname] then
+               return "tunnel"
+       elseif self.ifname:match("%.") then
+               return "vlan"
+       elseif _switch[self.ifname] then
+               return "switch"
+       else
+               return "ethernet"
+       end
+end
+
+function interface.shortname(self)
+       if self.wif then
+               return self.wif:shortname()
+       else
+               return self.ifname
+       end
+end
+
+function interface.get_i18n(self)
+       if self.wif then
+               return "%s: %s %q" %{
+                       lng.translate("Wireless Network"),
+                       self.wif:active_mode(),
+                       self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() or "?"
+               }
+       else
+               return "%s: %q" %{ self:get_type_i18n(), self:name() }
+       end
+end
+
+function interface.get_type_i18n(self)
+       local x = self:type()
+       if x == "alias" then
+               return lng.translate("Alias Interface")
+       elseif x == "wifi" then
+               return lng.translate("Wireless Adapter")
+       elseif x == "bridge" then
+               return lng.translate("Bridge")
+       elseif x == "switch" then
+               return lng.translate("Ethernet Switch")
+       elseif x == "vlan" then
+               if _switch[self.ifname] then
+                       return lng.translate("Switch VLAN")
+               else
+                       return lng.translate("Software VLAN")
+               end
+       elseif x == "tunnel" then
+               return lng.translate("Tunnel Interface")
+       else
+               return lng.translate("Ethernet Adapter")
+       end
+end
+
+function interface.adminlink(self)
+       if self.wif then
+               return self.wif:adminlink()
+       end
+end
+
+function interface.ports(self)
+       local members = self:_ubus("bridge-members")
+       if members then
+               local _, iface
+               local ifaces = { }
+               for _, iface in ipairs(members) do
+                       ifaces[#ifaces+1] = interface(iface)
+               end
+       end
+end
+
+function interface.bridge_id(self)
+       if self.br then
+               return self.br.id
+       else
+               return nil
+       end
+end
+
+function interface.bridge_stp(self)
+       if self.br then
+               return self.br.stp
+       else
+               return false
+       end
+end
+
+function interface.is_up(self)
+       local up = self:_ubus("up")
+       if up == nil then
+               up = (self:type() == "alias")
+       end
+       return up or false
+end
+
+function interface.is_bridge(self)
+       return (self:type() == "bridge")
+end
+
+function interface.is_bridgeport(self)
+       return self.dev and self.dev.bridge and true or false
+end
+
+function interface.tx_bytes(self)
+       local stat = self:_ubus("statistics")
+       return stat and stat.tx_bytes or 0
+end
+
+function interface.rx_bytes(self)
+       local stat = self:_ubus("statistics")
+       return stat and stat.rx_bytes or 0
+end
+
+function interface.tx_packets(self)
+       local stat = self:_ubus("statistics")
+       return stat and stat.tx_packets or 0
+end
+
+function interface.rx_packets(self)
+       local stat = self:_ubus("statistics")
+       return stat and stat.rx_packets or 0
+end
+
+function interface.get_network(self)
+       return self:get_networks()[1]
+end
+
+function interface.get_networks(self)
+       if not self.networks then
+               local nets = { }
+               local _, net
+               for _, net in ipairs(_M:get_networks()) do
+                       if net:contains_interface(self.ifname) or
+                          net:ifname() == self.ifname
+                       then
+                               nets[#nets+1] = net
+                       end
+               end
+               table.sort(nets, function(a, b) return a.sid < b.sid end)
+               self.networks = nets
+               return nets
+       else
+               return self.networks
+       end
+end
+
+function interface.get_wifinet(self)
+       return self.wif
+end
+
+
+wifidev = utl.class()
+
+function wifidev.__init__(self, name)
+       local t, n = _uci:get("wireless", name)
+       if t == "wifi-device" and n ~= nil then
+               self.sid    = n
+               self.iwinfo = _wifi_iwinfo_by_ifname(self.sid, true)
+       end
+       self.sid    = self.sid    or name
+       self.iwinfo = self.iwinfo or { ifname = self.sid }
+end
+
+function wifidev.get(self, opt)
+       return _get("wireless", self.sid, opt)
+end
+
+function wifidev.set(self, opt, val)
+       return _set("wireless", self.sid, opt, val)
+end
+
+function wifidev.name(self)
+       return self.sid
+end
+
+function wifidev.hwmodes(self)
+       local l = self.iwinfo.hwmodelist
+       if l and next(l) then
+               return l
+       else
+               return { b = true, g = true }
+       end
+end
+
+function wifidev.get_i18n(self)
+       local t = self.iwinfo.hardware_name or "Generic"
+       if self.iwinfo.type == "wl" then
+               t = "Broadcom"
+       end
+
+       local m = ""
+       local l = self:hwmodes()
+       if l.a then m = m .. "a" end
+       if l.b then m = m .. "b" end
+       if l.g then m = m .. "g" end
+       if l.n then m = m .. "n" end
+       if l.ac then m = "ac" end
+
+       return "%s 802.11%s Wireless Controller (%s)" %{ t, m, self:name() }
+end
+
+function wifidev.is_up(self)
+       if _ubuswificache[self.sid] then
+               return (_ubuswificache[self.sid].up == true)
+       end
+
+       return false
+end
+
+function wifidev.get_wifinet(self, net)
+       if _uci:get("wireless", net) == "wifi-iface" then
+               return wifinet(net)
+       else
+               local wnet = _wifi_sid_by_ifname(net)
+               if wnet then
+                       return wifinet(wnet)
+               end
+       end
+end
+
+function wifidev.get_wifinets(self)
+       local nets = { }
+
+       _uci:foreach("wireless", "wifi-iface",
+               function(s)
+                       if s.device == self.sid then
+                               nets[#nets+1] = wifinet(s['.name'])
+                       end
+               end)
+
+       return nets
+end
+
+function wifidev.add_wifinet(self, options)
+       options = options or { }
+       options.device = self.sid
+
+       local wnet = _uci:section("wireless", "wifi-iface", nil, options)
+       if wnet then
+               return wifinet(wnet, options)
+       end
+end
+
+function wifidev.del_wifinet(self, net)
+       if utl.instanceof(net, wifinet) then
+               net = net.sid
+       elseif _uci:get("wireless", net) ~= "wifi-iface" then
+               net = _wifi_sid_by_ifname(net)
+       end
+
+       if net and _uci:get("wireless", net, "device") == self.sid then
+               _uci:delete("wireless", net)
+               return true
+       end
+
+       return false
+end
+
+
+wifinet = utl.class()
+
+function wifinet.__init__(self, name, data)
+       local sid, netid, radioname, radiostate, netstate
+
+       -- lookup state by radio#.network# notation
+       sid = _wifi_sid_by_netid(name)
+       if sid then
+               netid = name
+               radioname, radiostate, netstate = _wifi_state_by_sid(sid)
+       else
+               -- lookup state by ifname (e.g. wlan0)
+               radioname, radiostate, netstate = _wifi_state_by_ifname(name)
+               if radioname and radiostate and netstate then
+                       sid = netstate.section
+                       netid = _wifi_netid_by_sid(sid)
+               else
+                       -- lookup state by uci section id (e.g. cfg053579)
+                       radioname, radiostate, netstate = _wifi_state_by_sid(name)
+                       if radioname and radiostate and netstate then
+                               sid = name
+                               netid = _wifi_netid_by_sid(sid)
+                       else
+                               -- no state available, try to resolve from uci
+                               netid, radioname = _wifi_netid_by_sid(name)
+                               if netid and radioname then
+                                       sid = name
+                               end
+                       end
+               end
+       end
+
+       local iwinfo =
+               (netstate and _wifi_iwinfo_by_ifname(netstate.ifname)) or
+               (radioname and _wifi_iwinfo_by_ifname(radioname)) or
+               { ifname = (netid or sid or name) }
+
+       self.sid       = sid or name
+       self.wdev      = iwinfo.ifname
+       self.iwinfo    = iwinfo
+       self.netid     = netid
+       self._ubusdata = {
+               radio = radioname,
+               dev   = radiostate,
+               net   = netstate
+       }
+end
+
+function wifinet.ubus(self, ...)
+       local n, v = self._ubusdata
+       for n = 1, select('#', ...) do
+               if type(v) == "table" then
+                       v = v[select(n, ...)]
+               else
+                       return nil
+               end
+       end
+       return v
+end
+
+function wifinet.get(self, opt)
+       return _get("wireless", self.sid, opt)
+end
+
+function wifinet.set(self, opt, val)
+       return _set("wireless", self.sid, opt, val)
+end
+
+function wifinet.mode(self)
+       return self:ubus("net", "config", "mode") or self:get("mode") or "ap"
+end
+
+function wifinet.ssid(self)
+       return self:ubus("net", "config", "ssid") or self:get("ssid")
+end
+
+function wifinet.bssid(self)
+       return self:ubus("net", "config", "bssid") or self:get("bssid")
+end
+
+function wifinet.network(self)
+       local net, networks = nil, { }
+       for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do
+               networks[#networks+1] = net
+       end
+       return networks
+end
+
+function wifinet.id(self)
+       return self.netid
+end
+
+function wifinet.name(self)
+       return self.sid
+end
+
+function wifinet.ifname(self)
+       local ifname = self:ubus("net", "ifname") or self.iwinfo.ifname
+       if not ifname or ifname:match("^wifi%d") or ifname:match("^radio%d") then
+               ifname = self.netid
+       end
+       return ifname
+end
+
+function wifinet.get_device(self)
+       local dev = self:ubus("radio") or self:get("device")
+       return dev and wifidev(dev) or nil
+end
+
+function wifinet.is_up(self)
+       local ifc = self:get_interface()
+       return (ifc and ifc:is_up() or false)
+end
+
+function wifinet.active_mode(self)
+       local m = self.iwinfo.mode or self:ubus("net", "config", "mode") or self:get("mode") or "ap"
+
+       if     m == "ap"      then m = "Master"
+       elseif m == "sta"     then m = "Client"
+       elseif m == "adhoc"   then m = "Ad-Hoc"
+       elseif m == "mesh"    then m = "Mesh"
+       elseif m == "monitor" then m = "Monitor"
+       end
+
+       return m
+end
+
+function wifinet.active_mode_i18n(self)
+       return lng.translate(self:active_mode())
+end
+
+function wifinet.active_ssid(self)
+       return self.iwinfo.ssid or self:ubus("net", "config", "ssid") or self:get("ssid")
+end
+
+function wifinet.active_bssid(self)
+       return self.iwinfo.bssid or self:ubus("net", "config", "bssid") or self:get("bssid")
+end
+
+function wifinet.active_encryption(self)
+       local enc = self.iwinfo and self.iwinfo.encryption
+       return enc and enc.description or "-"
+end
+
+function wifinet.assoclist(self)
+       return self.iwinfo.assoclist or { }
+end
+
+function wifinet.frequency(self)
+       local freq = self.iwinfo.frequency
+       if freq and freq > 0 then
+               return "%.03f" % (freq / 1000)
+       end
+end
+
+function wifinet.bitrate(self)
+       local rate = self.iwinfo.bitrate
+       if rate and rate > 0 then
+               return (rate / 1000)
+       end
+end
+
+function wifinet.channel(self)
+       return self.iwinfo.channel or self:ubus("dev", "config", "channel") or
+               tonumber(self:get("channel"))
+end
+
+function wifinet.signal(self)
+       return self.iwinfo.signal or 0
+end
+
+function wifinet.noise(self)
+       return self.iwinfo.noise or 0
+end
+
+function wifinet.country(self)
+       return self.iwinfo.country or self:ubus("dev", "config", "country") or "00"
+end
+
+function wifinet.txpower(self)
+       local pwr = (self.iwinfo.txpower or 0)
+       return pwr + self:txpower_offset()
+end
+
+function wifinet.txpower_offset(self)
+       return self.iwinfo.txpower_offset or 0
+end
+
+function wifinet.signal_level(self, s, n)
+       if self:active_bssid() ~= "00:00:00:00:00:00" then
+               local signal = s or self:signal()
+               local noise  = n or self:noise()
+
+               if signal < 0 and noise < 0 then
+                       local snr = -1 * (noise - signal)
+                       return math.floor(snr / 5)
+               else
+                       return 0
+               end
+       else
+               return -1
+       end
+end
+
+function wifinet.signal_percent(self)
+       local qc = self.iwinfo.quality or 0
+       local qm = self.iwinfo.quality_max or 0
+
+       if qc > 0 and qm > 0 then
+               return math.floor((100 / qm) * qc)
+       else
+               return 0
+       end
+end
+
+function wifinet.shortname(self)
+       return "%s %q" %{
+               lng.translate(self:active_mode()),
+               self:active_ssid() or self:active_bssid() or self:id()
+       }
+end
+
+function wifinet.get_i18n(self)
+       return "%s: %s %q (%s)" %{
+               lng.translate("Wireless Network"),
+               lng.translate(self:active_mode()),
+               self:active_ssid() or self:active_bssid() or self:id(),
+               self:ifname()
+       }
+end
+
+function wifinet.adminlink(self)
+       local stat, dsp = pcall(require, "luci.dispatcher")
+       return dsp and dsp.build_url("admin", "network", "wireless", self.netid)
+end
+
+function wifinet.get_network(self)
+       return self:get_networks()[1]
+end
+
+function wifinet.get_networks(self)
+       local nets = { }
+       local net
+       for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do
+               if _uci:get("network", net) == "interface" then
+                       nets[#nets+1] = network(net)
+               end
+       end
+       table.sort(nets, function(a, b) return a.sid < b.sid end)
+       return nets
+end
+
+function wifinet.get_interface(self)
+       return interface(self:ifname())
+end
+
+
+-- setup base protocols
+_M:register_protocol("static")
+_M:register_protocol("dhcp")
+_M:register_protocol("none")
+
+-- load protocol extensions
+local exts = nfs.dir(utl.libpath() .. "/model/network")
+if exts then
+       local ext
+       for ext in exts do
+               if ext:match("%.lua$") then
+                       require("luci.model.network." .. ext:gsub("%.lua$", ""))
+               end
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/model/uci.lua b/package/luci/modules/luci-base/luasrc/model/uci.lua
new file mode 100644 (file)
index 0000000..a50e28a
--- /dev/null
@@ -0,0 +1,508 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local os    = require "os"
+local util  = require "luci.util"
+local table = require "table"
+
+
+local setmetatable, rawget, rawset = setmetatable, rawget, rawset
+local require, getmetatable, assert = require, getmetatable, assert
+local error, pairs, ipairs, select = error, pairs, ipairs, select
+local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack
+
+-- The typical workflow for UCI is:  Get a cursor instance from the
+-- cursor factory, modify data (via Cursor.add, Cursor.delete, etc.),
+-- save the changes to the staging area via Cursor.save and finally
+-- Cursor.commit the data to the actual config files.
+-- LuCI then needs to Cursor.apply the changes so daemons etc. are
+-- reloaded.
+module "luci.model.uci"
+
+local ERRSTR = {
+       "Invalid command",
+       "Invalid argument",
+       "Method not found",
+       "Entry not found",
+       "No data",
+       "Permission denied",
+       "Timeout",
+       "Not supported",
+       "Unknown error",
+       "Connection failed"
+}
+
+local session_id = nil
+
+local function call(cmd, args)
+       if type(args) == "table" and session_id then
+               args.ubus_rpc_session = session_id
+       end
+       return util.ubus("uci", cmd, args)
+end
+
+
+function cursor()
+       return _M
+end
+
+function cursor_state()
+       return _M
+end
+
+function substate(self)
+       return self
+end
+
+
+function get_confdir(self)
+       return "/etc/config"
+end
+
+function get_savedir(self)
+       return "/tmp/.uci"
+end
+
+function get_session_id(self)
+       return session_id
+end
+
+function set_confdir(self, directory)
+       return false
+end
+
+function set_savedir(self, directory)
+       return false
+end
+
+function set_session_id(self, id)
+       session_id = id
+       return true
+end
+
+
+function load(self, config)
+       return true
+end
+
+function save(self, config)
+       return true
+end
+
+function unload(self, config)
+       return true
+end
+
+
+function changes(self, config)
+       local rv, err = call("changes", { config = config })
+
+       if type(rv) == "table" and type(rv.changes) == "table" then
+               return rv.changes
+       elseif err then
+               return nil, ERRSTR[err]
+       else
+               return { }
+       end
+end
+
+
+function revert(self, config)
+       local _, err = call("revert", { config = config })
+       return (err == nil), ERRSTR[err]
+end
+
+function commit(self, config)
+       local _, err = call("commit", { config = config })
+       return (err == nil), ERRSTR[err]
+end
+
+function apply(self, rollback)
+       local _, err
+
+       if rollback then
+               local sys = require "luci.sys"
+               local conf = require "luci.config"
+               local timeout = tonumber(conf and conf.apply and conf.apply.rollback or 30) or 0
+
+               _, err = call("apply", {
+                       timeout = (timeout > 30) and timeout or 30,
+                       rollback = true
+               })
+
+               if not err then
+                       local now = os.time()
+                       local token = sys.uniqueid(16)
+
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = "00000000000000000000000000000000",
+                               values = {
+                                       rollback = {
+                                               token   = token,
+                                               session = session_id,
+                                               timeout = now + timeout
+                                       }
+                               }
+                       })
+
+                       return token
+               end
+       else
+               _, err = call("changes", {})
+
+               if not err then
+                       if type(_) == "table" and type(_.changes) == "table" then
+                               local k, v
+                               for k, v in pairs(_.changes) do
+                                       _, err = call("commit", { config = k })
+                                       if err then
+                                               break
+                                       end
+                               end
+                       end
+               end
+
+               if not err then
+                       _, err = call("apply", { rollback = false })
+               end
+       end
+
+       return (err == nil), ERRSTR[err]
+end
+
+function confirm(self, token)
+       local is_pending, time_remaining, rollback_sid, rollback_token = self:rollback_pending()
+
+       if is_pending then
+               if token ~= rollback_token then
+                       return false, "Permission denied"
+               end
+
+               local _, err = util.ubus("uci", "confirm", {
+                       ubus_rpc_session = rollback_sid
+               })
+
+               if not err then
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = "00000000000000000000000000000000",
+                               values = { rollback = {} }
+                       })
+               end
+
+               return (err == nil), ERRSTR[err]
+       end
+
+       return false, "No data"
+end
+
+function rollback(self)
+       local is_pending, time_remaining, rollback_sid = self:rollback_pending()
+
+       if is_pending then
+               local _, err = util.ubus("uci", "rollback", {
+                       ubus_rpc_session = rollback_sid
+               })
+
+               if not err then
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = "00000000000000000000000000000000",
+                               values = { rollback = {} }
+                       })
+               end
+
+               return (err == nil), ERRSTR[err]
+       end
+
+       return false, "No data"
+end
+
+function rollback_pending(self)
+       local rv, err = util.ubus("session", "get", {
+               ubus_rpc_session = "00000000000000000000000000000000",
+               keys = { "rollback" }
+       })
+
+       local now = os.time()
+
+       if type(rv) == "table" and
+          type(rv.values) == "table" and
+          type(rv.values.rollback) == "table" and
+          type(rv.values.rollback.token) == "string" and
+          type(rv.values.rollback.session) == "string" and
+          type(rv.values.rollback.timeout) == "number" and
+          rv.values.rollback.timeout > now
+       then
+               return true,
+                       rv.values.rollback.timeout - now,
+                       rv.values.rollback.session,
+                       rv.values.rollback.token
+       end
+
+       return false, ERRSTR[err]
+end
+
+
+function foreach(self, config, stype, callback)
+       if type(callback) == "function" then
+               local rv, err = call("get", {
+                       config = config,
+                       type   = stype
+               })
+
+               if type(rv) == "table" and type(rv.values) == "table" then
+                       local sections = { }
+                       local res = false
+                       local index = 1
+
+                       local _, section
+                       for _, section in pairs(rv.values) do
+                               section[".index"] = section[".index"] or index
+                               sections[index] = section
+                               index = index + 1
+                       end
+
+                       table.sort(sections, function(a, b)
+                               return a[".index"] < b[".index"]
+                       end)
+
+                       for _, section in ipairs(sections) do
+                               local continue = callback(section)
+                               res = true
+                               if continue == false then
+                                       break
+                               end
+                       end
+                       return res
+               else
+                       return false, ERRSTR[err] or "No data"
+               end
+       else
+               return false, "Invalid argument"
+       end
+end
+
+local function _get(self, operation, config, section, option)
+       if section == nil then
+               return nil
+       elseif type(option) == "string" and option:byte(1) ~= 46 then
+               local rv, err = call(operation, {
+                       config  = config,
+                       section = section,
+                       option  = option
+               })
+
+               if type(rv) == "table" then
+                       return rv.value or nil
+               elseif err then
+                       return false, ERRSTR[err]
+               else
+                       return nil
+               end
+       elseif option == nil then
+               local values = self:get_all(config, section)
+               if values then
+                       return values[".type"], values[".name"]
+               else
+                       return nil
+               end
+       else
+               return false, "Invalid argument"
+       end
+end
+
+function get(self, ...)
+       return _get(self, "get", ...)
+end
+
+function get_state(self, ...)
+       return _get(self, "state", ...)
+end
+
+function get_all(self, config, section)
+       local rv, err = call("get", {
+               config  = config,
+               section = section
+       })
+
+       if type(rv) == "table" and type(rv.values) == "table" then
+               return rv.values
+       elseif err then
+               return false, ERRSTR[err]
+       else
+               return nil
+       end
+end
+
+function get_bool(self, ...)
+       local val = self:get(...)
+       return (val == "1" or val == "true" or val == "yes" or val == "on")
+end
+
+function get_first(self, config, stype, option, default)
+       local rv = default
+
+       self:foreach(config, stype, function(s)
+               local val = not option and s[".name"] or s[option]
+
+               if type(default) == "number" then
+                       val = tonumber(val)
+               elseif type(default) == "boolean" then
+                       val = (val == "1" or val == "true" or
+                              val == "yes" or val == "on")
+               end
+
+               if val ~= nil then
+                       rv = val
+                       return false
+               end
+       end)
+
+       return rv
+end
+
+function get_list(self, config, section, option)
+       if config and section and option then
+               local val = self:get(config, section, option)
+               return (type(val) == "table" and val or { val })
+       end
+       return { }
+end
+
+
+function section(self, config, stype, name, values)
+       local rv, err = call("add", {
+               config = config,
+               type   = stype,
+               name   = name,
+               values = values
+       })
+
+       if type(rv) == "table" then
+               return rv.section
+       elseif err then
+               return false, ERRSTR[err]
+       else
+               return nil
+       end
+end
+
+
+function add(self, config, stype)
+       return self:section(config, stype)
+end
+
+function set(self, config, section, option, ...)
+       if select('#', ...) == 0 then
+               local sname, err = self:section(config, option, section)
+               return (not not sname), err
+       else
+               local _, err = call("set", {
+                       config  = config,
+                       section = section,
+                       values  = { [option] = select(1, ...) }
+               })
+               return (err == nil), ERRSTR[err]
+       end
+end
+
+function set_list(self, config, section, option, value)
+       if section == nil or option == nil then
+               return false
+       elseif value == nil or (type(value) == "table" and #value == 0) then
+               return self:delete(config, section, option)
+       elseif type(value) == "table" then
+               return self:set(config, section, option, value)
+       else
+               return self:set(config, section, option, { value })
+       end
+end
+
+function tset(self, config, section, values)
+       local _, err = call("set", {
+               config  = config,
+               section = section,
+               values  = values
+       })
+       return (err == nil), ERRSTR[err]
+end
+
+function reorder(self, config, section, index)
+       local sections
+
+       if type(section) == "string" and type(index) == "number" then
+               local pos = 0
+
+               sections = { }
+
+               self:foreach(config, nil, function(s)
+                       if pos == index then
+                               pos = pos + 1
+                       end
+
+                       if s[".name"] ~= section then
+                               pos = pos + 1
+                               sections[pos] = s[".name"]
+                       else
+                               sections[index + 1] = section
+                       end
+               end)
+       elseif type(section) == "table" then
+               sections = section
+       else
+               return false, "Invalid argument"
+       end
+
+       local _, err = call("order", {
+               config   = config,
+               sections = sections
+       })
+
+       return (err == nil), ERRSTR[err]
+end
+
+
+function delete(self, config, section, option)
+       local _, err = call("delete", {
+               config  = config,
+               section = section,
+               option  = option
+       })
+       return (err == nil), ERRSTR[err]
+end
+
+function delete_all(self, config, stype, comparator)
+       local _, err
+       if type(comparator) == "table" then
+               _, err = call("delete", {
+                       config = config,
+                       type   = stype,
+                       match  = comparator
+               })
+       elseif type(comparator) == "function" then
+               local rv = call("get", {
+                       config = config,
+                       type   = stype
+               })
+
+               if type(rv) == "table" and type(rv.values) == "table" then
+                       local sname, section
+                       for sname, section in pairs(rv.values) do
+                               if comparator(section) then
+                                       _, err = call("delete", {
+                                               config  = config,
+                                               section = sname
+                                       })
+                               end
+                       end
+               end
+       elseif comparator == nil then
+               _, err = call("delete", {
+                       config  = config,
+                       type    = stype
+               })
+       else
+               return false, "Invalid argument"
+       end
+
+       return (err == nil), ERRSTR[err]
+end
diff --git a/package/luci/modules/luci-base/luasrc/model/uci.luadoc b/package/luci/modules/luci-base/luasrc/model/uci.luadoc
new file mode 100644 (file)
index 0000000..0189d49
--- /dev/null
@@ -0,0 +1,369 @@
+---[[
+LuCI UCI model library.
+
+The typical workflow for UCI is:  Get a cursor instance from the
+cursor factory, modify data (via Cursor.add, Cursor.delete, etc.),
+save the changes to the staging area via Cursor.save and finally
+Cursor.commit the data to the actual config files.
+LuCI then needs to Cursor.apply the changes so daemons etc. are
+reloaded.
+@cstyle        instance
+]]
+module "luci.model.uci"
+
+---[[
+Create a new UCI-Cursor.
+
+@class                         function
+@name                          cursor
+@return                                UCI-Cursor
+]]
+
+---[[
+Create a new Cursor initialized to the state directory.
+
+@class                         function
+@name                          cursor_state
+@return                                UCI cursor
+]]
+
+---[[
+Applies UCI configuration changes.
+
+If the rollback parameter is set to true, the apply function will invoke the
+rollback mechanism which causes the configuration to be automatically reverted
+if no confirm() call occurs within a certain timeout.
+
+The current default timeout is 30s and can be increased using the
+"luci.apply.timeout" uci configuration key.
+
+@class                         function
+@name                          Cursor.apply
+@param rollback                Enable rollback mechanism
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Confirms UCI apply process.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+this function confirms the process and cancels the pending rollback timer.
+
+If no apply with rollback session is active, the function has no effect and
+returns with a "No data" error.
+
+@class                         function
+@name                          Cursor.confirm
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Cancels UCI apply process.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+this function cancels the process and rolls back the configuration to the
+pre-apply state.
+
+If no apply with rollback session is active, the function has no effect and
+returns with a "No data" error.
+
+@class                         function
+@name                          Cursor.rollback
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Checks whether a pending rollback is scheduled.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+and has not been confirmed or rolled back yet, this function returns true
+and the remaining time until rollback in seconds. If no rollback is pending,
+the function returns false. On error, the function returns false and an
+additional string describing the error.
+
+@class                         function
+@name                          Cursor.rollback_pending
+@return                                Boolean whether rollback is pending
+@return                                Remaining time in seconds
+]]
+
+---[[
+Delete all sections of a given type that match certain criteria.
+
+@class                         function
+@name                          Cursor.delete_all
+@param config          UCI config
+@param type                    UCI section type
+@param comparator      Function that will be called for each section and returns
+                                       a boolean whether to delete the current section (optional)
+]]
+
+---[[
+Create a new section and initialize it with data.
+
+@class                         function
+@name                          Cursor.section
+@param config          UCI config
+@param type                    UCI section type
+@param name                    UCI section name (optional)
+@param values          Table of key - value pairs to initialize the section with
+@return                                Name of created section
+]]
+
+---[[
+Updated the data of a section using data from a table.
+
+@class                         function
+@name                          Cursor.tset
+@param config          UCI config
+@param section         UCI section name (optional)
+@param values          Table of key - value pairs to update the section with
+]]
+
+---[[
+Get a boolean option and return it's value as true or false.
+
+@class                         function
+@name                          Cursor.get_bool
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option
+@return                                Boolean
+]]
+
+---[[
+Get an option or list and return values as table.
+
+@class                         function
+@name                          Cursor.get_list
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option
+@return table.         If the option was not found, you will simply get an empty
+                                       table.
+]]
+
+---[[
+Get the given option from the first section with the given type.
+
+@class                         function
+@name                          Cursor.get_first
+@param config          UCI config
+@param type                    UCI section type
+@param option          UCI option (optional)
+@param default         Default value (optional)
+@return                                UCI value
+]]
+
+---[[
+Set given values as list. Setting a list option to an empty list
+has the same effect as deleting the option.
+
+@class                         function
+@name                          Cursor.set_list
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option
+@param value           Value or table. Non-table values will be set as single
+                                       item UCI list.
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Create a sub-state of this cursor.
+
+The sub-state is tied to the parent cursor, means it the parent unloads or
+loads configs, the sub state will do so as well.
+
+@class                         function
+@name                          Cursor.substate
+@return                                UCI state cursor tied to the parent cursor
+]]
+
+---[[
+Add an anonymous section.
+
+@class                         function
+@name                          Cursor.add
+@param config          UCI config
+@param type                    UCI section type
+@return                                Name of created section
+]]
+
+---[[
+Get a table of saved but uncommitted changes.
+
+@class                         function
+@name                          Cursor.changes
+@param config          UCI config
+@return                                Table of changes
+@see                           Cursor.save
+]]
+
+---[[
+Commit saved changes.
+
+@class                         function
+@name                          Cursor.commit
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.revert
+@see                           Cursor.save
+]]
+
+---[[
+Deletes a section or an option.
+
+@class                         function
+@name                          Cursor.delete
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option (optional)
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Call a function for every section of a certain type.
+
+@class                         function
+@name                          Cursor.foreach
+@param config          UCI config
+@param type                    UCI section type
+@param callback                Function to be called
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Get a section type or an option
+
+@class                         function
+@name                          Cursor.get
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option (optional)
+@return                                UCI value
+]]
+
+---[[
+Get all sections of a config or all values of a section.
+
+@class                         function
+@name                          Cursor.get_all
+@param config          UCI config
+@param section         UCI section name (optional)
+@return                                Table of UCI sections or table of UCI values
+]]
+
+---[[
+Manually load a config.
+
+@class                         function
+@name                          Cursor.load
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.save
+@see                           Cursor.unload
+]]
+
+---[[
+Revert saved but uncommitted changes.
+
+@class                         function
+@name                          Cursor.revert
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.commit
+@see                           Cursor.save
+]]
+
+---[[
+Saves changes made to a config to make them committable.
+
+@class                         function
+@name                          Cursor.save
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.load
+@see                           Cursor.unload
+]]
+
+---[[
+Set a value or create a named section.
+
+When invoked with three arguments `config`, `sectionname`, `sectiontype`,
+then a named section of the given type is created.
+
+When invoked with four arguments `config`, `sectionname`, `optionname` and
+`optionvalue` then the value of the specified option is set to the given value.
+
+@class                         function
+@name                          Cursor.set
+@param config          UCI config
+@param section         UCI section name
+@param option          UCI option or UCI section type
+@param value           UCI value or nothing if you want to create a section
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Get the configuration directory.
+
+@class                         function
+@name                          Cursor.get_confdir
+@return                                Configuration directory
+]]
+
+---[[
+Get the directory for uncomitted changes.
+
+@class                         function
+@name                          Cursor.get_savedir
+@return                                Save directory
+]]
+
+---[[
+Get the effective session ID.
+
+@class                         function
+@name                          Cursor.get_session_id
+@return                                String containing the session ID
+]]
+
+---[[
+Set the configuration directory.
+
+@class                         function
+@name                          Cursor.set_confdir
+@param directory       UCI configuration directory
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Set the directory for uncommitted changes.
+
+@class                         function
+@name                          Cursor.set_savedir
+@param directory       UCI changes directory
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Set the effective session ID.
+
+@class                         function
+@name                          Cursor.set_session_id
+@param id                      String containing the session ID to set
+@return                                Boolean whether operation succeeded
+]]
+
+---[[
+Discard changes made to a config.
+
+@class                         function
+@name                          Cursor.unload
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.load
+@see                           Cursor.save
+]]
+
diff --git a/package/luci/modules/luci-base/luasrc/sgi/cgi.lua b/package/luci/modules/luci-base/luasrc/sgi/cgi.lua
new file mode 100644 (file)
index 0000000..68ae17a
--- /dev/null
@@ -0,0 +1,73 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+exectime = os.clock()
+module("luci.sgi.cgi", package.seeall)
+local ltn12 = require("luci.ltn12")
+require("nixio.util")
+require("luci.http")
+require("luci.sys")
+require("luci.dispatcher")
+
+-- Limited source to avoid endless blocking
+local function limitsource(handle, limit)
+       limit = limit or 0
+       local BLOCKSIZE = ltn12.BLOCKSIZE
+
+       return function()
+               if limit < 1 then
+                       handle:close()
+                       return nil
+               else
+                       local read = (limit > BLOCKSIZE) and BLOCKSIZE or limit
+                       limit = limit - read
+
+                       local chunk = handle:read(read)
+                       if not chunk then handle:close() end
+                       return chunk
+               end
+       end
+end
+
+function run()
+       local r = luci.http.Request(
+               luci.sys.getenv(),
+               limitsource(io.stdin, tonumber(luci.sys.getenv("CONTENT_LENGTH"))),
+               ltn12.sink.file(io.stderr)
+       )
+       
+       local x = coroutine.create(luci.dispatcher.httpdispatch)
+       local hcache = ""
+       local active = true
+       
+       while coroutine.status(x) ~= "dead" do
+               local res, id, data1, data2 = coroutine.resume(x, r)
+
+               if not res then
+                       print("Status: 500 Internal Server Error")
+                       print("Content-Type: text/plain\n")
+                       print(id)
+                       break;
+               end
+
+               if active then
+                       if id == 1 then
+                               io.write("Status: " .. tostring(data1) .. " " .. data2 .. "\r\n")
+                       elseif id == 2 then
+                               hcache = hcache .. data1 .. ": " .. data2 .. "\r\n"
+                       elseif id == 3 then
+                               io.write(hcache)
+                               io.write("\r\n")
+                       elseif id == 4 then
+                               io.write(tostring(data1 or ""))
+                       elseif id == 5 then
+                               io.flush()
+                               io.close()
+                               active = false
+                       elseif id == 6 then
+                               data1:copyz(nixio.stdout, data2)
+                               data1:close()
+                       end
+               end
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua b/package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua
new file mode 100644 (file)
index 0000000..2836bf0
--- /dev/null
@@ -0,0 +1,89 @@
+-- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "nixio.util"
+require "luci.http"
+require "luci.sys"
+require "luci.dispatcher"
+require "luci.ltn12"
+
+function handle_request(env)
+       exectime = os.clock()
+       local renv = {
+               CONTENT_LENGTH  = env.CONTENT_LENGTH,
+               CONTENT_TYPE    = env.CONTENT_TYPE,
+               REQUEST_METHOD  = env.REQUEST_METHOD,
+               REQUEST_URI     = env.REQUEST_URI,
+               PATH_INFO       = env.PATH_INFO,
+               SCRIPT_NAME     = env.SCRIPT_NAME:gsub("/+$", ""),
+               SCRIPT_FILENAME = env.SCRIPT_NAME,
+               SERVER_PROTOCOL = env.SERVER_PROTOCOL,
+               QUERY_STRING    = env.QUERY_STRING
+       }
+
+       local k, v
+       for k, v in pairs(env.headers) do
+               k = k:upper():gsub("%-", "_")
+               renv["HTTP_" .. k] = v
+       end
+
+       local len = tonumber(env.CONTENT_LENGTH) or 0
+       local function recv()
+               if len > 0 then
+                       local rlen, rbuf = uhttpd.recv(4096)
+                       if rlen >= 0 then
+                               len = len - rlen
+                               return rbuf
+                       end
+               end
+               return nil
+       end
+
+       local send = uhttpd.send
+
+       local req = luci.http.Request(
+               renv, recv, luci.ltn12.sink.file(io.stderr)
+       )
+       
+
+       local x = coroutine.create(luci.dispatcher.httpdispatch)
+       local hcache = { }
+       local active = true
+
+       while coroutine.status(x) ~= "dead" do
+               local res, id, data1, data2 = coroutine.resume(x, req)
+
+               if not res then
+                       send("Status: 500 Internal Server Error\r\n")
+                       send("Content-Type: text/plain\r\n\r\n")
+                       send(tostring(id))
+                       break
+               end
+
+               if active then
+                       if id == 1 then
+                               send("Status: ")
+                               send(tostring(data1))
+                               send(" ")
+                               send(tostring(data2))
+                               send("\r\n")
+                       elseif id == 2 then
+                               hcache[data1] = data2
+                       elseif id == 3 then
+                               for k, v in pairs(hcache) do
+                                       send(tostring(k))
+                                       send(": ")
+                                       send(tostring(v))
+                                       send("\r\n")
+                               end
+                               send("\r\n")
+                       elseif id == 4 then
+                               send(tostring(data1 or ""))
+                       elseif id == 5 then
+                               active = false
+                       elseif id == 6 then
+                               data1:copyz(nixio.stdout, data2)
+                       end
+               end
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/store.lua b/package/luci/modules/luci-base/luasrc/store.lua
new file mode 100644 (file)
index 0000000..34eb296
--- /dev/null
@@ -0,0 +1,6 @@
+-- Copyright 2009 Steven Barth <steven@midlink.org>
+-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local util = require "luci.util"
+module("luci.store", util.threadlocal)
\ No newline at end of file
diff --git a/package/luci/modules/luci-base/luasrc/sys.lua b/package/luci/modules/luci-base/luasrc/sys.lua
new file mode 100644 (file)
index 0000000..cd186c9
--- /dev/null
@@ -0,0 +1,661 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local io     = require "io"
+local os     = require "os"
+local table  = require "table"
+local nixio  = require "nixio"
+local fs     = require "nixio.fs"
+local uci    = require "luci.model.uci"
+local ntm    = require "luci.model.network"
+
+local luci  = {}
+luci.util   = require "luci.util"
+luci.ip     = require "luci.ip"
+
+local tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select, unpack =
+       tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select, unpack
+
+
+module "luci.sys"
+
+function call(...)
+       return os.execute(...) / 256
+end
+
+exec = luci.util.exec
+
+function mounts()
+       local data = {}
+       local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"}
+       local ps = luci.util.execi("df")
+
+       if not ps then
+               return
+       else
+               ps()
+       end
+
+       for line in ps do
+               local row = {}
+
+               local j = 1
+               for value in line:gmatch("[^%s]+") do
+                       row[k[j]] = value
+                       j = j + 1
+               end
+
+               if row[k[1]] then
+
+                       -- this is a rather ugly workaround to cope with wrapped lines in
+                       -- the df output:
+                       --
+                       --      /dev/scsi/host0/bus0/target0/lun0/part3
+                       --                   114382024  93566472  15005244  86% /mnt/usb
+                       --
+
+                       if not row[k[2]] then
+                               j = 2
+                               line = ps()
+                               for value in line:gmatch("[^%s]+") do
+                                       row[k[j]] = value
+                                       j = j + 1
+                               end
+                       end
+
+                       table.insert(data, row)
+               end
+       end
+
+       return data
+end
+
+function mtds()
+       local data = {}
+
+       if fs.access("/proc/mtd") then
+               for l in io.lines("/proc/mtd") do
+                       local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"')
+                       if s and n then
+                               local d = {}
+                               d.size = tonumber(s, 16)
+                               d.name = n
+                               table.insert(data, d)
+                       end
+               end
+       end
+
+       return data
+end
+
+-- containing the whole environment is returned otherwise this function returns
+-- the corresponding string value for the given name or nil if no such variable
+-- exists.
+getenv = nixio.getenv
+
+function hostname(newname)
+       if type(newname) == "string" and #newname > 0 then
+               fs.writefile( "/proc/sys/kernel/hostname", newname )
+               return newname
+       else
+               return nixio.uname().nodename
+       end
+end
+
+function httpget(url, stream, target)
+       if not target then
+               local source = stream and io.popen or luci.util.exec
+               return source("wget -qO- %s" % luci.util.shellquote(url))
+       else
+               return os.execute("wget -qO %s %s" %
+                       {luci.util.shellquote(target), luci.util.shellquote(url)})
+       end
+end
+
+function reboot()
+       return os.execute("reboot >/dev/null 2>&1")
+end
+
+function syslog()
+       return luci.util.exec("logread")
+end
+
+function dmesg()
+       return luci.util.exec("dmesg")
+end
+
+function uniqueid(bytes)
+       local rand = fs.readfile("/dev/urandom", bytes)
+       return rand and nixio.bin.hexlify(rand)
+end
+
+function uptime()
+       return nixio.sysinfo().uptime
+end
+
+
+net = {}
+
+local function _nethints(what, callback)
+       local _, k, e, mac, ip, name, duid, iaid
+       local cur = uci.cursor()
+       local ifn = { }
+       local hosts = { }
+       local lookup = { }
+
+       local function _add(i, ...)
+               local k = select(i, ...)
+               if k then
+                       if not hosts[k] then hosts[k] = { } end
+                       hosts[k][1] = select(1, ...) or hosts[k][1]
+                       hosts[k][2] = select(2, ...) or hosts[k][2]
+                       hosts[k][3] = select(3, ...) or hosts[k][3]
+                       hosts[k][4] = select(4, ...) or hosts[k][4]
+               end
+       end
+
+       luci.ip.neighbors(nil, function(neigh)
+               if neigh.mac and neigh.family == 4 then
+                       _add(what, neigh.mac:string(), neigh.dest:string(), nil, nil)
+               elseif neigh.mac and neigh.family == 6 then
+                       _add(what, neigh.mac:string(), nil, neigh.dest:string(), nil)
+               end
+       end)
+
+       if fs.access("/etc/ethers") then
+               for e in io.lines("/etc/ethers") do
+                       mac, name = e:match("^([a-fA-F0-9:-]+)%s+(%S+)")
+                       mac = luci.ip.checkmac(mac)
+                       if mac and name then
+                               if luci.ip.checkip4(name) then
+                                       _add(what, mac, name, nil, nil)
+                               else
+                                       _add(what, mac, nil, nil, name)
+                               end
+                       end
+               end
+       end
+
+       cur:foreach("dhcp", "dnsmasq",
+               function(s)
+                       if s.leasefile and fs.access(s.leasefile) then
+                               for e in io.lines(s.leasefile) do
+                                       mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)")
+                                       mac = luci.ip.checkmac(mac)
+                                       if mac and ip then
+                                               _add(what, mac, ip, nil, name ~= "*" and name)
+                                       end
+                               end
+                       end
+               end
+       )
+       
+       cur:foreach("dhcp", "odhcpd",
+               function(s)
+                       if type(s.leasefile) == "string" and fs.access(s.leasefile) then
+                               for e in io.lines(s.leasefile) do
+                                       duid, iaid, name, _, ip = e:match("^# %S+ (%S+) (%S+) (%S+) (-?%d+) %S+ %S+ ([0-9a-f:.]+)/[0-9]+")
+                                       mac = net.duid_to_mac(duid)
+                                       if mac then
+                                               if ip and iaid == "ipv4" then
+                                                       _add(what, mac, ip, nil, name ~= "*" and name)
+                                               elseif ip then
+                                                       _add(what, mac, nil, ip, name ~= "*" and name)
+                                               end
+                                       end
+                               end
+                       end
+               end
+       )
+
+       cur:foreach("dhcp", "host",
+               function(s)
+                       for mac in luci.util.imatch(s.mac) do
+                               mac = luci.ip.checkmac(mac)
+                               if mac then
+                                       _add(what, mac, s.ip, nil, s.name)
+                               end
+                       end
+               end)
+
+       for _, e in ipairs(nixio.getifaddrs()) do
+               if e.name ~= "lo" then
+                       ifn[e.name] = ifn[e.name] or { }
+                       if e.family == "packet" and e.addr and #e.addr == 17 then
+                               ifn[e.name][1] = e.addr:upper()
+                       elseif e.family == "inet" then
+                               ifn[e.name][2] = e.addr
+                       elseif e.family == "inet6" then
+                               ifn[e.name][3] = e.addr
+                       end
+               end
+       end
+
+       for _, e in pairs(ifn) do
+               if e[what] and (e[2] or e[3]) then
+                       _add(what, e[1], e[2], e[3], e[4])
+               end
+       end
+
+       for _, e in pairs(hosts) do
+               lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3])
+       end
+
+       if #lookup > 0 then
+               lookup = luci.util.ubus("network.rrdns", "lookup", {
+                       addrs   = lookup,
+                       timeout = 250,
+                       limit   = 1000
+               }) or { }
+       end
+
+       for _, e in luci.util.kspairs(hosts) do
+               callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4])
+       end
+end
+
+--          Each entry contains the values in the following order:
+--          [ "mac", "name" ]
+function net.mac_hints(callback)
+       if callback then
+               _nethints(1, function(mac, v4, v6, name)
+                       name = name or v4
+                       if name and name ~= mac then
+                               callback(mac, name or v4)
+                       end
+               end)
+       else
+               local rv = { }
+               _nethints(1, function(mac, v4, v6, name)
+                       name = name or v4
+                       if name and name ~= mac then
+                               rv[#rv+1] = { mac, name or v4 }
+                       end
+               end)
+               return rv
+       end
+end
+
+--          Each entry contains the values in the following order:
+--          [ "ip", "name" ]
+function net.ipv4_hints(callback)
+       if callback then
+               _nethints(2, function(mac, v4, v6, name)
+                       name = name or mac
+                       if name and name ~= v4 then
+                               callback(v4, name)
+                       end
+               end)
+       else
+               local rv = { }
+               _nethints(2, function(mac, v4, v6, name)
+                       name = name or mac
+                       if name and name ~= v4 then
+                               rv[#rv+1] = { v4, name }
+                       end
+               end)
+               return rv
+       end
+end
+
+--          Each entry contains the values in the following order:
+--          [ "ip", "name" ]
+function net.ipv6_hints(callback)
+       if callback then
+               _nethints(3, function(mac, v4, v6, name)
+                       name = name or mac
+                       if name and name ~= v6 then
+                               callback(v6, name)
+                       end
+               end)
+       else
+               local rv = { }
+               _nethints(3, function(mac, v4, v6, name)
+                       name = name or mac
+                       if name and name ~= v6 then
+                               rv[#rv+1] = { v6, name }
+                       end
+               end)
+               return rv
+       end
+end
+
+function net.host_hints(callback)
+       if callback then
+               _nethints(1, function(mac, v4, v6, name)
+                       if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then
+                               callback(mac, v4, v6, name)
+                       end
+               end)
+       else
+               local rv = { }
+               _nethints(1, function(mac, v4, v6, name)
+                       if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then
+                               local e = { }
+                               if v4   then e.ipv4 = v4   end
+                               if v6   then e.ipv6 = v6   end
+                               if name then e.name = name end
+                               rv[mac] = e
+                       end
+               end)
+               return rv
+       end
+end
+
+function net.conntrack(callback)
+       local ok, nfct = pcall(io.lines, "/proc/net/nf_conntrack")
+       if not ok or not nfct then
+               return nil
+       end
+
+       local line, connt = nil, (not callback) and { }
+       for line in nfct do
+               local fam, l3, l4, timeout, tuples =
+                       line:match("^(ipv[46]) +(%d+) +%S+ +(%d+) +(%d+) +(.+)$")
+
+               if fam and l3 and l4 and timeout and not tuples:match("^TIME_WAIT ") then
+                       l4 = nixio.getprotobynumber(l4)
+
+                       local entry = {
+                               bytes = 0,
+                               packets = 0,
+                               layer3 = fam,
+                               layer4 = l4 and l4.name or "unknown",
+                               timeout = tonumber(timeout, 10)
+                       }
+
+                       local key, val
+                       for key, val in tuples:gmatch("(%w+)=(%S+)") do
+                               if key == "bytes" or key == "packets" then
+                                       entry[key] = entry[key] + tonumber(val, 10)
+                               elseif key == "src" or key == "dst" then
+                                       if entry[key] == nil then
+                                               entry[key] = luci.ip.new(val):string()
+                                       end
+                               elseif key == "sport" or key == "dport" then
+                                       if entry[key] == nil then
+                                               entry[key] = val
+                                       end
+                               elseif val then
+                                       entry[key] = val
+                               end
+                       end
+
+                       if callback then
+                               callback(entry)
+                       else
+                               connt[#connt+1] = entry
+                       end
+               end
+       end
+
+       return callback and true or connt
+end
+
+function net.devices()
+       local devs = {}
+       local seen = {}
+       for k, v in ipairs(nixio.getifaddrs()) do
+               if v.name and not seen[v.name] then
+                       seen[v.name] = true
+                       devs[#devs+1] = v.name
+               end
+       end
+       return devs
+end
+
+function net.duid_to_mac(duid)
+       local b1, b2, b3, b4, b5, b6
+
+       if type(duid) == "string" then
+               -- DUID-LLT / Ethernet
+               if #duid == 28 then
+                       b1, b2, b3, b4, b5, b6 = duid:match("^00010001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)%x%x%x%x%x%x%x%x$")
+
+               -- DUID-LL / Ethernet
+               elseif #duid == 20 then
+                       b1, b2, b3, b4, b5, b6 = duid:match("^00030001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$")
+
+               -- DUID-LL / Ethernet (Without Header)
+               elseif #duid == 12 then
+                       b1, b2, b3, b4, b5, b6 = duid:match("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$")
+               end
+       end
+
+       return b1 and luci.ip.checkmac(table.concat({ b1, b2, b3, b4, b5, b6 }, ":"))
+end
+
+process = {}
+
+function process.info(key)
+       local s = {uid = nixio.getuid(), gid = nixio.getgid()}
+       return not key and s or s[key]
+end
+
+function process.list()
+       local data = {}
+       local k
+       local ps = luci.util.execi("/bin/busybox top -bn1")
+
+       if not ps then
+               return
+       end
+
+       for line in ps do
+               local pid, ppid, user, stat, vsz, mem, cpu, cmd = line:match(
+                       "^ *(%d+) +(%d+) +(%S.-%S) +([RSDZTW][<NW ][<N ]) +(%d+) +(%d+%%) +(%d+%%) +(.+)"
+               )
+
+               local idx = tonumber(pid)
+               if idx and not cmd:match("top %-bn1") then
+                       data[idx] = {
+                               ['PID']     = pid,
+                               ['PPID']    = ppid,
+                               ['USER']    = user,
+                               ['STAT']    = stat,
+                               ['VSZ']     = vsz,
+                               ['%MEM']    = mem,
+                               ['%CPU']    = cpu,
+                               ['COMMAND'] = cmd
+                       }
+               end
+       end
+
+       return data
+end
+
+function process.setgroup(gid)
+       return nixio.setgid(gid)
+end
+
+function process.setuser(uid)
+       return nixio.setuid(uid)
+end
+
+process.signal = nixio.kill
+
+local function xclose(fd)
+       if fd and fd:fileno() > 2 then
+               fd:close()
+       end
+end
+
+function process.exec(command, stdout, stderr, nowait)
+       local out_r, out_w, err_r, err_w
+       if stdout then out_r, out_w = nixio.pipe() end
+       if stderr then err_r, err_w = nixio.pipe() end
+
+       local pid = nixio.fork()
+       if pid == 0 then
+               nixio.chdir("/")
+
+               local null = nixio.open("/dev/null", "w+")
+               if null then
+                       nixio.dup(out_w or null, nixio.stdout)
+                       nixio.dup(err_w or null, nixio.stderr)
+                       nixio.dup(null, nixio.stdin)
+                       xclose(out_w)
+                       xclose(out_r)
+                       xclose(err_w)
+                       xclose(err_r)
+                       xclose(null)
+               end
+
+               nixio.exec(unpack(command))
+               os.exit(-1)
+       end
+
+       local _, pfds, rv = nil, {}, { code = -1, pid = pid }
+
+       xclose(out_w)
+       xclose(err_w)
+
+       if out_r then
+               pfds[#pfds+1] = {
+                       fd = out_r,
+                       cb = type(stdout) == "function" and stdout,
+                       name = "stdout",
+                       events = nixio.poll_flags("in", "err", "hup")
+               }
+       end
+
+       if err_r then
+               pfds[#pfds+1] = {
+                       fd = err_r,
+                       cb = type(stderr) == "function" and stderr,
+                       name = "stderr",
+                       events = nixio.poll_flags("in", "err", "hup")
+               }
+       end
+
+       while #pfds > 0 do
+               local nfds, err = nixio.poll(pfds, -1)
+               if not nfds and err ~= nixio.const.EINTR then
+                       break
+               end
+
+               local i
+               for i = #pfds, 1, -1 do
+                       local rfd = pfds[i]
+                       if rfd.revents > 0 then
+                               local chunk, err = rfd.fd:read(4096)
+                               if chunk and #chunk > 0 then
+                                       if rfd.cb then
+                                               rfd.cb(chunk)
+                                       else
+                                               rfd.buf = rfd.buf or {}
+                                               rfd.buf[#rfd.buf + 1] = chunk
+                                       end
+                               else
+                                       table.remove(pfds, i)
+                                       if rfd.buf then
+                                               rv[rfd.name] = table.concat(rfd.buf, "")
+                                       end
+                                       rfd.fd:close()
+                               end
+                       end
+               end
+       end
+
+       if not nowait then
+               _, _, rv.code = nixio.waitpid(pid)
+       end
+
+       return rv
+end
+
+
+user = {}
+
+--                             { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" }
+user.getuser = nixio.getpw
+
+function user.getpasswd(username)
+       local pwe = nixio.getsp and nixio.getsp(username) or nixio.getpw(username)
+       local pwh = pwe and (pwe.pwdp or pwe.passwd)
+       if not pwh or #pwh < 1 or pwh == "!" or pwh == "x" then
+               return nil, pwe
+       else
+               return pwh, pwe
+       end
+end
+
+function user.checkpasswd(username, pass)
+       local pwh, pwe = user.getpasswd(username)
+       if pwe then
+               return (pwh == nil or nixio.crypt(pass, pwh) == pwh)
+       end
+       return false
+end
+
+function user.setpasswd(username, password)
+       return os.execute("(echo %s; sleep 1; echo %s) | passwd %s >/dev/null 2>&1" %{
+               luci.util.shellquote(password),
+               luci.util.shellquote(password),
+               luci.util.shellquote(username)
+       })
+end
+
+
+wifi = {}
+
+function wifi.getiwinfo(ifname)
+       ntm.init()
+
+       local wnet = ntm:get_wifinet(ifname)
+       if wnet and wnet.iwinfo then
+               return wnet.iwinfo
+       end
+
+       local wdev = ntm:get_wifidev(ifname)
+       if wdev and wdev.iwinfo then
+               return wdev.iwinfo
+       end
+
+       return { ifname = ifname }
+end
+
+
+init = {}
+init.dir = "/etc/init.d/"
+
+function init.names()
+       local names = { }
+       for name in fs.glob(init.dir.."*") do
+               names[#names+1] = fs.basename(name)
+       end
+       return names
+end
+
+function init.index(name)
+       if fs.access(init.dir..name) then
+               return call("env -i sh -c 'source %s%s enabled; exit ${START:-255}' >/dev/null"
+                       %{ init.dir, name })
+       end
+end
+
+local function init_action(action, name)
+       if fs.access(init.dir..name) then
+               return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action })
+       end
+end
+
+function init.enabled(name)
+       return (init_action("enabled", name) == 0)
+end
+
+function init.enable(name)
+       return (init_action("enable", name) == 1)
+end
+
+function init.disable(name)
+       return (init_action("disable", name) == 0)
+end
+
+function init.start(name)
+       return (init_action("start", name) == 0)
+end
+
+function init.stop(name)
+       return (init_action("stop", name) == 0)
+end
diff --git a/package/luci/modules/luci-base/luasrc/sys.luadoc b/package/luci/modules/luci-base/luasrc/sys.luadoc
new file mode 100644 (file)
index 0000000..162650e
--- /dev/null
@@ -0,0 +1,441 @@
+---[[
+LuCI Linux and POSIX system utilities.
+]]
+module "luci.sys"
+
+---[[
+Execute a given shell command and return the error code
+
+@class         function
+@name          call
+@param                 ...             Command to call
+@return                Error code of the command
+]]
+
+---[[
+Execute a given shell command and capture its standard output
+
+@class         function
+@name          exec
+@param command Command to call
+@return                        String containing the return the output of the command
+]]
+
+---[[
+Retrieve information about currently mounted file systems.
+
+@class function
+@name mounts
+@return        Table containing mount information
+]]
+
+---[[
+Retrieve environment variables. If no variable is given then a table
+
+containing the whole environment is returned otherwise this function returns
+the corresponding string value for the given name or nil if no such variable
+exists.
+@class         function
+@name          getenv
+@param var     Name of the environment variable to retrieve (optional)
+@return                String containing the value of the specified variable
+@return                Table containing all variables if no variable name is given
+]]
+
+---[[
+Get or set the current hostname.
+
+@class function
+@name hostname
+@param         String containing a new hostname to set (optional)
+@return                String containing the system hostname
+]]
+
+---[[
+Returns the contents of a documented referred by an URL.
+
+@class function
+@name httpget
+@param url      The URL to retrieve
+@param stream Return a stream instead of a buffer
+@param target Directly write to target file name
+@return                String containing the contents of given the URL
+]]
+
+---[[
+Initiate a system reboot.
+
+@class function
+@name reboot
+@return        Return value of os.execute()
+]]
+
+---[[
+Retrieves the output of the "logread" command.
+
+@class function
+@name syslog
+@return        String containing the current log buffer
+]]
+
+---[[
+Retrieves the output of the "dmesg" command.
+
+@class function
+@name dmesg
+@return        String containing the current log buffer
+]]
+
+---[[
+Generates a random id with specified length.
+
+@class function
+@name uniqueid
+@param bytes   Number of bytes for the unique id
+@return                String containing hex encoded id
+]]
+
+---[[
+Returns the current system uptime stats.
+
+@class function
+@name uptime
+@return        String containing total uptime in seconds
+]]
+
+---[[
+LuCI system utilities / network related functions.
+
+@class module
+@name  luci.sys.net
+]]
+
+---[[
+Returns the current arp-table entries as two-dimensional table.
+
+@class function
+@name net.arptable
+@return        Table of table containing the current arp entries.
+--                     The following fields are defined for arp entry objects:
+--                     { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" }
+]]
+
+---[[
+Returns a two-dimensional table of mac address hints.
+
+@class function
+@name net.mac_hints
+@return  Table of table containing known hosts from various sources.
+         Each entry contains the values in the following order:
+         [ "mac", "name" ]
+]]
+
+---[[
+Returns a two-dimensional table of IPv4 address hints.
+
+@class function
+@name net.ipv4_hints
+@return  Table of table containing known hosts from various sources.
+         Each entry contains the values in the following order:
+         [ "ip", "name" ]
+]]
+
+---[[
+Returns a two-dimensional table of IPv6 address hints.
+
+@class function
+@name net.ipv6_hints
+@return  Table of table containing known hosts from various sources.
+         Each entry contains the values in the following order:
+         [ "ip", "name" ]
+]]
+
+---[[
+Returns a two-dimensional table of host hints.
+
+@class function
+@name net.host_hints
+@return  Table of table containing known hosts from various sources,
+         indexed by mac address. Each subtable contains at least one
+         of the fields "name", "ipv4" or "ipv6".
+]]
+
+---[[
+Returns conntrack information
+
+@class function
+@name net.conntrack
+@return        Table with the currently tracked IP connections
+]]
+
+---[[
+Determine the names of available network interfaces.
+
+@class function
+@name net.devices
+@return        Table containing all current interface names
+]]
+
+---[[
+Return information about available network interfaces.
+
+@class function
+@name net.deviceinfo
+@return        Table containing all current interface names and their information
+]]
+
+---[[
+Returns the current kernel routing table entries.
+
+@class function
+@name net.routes
+@return        Table of tables with properties of the corresponding routes.
+--                     The following fields are defined for route entry tables:
+--                     { "dest", "gateway", "metric", "refcount", "usecount", "irtt",
+--                       "flags", "device" }
+]]
+
+---[[
+Returns the current ipv6 kernel routing table entries.
+
+@class function
+@name net.routes6
+@return        Table of tables with properties of the corresponding routes.
+--                     The following fields are defined for route entry tables:
+--                     { "source", "dest", "nexthop", "metric", "refcount", "usecount",
+--                       "flags", "device" }
+]]
+
+---[[
+Tests whether the given host responds to ping probes.
+
+@class function
+@name net.pingtest
+@param host    String containing a hostname or IPv4 address
+@return                Number containing 0 on success and >= 1 on error
+]]
+
+---[[
+LuCI system utilities / process related functions.
+
+@class module
+@name  luci.sys.process
+]]
+
+---[[
+Get the current process id.
+
+@class function
+@name  process.info
+@return        Number containing the current pid
+]]
+
+---[[
+Retrieve information about currently running processes.
+
+@class function
+@name process.list
+@return        Table containing process information
+]]
+
+---[[
+Set the gid of a process identified by given pid.
+
+@class function
+@name process.setgroup
+@param gid     Number containing the Unix group id
+@return                Boolean indicating successful operation
+@return                String containing the error message if failed
+@return                Number containing the error code if failed
+]]
+
+---[[
+Set the uid of a process identified by given pid.
+
+@class function
+@name process.setuser
+@param uid     Number containing the Unix user id
+@return                Boolean indicating successful operation
+@return                String containing the error message if failed
+@return                Number containing the error code if failed
+]]
+
+---[[
+Send a signal to a process identified by given pid.
+
+@class function
+@name  process.signal
+@param pid     Number containing the process id
+@param sig     Signal to send (default: 15 [SIGTERM])
+@return                Boolean indicating successful operation
+@return                Number containing the error code if failed
+]]
+
+---[[
+Execute a process, optionally capturing stdio.
+
+Executes the process specified by the given argv vector, e.g.
+`{ "/bin/sh", "-c", "echo 1" }` and waits for it to terminate unless a true
+value has been passed for the "nowait" parameter.
+
+When a function value is passed for the stdout or stderr arguments, the passed
+function is repeatedly called for each chunk read from the corresponding stdio
+stream. The read data is passed as string containing at most 4096 bytes at a
+time.
+
+When a true, non-function value is passed for the stdout or stderr arguments,
+the data of the corresponding stdio stream is read into an internal string
+buffer and returned as "stdout" or "stderr" field respectively in the result
+table.
+
+When a true value is passed to the nowait parameter, the function does not
+await process termination but returns as soon as all captured stdio streams
+have been closed or - if no streams are captured - immediately after launching
+the process.
+
+@class function
+@name  process.exec
+@param commend Table containing the argv vector to execute
+@param stdout  Callback function or boolean to indicate capturing (optional)
+@param stderr  Callback function or boolean to indicate capturing (optional)
+@param nowait  Don't wait for process termination when true (optional)
+@return                Table containing at least the fields "code" which holds the exit
+            status of the invoked process or "-1" on error and "pid", which
+            contains the process id assigned to the spawned process. When
+            stdout and/or stderr capturing has been requested, it additionally
+            contains "stdout" and "stderr" fields respectively, holding the
+            captured stdio data as string.
+]]
+
+---[[
+LuCI system utilities / user related functions.
+
+@class module
+@name  luci.sys.user
+]]
+
+---[[
+Retrieve user information for given uid.
+
+@class         function
+@name          getuser
+@param uid     Number containing the Unix user id
+@return                Table containing the following fields:
+--                             { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" }
+]]
+
+---[[
+Retrieve the current user password hash.
+
+@class function
+@name user.getpasswd
+@param username        String containing the username to retrieve the password for
+@return                        String containing the hash or nil if no password is set.
+@return                        Password database entry
+]]
+
+---[[
+Test whether given string matches the password of a given system user.
+
+@class function
+@name user.checkpasswd
+@param username        String containing the Unix user name
+@param pass            String containing the password to compare
+@return                        Boolean indicating whether the passwords are equal
+]]
+
+---[[
+Change the password of given user.
+
+@class function
+@name user.setpasswd
+@param username        String containing the Unix user name
+@param password        String containing the password to compare
+@return                        Number containing 0 on success and >= 1 on error
+]]
+
+---[[
+LuCI system utilities / wifi related functions.
+
+@class module
+@name  luci.sys.wifi
+]]
+
+---[[
+Get wireless information for given interface.
+
+@class function
+@name wifi.getiwinfo
+@param ifname        String containing the interface name
+@return              A wrapped iwinfo object instance
+]]
+
+---[[
+LuCI system utilities / init related functions.
+
+@class module
+@name  luci.sys.init
+]]
+
+---[[
+Get the names of all installed init scripts
+
+@class function
+@name init.names
+@return        Table containing the names of all inistalled init scripts
+]]
+
+---[[
+Get the index of he given init script
+
+@class function
+@name init.index
+@param name    Name of the init script
+@return                Numeric index value
+]]
+
+---[[
+Test whether the given init script is enabled
+
+@class function
+@name init.enabled
+@param name    Name of the init script
+@return                Boolean indicating whether init is enabled
+]]
+
+---[[
+Enable the given init script
+
+@class function
+@name init.enable
+@param name    Name of the init script
+@return                Boolean indicating success
+]]
+
+---[[
+Disable the given init script
+
+@class function
+@name init.disable
+@param name    Name of the init script
+@return                Boolean indicating success
+]]
+
+---[[
+Start the given init script
+
+@class function
+@name init.start
+@param name    Name of the init script
+@return                Boolean indicating success
+]]
+
+---[[
+Stop the given init script
+
+@class function
+@name init.stop
+@param name    Name of the init script
+@return                Boolean indicating success
+]]
+
diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua
new file mode 100644 (file)
index 0000000..aa054a2
--- /dev/null
@@ -0,0 +1,19 @@
+-- Licensed to the public under the Apache License 2.0.
+
+local setmetatable, require, rawget, rawset = setmetatable, require, rawget, rawset
+
+module "luci.sys.zoneinfo"
+
+setmetatable(_M, {
+       __index = function(t, k)
+               if k == "TZ" and not rawget(t, k) then
+                       local m = require "luci.sys.zoneinfo.tzdata"
+                       rawset(t, k, rawget(m, k))
+               elseif k == "OFFSET" and not rawget(t, k) then
+                       local m = require "luci.sys.zoneinfo.tzoffset"
+                       rawset(t, k, rawget(m, k))
+               end
+
+               return rawget(t, k)
+       end
+})
diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
new file mode 100644 (file)
index 0000000..eec9182
--- /dev/null
@@ -0,0 +1,458 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module "luci.sys.zoneinfo.tzdata"
+
+TZ = {
+       { 'Africa/Abidjan', 'GMT0' },
+       { 'Africa/Accra', 'GMT0' },
+       { 'Africa/Addis Ababa', 'EAT-3' },
+       { 'Africa/Algiers', 'CET-1' },
+       { 'Africa/Asmara', 'EAT-3' },
+       { 'Africa/Bamako', 'GMT0' },
+       { 'Africa/Bangui', 'WAT-1' },
+       { 'Africa/Banjul', 'GMT0' },
+       { 'Africa/Bissau', 'GMT0' },
+       { 'Africa/Blantyre', 'CAT-2' },
+       { 'Africa/Brazzaville', 'WAT-1' },
+       { 'Africa/Bujumbura', 'CAT-2' },
+       { 'Africa/Cairo', 'EET-2' },
+       { 'Africa/Casablanca', '<+01>-1' },
+       { 'Africa/Ceuta', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Africa/Conakry', 'GMT0' },
+       { 'Africa/Dakar', 'GMT0' },
+       { 'Africa/Dar es Salaam', 'EAT-3' },
+       { 'Africa/Djibouti', 'EAT-3' },
+       { 'Africa/Douala', 'WAT-1' },
+       { 'Africa/El Aaiun', '<+01>-1' },
+       { 'Africa/Freetown', 'GMT0' },
+       { 'Africa/Gaborone', 'CAT-2' },
+       { 'Africa/Harare', 'CAT-2' },
+       { 'Africa/Johannesburg', 'SAST-2' },
+       { 'Africa/Juba', 'EAT-3' },
+       { 'Africa/Kampala', 'EAT-3' },
+       { 'Africa/Khartoum', 'CAT-2' },
+       { 'Africa/Kigali', 'CAT-2' },
+       { 'Africa/Kinshasa', 'WAT-1' },
+       { 'Africa/Lagos', 'WAT-1' },
+       { 'Africa/Libreville', 'WAT-1' },
+       { 'Africa/Lome', 'GMT0' },
+       { 'Africa/Luanda', 'WAT-1' },
+       { 'Africa/Lubumbashi', 'CAT-2' },
+       { 'Africa/Lusaka', 'CAT-2' },
+       { 'Africa/Malabo', 'WAT-1' },
+       { 'Africa/Maputo', 'CAT-2' },
+       { 'Africa/Maseru', 'SAST-2' },
+       { 'Africa/Mbabane', 'SAST-2' },
+       { 'Africa/Mogadishu', 'EAT-3' },
+       { 'Africa/Monrovia', 'GMT0' },
+       { 'Africa/Nairobi', 'EAT-3' },
+       { 'Africa/Ndjamena', 'WAT-1' },
+       { 'Africa/Niamey', 'WAT-1' },
+       { 'Africa/Nouakchott', 'GMT0' },
+       { 'Africa/Ouagadougou', 'GMT0' },
+       { 'Africa/Porto-Novo', 'WAT-1' },
+       { 'Africa/Sao Tome', 'GMT0' },
+       { 'Africa/Tripoli', 'EET-2' },
+       { 'Africa/Tunis', 'CET-1' },
+       { 'Africa/Windhoek', 'CAT-2' },
+       { 'America/Adak', 'HST10HDT,M3.2.0,M11.1.0' },
+       { 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
+       { 'America/Anguilla', 'AST4' },
+       { 'America/Antigua', 'AST4' },
+       { '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', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' },
+       { 'America/Atikokan', 'EST5' },
+       { 'America/Bahia', '<-03>3' },
+       { 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' },
+       { 'America/Barbados', 'AST4' },
+       { 'America/Belem', '<-03>3' },
+       { 'America/Belize', 'CST6' },
+       { 'America/Blanc-Sablon', 'AST4' },
+       { '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', '<-04>4' },
+       { 'America/Cancun', 'EST5' },
+       { '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', '<-04>4' },
+       { 'America/Curacao', 'AST4' },
+       { 'America/Danmarkshavn', 'GMT0' },
+       { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
+       { 'America/Dawson Creek', 'MST7' },
+       { 'America/Denver', 'MST7MDT,M3.2.0,M11.1.0' },
+       { 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Dominica', 'AST4' },
+       { 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' },
+       { 'America/Eirunepe', '<-05>5' },
+       { 'America/El Salvador', 'CST6' },
+       { 'America/Fort Nelson', 'MST7' },
+       { 'America/Fortaleza', '<-03>3' },
+       { 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' },
+       { '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', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Grenada', 'AST4' },
+       { 'America/Guadeloupe', 'AST4' },
+       { 'America/Guatemala', 'CST6' },
+       { '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' },
+       { 'America/Indiana/Indianapolis', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Knox', 'CST6CDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Marengo', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Petersburg', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Tell City', 'CST6CDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Vevay', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Vincennes', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Indiana/Winamac', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Inuvik', 'MST7MDT,M3.2.0,M11.1.0' },
+       { 'America/Iqaluit', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Jamaica', 'EST5' },
+       { 'America/Juneau', 'AKST9AKDT,M3.2.0,M11.1.0' },
+       { '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', '<-04>4' },
+       { 'America/Lima', '<-05>5' },
+       { 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' },
+       { 'America/Lower Princes', 'AST4' },
+       { 'America/Maceio', '<-03>3' },
+       { 'America/Managua', 'CST6' },
+       { 'America/Manaus', '<-04>4' },
+       { 'America/Marigot', 'AST4' },
+       { 'America/Martinique', 'AST4' },
+       { 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' },
+       { 'America/Mazatlan', 'MST7MDT,M4.1.0,M10.5.0' },
+       { 'America/Menominee', 'CST6CDT,M3.2.0,M11.1.0' },
+       { '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', '<-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', '<-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', '<-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', '<-03>3' },
+       { 'America/Phoenix', 'MST7' },
+       { 'America/Port of Spain', 'AST4' },
+       { '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', '<-03>3' },
+       { 'America/Regina', 'CST6' },
+       { 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' },
+       { 'America/Rio Branco', '<-05>5' },
+       { 'America/Santarem', '<-03>3' },
+       { 'America/Santiago', '<-04>4<-03>,M9.1.6/24,M4.1.6/24' },
+       { 'America/Santo Domingo', 'AST4' },
+       { 'America/Sao Paulo', '<-03>3' },
+       { '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' },
+       { 'America/St Kitts', 'AST4' },
+       { 'America/St Lucia', 'AST4' },
+       { 'America/St Thomas', 'AST4' },
+       { 'America/St Vincent', 'AST4' },
+       { 'America/Swift Current', 'CST6' },
+       { 'America/Tegucigalpa', 'CST6' },
+       { 'America/Thule', 'AST4ADT,M3.2.0,M11.1.0' },
+       { 'America/Thunder Bay', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Tijuana', 'PST8PDT,M3.2.0,M11.1.0' },
+       { 'America/Toronto', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Tortola', 'AST4' },
+       { 'America/Vancouver', 'PST8PDT,M3.2.0,M11.1.0' },
+       { 'America/Whitehorse', 'PST8PDT,M3.2.0,M11.1.0' },
+       { 'America/Winnipeg', 'CST6CDT,M3.2.0,M11.1.0' },
+       { 'America/Yakutat', 'AKST9AKDT,M3.2.0,M11.1.0' },
+       { 'America/Yellowknife', 'MST7MDT,M3.2.0,M11.1.0' },
+       { 'Antarctica/Casey', '<+08>-8' },
+       { 'Antarctica/Davis', '<+07>-7' },
+       { 'Antarctica/DumontDUrville', '<+10>-10' },
+       { 'Antarctica/Macquarie', '<+11>-11' },
+       { 'Antarctica/Mawson', '<+05>-5' },
+       { 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
+       { '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', '<+03>-3' },
+       { 'Asia/Almaty', '<+06>-6' },
+       { 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' },
+       { 'Asia/Anadyr', '<+12>-12' },
+       { 'Asia/Aqtau', '<+05>-5' },
+       { 'Asia/Aqtobe', '<+05>-5' },
+       { 'Asia/Ashgabat', '<+05>-5' },
+       { 'Asia/Atyrau', '<+05>-5' },
+       { 'Asia/Baghdad', '<+03>-3' },
+       { 'Asia/Bahrain', '<+03>-3' },
+       { 'Asia/Baku', '<+04>-4' },
+       { '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', '<+08>-8' },
+       { 'Asia/Chita', '<+09>-9' },
+       { 'Asia/Choibalsan', '<+08>-8' },
+       { 'Asia/Colombo', '<+0530>-5:30' },
+       { 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' },
+       { 'Asia/Dhaka', '<+06>-6' },
+       { 'Asia/Dili', '<+09>-9' },
+       { 'Asia/Dubai', '<+04>-4' },
+       { 'Asia/Dushanbe', '<+05>-5' },
+       { 'Asia/Famagusta', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Asia/Gaza', 'EET-2EEST,M3.5.5/0,M10.5.6/1' },
+       { 'Asia/Hebron', 'EET-2EEST,M3.5.5/0,M10.5.6/1' },
+       { 'Asia/Ho Chi Minh', '<+07>-7' },
+       { 'Asia/Hong Kong', 'HKT-8' },
+       { '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', '<+0430>-4:30' },
+       { 'Asia/Kamchatka', '<+12>-12' },
+       { 'Asia/Karachi', 'PKT-5' },
+       { 'Asia/Kathmandu', '<+0545>-5:45' },
+       { 'Asia/Khandyga', '<+09>-9' },
+       { 'Asia/Kolkata', 'IST-5:30' },
+       { 'Asia/Krasnoyarsk', '<+07>-7' },
+       { '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', 'PST-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', '<+07>-7' },
+       { 'Asia/Pontianak', 'WIB-7' },
+       { 'Asia/Pyongyang', 'KST-9' },
+       { 'Asia/Qatar', '<+03>-3' },
+       { 'Asia/Qostanay', '<+06>-6' },
+       { 'Asia/Qyzylorda', '<+05>-5' },
+       { 'Asia/Riyadh', '<+03>-3' },
+       { 'Asia/Sakhalin', '<+11>-11' },
+       { 'Asia/Samarkand', '<+05>-5' },
+       { 'Asia/Seoul', 'KST-9' },
+       { 'Asia/Shanghai', 'CST-8' },
+       { 'Asia/Singapore', '<+08>-8' },
+       { 'Asia/Srednekolymsk', '<+11>-11' },
+       { 'Asia/Taipei', 'CST-8' },
+       { 'Asia/Tashkent', '<+05>-5' },
+       { 'Asia/Tbilisi', '<+04>-4' },
+       { 'Asia/Tehran', '<+0330>-3:30<+0430>,J79/24,J263/24' },
+       { 'Asia/Thimphu', '<+06>-6' },
+       { 'Asia/Tokyo', 'JST-9' },
+       { 'Asia/Tomsk', '<+07>-7' },
+       { 'Asia/Ulaanbaatar', '<+08>-8' },
+       { 'Asia/Urumqi', '<+06>-6' },
+       { 'Asia/Ust-Nera', '<+10>-10' },
+       { 'Asia/Vientiane', '<+07>-7' },
+       { 'Asia/Vladivostok', '<+10>-10' },
+       { 'Asia/Yakutsk', '<+09>-9' },
+       { 'Asia/Yangon', '<+0630>-6:30' },
+       { 'Asia/Yekaterinburg', '<+05>-5' },
+       { 'Asia/Yerevan', '<+04>-4' },
+       { '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', '<-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', '<-02>2' },
+       { 'Atlantic/St Helena', 'GMT0' },
+       { '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', '<+0845>-8:45' },
+       { 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
+       { 'Australia/Lindeman', 'AEST-10' },
+       { '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' },
+       { 'Europe/Athens', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Belgrade', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Berlin', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Bratislava', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Brussels', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Bucharest', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Budapest', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Dublin', 'IST-1GMT0,M10.5.0,M3.5.0/1' },
+       { 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Guernsey', 'GMT0BST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Helsinki', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Isle of Man', 'GMT0BST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Istanbul', '<+03>-3' },
+       { 'Europe/Jersey', 'GMT0BST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Kaliningrad', 'EET-2' },
+       { 'Europe/Kiev', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Kirov', '<+03>-3' },
+       { 'Europe/Lisbon', 'WET0WEST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Ljubljana', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/London', 'GMT0BST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Luxembourg', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Madrid', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Malta', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Mariehamn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Minsk', '<+03>-3' },
+       { 'Europe/Monaco', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Moscow', 'MSK-3' },
+       { 'Europe/Oslo', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Paris', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Podgorica', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Prague', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Riga', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Rome', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Samara', '<+04>-4' },
+       { 'Europe/San Marino', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Sarajevo', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Saratov', '<+04>-4' },
+       { 'Europe/Simferopol', 'MSK-3' },
+       { 'Europe/Skopje', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Sofia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Stockholm', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Tallinn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Tirane', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Ulyanovsk', '<+04>-4' },
+       { 'Europe/Uzhgorod', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Vaduz', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Vatican', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Vienna', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Vilnius', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Volgograd', '<+04>-4' },
+       { 'Europe/Warsaw', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Zagreb', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' },
+       { 'Indian/Antananarivo', 'EAT-3' },
+       { 'Indian/Chagos', '<+06>-6' },
+       { 'Indian/Christmas', '<+07>-7' },
+       { 'Indian/Cocos', '<+0630>-6:30' },
+       { 'Indian/Comoro', 'EAT-3' },
+       { 'Indian/Kerguelen', '<+05>-5' },
+       { 'Indian/Mahe', '<+04>-4' },
+       { 'Indian/Maldives', '<+05>-5' },
+       { 'Indian/Mauritius', '<+04>-4' },
+       { 'Indian/Mayotte', 'EAT-3' },
+       { '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', '<+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>,M9.1.6/22,M4.1.6/22' },
+       { 'Pacific/Efate', '<+11>-11' },
+       { 'Pacific/Enderbury', '<+13>-13' },
+       { 'Pacific/Fakaofo', '<+13>-13' },
+       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.2/123' },
+       { 'Pacific/Funafuti', '<+12>-12' },
+       { 'Pacific/Galapagos', '<-06>6' },
+       { 'Pacific/Gambier', '<-09>9' },
+       { 'Pacific/Guadalcanal', '<+11>-11' },
+       { 'Pacific/Guam', 'ChST-10' },
+       { 'Pacific/Honolulu', 'HST10' },
+       { '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', '<+12>-12' },
+       { 'Pacific/Niue', '<-11>11' },
+       { 'Pacific/Norfolk', '<+11>-11' },
+       { 'Pacific/Noumea', '<+11>-11' },
+       { 'Pacific/Pago Pago', 'SST11' },
+       { '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', '<-10>10' },
+       { 'Pacific/Tarawa', '<+12>-12' },
+       { 'Pacific/Tongatapu', '<+13>-13' },
+       { 'Pacific/Wake', '<+12>-12' },
+       { 'Pacific/Wallis', '<+12>-12' },
+}
diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
new file mode 100644 (file)
index 0000000..e63e2a6
--- /dev/null
@@ -0,0 +1,45 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module "luci.sys.zoneinfo.tzoffset"
+
+OFFSET = {
+       gmt   =      0, -- GMT
+       eat   =  10800, -- EAT
+       cet   =   3600, -- CET
+       wat   =   3600, -- WAT
+       cat   =   7200, -- CAT
+       eet   =   7200, -- EET
+       sast  =   7200, -- SAST
+       hst   = -36000, -- HST
+       hdt   = -32400, -- HDT
+       akst  = -32400, -- AKST
+       akdt  = -28800, -- AKDT
+       ast   = -14400, -- AST
+       est   = -18000, -- EST
+       cst   = -21600, -- CST
+       cdt   = -18000, -- CDT
+       mst   = -25200, -- MST
+       mdt   = -21600, -- MDT
+       pst   = -28800, -- PST
+       pdt   = -25200, -- PDT
+       nst   = -12600, -- NST
+       ndt   =  -9000, -- NDT
+       nzst  =  43200, -- NZST
+       nzdt  =  46800, -- NZDT
+       hkt   =  28800, -- HKT
+       wib   =  25200, -- WIB
+       wit   =  32400, -- WIT
+       ist   =   7200, -- IST
+       idt   =  10800, -- IDT
+       pkt   =  18000, -- PKT
+       wita  =  28800, -- WITA
+       kst   =  32400, -- KST
+       jst   =  32400, -- JST
+       wet   =      0, -- WET
+       acst  =  34200, -- ACST
+       acdt  =  37800, -- ACDT
+       aest  =  36000, -- AEST
+       awst  =  28800, -- AWST
+       msk   =  10800, -- MSK
+       sst   = -39600, -- SST
+}
diff --git a/package/luci/modules/luci-base/luasrc/template.lua b/package/luci/modules/luci-base/luasrc/template.lua
new file mode 100644 (file)
index 0000000..ed46f50
--- /dev/null
@@ -0,0 +1,100 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local util = require "luci.util"
+local config = require "luci.config"
+local tparser = require "luci.template.parser"
+
+local tostring, pairs, loadstring = tostring, pairs, loadstring
+local setmetatable, loadfile = setmetatable, loadfile
+local getfenv, setfenv, rawget = getfenv, setfenv, rawget
+local assert, type, error = assert, type, error
+
+--- LuCI template library.
+module "luci.template"
+
+config.template = config.template or {}
+viewdir = config.template.viewdir or util.libpath() .. "/view"
+
+
+-- Define the namespace for template modules
+context = util.threadlocal()
+
+--- Render a certain template.
+-- @param name         Template name
+-- @param scope                Scope to assign to template (optional)
+function render(name, scope)
+       return Template(name):render(scope or getfenv(2))
+end
+
+--- Render a template from a string.
+-- @param template     Template string
+-- @param scope                Scope to assign to template (optional)
+function render_string(template, scope)
+       return Template(nil, template):render(scope or getfenv(2))
+end
+
+
+-- Template class
+Template = util.class()
+
+-- Shared template cache to store templates in to avoid unnecessary reloading
+Template.cache = setmetatable({}, {__mode = "v"})
+
+
+-- Constructor - Reads and compiles the template on-demand
+function Template.__init__(self, name, template)
+       if name then
+               self.template = self.cache[name]
+               self.name = name
+       else
+               self.name = "[string]"
+       end
+
+       -- Create a new namespace for this template
+       self.viewns = context.viewns
+       
+       -- If we have a cached template, skip compiling and loading
+       if not self.template then
+
+               -- Compile template
+               local err
+               local sourcefile
+
+               if name then
+                       sourcefile = viewdir .. "/" .. name .. ".htm"
+                       self.template, _, err = tparser.parse(sourcefile)
+               else
+                       sourcefile = "[string]"
+                       self.template, _, err = tparser.parse_string(template)
+               end
+
+               -- If we have no valid template throw error, otherwise cache the template
+               if not self.template then
+                       error("Failed to load template '" .. name .. "'.\n" ..
+                             "Error while parsing template '" .. sourcefile .. "':\n" ..
+                             (err or "Unknown syntax error"))
+               elseif name then
+                       self.cache[name] = self.template
+               end
+       end
+end
+
+
+-- Renders a template
+function Template.render(self, scope)
+       scope = scope or getfenv(2)
+       
+       -- Put our predefined objects in the scope of the template
+       setfenv(self.template, setmetatable({}, {__index =
+               function(tbl, key)
+                       return rawget(tbl, key) or self.viewns[key] or scope[key]
+               end}))
+       
+       -- Now finally render the thing
+       local stat, err = util.copcall(self.template)
+       if not stat then
+               error("Failed to execute template '" .. self.name .. "'.\n" ..
+                     "A runtime error occurred: " .. tostring(err or "(nil)"))
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/tools/proto.lua b/package/luci/modules/luci-base/luasrc/tools/proto.lua
new file mode 100644 (file)
index 0000000..147688d
--- /dev/null
@@ -0,0 +1,36 @@
+-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.tools.proto", package.seeall)
+
+function opt_macaddr(s, ifc, ...)
+       local v = luci.cbi.Value
+       local o = s:taboption("advanced", v, "macaddr", ...)
+
+       o.placeholder = ifc and ifc:mac()
+       o.datatype    = "macaddr"
+
+       function o.cfgvalue(self, section)
+               local w = ifc and ifc:get_wifinet()
+               if w then
+                       return w:get("macaddr")
+               else
+                       return v.cfgvalue(self, section)
+               end
+       end
+
+       function o.write(self, section, value)
+               local w = ifc and ifc:get_wifinet()
+               if w then
+                       w:set("macaddr", value)
+               elseif value then
+                       v.write(self, section, value)
+               else
+                       v.remove(self, section)
+               end
+       end
+
+       function o.remove(self, section)
+               self:write(section, nil)
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/tools/status.lua b/package/luci/modules/luci-base/luasrc/tools/status.lua
new file mode 100644 (file)
index 0000000..e4bc445
--- /dev/null
@@ -0,0 +1,290 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.tools.status", package.seeall)
+
+local uci = require "luci.model.uci".cursor()
+local ipc = require "luci.ip"
+
+local function dhcp_leases_common(family)
+       local rv = { }
+       local nfs = require "nixio.fs"
+       local sys = require "luci.sys"
+       local leasefile = "/tmp/dhcp.leases"
+
+       uci:foreach("dhcp", "dnsmasq",
+               function(s)
+                       if s.leasefile and nfs.access(s.leasefile) then
+                               leasefile = s.leasefile
+                               return false
+                       end
+               end)
+
+       local fd = io.open(leasefile, "r")
+       if fd then
+               while true do
+                       local ln = fd:read("*l")
+                       if not ln then
+                               break
+                       else
+                               local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)")
+                               local expire = tonumber(ts) or 0
+                               if ts and mac and ip and name and duid then
+                                       if family == 4 and not ip:match(":") then
+                                               rv[#rv+1] = {
+                                                       expires  = (expire ~= 0) and os.difftime(expire, os.time()),
+                                                       macaddr  = ipc.checkmac(mac) or "00:00:00:00:00:00",
+                                                       ipaddr   = ip,
+                                                       hostname = (name ~= "*") and name
+                                               }
+                                       elseif family == 6 and ip:match(":") then
+                                               rv[#rv+1] = {
+                                                       expires  = (expire ~= 0) and os.difftime(expire, os.time()),
+                                                       ip6addr  = ip,
+                                                       duid     = (duid ~= "*") and duid,
+                                                       hostname = (name ~= "*") and name
+                                               }
+                                       end
+                               end
+                       end
+               end
+               fd:close()
+       end
+
+       local lease6file = "/tmp/hosts/odhcpd"
+       uci:foreach("dhcp", "odhcpd",
+               function(t)
+                       if t.leasefile and nfs.access(t.leasefile) then
+                               lease6file = t.leasefile
+                               return false
+                       end
+               end)
+       local fd = io.open(lease6file, "r")
+       if fd then
+               while true do
+                       local ln = fd:read("*l")
+                       if not ln then
+                               break
+                       else
+                               local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (-?%d+) (%S+) (%S+) (.*)")
+                               local expire = tonumber(ts) or 0
+                               if ip and iaid ~= "ipv4" and family == 6 then
+                                       rv[#rv+1] = {
+                                               expires  = (expire >= 0) and os.difftime(expire, os.time()),
+                                               duid     = duid,
+                                               ip6addr  = ip,
+                                               hostname = (name ~= "-") and name
+                                       }
+                               elseif ip and iaid == "ipv4" and family == 4 then
+                                       rv[#rv+1] = {
+                                               expires  = (expire >= 0) and os.difftime(expire, os.time()),
+                                               macaddr  = sys.net.duid_to_mac(duid) or "00:00:00:00:00:00",
+                                               ipaddr   = ip,
+                                               hostname = (name ~= "-") and name
+                                       }
+                               end
+                       end
+               end
+               fd:close()
+       end
+
+       if family == 6 then
+               local _, lease
+               local hosts = sys.net.host_hints()
+               for _, lease in ipairs(rv) do
+                       local mac = sys.net.duid_to_mac(lease.duid)
+                       local host = mac and hosts[mac]
+                       if host then
+                               if not lease.name then
+                                       lease.host_hint = host.name or host.ipv4 or host.ipv6
+                               elseif host.name and lease.hostname ~= host.name then
+                                       lease.host_hint = host.name
+                               end
+                       end
+               end
+       end
+
+       return rv
+end
+
+function dhcp_leases()
+       return dhcp_leases_common(4)
+end
+
+function dhcp6_leases()
+       return dhcp_leases_common(6)
+end
+
+function wifi_networks()
+       local rv = { }
+       local ntm = require "luci.model.network".init()
+
+       local dev
+       for _, dev in ipairs(ntm:get_wifidevs()) do
+               local rd = {
+                       up       = dev:is_up(),
+                       device   = dev:name(),
+                       name     = dev:get_i18n(),
+                       networks = { }
+               }
+
+               local net
+               for _, net in ipairs(dev:get_wifinets()) do
+                       local a, an = nil, 0
+                       for _, a in pairs(net:assoclist() or {}) do
+                               an = an + 1
+                       end
+
+                       rd.networks[#rd.networks+1] = {
+                               name       = net:shortname(),
+                               link       = net:adminlink(),
+                               up         = net:is_up(),
+                               mode       = net:active_mode(),
+                               ssid       = net:active_ssid(),
+                               bssid      = net:active_bssid(),
+                               encryption = net:active_encryption(),
+                               frequency  = net:frequency(),
+                               channel    = net:channel(),
+                               signal     = net:signal(),
+                               quality    = net:signal_percent(),
+                               noise      = net:noise(),
+                               bitrate    = net:bitrate(),
+                               ifname     = net:ifname(),
+                               country    = net:country(),
+                               txpower    = net:txpower(),
+                               txpoweroff = net:txpower_offset(),
+                               num_assoc  = an,
+                               disabled   = (dev:get("disabled") == "1" or
+                                            net:get("disabled") == "1")
+                       }
+               end
+
+               rv[#rv+1] = rd
+       end
+
+       return rv
+end
+
+function wifi_network(id)
+       local ntm = require "luci.model.network".init()
+       local net = ntm:get_wifinet(id)
+       if net then
+               local dev = net:get_device()
+               if dev then
+                       return {
+                               id         = id,
+                               name       = net:shortname(),
+                               link       = net:adminlink(),
+                               up         = net:is_up(),
+                               mode       = net:active_mode(),
+                               ssid       = net:active_ssid(),
+                               bssid      = net:active_bssid(),
+                               encryption = net:active_encryption(),
+                               frequency  = net:frequency(),
+                               channel    = net:channel(),
+                               signal     = net:signal(),
+                               quality    = net:signal_percent(),
+                               noise      = net:noise(),
+                               bitrate    = net:bitrate(),
+                               ifname     = net:ifname(),
+                               country    = net:country(),
+                               txpower    = net:txpower(),
+                               txpoweroff = net:txpower_offset(),
+                               disabled   = (dev:get("disabled") == "1" or
+                                             net:get("disabled") == "1"),
+                               device     = {
+                                       up     = dev:is_up(),
+                                       device = dev:name(),
+                                       name   = dev:get_i18n()
+                               }
+                       }
+               end
+       end
+       return { }
+end
+
+function wifi_assoclist()
+       local sys = require "luci.sys"
+       local ntm = require "luci.model.network".init()
+       local hosts = sys.net.host_hints()
+
+       local assoc = {}
+       local _, dev, net, bss
+
+       for _, dev in ipairs(ntm:get_wifidevs()) do
+               local radioname = dev:get_i18n()
+
+               for _, net in ipairs(dev:get_wifinets()) do
+                       local netname = net:shortname()
+                       local netlink = net:adminlink()
+                       local ifname  = net:ifname()
+
+                       for _, bss in pairs(net:assoclist() or {}) do
+                               local host = hosts[_]
+
+                               bss.bssid  = _
+                               bss.ifname = ifname
+                               bss.radio  = radioname
+                               bss.name   = netname
+                               bss.link   = netlink
+
+                               bss.host_name = (host) and (host.name or host.ipv4 or host.ipv6)
+                               bss.host_hint = (host and host.name and (host.ipv4 or host.ipv6)) and (host.ipv4 or host.ipv6)
+
+                               assoc[#assoc+1] = bss
+                       end
+               end
+       end
+
+       table.sort(assoc, function(a, b)
+               if a.radio ~= b.radio then
+                       return a.radio < b.radio
+               elseif a.ifname ~= b.ifname then
+                       return a.ifname < b.ifname
+               else
+                       return a.bssid < b.bssid
+               end
+       end)
+
+       return assoc
+end
+
+function switch_status(devs)
+       local dev
+       local switches = { }
+       for dev in devs:gmatch("[^%s,]+") do
+               local ports = { }
+               local swc = io.popen("swconfig dev %s show"
+                       % luci.util.shellquote(dev), "r")
+
+               if swc then
+                       local l
+                       repeat
+                               l = swc:read("*l")
+                               if l then
+                                       local port, up = l:match("port:(%d+) link:(%w+)")
+                                       if port then
+                                               local speed  = l:match(" speed:(%d+)")
+                                               local duplex = l:match(" (%w+)-duplex")
+                                               local txflow = l:match(" (txflow)")
+                                               local rxflow = l:match(" (rxflow)")
+                                               local auto   = l:match(" (auto)")
+
+                                               ports[#ports+1] = {
+                                                       port   = tonumber(port) or 0,
+                                                       speed  = tonumber(speed) or 0,
+                                                       link   = (up == "up"),
+                                                       duplex = (duplex == "full"),
+                                                       rxflow = (not not rxflow),
+                                                       txflow = (not not txflow),
+                                                       auto   = (not not auto)
+                                               }
+                                       end
+                               end
+                       until not l
+                       swc:close()
+               end
+               switches[dev] = ports
+       end
+       return switches
+end
diff --git a/package/luci/modules/luci-base/luasrc/tools/webadmin.lua b/package/luci/modules/luci-base/luasrc/tools/webadmin.lua
new file mode 100644 (file)
index 0000000..106810a
--- /dev/null
@@ -0,0 +1,105 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.tools.webadmin", package.seeall)
+
+local util = require "luci.util"
+local uci  = require "luci.model.uci"
+local ip   = require "luci.ip"
+
+function byte_format(byte)
+       local suff = {"B", "KB", "MB", "GB", "TB"}
+       for i=1, 5 do
+               if byte > 1024 and i < 5 then
+                       byte = byte / 1024
+               else
+                       return string.format("%.2f %s", byte, suff[i]) 
+               end 
+       end
+end
+
+function date_format(secs)
+       local suff = {"min", "h", "d"}
+       local mins = 0
+       local hour = 0
+       local days = 0
+       
+       secs = math.floor(secs)
+       if secs > 60 then
+               mins = math.floor(secs / 60)
+               secs = secs % 60
+       end
+       
+       if mins > 60 then
+               hour = math.floor(mins / 60)
+               mins = mins % 60
+       end
+       
+       if hour > 24 then
+               days = math.floor(hour / 24)
+               hour = hour % 24
+       end
+       
+       if days > 0 then
+               return string.format("%.0fd %02.0fh %02.0fmin %02.0fs", days, hour, mins, secs)
+       else
+               return string.format("%02.0fh %02.0fmin %02.0fs", hour, mins, secs)
+       end
+end
+
+function cbi_add_networks(field)
+       uci.cursor():foreach("network", "interface",
+               function (section)
+                       if section[".name"] ~= "loopback" then
+                               field:value(section[".name"])
+                       end
+               end
+       )
+       field.titleref = luci.dispatcher.build_url("admin", "network", "network")
+end
+
+function cbi_add_knownips(field)
+       local _, n
+       for _, n in ipairs(ip.neighbors({ family = 4 })) do
+               if n.dest then
+                       field:value(n.dest:string())
+               end
+       end
+end
+
+function firewall_find_zone(name)
+       local find
+       
+       luci.model.uci.cursor():foreach("firewall", "zone", 
+               function (section)
+                       if section.name == name then
+                               find = section[".name"]
+                       end
+               end
+       )
+       
+       return find
+end
+
+function iface_get_network(iface)
+       local link = ip.link(tostring(iface))
+       if link.master then
+               iface = link.master
+       end
+
+       local cur = uci.cursor()
+       local dump = util.ubus("network.interface", "dump", { })
+       if dump then
+               local _, net
+               for _, net in ipairs(dump.interface) do
+                       if net.l3_device == iface or net.device == iface then
+                               -- cross check with uci to filter out @name style aliases
+                               local uciname = cur:get("network", net.interface, "ifname")
+                               if type(uciname) == "string" and uciname:sub(1,1) ~= "@" or uciname then
+                                       return net.interface
+                               end
+                       end
+               end
+       end
+end
diff --git a/package/luci/modules/luci-base/luasrc/util.lua b/package/luci/modules/luci-base/luasrc/util.lua
new file mode 100644 (file)
index 0000000..1a329f3
--- /dev/null
@@ -0,0 +1,777 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local io = require "io"
+local math = require "math"
+local table = require "table"
+local debug = require "debug"
+local ldebug = require "luci.debug"
+local string = require "string"
+local coroutine = require "coroutine"
+local tparser = require "luci.template.parser"
+local json = require "luci.jsonc"
+local lhttp = require "lucihttp"
+
+local _ubus = require "ubus"
+local _ubus_connection = nil
+
+local getmetatable, setmetatable = getmetatable, setmetatable
+local rawget, rawset, unpack, select = rawget, rawset, unpack, select
+local tostring, type, assert, error = tostring, type, assert, error
+local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring
+local require, pcall, xpcall = require, pcall, xpcall
+local collectgarbage, get_memory_limit = collectgarbage, get_memory_limit
+
+module "luci.util"
+
+--
+-- Pythonic string formatting extension
+--
+getmetatable("").__mod = function(a, b)
+       local ok, res
+
+       if not b then
+               return a
+       elseif type(b) == "table" then
+               local k, _
+               for k, _ in pairs(b) do if type(b[k]) == "userdata" then b[k] = tostring(b[k]) end end
+
+               ok, res = pcall(a.format, a, unpack(b))
+               if not ok then
+                       error(res, 2)
+               end
+               return res
+       else
+               if type(b) == "userdata" then b = tostring(b) end
+
+               ok, res = pcall(a.format, a, b)
+               if not ok then
+                       error(res, 2)
+               end
+               return res
+       end
+end
+
+
+--
+-- Class helper routines
+--
+
+-- Instantiates a class
+local function _instantiate(class, ...)
+       local inst = setmetatable({}, {__index = class})
+
+       if inst.__init__ then
+               inst:__init__(...)
+       end
+
+       return inst
+end
+
+-- The class object can be instantiated by calling itself.
+-- Any class functions or shared parameters can be attached to this object.
+-- Attaching a table to the class object makes this table shared between
+-- all instances of this class. For object parameters use the __init__ function.
+-- Classes can inherit member functions and values from a base class.
+-- Class can be instantiated by calling them. All parameters will be passed
+-- to the __init__ function of this class - if such a function exists.
+-- The __init__ function must be used to set any object parameters that are not shared
+-- with other objects of this class. Any return values will be ignored.
+function class(base)
+       return setmetatable({}, {
+               __call  = _instantiate,
+               __index = base
+       })
+end
+
+function instanceof(object, class)
+       local meta = getmetatable(object)
+       while meta and meta.__index do
+               if meta.__index == class then
+                       return true
+               end
+               meta = getmetatable(meta.__index)
+       end
+       return false
+end
+
+
+--
+-- Scope manipulation routines
+--
+
+coxpt = setmetatable({}, { __mode = "kv" })
+
+local tl_meta = {
+       __mode = "k",
+
+       __index = function(self, key)
+               local t = rawget(self, coxpt[coroutine.running()]
+                or coroutine.running() or 0)
+               return t and t[key]
+       end,
+
+       __newindex = function(self, key, value)
+               local c = coxpt[coroutine.running()] or coroutine.running() or 0
+               local r = rawget(self, c)
+               if not r then
+                       rawset(self, c, { [key] = value })
+               else
+                       r[key] = value
+               end
+       end
+}
+
+-- the current active coroutine. A thread local store is private a table object
+-- whose values can't be accessed from outside of the running coroutine.
+function threadlocal(tbl)
+       return setmetatable(tbl or {}, tl_meta)
+end
+
+
+--
+-- Debugging routines
+--
+
+function perror(obj)
+       return io.stderr:write(tostring(obj) .. "\n")
+end
+
+function dumptable(t, maxdepth, i, seen)
+       i = i or 0
+       seen = seen or setmetatable({}, {__mode="k"})
+
+       for k,v in pairs(t) do
+               perror(string.rep("\t", i) .. tostring(k) .. "\t" .. tostring(v))
+               if type(v) == "table" and (not maxdepth or i < maxdepth) then
+                       if not seen[v] then
+                               seen[v] = true
+                               dumptable(v, maxdepth, i+1, seen)
+                       else
+                               perror(string.rep("\t", i) .. "*** RECURSION ***")
+                       end
+               end
+       end
+end
+
+
+--
+-- String and data manipulation routines
+--
+
+function pcdata(value)
+       return value and tparser.pcdata(tostring(value))
+end
+
+function urlencode(value)
+       if value ~= nil then
+               local str = tostring(value)
+               return lhttp.urlencode(str, lhttp.ENCODE_IF_NEEDED + lhttp.ENCODE_FULL)
+                       or str
+       end
+       return nil
+end
+
+function urldecode(value, decode_plus)
+       if value ~= nil then
+               local flag = decode_plus and lhttp.DECODE_PLUS or 0
+               local str = tostring(value)
+               return lhttp.urldecode(str, lhttp.DECODE_IF_NEEDED + flag)
+                       or str
+       end
+       return nil
+end
+
+function striptags(value)
+       return value and tparser.striptags(tostring(value))
+end
+
+function shellquote(value)
+       return string.format("'%s'", string.gsub(value or "", "'", "'\\''"))
+end
+
+-- for bash, ash and similar shells single-quoted strings are taken
+-- literally except for single quotes (which terminate the string)
+-- (and the exception noted below for dash (-) at the start of a
+-- command line parameter).
+function shellsqescape(value)
+   local res
+   res, _ = string.gsub(value, "'", "'\\''")
+   return res
+end
+
+-- bash, ash and other similar shells interpret a dash (-) at the start
+-- of a command-line parameters as an option indicator regardless of
+-- whether it is inside a single-quoted string.  It must be backlash
+-- escaped to resolve this.  This requires in some funky special-case
+-- handling.  It may actually be a property of the getopt function
+-- rather than the shell proper.
+function shellstartsqescape(value)
+   res, _ = string.gsub(value, "^\-", "\\-")
+   res, _ = string.gsub(res, "^-", "\-")
+   return shellsqescape(value)
+end
+
+-- containing the resulting substrings. The optional max parameter specifies
+-- the number of bytes to process, regardless of the actual length of the given
+-- string. The optional last parameter, regex, specifies whether the separator
+-- sequence is interpreted as regular expression.
+--                                     pattern as regular expression (optional, default is false)
+function split(str, pat, max, regex)
+       pat = pat or "\n"
+       max = max or #str
+
+       local t = {}
+       local c = 1
+
+       if #str == 0 then
+               return {""}
+       end
+
+       if #pat == 0 then
+               return nil
+       end
+
+       if max == 0 then
+               return str
+       end
+
+       repeat
+               local s, e = str:find(pat, c, not regex)
+               max = max - 1
+               if s and max < 0 then
+                       t[#t+1] = str:sub(c)
+               else
+                       t[#t+1] = str:sub(c, s and s - 1)
+               end
+               c = e and e + 1 or #str + 1
+       until not s or max < 0
+
+       return t
+end
+
+function trim(str)
+       return (str:gsub("^%s*(.-)%s*$", "%1"))
+end
+
+function cmatch(str, pat)
+       local count = 0
+       for _ in str:gmatch(pat) do count = count + 1 end
+       return count
+end
+
+-- one token per invocation, the tokens are separated by whitespace. If the
+-- input value is a table, it is transformed into a string first. A nil value
+-- will result in a valid iterator which aborts with the first invocation.
+function imatch(v)
+       if type(v) == "table" then
+               local k = nil
+               return function()
+                       k = next(v, k)
+                       return v[k]
+               end
+
+       elseif type(v) == "number" or type(v) == "boolean" then
+               local x = true
+               return function()
+                       if x then
+                               x = false
+                               return tostring(v)
+                       end
+               end
+
+       elseif type(v) == "userdata" or type(v) == "string" then
+               return tostring(v):gmatch("%S+")
+       end
+
+       return function() end
+end
+
+-- value or 0 if the unit is unknown. Upper- or lower case is irrelevant.
+-- Recognized units are:
+--     o "y"   - one year   (60*60*24*366)
+--  o "m"      - one month  (60*60*24*31)
+--  o "w"      - one week   (60*60*24*7)
+--  o "d"      - one day    (60*60*24)
+--  o "h"      - one hour       (60*60)
+--  o "min"    - one minute (60)
+--  o "kb"  - one kilobyte (1024)
+--  o "mb"     - one megabyte (1024*1024)
+--  o "gb"     - one gigabyte (1024*1024*1024)
+--  o "kib" - one si kilobyte (1000)
+--  o "mib"    - one si megabyte (1000*1000)
+--  o "gib"    - one si gigabyte (1000*1000*1000)
+function parse_units(ustr)
+
+       local val = 0
+
+       -- unit map
+       local map = {
+               -- date stuff
+               y   = 60 * 60 * 24 * 366,
+               m   = 60 * 60 * 24 * 31,
+               w   = 60 * 60 * 24 * 7,
+               d   = 60 * 60 * 24,
+               h   = 60 * 60,
+               min = 60,
+
+               -- storage sizes
+               kb  = 1024,
+               mb  = 1024 * 1024,
+               gb  = 1024 * 1024 * 1024,
+
+               -- storage sizes (si)
+               kib = 1000,
+               mib = 1000 * 1000,
+               gib = 1000 * 1000 * 1000
+       }
+
+       -- parse input string
+       for spec in ustr:lower():gmatch("[0-9%.]+[a-zA-Z]*") do
+
+               local num = spec:gsub("[^0-9%.]+$","")
+               local spn = spec:gsub("^[0-9%.]+", "")
+
+               if map[spn] or map[spn:sub(1,1)] then
+                       val = val + num * ( map[spn] or map[spn:sub(1,1)] )
+               else
+                       val = val + num
+               end
+       end
+
+
+       return val
+end
+
+-- also register functions above in the central string class for convenience
+string.pcdata      = pcdata
+string.striptags   = striptags
+string.split       = split
+string.trim        = trim
+string.cmatch      = cmatch
+string.parse_units = parse_units
+
+
+function append(src, ...)
+       for i, a in ipairs({...}) do
+               if type(a) == "table" then
+                       for j, v in ipairs(a) do
+                               src[#src+1] = v
+                       end
+               else
+                       src[#src+1] = a
+               end
+       end
+       return src
+end
+
+function combine(...)
+       return append({}, ...)
+end
+
+function contains(table, value)
+       for k, v in pairs(table) do
+               if value == v then
+                       return k
+               end
+       end
+       return false
+end
+
+-- Both table are - in fact - merged together.
+function update(t, updates)
+       for k, v in pairs(updates) do
+               t[k] = v
+       end
+end
+
+function keys(t)
+       local keys = { }
+       if t then
+               for k, _ in kspairs(t) do
+                       keys[#keys+1] = k
+               end
+       end
+       return keys
+end
+
+function clone(object, deep)
+       local copy = {}
+
+       for k, v in pairs(object) do
+               if deep and type(v) == "table" then
+                       v = clone(v, deep)
+               end
+               copy[k] = v
+       end
+
+       return setmetatable(copy, getmetatable(object))
+end
+
+
+-- Serialize the contents of a table value.
+function _serialize_table(t, seen)
+       assert(not seen[t], "Recursion detected.")
+       seen[t] = true
+
+       local data  = ""
+       local idata = ""
+       local ilen  = 0
+
+       for k, v in pairs(t) do
+               if type(k) ~= "number" or k < 1 or math.floor(k) ~= k or ( k - #t ) > 3 then
+                       k = serialize_data(k, seen)
+                       v = serialize_data(v, seen)
+                       data = data .. ( #data > 0 and ", " or "" ) ..
+                               '[' .. k .. '] = ' .. v
+               elseif k > ilen then
+                       ilen = k
+               end
+       end
+
+       for i = 1, ilen do
+               local v = serialize_data(t[i], seen)
+               idata = idata .. ( #idata > 0 and ", " or "" ) .. v
+       end
+
+       return idata .. ( #data > 0 and #idata > 0 and ", " or "" ) .. data
+end
+
+-- with loadstring().
+function serialize_data(val, seen)
+       seen = seen or setmetatable({}, {__mode="k"})
+
+       if val == nil then
+               return "nil"
+       elseif type(val) == "number" then
+               return val
+       elseif type(val) == "string" then
+               return "%q" % val
+       elseif type(val) == "boolean" then
+               return val and "true" or "false"
+       elseif type(val) == "function" then
+               return "loadstring(%q)" % get_bytecode(val)
+       elseif type(val) == "table" then
+               return "{ " .. _serialize_table(val, seen) .. " }"
+       else
+               return '"[unhandled data type:' .. type(val) .. ']"'
+       end
+end
+
+function restore_data(str)
+       return loadstring("return " .. str)()
+end
+
+
+--
+-- Byte code manipulation routines
+--
+
+-- will be stripped before it is returned.
+function get_bytecode(val)
+       local code
+
+       if type(val) == "function" then
+               code = string.dump(val)
+       else
+               code = string.dump( loadstring( "return " .. serialize_data(val) ) )
+       end
+
+       return code -- and strip_bytecode(code)
+end
+
+-- numbers and debugging numbers will be discarded. Original version by
+-- Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html)
+function strip_bytecode(code)
+       local version, format, endian, int, size, ins, num, lnum = code:byte(5, 12)
+       local subint
+       if endian == 1 then
+               subint = function(code, i, l)
+                       local val = 0
+                       for n = l, 1, -1 do
+                               val = val * 256 + code:byte(i + n - 1)
+                       end
+                       return val, i + l
+               end
+       else
+               subint = function(code, i, l)
+                       local val = 0
+                       for n = 1, l, 1 do
+                               val = val * 256 + code:byte(i + n - 1)
+                       end
+                       return val, i + l
+               end
+       end
+
+       local function strip_function(code)
+               local count, offset = subint(code, 1, size)
+               local stripped = { string.rep("\0", size) }
+               local dirty = offset + count
+               offset = offset + count + int * 2 + 4
+               offset = offset + int + subint(code, offset, int) * ins
+               count, offset = subint(code, offset, int)
+               for n = 1, count do
+                       local t
+                       t, offset = subint(code, offset, 1)
+                       if t == 1 then
+                               offset = offset + 1
+                       elseif t == 4 then
+                               offset = offset + size + subint(code, offset, size)
+                       elseif t == 3 then
+                               offset = offset + num
+                       elseif t == 254 or t == 9 then
+                               offset = offset + lnum
+                       end
+               end
+               count, offset = subint(code, offset, int)
+               stripped[#stripped+1] = code:sub(dirty, offset - 1)
+               for n = 1, count do
+                       local proto, off = strip_function(code:sub(offset, -1))
+                       stripped[#stripped+1] = proto
+                       offset = offset + off - 1
+               end
+               offset = offset + subint(code, offset, int) * int + int
+               count, offset = subint(code, offset, int)
+               for n = 1, count do
+                       offset = offset + subint(code, offset, size) + size + int * 2
+               end
+               count, offset = subint(code, offset, int)
+               for n = 1, count do
+                       offset = offset + subint(code, offset, size) + size
+               end
+               stripped[#stripped+1] = string.rep("\0", int * 3)
+               return table.concat(stripped), offset
+       end
+
+       return code:sub(1,12) .. strip_function(code:sub(13,-1))
+end
+
+
+--
+-- Sorting iterator functions
+--
+
+function _sortiter( t, f )
+       local keys = { }
+
+       local k, v
+       for k, v in pairs(t) do
+               keys[#keys+1] = k
+       end
+
+       local _pos = 0
+
+       table.sort( keys, f )
+
+       return function()
+               _pos = _pos + 1
+               if _pos <= #keys then
+                       return keys[_pos], t[keys[_pos]], _pos
+               end
+       end
+end
+
+-- the provided callback function.
+function spairs(t,f)
+       return _sortiter( t, f )
+end
+
+-- The table pairs are sorted by key.
+function kspairs(t)
+       return _sortiter( t )
+end
+
+-- The table pairs are sorted by value.
+function vspairs(t)
+       return _sortiter( t, function (a,b) return t[a] < t[b] end )
+end
+
+
+--
+-- System utility functions
+--
+
+function bigendian()
+       return string.byte(string.dump(function() end), 7) == 0
+end
+
+function exec(command)
+       local pp   = io.popen(command)
+       local data = pp:read("*a")
+       pp:close()
+
+       return data
+end
+
+function execi(command)
+       local pp = io.popen(command)
+
+       return pp and function()
+               local line = pp:read()
+
+               if not line then
+                       pp:close()
+               end
+
+               return line
+       end
+end
+
+-- Deprecated
+function execl(command)
+       local pp   = io.popen(command)
+       local line = ""
+       local data = {}
+
+       while true do
+               line = pp:read()
+               if (line == nil) then break end
+               data[#data+1] = line
+       end
+       pp:close()
+
+       return data
+end
+
+
+local ubus_codes = {
+       "INVALID_COMMAND",
+       "INVALID_ARGUMENT",
+       "METHOD_NOT_FOUND",
+       "NOT_FOUND",
+       "NO_DATA",
+       "PERMISSION_DENIED",
+       "TIMEOUT",
+       "NOT_SUPPORTED",
+       "UNKNOWN_ERROR",
+       "CONNECTION_FAILED"
+}
+
+local function ubus_return(...)
+       if select('#', ...) == 2 then
+               local rv, err = select(1, ...), select(2, ...)
+               if rv == nil and type(err) == "number" then
+                       return nil, err, ubus_codes[err]
+               end
+       end
+
+       return ...
+end
+
+function ubus(object, method, data)
+       if not _ubus_connection then
+               _ubus_connection = _ubus.connect()
+               assert(_ubus_connection, "Unable to establish ubus connection")
+       end
+
+       if object and method then
+               if type(data) ~= "table" then
+                       data = { }
+               end
+               return ubus_return(_ubus_connection:call(object, method, data))
+       elseif object then
+               return _ubus_connection:signatures(object)
+       else
+               return _ubus_connection:objects()
+       end
+end
+
+function serialize_json(x, cb)
+       local js = json.stringify(x)
+       if type(cb) == "function" then
+               cb(js)
+       else
+               return js
+       end
+end
+
+
+function libpath()
+       return require "nixio.fs".dirname(ldebug.__file__)
+end
+
+function checklib(fullpathexe, wantedlib)
+       local fs = require "nixio.fs"
+       local haveldd = fs.access('/usr/bin/ldd')
+       local haveexe = fs.access(fullpathexe)
+       if not haveldd or not haveexe then
+               return false
+       end
+       local libs = exec(string.format("/usr/bin/ldd %s", shellquote(fullpathexe)))
+       if not libs then
+               return false
+       end
+       for k, v in ipairs(split(libs)) do
+               if v:find(wantedlib) then
+                       return true
+               end
+       end
+       return false
+end
+
+-------------------------------------------------------------------------------
+-- Coroutine safe xpcall and pcall versions
+--
+-- Encapsulates the protected calls with a coroutine based loop, so errors can
+-- be dealed without the usual Lua 5.x pcall/xpcall issues with coroutines
+-- yielding inside the call to pcall or xpcall.
+--
+-- Authors: Roberto Ierusalimschy and Andre Carregal
+-- Contributors: Thomas Harning Jr., Ignacio Burgueño, Fabio Mascarenhas
+--
+-- Copyright 2005 - Kepler Project
+--
+-- $Id: coxpcall.lua,v 1.13 2008/05/19 19:20:02 mascarenhas Exp $
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+-- Implements xpcall with coroutines
+-------------------------------------------------------------------------------
+local coromap = setmetatable({}, { __mode = "k" })
+
+local function handleReturnValue(err, co, status, ...)
+       if not status then
+               return false, err(debug.traceback(co, (...)), ...)
+       end
+       if coroutine.status(co) == 'suspended' then
+               return performResume(err, co, coroutine.yield(...))
+       else
+               return true, ...
+       end
+end
+
+function performResume(err, co, ...)
+       return handleReturnValue(err, co, coroutine.resume(co, ...))
+end
+
+local function id(trace, ...)
+       return trace
+end
+
+function coxpcall(f, err, ...)
+       local current = coroutine.running()
+       if not current then
+               if err == id then
+                       return pcall(f, ...)
+               else
+                       if select("#", ...) > 0 then
+                               local oldf, params = f, { ... }
+                               f = function() return oldf(unpack(params)) end
+                       end
+                       return xpcall(f, err)
+               end
+       else
+               local res, co = pcall(coroutine.create, f)
+               if not res then
+                       local newf = function(...) return f(...) end
+                       co = coroutine.create(newf)
+               end
+               coromap[co] = current
+               coxpt[co] = coxpt[current] or current or 0
+               return performResume(err, co, ...)
+       end
+end
+
+function copcall(f, ...)
+       return coxpcall(f, id, ...)
+end
diff --git a/package/luci/modules/luci-base/luasrc/util.luadoc b/package/luci/modules/luci-base/luasrc/util.luadoc
new file mode 100644 (file)
index 0000000..4ec68dd
--- /dev/null
@@ -0,0 +1,413 @@
+---[[
+LuCI utility functions.
+]]
+module "luci.util"
+
+---[[
+Create a Class object (Python-style object model).
+
+The class object can be instantiated by calling itself.
+Any class functions or shared parameters can be attached to this object.
+Attaching a table to the class object makes this table shared between
+all instances of this class. For object parameters use the __init__ function.
+Classes can inherit member functions and values from a base class.
+Class can be instantiated by calling them. All parameters will be passed
+to the __init__ function of this class - if such a function exists.
+The __init__ function must be used to set any object parameters that are not shared
+with other objects of this class. Any return values will be ignored.
+
+@class                         function
+@name                          class
+@param base                    The base class to inherit from (optional)
+@return                                A class object
+@see                           instanceof
+@see                           clone
+]]
+
+---[[
+Test whether the given object is an instance of the given class.
+
+@class                         function
+@name                          instanceof
+@param object          Object instance
+@param class           Class object to test against
+@return                                Boolean indicating whether the object is an instance
+@see                           class
+@see                           clone
+]]
+
+---[[
+Create a new or get an already existing thread local store associated with
+the current active coroutine.
+
+A thread local store is private a table object
+whose values can't be accessed from outside of the running coroutine.
+
+@class                         function
+@name                          threadlocal
+@return                                Table value representing the corresponding thread local store
+]]
+
+---[[
+Write given object to stderr.
+
+@class                         function
+@name                          perror
+@param obj                     Value to write to stderr
+@return                                Boolean indicating whether the write operation was successful
+]]
+
+---[[
+Recursively dumps a table to stdout, useful for testing and debugging.
+
+@class                         function
+@name                          dumptable
+@param t                       Table value to dump
+@param maxdepth                Maximum depth
+@return                                Always nil
+]]
+
+---[[
+Create valid XML PCDATA from given string.
+
+@class                         function
+@name                          pcdata
+@param value           String value containing the data to escape
+@return                                String value containing the escaped data
+]]
+
+---[[
+Decode an URL-encoded string - optionally decoding the "+" sign to space.
+
+@class                         function
+@name                          urldecode
+@param str                     Input string in x-www-urlencoded format
+@param decode_plus     Decode "+" signs to spaces if true (optional)
+@return                                The decoded string
+@see                           urlencode
+]]
+
+---[[
+URL-encode given string.
+
+@class                         function
+@name                          urlencode
+@param str                     String to encode
+@return                                String containing the encoded data
+@see                           urldecode
+]]
+
+---[[
+Strip HTML tags from given string.
+
+@class                         function
+@name                          striptags
+@param value           String containing the HTML text
+@return                                String with HTML tags stripped of
+]]
+
+---[[
+Safely quote value for use in shell commands.
+
+@class                         function
+@name                          shellquote
+@param value           String containing the value to quote
+@return                        Single-quote enclosed string with embedded quotes escaped
+]]
+
+---[[
+Splits given string on a defined separator sequence and return a table
+containing the resulting substrings.
+
+The optional max parameter specifies the number of bytes to process,
+regardless of the actual length of the given string. The optional last
+parameter, regex, specifies whether the separator sequence is
+nterpreted as regular expression.
+
+@class                         function
+@name                          split
+@param str                     String value containing the data to split up
+@param pat                     String with separator pattern (optional, defaults to "\n")
+@param max                     Maximum times to split (optional)
+@param regex           Boolean indicating whether to interpret the separator
+--                                     pattern as regular expression (optional, default is false)
+@return                                Table containing the resulting substrings
+]]
+
+---[[
+Remove leading and trailing whitespace from given string value.
+
+@class                         function
+@name                          trim
+@param str                     String value containing whitespace padded data
+@return                                String value with leading and trailing space removed
+]]
+
+---[[
+Count the occurrences of given substring in given string.
+
+@class                         function
+@name                          cmatch
+@param str                     String to search in
+@param pattern         String containing pattern to find
+@return                                Number of found occurrences
+]]
+
+---[[
+Return a matching iterator for the given value.
+
+The iterator will return one token per invocation, the tokens are separated by
+whitespace. If the input value is a table, it is transformed into a string first.
+A nil value will result in a valid iterator which aborts with the first invocation.
+
+@class                         function
+@name                          imatch
+@param val                     The value to scan (table, string or nil)
+@return                                Iterator which returns one token per call
+]]
+
+---[[
+Parse certain units from the given string and return the canonical integer
+value or 0 if the unit is unknown.
+
+Upper- or lower case is irrelevant.
+Recognized units are:
+
+--     o "y"   - one year   (60*60*24*366)
+ o "m" - one month  (60*60*24*31)
+ o "w" - one week   (60*60*24*7)
+ o "d" - one day    (60*60*24)
+ o "h" - one hour       (60*60)
+ o "min"       - one minute (60)
+ o "kb"  - one kilobyte (1024)
+ o "mb"        - one megabyte (1024*1024)
+ o "gb"        - one gigabyte (1024*1024*1024)
+ o "kib" - one si kilobyte (1000)
+ o "mib"       - one si megabyte (1000*1000)
+ o "gib"       - one si gigabyte (1000*1000*1000)
+
+@class                         function
+@name                          parse_units
+@param ustr                    String containing a numerical value with trailing unit
+@return                                Number containing the canonical value
+]]
+
+---[[
+Appends numerically indexed tables or single objects to a given table.
+
+@class                         function
+@name                          append
+@param src                     Target table
+@param ...                     Objects to insert
+@return                                Target table
+]]
+
+---[[
+Combines two or more numerically indexed tables and single objects into one table.
+
+@class                         function
+@name                          combine
+@param tbl1                    Table value to combine
+@param tbl2                    Table value to combine
+@param ...                     More tables to combine
+@return                                Table value containing all values of given tables
+]]
+
+---[[
+Checks whether the given table contains the given value.
+
+@class                         function
+@name                          contains
+@param table           Table value
+@param value           Value to search within the given table
+@return                                Number indicating the first index at which the given value occurs
+--                                     within table or false.
+]]
+
+---[[
+Update values in given table with the values from the second given table.
+
+Both table are - in fact - merged together.
+
+@class                         function
+@name                          update
+@param t                       Table which should be updated
+@param updates         Table containing the values to update
+@return                                Always nil
+]]
+
+---[[
+Retrieve all keys of given associative table.
+
+@class                         function
+@name                          keys
+@param t                       Table to extract keys from
+@return                                Sorted table containing the keys
+]]
+
+---[[
+Clones the given object and return it's copy.
+
+@class                         function
+@name                          clone
+@param object          Table value to clone
+@param deep                    Boolean indicating whether to do recursive cloning
+@return                                Cloned table value
+]]
+
+---[[
+Recursively serialize given data to lua code, suitable for restoring
+with loadstring().
+
+@class                         function
+@name                          serialize_data
+@param val                     Value containing the data to serialize
+@return                                String value containing the serialized code
+@see                           restore_data
+@see                           get_bytecode
+]]
+
+---[[
+Restore data previously serialized with serialize_data().
+
+@class                         function
+@name                          restore_data
+@param str                     String containing the data to restore
+@return                                Value containing the restored data structure
+@see                           serialize_data
+@see                           get_bytecode
+]]
+
+---[[
+Return the current runtime bytecode of the given data. The byte code
+will be stripped before it is returned.
+
+@class                         function
+@name                          get_bytecode
+@param val                     Value to return as bytecode
+@return                                String value containing the bytecode of the given data
+]]
+
+---[[
+Strips unnecessary lua bytecode from given string.
+
+Information like line numbers and debugging numbers will be discarded.
+Original version by Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html)
+
+@class                         function
+@name                          strip_bytecode
+@param code                    String value containing the original lua byte code
+@return                                String value containing the stripped lua byte code
+]]
+
+---[[
+Return a key, value iterator which returns the values sorted according to
+the provided callback function.
+
+@class                         function
+@name                          spairs
+@param t                       The table to iterate
+@param f                       A callback function to decide the order of elements
+@return                                Function value containing the corresponding iterator
+]]
+
+---[[
+Return a key, value iterator for the given table.
+
+The table pairs are sorted by key.
+
+@class                         function
+@name                          kspairs
+@param t                       The table to iterate
+@return                                Function value containing the corresponding iterator
+]]
+
+---[[
+Return a key, value iterator for the given table.
+
+The table pairs are sorted by value.
+
+@class                         function
+@name                          vspairs
+@param t                       The table to iterate
+@return                                Function value containing the corresponding iterator
+]]
+
+---[[
+Test whether the current system is operating in big endian mode.
+
+@class                         function
+@name                          bigendian
+@return                                Boolean value indicating whether system is big endian
+]]
+
+---[[
+Execute given commandline and gather stdout.
+
+@class                         function
+@name                          exec
+@param command         String containing command to execute
+@return                                String containing the command's stdout
+]]
+
+---[[
+Return a line-buffered iterator over the output of given command.
+
+@class                         function
+@name                          execi
+@param command         String containing the command to execute
+@return                                Iterator
+]]
+
+---[[
+Issue an ubus call.
+
+@class                         function
+@name                          ubus
+@param object          String containing the ubus object to call
+@param method          String containing the ubus method to call
+@param values          Table containing the values to pass
+@return                                Table containin the ubus result
+]]
+
+---[[
+Convert data structure to JSON
+
+@class                         function
+@name                          serialize_json
+@param data                    The data to serialize
+@param writer          A function to write a chunk of JSON data (optional)
+@return                                String containing the JSON if called without write callback
+]]
+
+---[[
+Returns the absolute path to LuCI base directory.
+
+@class                         function
+@name                          libpath
+@return                                String containing the directory path
+]]
+
+---[[
+This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function
+
+@class                         function
+@name                          coxpcall
+@param f                       Lua function to be called protected
+@param err                     Custom error handler
+@param ...                     Parameters passed to the function
+@return                                A boolean whether the function call succeeded and the return
+--                                     values of either the function or the error handler
+]]
+
+---[[
+This is a coroutine-safe drop-in replacement for Lua's "pcall"-function
+
+@class                         function
+@name                          copcall
+@param f                       Lua function to be called protected
+@param ...                     Parameters passed to the function
+@return                                A boolean whether the function call succeeded and the returns
+--                                     values of the function or the error object
+]]
+
diff --git a/package/luci/modules/luci-base/luasrc/version.lua b/package/luci/modules/luci-base/luasrc/version.lua
new file mode 100644 (file)
index 0000000..8af2e80
--- /dev/null
@@ -0,0 +1,9 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module "luci.version"
+
+distname    = "Host System"
+distversion = "SDK"
+
+luciname    = "LuCI"
+luciversion = "SVN"
diff --git a/package/luci/modules/luci-base/luasrc/view/admin_uci/changelog.htm b/package/luci/modules/luci-base/luasrc/view/admin_uci/changelog.htm
new file mode 100644 (file)
index 0000000..9d6267c
--- /dev/null
@@ -0,0 +1,66 @@
+<%#
+ Copyright 2010 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% export("uci_changelog", function(changes) -%>
+<div class="cbi-section">
+       <strong><%:Legend:%></strong>
+       <div class="uci-change-legend">
+               <div class="uci-change-legend-label"><ins>&#160;</ins> <%:Section added%></div>
+               <div class="uci-change-legend-label"><del>&#160;</del> <%:Section removed%></div>
+               <div class="uci-change-legend-label"><var><ins>&#160;</ins></var> <%:Option changed%></div>
+               <div class="uci-change-legend-label"><var><del>&#160;</del></var> <%:Option removed%></div>
+               <br style="clear:both" />
+       </div>
+       <br />
+
+       <div class="uci-change-list"><%
+               local util = luci.util
+               local tpl = {
+                       ["add-3"] = "<ins>uci add %0 <strong>%3</strong> # =%2</ins>",
+                       ["set-3"] = "<ins>uci set %0.<strong>%2</strong>=%3</ins>",
+                       ["set-4"] = "<var><ins>uci set %0.%2.%3=<strong>%4</strong></ins></var>",
+                       ["remove-2"] = "<del>uci del %0.<strong>%2</strong></del>",
+                       ["remove-3"] = "<var><del>uci del %0.%2.<strong>%3</strong></del></var>",
+                       ["order-3"] = "<var>uci reorder %0.%2=<strong>%3</strong></var>",
+                       ["list-add-4"] = "<var><ins>uci add_list %0.%2.%3=<strong>%4</strong></ins></var>",
+                       ["list-del-4"] = "<var><del>uci del_list %0.%2.%3=<strong>%4</strong></del></var>",
+                       ["rename-3"] = "<var>uci rename %0.%2=<strong>%3</strong></var>",
+                       ["rename-4"] = "<var>uci rename %0.%2.%3=<strong>%4</strong></var>"
+               }
+
+               local conf, deltas
+               for conf, deltas in util.kspairs(changes) do
+                       write("<h3># /etc/config/%s</h3>" % conf)
+
+                       local _, delta, added
+                       for _, delta in pairs(deltas) do
+                               local t = tpl["%s-%d" %{ delta[1], #delta }]
+
+                               write(t:gsub("%%(%d)", function(n)
+                                       if n == "0" then
+                                               return conf
+                                       elseif n == "2" then
+                                               if added and delta[2] == added[1] then
+                                                       return "@%s[-1]" % added[2]
+                                               else
+                                                       return delta[2]
+                                               end
+                                       elseif n == "4" then
+                                               return util.shellquote(delta[4])
+                                       else
+                                               return delta[tonumber(n)]
+                                       end
+                               end))
+
+                               if delta[1] == "add" then
+                                       added = { delta[2], delta[3] }
+                               end
+                       end
+
+                       write("<br />")
+               end
+       %></div>
+</div>
+<%- end) %>
diff --git a/package/luci/modules/luci-base/luasrc/view/admin_uci/changes.htm b/package/luci/modules/luci-base/luasrc/view/admin_uci/changes.htm
new file mode 100644 (file)
index 0000000..43bd7c2
--- /dev/null
@@ -0,0 +1,45 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%-
+       local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+       export("redirect", redir_url or url("admin/uci/changes"))
+
+       include("admin_uci/changelog")
+-%>
+
+<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
+
+<% if changes then %>
+       <%- uci_changelog(changes) -%>
+<% else %>
+       <p><strong><%:There are no pending changes!%></strong></p>
+<% end %>
+
+<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+
+<div class="cbi-page-actions">
+       <% if redir_url then %>
+       <form method="get" action="<%=luci.util.pcdata(redir_url)%>">
+               <input class="cbi-button cbi-button-link" type="submit" value="<%:Back%>" />
+       </form>
+       <% end %>
+
+       <form method="post" action="<%=url("admin/uci/changes")%>">
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+               <input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" />
+       </form>
+       <form method="post" action="<%=url("admin/uci/revert")%>">
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+               <input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" />
+       </form>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/admin_uci/revert.htm b/package/luci/modules/luci-base/luasrc/view/admin_uci/revert.htm
new file mode 100644 (file)
index 0000000..d8fd3de
--- /dev/null
@@ -0,0 +1,33 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%-
+       local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+       export("redirect", redir_url or url("admin/uci/changes"))
+
+       include("admin_uci/changelog")
+-%>
+
+<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
+
+<% if changes then %>
+       <p><strong><%:The following changes have been reverted%>:</strong></p>
+       <%- uci_changelog(changes) -%>
+<% else %>
+       <p><strong><%:There are no pending changes to revert!%></strong></p>
+<% end %>
+
+<% if redir_url then %>
+       <div class="cbi-page-actions">
+               <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
+                       <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" />
+               </form>
+       </div>
+<% end %>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/package/luci/modules/luci-base/luasrc/view/cbi/apply_widget.htm
new file mode 100644 (file)
index 0000000..0f96673
--- /dev/null
@@ -0,0 +1,172 @@
+<% export("cbi_apply_widget", function(redirect_ok, rollback_token) -%>
+<script type="text/javascript">//<![CDATA[
+       var xhr = new XHR(),
+           uci_apply_auth = { sid: '<%=luci.dispatcher.context.authsession%>', token: '<%=token%>' },
+           uci_apply_rollback = <%=math.max(luci.config and luci.config.apply and luci.config.apply.rollback or 30, 30)%>,
+           uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
+           uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>,
+           uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>,
+           uci_confirm_auth = <% if rollback_token then %>{ token: '<%=rollback_token%>' }<% else %>null<% end %>,
+           was_xhr_poll_running = false;
+
+       function uci_status_message(type, content) {
+               if (type) {
+                       var message = showModal('', '');
+
+                       message.classList.add('alert-message');
+                       DOMTokenList.prototype.add.apply(message.classList, type.split(/\s+/));
+
+                       if (content)
+                               message.innerHTML = content;
+
+                       if (!was_xhr_poll_running) {
+                               was_xhr_poll_running = XHR.running();
+                               XHR.halt();
+                       }
+               }
+               else {
+                       hideModal();
+
+                       if (was_xhr_poll_running)
+                               XHR.run();
+               }
+       }
+
+       function uci_rollback(checked) {
+               if (checked) {
+                       uci_status_message('warning spinning',
+                               '<p><%:Failed to confirm apply within %ds, waiting for rollback…%></p>'.format(uci_apply_rollback));
+
+                       var call = function(r, data, duration) {
+                               if (r.status === 204) {
+                                       uci_status_message('warning',
+                                               '<h4><%:Configuration has been rolled back!%></h4>' +
+                                               '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, proceed by applying anyway. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) +
+                                               '<div class="right">' +
+                                                       '<input type="button" class="btn" onclick="uci_status_message(false)" value="<%:Dismiss%>" /> ' +
+                                                       '<input type="button" class="btn cbi-button-action important" onclick="uci_revert()" value="<%:Revert changes%>" /> ' +
+                                                       '<input type="button" class="btn cbi-button-negative important" onclick="uci_apply(false)" value="<%:Apply anyway%>" />' +
+                                               '</div>');
+
+                                       return;
+                               }
+
+                               var delay = isNaN(duration) ? 0 : Math.max(1000 - duration, 0);
+                               window.setTimeout(function() {
+                                       xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+                               }, delay);
+                       };
+
+                       call({ status: 0 });
+               }
+               else {
+                       uci_status_message('warning',
+                               '<h4><%:Device unreachable!%></h4>' +
+                               '<p><%:Could not regain access to the device after applying the configuration changes. You might need to reconnect if you modified network related settings such as the IP address or wireless security credentials.%></p>');
+               }
+       }
+
+       function uci_confirm(checked, deadline) {
+               var tt;
+               var ts = Date.now();
+
+               uci_status_message('notice');
+
+               var call = function(r, data, duration) {
+                       if (Date.now() >= deadline) {
+                               window.clearTimeout(tt);
+                               uci_rollback(checked);
+                               return;
+                       }
+                       else if (r && (r.status === 200 || r.status === 204)) {
+                               var indicator = document.querySelector('.uci_change_indicator');
+                               if (indicator) indicator.style.display = 'none';
+
+                               uci_status_message('notice', '<p><%:Configuration has been applied.%></p>');
+
+                               window.clearTimeout(tt);
+                               window.setTimeout(function() {
+                                       <% if redirect_ok then -%>
+                                               location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');
+                                       <%- else -%>
+                                               window.location = window.location.href.split('#')[0];
+                                       <% end %>
+                               }, uci_apply_display * 1000);
+
+                               return;
+                       }
+
+                       var delay = isNaN(duration) ? 0 : Math.max(1000 - duration, 0);
+                       window.setTimeout(function() {
+                               xhr.post('<%=url("admin/uci/confirm")%>', uci_confirm_auth, call, uci_apply_timeout * 1000);
+                       }, delay);
+               };
+
+               var tick = function() {
+                       var now = Date.now();
+
+                       uci_status_message('notice spinning',
+                               '<p><%:Waiting for configuration to be applied… %ds%></p>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0)));
+
+                       if (now >= deadline)
+                               return;
+
+                       tt = window.setTimeout(tick, 1000 - (now - ts));
+                       ts = now;
+               };
+
+               tick();
+
+               /* wait a few seconds for the settings to become effective */
+               window.setTimeout(call, Math.max(uci_apply_holdoff * 1000 - ((ts + uci_apply_rollback * 1000) - deadline), 1));
+       }
+
+       function uci_apply(checked) {
+               uci_status_message('notice spinning', '<p><%:Starting configuration apply…%></p>');
+
+               xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r, tok) {
+                       if (r.status === (checked ? 200 : 204)) {
+                               if (checked && tok !== null && typeof(tok) === 'object' && typeof(tok.token) === 'string')
+                                       uci_confirm_auth = tok;
+
+                               uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
+                       }
+                       else if (checked && r.status === 204) {
+                               uci_status_message('notice', '<p><%:There are no changes to apply.%></p>');
+                               window.setTimeout(function() {
+                                       <% if redirect_ok then -%>
+                                               location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');
+                                       <%- else -%>
+                                               uci_status_message(false);
+                                       <%- end %>
+                               }, uci_apply_display * 1000);
+                       }
+                       else {
+                               uci_status_message('warning', '<p><%_Apply request failed with status <code>%h</code>%></p>'.format(r.responseText || r.statusText || r.status));
+                               window.setTimeout(function() { uci_status_message(false); }, uci_apply_display * 1000);
+                       }
+               });
+       }
+
+       function uci_revert() {
+               uci_status_message('notice spinning', '<p><%:Reverting configuration…%></p>');
+
+               xhr.post('<%=url("admin/uci/revert")%>', uci_apply_auth, function(r) {
+                       if (r.status === 200) {
+                               uci_status_message('notice', '<p><%:Changes have been reverted.%></p>');
+                               window.setTimeout(function() {
+                                       <% if redirect_ok then -%>
+                                               location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');
+                                       <%- else -%>
+                                               window.location = window.location.href.split('#')[0];
+                                       <%- end %>
+                               }, uci_apply_display * 1000);
+                       }
+                       else {
+                               uci_status_message('warning', '<p><%_Revert request failed with status <code>%h</code>%></p>'.format(r.statusText || r.status));
+                               window.setTimeout(function() { uci_status_message(false); }, uci_apply_display * 1000);
+                       }
+               });
+       }
+//]]></script>
+<%-    end) %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/browser.htm b/package/luci/modules/luci-base/luasrc/view/cbi/browser.htm
new file mode 100644 (file)
index 0000000..eb47ffa
--- /dev/null
@@ -0,0 +1,10 @@
+<%+cbi/valueheader%>
+
+<input class="cbi-input-text" type="text"<%=
+       attr("id", cbid) ..
+       attr("name", cbid) ..
+       attr("value", self:cfgvalue(section) or self.default) ..
+       attr("data-browser", self.default_path or "")
+%> />
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/button.htm b/package/luci/modules/luci-base/luasrc/view/cbi/button.htm
new file mode 100644 (file)
index 0000000..6ccba58
--- /dev/null
@@ -0,0 +1,7 @@
+<%+cbi/valueheader%>
+       <% if self:cfgvalue(section) ~= false then %>
+               <input class="cbi-button cbi-button-<%=self.inputstyle or "button" %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
+       <% else %>
+               -
+       <% end %>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm
new file mode 100644 (file)
index 0000000..bdd6bc9
--- /dev/null
@@ -0,0 +1,2 @@
+</div>
+</div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm
new file mode 100644 (file)
index 0000000..4b70957
--- /dev/null
@@ -0,0 +1,12 @@
+<%-
+       local title = luci.util.trim(striptags(self.title))
+       local descr = luci.util.trim(striptags(self.description))
+       local ftype = self.typename or (self.template and self.template:gsub("^.+/", ""))
+-%>
+<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %><% if self.password then %> nowrap<% end %>"<%=
+       attr("data-name", self.option) ..
+       ifattr(ftype and #ftype > 0, "data-type", ftype) ..
+       ifattr(title and #title > 0, "data-title", title, true) ..
+       ifattr(descr and #descr > 0, "data-description", descr, true)
+%>>
+<div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/compound.htm b/package/luci/modules/luci-base/luasrc/view/cbi/compound.htm
new file mode 100644 (file)
index 0000000..12d02bb
--- /dev/null
@@ -0,0 +1 @@
+<%- self:render_children() %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm b/package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm
new file mode 100644 (file)
index 0000000..4fd1926
--- /dev/null
@@ -0,0 +1,24 @@
+<%- self.active:render() %>
+       <div class="cbi-page-actions">
+               <input type="hidden" name="cbi.delg.current" value="<%=self.current%>" />
+<% for _, x in ipairs(self.chain) do %>
+               <input type="hidden" name="cbi.delg.path" value="<%=x%>" />
+<% end %>
+<% if not self.disallow_pageactions then %>
+<% if self.allow_finish and not self:get_next(self.current) then %>
+       <input class="cbi-button cbi-button-finish" type="submit" value="<%:Finish%>" />
+<% elseif self:get_next(self.current) then %>
+               <input class="cbi-button cbi-button-next" type="submit" value="<%:Next »%>" />
+<% end %>
+<% if self.allow_cancel then %>
+               <input class="cbi-button cbi-button-cancel" type="submit" name="cbi.cancel" value="<%:Cancel%>" />
+<% end %>
+<% if self.allow_reset then %>
+               <input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" />
+<% end %>
+<% if self.allow_back and self:get_prev(self.current) then %>
+               <input class="cbi-button cbi-button-back" type="submit" name="cbi.delg.back" value="<%:« Back%>" />
+<% end %>
+<% end %>
+               <script type="text/javascript">cbi_d_update();</script>
+       </div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/dropdown.htm b/package/luci/modules/luci-base/luasrc/view/cbi/dropdown.htm
new file mode 100644 (file)
index 0000000..6f4b899
--- /dev/null
@@ -0,0 +1,54 @@
+<%+cbi/valueheader%>
+
+<%-
+       local selected = { }
+
+       if self.multiple then
+               local val
+               for val in luci.util.imatch(self:cfgvalue(section)) do
+                       selected[val] = true
+               end
+       else
+               selected[self:cfgvalue(section)] = true
+       end
+
+       if not next(selected) and self.default then
+               selected[self.default] = true
+       end
+-%>
+
+<div class="cbi-dropdown"<%=
+       attr("name", cbid) ..
+       attr("display-items", self.display or self.size or 3) ..
+       attr("dropdown-items", self.dropdown or self.display or self.size or 5) ..
+       attr("placeholder", self.placeholder or translate("-- please select --")) ..
+       ifattr(self.multiple, "multiple", "multiple") ..
+       ifattr(self.optional or self.rmempty, "optional", "optional")
+%>>
+       <ul>
+               <% local i, key; for i, key in pairs(self.keylist) do %>
+                       <li<%=
+                               attr("data-index", i) ..
+                               attr("data-depends", self:deplist2json(section, self.deplist[i])) ..
+                               attr("data-value", key) ..
+                               ifattr(selected[key], "selected", "selected")
+                       %>>
+                               <%=pcdata(self.vallist[i])%>
+                       </li>
+               <% end %>
+               <% if self.custom then %>
+                       <li>
+                               <input type="password" style="display:none" />
+                               <input class="create-item-input" type="text"<%=
+                                       attr("placeholder", self.custom ~= true and
+                                               self.custom or
+                                               (self.multiple and
+                                                       translate("Enter custom values") or
+                                                       translate("Enter custom value")))
+                               %> />
+                       </li>
+               <% end %>
+       </ul>
+</div>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm
new file mode 100644 (file)
index 0000000..78e6f32
--- /dev/null
@@ -0,0 +1,13 @@
+<%+cbi/valueheader%>
+<% if self.href then %><a href="<%=self.href%>"><% end -%>
+       <%
+               local val = self:cfgvalue(section) or self.default or ""
+               if not self.rawhtml then
+                       write(pcdata(val))
+               else
+                       write(val)
+               end
+       %>
+<%- if self.href then %></a><%end%>
+<input type="hidden" id="<%=cbid%>" value="<%=pcdata(self:cfgvalue(section) or self.default or "")%>" />
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm
new file mode 100644 (file)
index 0000000..fa7dbdb
--- /dev/null
@@ -0,0 +1,13 @@
+<%+cbi/valueheader%>
+<div<%=
+       attr("data-prefix", cbid) ..
+       attr("data-browser-path", self.default_path) ..
+       attr("data-dynlist", luci.util.serialize_json({
+               self.keylist, self.vallist,
+               self.datatype, self.optional or self.rmempty
+       })) ..
+       attr("data-values", luci.util.serialize_json(self:cfgvalue(section))) ..
+       ifattr(self.size, "data-size", self.size) ..
+       ifattr(self.placeholder, "data-placeholder", self.placeholder)
+%>></div>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/error.htm b/package/luci/modules/luci-base/luasrc/view/cbi/error.htm
new file mode 100644 (file)
index 0000000..75ec108
--- /dev/null
@@ -0,0 +1,19 @@
+<div class="cbi-map" id="cbi-<%=self.config%>">
+       <% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
+       <% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
+
+       <p class="alert-message danger">
+               <%: The configuration file could not be loaded due to the following error: %><br />
+               <code><%=pcdata(self.error)%></code>
+       </p>
+
+       <textarea name="cbi.source" style="width:100%; margin-bottom:1em" rows="<%=math.max(self.source:cmatch("\n"), 10)%>"><%=pcdata(self.source)%></textarea>
+
+       <p class="alert-message">
+               <%: Edit the raw configuration data above to fix any error and hit "Save" to reload the page. %>
+       </p>
+
+       <div class="cbi-page-actions">
+               <input class="cbi-button cbi-button-apply" type="submit" name="cbi.save" value="<%:Save%>" />
+       </div>
+</div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm b/package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm
new file mode 100644 (file)
index 0000000..806b1b5
--- /dev/null
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>Filebrowser - LuCI</title>
+       <style type="text/css">
+               #path, #listing {
+                       font-size: 85%;
+               }
+
+               ul {
+                       padding-left: 0;
+                       list-style-type: none;
+               }
+
+               li img {
+                       vertical-align: bottom;
+                       margin-right: 0.2em;
+               }
+       </style>
+
+       <script type="text/javascript">
+               function callback(path) {
+                       if( window.opener ) {
+                               var input = window.opener.document.getElementById(decodeURIComponent('<%=luci.http.urlencode(luci.http.formvalue('field'))%>'));
+                               if( input ) {
+                                       input.value = decodeURIComponent(path);
+                                       window.close();
+                               }
+                       }
+               }
+       </script>
+</head>
+<body>
+       <%
+               require("nixio.fs")
+               require("nixio.util")
+               require("luci.http")
+               require("luci.dispatcher")
+
+               local field   = luci.http.formvalue('field')
+               local request = luci.dispatcher.context.args
+               local path    = { '' }
+
+               for i = 1, #request do
+                       if request[i] ~= '..' and #request[i] > 0 then
+                               path[#path+1] = request[i]
+                       end
+               end
+
+               local filestat = nixio.fs.stat(table.concat(path, '/'))
+               local baseurl  = { 'admin', 'filebrowser' }
+
+               if filestat and filestat.type == "reg" then
+                       path[#path] = ''
+               elseif not (filestat and filestat.type == "dir") then
+                       path = { '', '' }
+               else
+                       path[#path+1] = ''
+               end
+
+               filepath = table.concat(path, '/')
+
+               local entries = {}
+               local _, e
+               for _, e in luci.util.vspairs(nixio.util.consume((nixio.fs.dir(filepath)))) do
+                       local p = filepath .. e
+                       local s = nixio.fs.stat(p)
+                       if s then
+                               entries[#entries+1] = {
+                                       name = e,
+                                       path = p,
+                                       type = s.type
+                               }
+                       end
+               end
+       -%>
+       <div id="path">
+               Location:
+               <% for i, dir in ipairs(path) do %>
+                       <% if i == 1 then %>
+                               <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>">(root)</a>
+                       <% elseif next(path, i) then %>
+                               <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
+                               / <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(dir)%></a>
+                       <% else %>
+                               <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
+                               / <%=pcdata(dir)%>
+                       <% end %>
+               <% end %>
+       </div>
+
+       <hr />
+
+       <div id="listing">
+               <ul>
+                       <% for _, e in ipairs(entries) do if e.type == 'dir' then -%>
+                               <li class="dir">
+                                       <img src="<%=resource%>/cbi/folder.gif" alt="<%:Directory%>" />
+                                       <a href="<%=url(unpack(baseurl))%>/<%=luci.http.urlencode(e.name)%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(e.name)%>/</a>
+                               </li>
+                       <% end end -%>
+
+                       <% for _, e in ipairs(entries) do if e.type ~= 'dir' then -%>
+                               <li class="file">
+                                       <img src="<%=resource%>/cbi/file.gif" alt="<%:File%>" />
+                                       <a href="#" onclick="callback('<%=luci.http.urlencode(e.path)%>')"><%=pcdata(e.name)%></a>
+                               </li>
+                       <% end end -%>
+               </ul>
+       </div>
+</body>
+</html>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm b/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm
new file mode 100644 (file)
index 0000000..dc251db
--- /dev/null
@@ -0,0 +1,73 @@
+<%+cbi/valueheader%>
+
+<%-
+       local utl = require "luci.util"
+       local fwm = require "luci.model.firewall".init()
+       local nwm = require "luci.model.network".init()
+
+       local zone, fwd, fz
+       local value = self:formvalue(section)
+       if not value or value == "-" then
+               value = self:cfgvalue(section) or self.default
+       end
+
+       local def  = fwm:get_defaults()
+       local zone = fwm:get_zone(value)
+       local empty = true
+
+       local function render_zone(zone)
+-%>
+               <label class="zonebadge" style="background-color:<%=zone:get_color()%>">
+                       <strong><%=zone:name()%></strong>
+                       <div class="cbi-tooltip">
+                       <%-
+                               local zempty = true
+                               for _, net in ipairs(zone:get_networks()) do
+                                       net = nwm:get_network(net)
+                                       if net then
+                                               zempty = false
+                       -%>
+                               <span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>:&#160;
+                               <%
+                                       local nempty = true
+                                       for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
+                                               nempty = false
+                                %>
+                                       <img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+                               <% end %>
+                               <% if nempty then %><em><%:(empty)%></em><% end %>
+                               </span>
+                       <%- end end -%>
+                       <% if zempty then %><span class="ifacebadge"><em><%:(empty)%></em></span><% end %>
+                       </div>
+               </label>
+<%-
+       end
+-%>
+
+<% if zone then %>
+<div class="zone-forwards">
+       <div class="zone-src">
+               <%=render_zone(zone)%>
+       </div>
+       <span>&#8658;</span>
+       <div class="zone-dest">
+       <%
+               for _, fwd in ipairs(zone:get_forwardings_by("src")) do
+                       fz = fwd:dest_zone()
+                       if fz then
+                               empty = false
+                               render_zone(fz)
+                       end
+               end
+               if empty then
+       %>
+               <label class="zonebadge zonebadge-empty">
+                       <strong><%=def:forward():upper()%></strong>
+               </label>
+       <% end %>
+       </div>
+</div>
+<% end %>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm
new file mode 100644 (file)
index 0000000..7ecec10
--- /dev/null
@@ -0,0 +1,108 @@
+<%+cbi/valueheader%>
+
+<%-
+       local utl = require "luci.util"
+       local fwm = require "luci.model.firewall".init()
+       local nwm = require "luci.model.network".init()
+
+       local zone, net, iface
+       local zones = fwm:get_zones()
+       local value = self:formvalue(section)
+       if not value or value == "-" then
+               value = self:cfgvalue(section) or self.default
+       end
+
+       local selected = false
+       local checked = { }
+
+       for value in utl.imatch(value) do
+               checked[value] = true
+       end
+
+       if not next(checked) then
+               checked[""] = true
+       end
+-%>
+
+<div class="cbi-dropdown" dropdown-items="5" placeholder="<%:-- please select -- %>"<%=
+       attr("name", cbid) ..
+       ifattr(self.widget == "checkbox", "multiple", "multiple") ..
+       ifattr(self.rmempty or self.optional, "optional", "optional")
+%>>
+       <script type="item-template"><!--
+               <li data-value="{{value}}">
+                       <span class="zonebadge" style="background:repeating-linear-gradient(45deg,rgba(204,204,204,0.5),rgba(204,204,204,0.5) 5px,rgba(255,255,255,0.5) 5px,rgba(255,255,255,0.5) 10px)">
+                               <strong>{{value}}:</strong><em>(<%:create%>)</em>
+                       </span>
+               </li>
+       --></script>
+       <ul>
+               <% if self.allowlocal then %>
+               <li data-value=""<%=ifattr(checked[""], "selected", "selected")%>>
+                       <span style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
+                               <strong><%:Device%></strong>
+                               <% if self.allowany and self.allowlocal then -%>
+                                       (<%= self.alias ~= "dest"
+                                               and translate("output") or translate("input") %>)
+                               <%- end %>
+                       </span>
+               </li>
+               <% elseif self.widget ~= "checkbox" and (self.rmempty or self.optional) then %>
+               <li data-value=""<%=ifattr(checked[""], "selected", "selected")%>>
+                       <span class="zonebadge">
+                               <em><%:unspecified%></em>
+                       </span>
+               </li>
+               <% end %>
+               <% if self.allowany then %>
+               <li data-value="*"<%=ifattr(checked["*"], "selected", "selected")%>>
+                       <span style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
+                               <strong><%:Any zone%></strong>
+                               <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %>
+                       </span>
+               </li>
+               <% end %>
+               <%
+                       for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones[b]:name()) end) do
+                               if zone:name() ~= self.exclude then
+                                       selected = selected or (value == zone:name())
+               %>
+               <li<%=attr("data-value", zone:name()) .. ifattr(checked[zone:name()], "selected", "selected")%>>
+                       <span style="background-color:<%=zone:get_color()%>" class="zonebadge">
+                               <strong><%=zone:name()%>:</strong>
+                               <%-
+                                       local zempty = true
+                                       for _, net in ipairs(zone:get_networks()) do
+                                               net = nwm:get_network(net)
+                                               if net then
+                                                       zempty = false
+                               -%>
+                                       <span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>:
+                                       <%-
+                                               local nempty = true
+                                               for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
+                                                       nempty = false
+                                       %>
+                                               <img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+                                       <% end %>
+                                       <% if nempty then %><em><%:(empty)%></em><% end -%>
+                                       </span>
+                               <%- end end -%>
+                               <%- if zempty then %><em><%:(empty)%></em><% end -%>
+                       </span>
+               </li>
+               <% end end %>
+
+               <% if self.widget ~= "checkbox" and not self.nocreate then %>
+               <li data-value="-">
+                       <span class="zonebadge">
+                               <em><%:create%>:</em>
+                               <input type="password" style="display:none" />
+                               <input class="create-item-input" type="text" data-type="and(uciname,maxlength(11))" data-optional="true" />
+                       </span>
+               </li>
+               <% end %>
+       </ul>
+</div>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/footer.htm b/package/luci/modules/luci-base/luasrc/view/cbi/footer.htm
new file mode 100644 (file)
index 0000000..ed63220
--- /dev/null
@@ -0,0 +1,41 @@
+<%
+       local display_back  = (redirect and not flow.hidebackbtn)
+       local display_skip  = (flow.skip)
+       local display_apply = (not autoapply and not flow.hideapplybtn)
+       local display_save  = (not flow.hidesavebtn)
+       local display_reset = (not flow.hideresetbtn)
+
+       if pageaction and
+          (display_back or display_skip or display_apply or display_save or display_reset)
+       then
+               %><div class="cbi-page-actions"><%
+
+               if display_back then
+                       %><input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" /> <%
+               end
+
+               if display_skip then
+                       %><input class="cbi-button cbi-button-skip" type="button" value="<%:Skip%>" onclick="cbi_submit(this, 'cbi.skip')" /> <%
+               end
+
+               if display_apply then
+                       %><input class="cbi-button cbi-button-apply" type="button" value="<%:Save & Apply%>" onclick="cbi_submit(this, 'cbi.apply')" /> <%
+               end
+
+               if display_save then
+                       %><input class="cbi-button cbi-button-save" type="submit" value="<%:Save%>" /> <%
+               end
+
+               if display_reset then
+                       %><input class="cbi-button cbi-button-reset" type="button" value="<%:Reset%>" onclick="location.href='<%=REQUEST_URI%>'" /> <%
+               end
+
+               %></div><%
+       end
+%>
+
+</form>
+
+<script type="text/javascript">cbi_init();</script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm
new file mode 100644 (file)
index 0000000..d4ad093
--- /dev/null
@@ -0,0 +1,12 @@
+               <% if self.description and #self.description > 0 then -%>
+                       <% if not luci.util.instanceof(self, luci.cbi.DynamicList) and (not luci.util.instanceof(self, luci.cbi.Flag) or self.orientation == "horizontal") then -%>
+                               <br />
+                       <%- end %>
+                       <div class="cbi-value-description">
+                               <%=self.description%>
+                       </div>
+               <%- end %>
+       <%- if self.title and #self.title > 0 then -%>
+       </div>
+       <%- end -%>
+</div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm
new file mode 100644 (file)
index 0000000..1d9ebeb
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="cbi-value<% if self.error and self.error[section] then %> cbi-value-error<% end %><% if self.last_child then %> cbi-value-last<% end %><% if self.password then %> nowrap<% end %>" id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">
+       <%- if self.title and #self.title > 0 then -%>
+       <label class="cbi-value-title"<%= attr("for", cbid) %>>
+       <%- if self.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=self.titleref%>"><%- end -%>
+               <%-=self.title-%>
+       <%- if self.titleref then -%></a><%- end -%>
+       </label>
+               <div class="cbi-value-field">
+       <%- end -%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm
new file mode 100644 (file)
index 0000000..197d03c
--- /dev/null
@@ -0,0 +1,10 @@
+<%+cbi/valueheader%>
+       <input type="hidden" value="1"<%=
+               attr("name", "cbi.cbe." .. self.config .. "." .. section .. "." .. self.option)
+       %> />
+       <input class="cbi-input-checkbox" data-update="click change" type="checkbox"<%=
+               attr("id", cbid) .. attr("name", cbid) .. attr("value", self.enabled or 1) ..
+               ifattr((self:cfgvalue(section) or self.default) == self.enabled, "checked", "checked")
+       %> />
+       <label<%= attr("for", cbid)%>></label>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/header.htm b/package/luci/modules/luci-base/luasrc/view/cbi/header.htm
new file mode 100644 (file)
index 0000000..821fa3e
--- /dev/null
@@ -0,0 +1,18 @@
+<%+header%>
+<form method="post" name="cbi" action="<%=REQUEST_URI%>" enctype="multipart/form-data" onreset="return cbi_validate_reset(this)" onsubmit="return cbi_validate_form(this, '<%:Some fields are invalid, cannot save values!%>')"<%=
+       attr("data-strings", luci.util.serialize_json({
+               label = {
+                       choose = translate('-- Please choose --'),
+                       custom = translate('-- custom --'),
+               },
+               path = {
+                       resource = resource,
+                       browser  = url("admin/filebrowser")
+               }
+       }))
+%>>
+       <div>
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="cbi.submit" value="1" />
+               <input type="submit" value="<%:Save%>" class="hidden" />
+       </div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/ipaddr.htm b/package/luci/modules/luci-base/luasrc/view/cbi/ipaddr.htm
new file mode 100644 (file)
index 0000000..1c924e1
--- /dev/null
@@ -0,0 +1,27 @@
+<%+cbi/valueheader%>
+       <script type="text/javascript">
+               function switchToCIDRList(ev) {
+                       var input = ev.target.previousElementSibling,
+                           usecidr = document.getElementById(input.id + '_usecidr');
+
+                       ev.preventDefault();
+
+                       usecidr.value = '1';
+                       cbi_d_update();
+               }
+       </script>
+       <input data-update="change"<%=
+               attr("id", cbid) ..
+               attr("name", cbid) ..
+               attr("type", "text") ..
+               attr("class", "cbi-input-text") ..
+               attr("value", self:cfgvalue(section) or self.default) ..
+               ifattr(self.size, "size") ..
+               ifattr(self.placeholder, "placeholder") ..
+               ifattr(self.datatype, "data-type", self.datatype) ..
+               ifattr(self.datatype, "data-optional", self.optional or self.rmempty) ..
+               ifattr(self.combobox_manual, "data-manual", self.combobox_manual) ..
+               ifattr(#self.keylist > 0, "data-choices", { self.keylist, self.vallist })
+       %> /><!--
+       --><button class="cbi-button cbi-button-neutral" title="<%:Switch to CIDR list notation%>" aria-label="<%:Switch to CIDR list notation%>" onclick="switchToCIDRList(event)">…</button>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm
new file mode 100644 (file)
index 0000000..34d02ee
--- /dev/null
@@ -0,0 +1,43 @@
+<%
+       local i, key
+       local br = self.orientation == "horizontal" and '&#160;' or '<br />'
+%>
+
+<%+cbi/valueheader%>
+<% if self.widget == "select" then %>
+       <select class="cbi-input-select" data-update="change"<%=
+               attr("id", cbid) ..
+               attr("name", cbid) ..
+               ifattr(self.size, "size")
+       %>>
+               <% for i, key in pairs(self.keylist) do -%>
+                       <option<%=
+                               attr("id", cbid.."-"..key) ..
+                               attr("value", key) ..
+                               attr("data-index", i) ..
+                               attr("data-depends", self:deplist2json(section, self.deplist[i])) ..
+                               ifattr(tostring(self:cfgvalue(section) or self.default) == key, "selected", "selected")
+                       %>><%=pcdata(self.vallist[i])%></option>
+               <%- end %>
+       </select>
+<% elseif self.widget == "radio" then %>
+       <div>
+               <% for i, key in pairs(self.keylist) do %>
+                       <label<%=
+                               attr("data-index", i) ..
+                               attr("data-depends", self:deplist2json(section, self.deplist[i]))
+                       %>>
+                               <input class="cbi-input-radio" data-update="click change" type="radio"<%=
+                                       attr("id", cbid.."-"..key) ..
+                                       attr("name", cbid) ..
+                                       attr("value", key) ..
+                                       ifattr((self:cfgvalue(section) or self.default) == key, "checked", "checked")
+                               %> />
+                               <label<%= attr("for", cbid.."-"..key)%>></label>
+                               <%=pcdata(self.vallist[i])%>
+                       </label>
+                       <% if i == self.size then write(br) end %>
+               <% end %>
+       </div>
+<% end %>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/map.htm b/package/luci/modules/luci-base/luasrc/view/cbi/map.htm
new file mode 100644 (file)
index 0000000..cda4d35
--- /dev/null
@@ -0,0 +1,40 @@
+<%- if firstmap and messages then local msg; for _, msg in ipairs(messages) do -%>
+       <div class="alert-message warning"><%=pcdata(msg)%></div>
+<%- end end -%>
+
+<div class="cbi-map" id="cbi-<%=self.config%>">
+       <% if self.title and #self.title > 0 then %>
+               <h2 name="content"><%=self.title%></h2>
+       <% end %>
+       <% if self.description and #self.description > 0 then %>
+               <div class="cbi-map-descr"><%=self.description%></div>
+       <% end %>
+       <% if self.tabbed then %>
+               <div>
+                       <% for i, section in ipairs(self.children) do
+                              tab = section.section or section.sectiontype %>
+                               <div class="cbi-tabcontainer"<%=
+                                       attr("id", "container.m-%s.%s" %{ self.config, tab }) ..
+                                       attr("data-tab", tab) ..
+                                       attr("data-tab-title", section.title or tab)
+                               %>>
+                                       <% section:render() %>
+                               </div>
+                       <% end %>
+               </div>
+
+               <% if not self.save then -%>
+                       <div class="cbi-section-error">
+                               <% for _, section in ipairs(self.children) do %>
+                                       <% if section.error and section.error[section.section] then -%>
+                                               <ul><li>
+                                                       <%:One or more invalid/required values on tab%>:&nbsp;<%=section.title or section.section or section.sectiontype%>
+                                               </li></ul>
+                                       <%- end %>
+                               <% end %>
+                       </div>
+               <%- end %>
+       <% else %>
+               <%- self:render_children() %>
+       <% end %>
+</div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm
new file mode 100644 (file)
index 0000000..db17450
--- /dev/null
@@ -0,0 +1,43 @@
+<%
+       local i, key
+       local v = self:valuelist(section) or {}
+-%>
+
+<%+cbi/valueheader%>
+<% if self.widget == "select" then %>
+       <select class="cbi-input-select" multiple="multiple" data-update="click change"<%=
+               attr("id", cbid) ..
+               attr("name", cbid) ..
+               ifattr(self.size, "size")
+       %>>
+               <% for i, key in pairs(self.keylist) do -%>
+                       <option<%=
+                               attr("id", cbid.."-"..key) ..
+                               attr("value", key) ..
+                               attr("data-index", i) ..
+                               attr("data-depends", self:deplist2json(section, self.deplist[i])) ..
+                               ifattr(luci.util.contains(v, key), "selected", "selected")
+                       %>><%=pcdata(self.vallist[i])%></option>
+               <%- end %>
+       </select>
+<% elseif self.widget == "checkbox" then %>
+       <div>
+               <% for i, key in pairs(self.keylist) do %>
+                       <label<%=
+                               attr("data-index", i) ..
+                               attr("data-depends", self:deplist2json(section, self.deplist[i]))
+                       %>>
+                               <input class="cbi-input-checkbox" type="checkbox" data-update="click change"<%=
+                                       attr("id", cbid.."-"..key) ..
+                                       attr("name", cbid) ..
+                                       attr("value", key) ..
+                                       ifattr(luci.util.contains(v, key), "checked", "checked")
+                               %> />
+                               <label<%= attr("for", cbid.."-"..key)%>></label>
+                               <%=pcdata(self.vallist[i])%>
+                       </label>
+                       <% if self.size and (i % self.size) == 0 then write('<br />') end %>
+               <% end %>
+       </div>
+<% end %>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm
new file mode 100644 (file)
index 0000000..f23e51d
--- /dev/null
@@ -0,0 +1,91 @@
+<%+cbi/valueheader%>
+
+<%-
+       local utl = require "luci.util"
+       local net = require "luci.model.network".init()
+       local cbeid = luci.cbi.FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option
+
+       local iface
+       local ifaces = net:get_interfaces()
+       local value
+
+       if self.map:formvalue(cbeid) == "1" then
+               value = self:formvalue(section) or self.default or ""
+       else
+               value = self:cfgvalue(section) or self.default
+       end
+
+       local checked = { }
+
+       if value then
+               for value in utl.imatch(value) do
+                       for value in utl.imatch(value) do
+                               checked[value] = true
+                       end
+               end
+       else
+               local n = self.network and net:get_network(self.network)
+               if n then
+                       local a = n:is_alias()
+                       if a then
+                               checked['@' .. a] = true
+                       else
+                               local i
+                               for _, i in ipairs(n:get_interfaces() or { n:get_interface() }) do
+                                       checked[i:name()] = true
+                               end
+                       end
+               end
+       end
+-%>
+
+<input type="hidden" name="<%=cbeid%>" value="1" />
+
+<div class="cbi-dropdown" display-items="10" placeholder="<%:-- please select -- %>"<%=
+       attr("name", cbid) ..
+       ifattr(self.widget == "checkbox", "multiple", "multiple") ..
+       ifattr(self.widget == "checkbox", "optional", "optional")
+%>>
+       <script type="item-template"><!--
+               <li data-value="{{value}}">
+                       <img title="<%:Custom Interface%>: &quot;{{value}}&quot;" src="<%=resource%>/icons/ethernet_disabled.png" />
+                       <span class="hide-open">{{value}}</span>
+                       <span class="hide-close"><%:Custom Interface%>: "{{value}}"</span>
+               </li>
+       --></script>
+       <ul>
+               <% for _, iface in ipairs(ifaces) do
+                       if (not self.noaliases  or iface:type() ~= "alias") and
+                          (not self.nobridges  or not iface:is_bridge()) and
+                          (not self.noinactive or iface:is_up()) and
+                          iface:name() ~= self.exclude
+                       then %>
+               <li<%=
+                       attr("data-value", iface:name()) ..
+                       ifattr(checked[iface:name()], "selected", "selected")
+               %>>
+                       <img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+                       <span class="hide-open"><%=pcdata(iface:name())%></span>
+                       <span class="hide-close">
+                               <%=pcdata(iface:get_i18n())%>
+                               <% local ns = iface:get_networks(); if #ns > 0 then %>(
+                                       <%- local i, n; for i, n in ipairs(ns) do -%>
+                                               <%-= (i>1) and ', ' -%>
+                                               <a href="<%=n:adminlink()%>"><%=n:name()%></a>
+                                       <%- end -%>
+                               )<% end %>
+                       </span>
+               </li>
+               <% end end %>
+               <% if not self.nocreate then %>
+               <li data-value="">
+                       <img title="<%:Custom Interface%>" src="<%=resource%>/icons/ethernet_disabled.png" />
+                       <span><%:Custom Interface%>:</span>
+                       <input type="password" style="display:none" />
+                       <input class="create-item-input" type="text" />
+               </li>
+               <% end %>
+       </ul>
+</div>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm
new file mode 100644 (file)
index 0000000..4fd8411
--- /dev/null
@@ -0,0 +1,27 @@
+<%+cbi/valueheader%>
+
+<%-
+       local value = self:formvalue(section)
+       if not value or value == "-" then
+               value = self:cfgvalue(section) or self.default
+       end
+
+       local nwm = require "luci.model.network".init()
+       local net = nwm:get_network(value)
+-%>
+
+<% if net then %>
+<span class="ifacebadge"><%=net:name()%>:
+       <%
+               local empty = true
+               for _, iface in ipairs(net:get_interfaces() or { net:get_interface() }) do
+                       if not iface:is_bridge() then
+                               empty = false
+        %>
+               <img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+       <% end end %>
+       <% if empty then %><em><%:(no interfaces attached)%></em><% end %>
+</span>
+<% end %>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm
new file mode 100644 (file)
index 0000000..3ee4274
--- /dev/null
@@ -0,0 +1,81 @@
+<%+cbi/valueheader%>
+
+<%-
+       local utl = require "luci.util"
+       local nwm = require "luci.model.network".init()
+
+       local net, iface
+       local networks = nwm:get_networks()
+       local value = self:formvalue(section)
+
+       self.cast = nil
+
+       if not value or value == "-" then
+               value = self:cfgvalue(section) or self.default
+       end
+
+       local checked = { }
+       for value in utl.imatch(value) do
+               checked[value] = true
+       end
+-%>
+
+<div class="cbi-dropdown" display-items="10" placeholder="<%:-- please select -- %>"<%=
+       attr("name", cbid) ..
+       ifattr(self.widget == "checkbox", "multiple", "multiple") ..
+       ifattr(self.widget == "checkbox", "optional", "optional")
+%>>
+       <script type="item-template"><!--
+               <li data-value="{{value}}">
+                       <span class="ifacebadge" style="background:repeating-linear-gradient(45deg,rgba(204,204,204,0.5),rgba(204,204,204,0.5) 5px,rgba(255,255,255,0.5) 5px,rgba(255,255,255,0.5) 10px)">
+                               {{value}}: <em>(<%:create%>)</em>
+                       </span>
+               </li>
+       --></script>
+       <ul>
+               <% if self.widget ~= "checkbox" then %>
+               <li data-value=""<%= ifattr(not value, "selected", "selected") %>>
+                       <em><%:unspecified%></em>
+               </li>
+               <% end %>
+
+               <% for _, net in ipairs(networks) do
+                      if (net:name() ~= "loopback") and
+                             (net:name() ~= self.exclude) and
+                             (not self.novirtual or not net:is_virtual())
+                          then %>
+               <li<%= attr("data-value", net:name()) .. ifattr(checked[net:name()], "selected", "selected") %>>
+                       <span class="ifacebadge"><%=net:name()%>:
+                               <%
+                                       local empty = true
+                                       for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
+                                               if not iface:is_bridge() then
+                                                       empty = false
+                               -%>
+                                       <img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+                               <%- end end %>
+                               <% if empty then %>
+                                       <em class="hide-close"><%:(no interfaces attached)%></em>
+                                       <em class="hide-open">-</em>
+                               <% end %>
+                       </span>
+               </li>
+               <% end end %>
+
+               <% if not self.nocreate then %>
+               <li data-value="-"<%= ifattr(not value and self.widget ~= "checkbox", "selected", "selected") %>>
+                       <em>
+                               <%- if self.widget == "checkbox" then -%>
+                                       <%:create:%>
+                               <%- else -%>
+                                       <%:unspecified -or- create:%>
+                               <%- end -%>
+                       </em>
+                       <input style="display:none" type="password" />
+                       <input class="create-item-input" type="text" />
+               </li>
+               <% end %>
+       </ul>
+</div>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm
new file mode 100644 (file)
index 0000000..14232e3
--- /dev/null
@@ -0,0 +1,29 @@
+<% if self:cfgvalue(self.section) then section = self.section %>
+       <div class="cbi-section">
+               <% if self.title and #self.title > 0 then -%>
+                       <legend><%=self.title%></legend>
+               <%- end %>
+               <% if self.description and #self.description > 0 then -%>
+                       <div class="cbi-section-descr"><%=self.description%></div>
+               <%- end %>
+               <% if self.addremove then -%>
+                       <div class="cbi-section-remove right">
+                               <input type="submit" class="cbi-button" name="cbi.rns.<%=self.config%>.<%=section%>" value="<%:Delete%>" />
+                       </div>
+               <%- end %>
+               <div class="cbi-section-node<% if self.tabs then %> cbi-section-node-tabbed<% end %>" id="cbi-<%=self.config%>-<%=section%>">
+                       <%+cbi/ucisection%>
+               </div>
+       </div>
+<% elseif self.addremove then %>
+       <% if self.template_addremove then include(self.template_addremove) else -%>
+       <div class="cbi-section" id="cbi-<%=self.config%>-<%=self.section%>">
+               <% if self.title and #self.title > 0 then -%>
+                       <legend><%=self.title%></legend>
+               <%- end %>
+               <div class="cbi-section-descr"><%=self.description%></div>
+               <input type="submit" class="cbi-button cbi-button-add" name="cbi.cns.<%=self.config%>.<%=self.section%>" value="<%:Add%>" />
+       </div>
+       <%- end %>
+<% end %>
+<!-- /nsection -->
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm
new file mode 100644 (file)
index 0000000..7230719
--- /dev/null
@@ -0,0 +1,37 @@
+<div class="cbi-section">
+       <% if self.title and #self.title > 0 then -%>
+               <legend><%=self.title%></legend>
+       <%- end %>
+       <% if self.description and #self.description > 0 then -%>
+               <div class="cbi-section-descr"><%=self.description%></div>
+       <%- end %>
+       <div class="cbi-section-node">
+               <div id="cbi-<%=self.config%>-<%=tostring(self):sub(8)%>">
+                       <% self:render_children(1, scope or {}) %>
+               </div>
+               <% if self.error and self.error[1] then -%>
+                       <div class="cbi-section-error">
+                               <ul><% for _, e in ipairs(self.error[1]) do -%>
+                                       <li>
+                                               <%- if e == "invalid" then -%>
+                                                       <%:One or more fields contain invalid values!%>
+                                               <%- elseif e == "missing" then -%>
+                                                       <%:One or more required fields have no value!%>
+                                               <%- else -%>
+                                                       <%=pcdata(e)%>
+                                               <%- end -%>
+                                       </li>
+                               <%- end %></ul>
+                       </div>
+               <%- end %>
+       </div>
+</div>
+<%-
+       if type(self.hidden) == "table" then
+               for k, v in pairs(self.hidden) do
+-%>
+       <input type="hidden" id="<%=k%>" name="<%=k%>" value="<%=pcdata(v)%>" />
+<%-
+               end
+       end
+%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm b/package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm
new file mode 100644 (file)
index 0000000..3e10724
--- /dev/null
@@ -0,0 +1,77 @@
+<%
+       if not self.embedded then
+               %><form method="post" enctype="multipart/form-data" action="<%=REQUEST_URI%>">
+                       <input type="hidden" name="token" value="<%=token%>" />
+                       <input type="hidden" name="cbi.submit" value="1" /><%
+       end
+
+       %><div class="cbi-map" id="cbi-<%=self.config%>"><%
+
+       if self.title and #self.title > 0 then
+               %><h2 name="content"><%=self.title%></h2><%
+       end
+
+       if self.description and #self.description > 0 then
+               %><div class="cbi-map-descr"><%=self.description%></div><%
+       end
+
+       self:render_children()
+
+       %></div><%
+
+       if self.message then
+               %><div class="alert-message notice"><%=self.message%></div><%
+       end
+
+       if self.errmessage then
+               %><div class="alert-message warning"><%=self.errmessage%></div><%
+       end
+
+       if not self.embedded then
+               if type(self.hidden) == "table" then
+                       local k, v
+                       for k, v in pairs(self.hidden) do
+                               %><input type="hidden" id="<%=k%>" name="<%=k%>" value="<%=pcdata(v)%>" /><%
+                       end
+               end
+
+               local display_back   = (redirect)
+               local display_cancel = (self.cancel ~= false and self.on_cancel)
+               local display_skip   = (self.flow and self.flow.skip)
+               local display_submit = (self.submit ~= false)
+               local display_reset  = (self.reset ~= false)
+
+               if display_back or display_cancel or display_skip or display_submit or display_reset then
+                       %><div class="cbi-page-actions"><%
+
+                       if display_back then
+                               %><input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" /> <%
+                       end
+
+                       if display_cancel then
+                               local label = pcdata(self.cancel or translate("Cancel"))
+                               %><input class="cbi-button cbi-button-link" type="button" value="<%=label%>" onclick="cbi_submit(this, 'cbi.cancel')" /> <%
+                       end
+
+                       if display_skip then
+                               %><input class="cbi-button cbi-button-neutral" type="button" value="<%:Skip%>" onclick="cbi_submit(this, 'cbi.skip')" /> <%
+                       end
+
+                       if display_submit then
+                               local label = pcdata(self.submit or translate("Submit"))
+                               %><input class="cbi-button cbi-button-save" type="submit" value="<%=label%>" /> <%
+                       end
+
+                       if display_reset then
+                               local label = pcdata(self.reset or translate("Reset"))
+                               %><input class="cbi-button cbi-button-reset" type="reset" value="<%=label%>" /> <%
+                       end
+
+                       %></div><%
+               end
+
+               %></form><%
+       end
+%>
+
+<script type="text/javascript">cbi_init();</script>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm
new file mode 100644 (file)
index 0000000..7fcb835
--- /dev/null
@@ -0,0 +1,14 @@
+<% for _, tab in ipairs(self.tab_names) do data = self.tabs[tab] %>
+       <div class="cbi-tabcontainer"<%=
+               attr("id", "container.%s.%s.%s" %{ self.config, section, tab }) ..
+               attr("data-tab", tab) ..
+               attr("data-tab-title", data.title) ..
+               attr("data-tab-active", tostring(tab == self.selected_tab))
+       %>>
+               <% if data.description then %>
+                       <div class="cbi-tab-descr"><%=data.description%></div>
+               <% end %>
+
+               <% self:render_tab(tab, section, scope or {}) %>
+       </div>
+<% end %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm
new file mode 100644 (file)
index 0000000..11c2206
--- /dev/null
@@ -0,0 +1,203 @@
+<%-
+local rowcnt = 0
+
+function rowstyle()
+       rowcnt = rowcnt + 1
+       if rowcnt % 2 == 0 then
+               return " cbi-rowstyle-1"
+       else
+               return " cbi-rowstyle-2"
+       end
+end
+
+function width(o)
+       if o.width then
+               if type(o.width) == 'number' then
+                       return ' style="width:%dpx"' % o.width
+               end
+               return ' style="width:%s"' % o.width
+       end
+       return ''
+end
+
+local has_titles = false
+local has_descriptions = false
+
+local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous"
+local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title", translate("Name"))
+
+local i, k
+for i, k in pairs(self.children) do
+       if not k.typename then
+               k.typename = k.template and k.template:gsub("^.+/", "") or ""
+       end
+
+       if not has_titles and k.title and #k.title > 0 then
+               has_titles = true
+       end
+
+       if not has_descriptions and k.description and #k.description > 0 then
+               has_descriptions = true
+       end
+end
+
+function render_titles()
+       if not has_titles then
+               return
+       end
+
+       %><div class="tr cbi-section-table-titles <%=anonclass%>"<%=titlename%>><%
+
+       local i, k
+       for i, k in ipairs(self.children) do
+               if not k.optional then
+                       %><div class="th cbi-section-table-cell"<%=
+                               width(k) .. attr('data-type', k.typename) %>><%
+
+                       if k.titleref then
+                               %><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%
+                       end
+
+                       write(k.title)
+
+                       if k.titleref then
+                               %></a><%
+                       end
+
+                       %></div><%
+               end
+       end
+
+       if self.sortable or self.extedit or self.addremove then
+               %><div class="th cbi-section-table-cell cbi-section-actions"></div><%
+       end
+
+       %></div><%
+
+       rowcnt = rowcnt + 1
+end
+
+function render_descriptions()
+       if not has_descriptions then
+               return
+       end
+
+       %><div class="tr cbi-section-table-descr <%=anonclass%>"><%
+
+       local i, k
+       for i, k in ipairs(self.children) do
+               if not k.optional then
+                       %><div class="th cbi-section-table-cell"<%=
+                               width(k) .. attr("data-type", k.typename) %>><%
+
+                       write(k.description)
+
+                       %></div><%
+               end
+       end
+
+       if self.sortable or self.extedit or self.addremove then
+               %><div class="th cbi-section-table-cell cbi-section-actions"></div><%
+       end
+
+       %></div><%
+
+       rowcnt = rowcnt + 1
+end
+
+-%>
+
+<!-- tblsection -->
+<div class="cbi-section cbi-tblsection" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
+       <% if self.title and #self.title > 0 then -%>
+               <h3><%=self.title%></h3>
+       <%- end %>
+       <%- if self.sortable then -%>
+               <input type="hidden" id="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" name="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" value="" />
+       <%- end -%>
+       <div class="cbi-section-descr"><%=self.description%></div>
+       <div class="table cbi-section-table">
+               <%-
+                       render_titles()
+                       render_descriptions()
+
+                       local isempty, section, i, k = true, nil, nil
+                   for i, k in ipairs(self:cfgsections()) do
+                               isempty = false
+                               section = k
+
+                               local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k)
+                               local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname, true)
+                               local colorclass = (self.extedit or self.rowcolors) and rowstyle() or ""
+                               local scope = {
+                                       valueheader = "cbi/cell_valueheader",
+                                       valuefooter = "cbi/cell_valuefooter"
+                               }
+               -%>
+               <div class="tr cbi-section-table-row<%=colorclass%>" id="cbi-<%=self.config%>-<%=section%>"<%=sectiontitle%>>
+                       <%-
+                               local node
+                               for k, node in ipairs(self.children) do
+                                       if not node.optional then
+                                               node:render(section, scope or {})
+                                       end
+                               end
+                       -%>
+
+                       <%- if self.sortable or self.extedit or self.addremove then -%>
+                               <div class="td cbi-section-table-cell nowrap cbi-section-actions">
+                                       <div>
+                                               <%- if self.sortable then -%>
+                                                       <input class="cbi-button cbi-button-up" type="button" value="<%:Up%>" onclick="return cbi_row_swap(this, true, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" title="<%:Move up%>" />
+                                                       <input class="cbi-button cbi-button-down" type="button" value="<%:Down%>" onclick="return cbi_row_swap(this, false, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" title="<%:Move down%>" />
+                                               <% end; if self.extedit then -%>
+                                                       <input class="cbi-button cbi-button-edit" type="button" value="<%:Edit%>"
+                                                       <%- if type(self.extedit) == "string" then
+                                                       %> onclick="location.href='<%=self.extedit:format(section)%>'"
+                                                       <%- elseif type(self.extedit) == "function" then
+                                                       %> onclick="location.href='<%=self:extedit(section)%>'"
+                                                       <%- end
+                                                       %> alt="<%:Edit%>" title="<%:Edit%>" />
+                                               <% end; if self.addremove then %>
+                                                       <input class="cbi-button cbi-button-remove" type="submit" value="<%:Delete%>"  onclick="this.form.cbi_state='del-section'; return true" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" />
+                                               <%- end -%>
+                                       </div>
+                               </div>
+                       <%- end -%>
+               </div>
+               <%- end -%>
+
+               <%- if isempty then -%>
+               <div class="tr cbi-section-table-row placeholder">
+                       <div class="td"><em><%:This section contains no values yet%></em></div>
+               </div>
+               <%- end -%>
+       </div>
+
+       <% if self.error then %>
+               <div class="cbi-section-error">
+                       <ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
+                               <li><%=pcdata(e):gsub("\n","<br />")%></li>
+                       <%- end end %></ul>
+               </div>
+       <% end %>
+
+       <%- if self.addremove then -%>
+               <% if self.template_addremove then include(self.template_addremove) else -%>
+               <div class="cbi-section-create cbi-tblsection-create">
+                       <% if self.anonymous then %>
+                               <input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" title="<%:Add%>" />
+                       <% else %>
+                               <% if self.invalid_cts then -%>
+                                       <div class="cbi-section-error"><%:Invalid%></div>
+                               <%- end %>
+                               <div>
+                                       <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
+                               </div>
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
+                       <% end %>
+               </div>
+               <%- end %>
+       <%- end -%>
+</div>
+<!-- /tblsection -->
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm
new file mode 100644 (file)
index 0000000..8f3b7f0
--- /dev/null
@@ -0,0 +1,52 @@
+<div class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
+       <% if self.title and #self.title > 0 then -%>
+               <legend><%=self.title%></legend>
+       <%- end %>
+       <% if self.error_msg and #self.error_msg > 0 then -%>
+               <div class="cbi-section-error">
+                       <%=self.error_msg%>
+               </div>
+       <%- end %>
+       <% if self.description and #self.description > 0 then -%>
+               <div class="cbi-section-descr"><%=self.description%></div>
+       <%- end %>
+       <% local isempty = true for i, k in ipairs(self:cfgsections()) do -%>
+               <% if self.addremove then -%>
+                       <div class="cbi-section-remove right">
+                               <input type="submit" name="cbi.rts.<%=self.config%>.<%=k%>" onclick="this.form.cbi_state='del-section'; return true" value="<%:Delete%>" class="cbi-button" />
+                       </div>
+               <%- end %>
+
+               <%- section = k; isempty = false -%>
+
+               <% if not self.anonymous then -%>
+                       <h3><%=section:upper()%></h3>
+               <%- end %>
+
+               <div class="cbi-section-node<% if self.tabs then %> cbi-section-node-tabbed<% end %>" id="cbi-<%=self.config%>-<%=section%>">
+                       <%+cbi/ucisection%>
+               </div>
+       <%- end %>
+
+       <% if isempty then -%>
+               <em><%:This section contains no values yet%><br /><br /></em>
+       <%- end %>
+
+       <% if self.addremove then -%>
+               <% if self.template_addremove then include(self.template_addremove) else -%>
+               <div class="cbi-section-create">
+                       <% if self.anonymous then -%>
+                               <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+                       <%- else -%>
+                               <% if self.invalid_cts then -%>
+                                       <div class="cbi-section-error"><%:Invalid%></div>
+                               <%- end %>
+                               <div>
+                                       <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" />
+                               </div>
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
+                       <%- end %>
+               </div>
+               <%- end %>
+       <%- end %>
+</div>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm
new file mode 100644 (file)
index 0000000..d1e9e66
--- /dev/null
@@ -0,0 +1,5 @@
+<%+cbi/valueheader%>
+       <textarea class="cbi-input-textarea" <% if not self.size then %> style="width: 100%"<% else %> cols="<%=self.size%>"<% end %> data-update="change"<%= attr("name", cbid) .. attr("id", cbid) .. ifattr(self.rows, "rows") .. ifattr(self.wrap, "wrap")  .. ifattr(self.readonly, "readonly") %>>
+       <%-=pcdata(self:cfgvalue(section))-%>
+       </textarea>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm
new file mode 100644 (file)
index 0000000..8fa11d6
--- /dev/null
@@ -0,0 +1,56 @@
+<%-
+       if type(self.hidden) == "table" then
+               for k, v in pairs(self.hidden) do
+-%>
+       <input type="hidden" id="<%=k%>" name="<%=k%>" value="<%=pcdata(v)%>" />
+<%-
+               end
+       end
+%>
+
+<% if self.tabs then %>
+       <%+cbi/tabcontainer%>
+<% else %>
+       <% self:render_children(section, scope or {}) %>
+<% end %>
+
+<% if self.error and self.error[section] then -%>
+       <div class="cbi-section-error" data-index="<%=#self.children + 1%>">
+               <ul><% for _, e in ipairs(self.error[section]) do -%>
+                       <li>
+                               <%- if e == "invalid" then -%>
+                                       <%:One or more fields contain invalid values!%>
+                               <%- elseif e == "missing" then -%>
+                                       <%:One or more required fields have no value!%>
+                               <%- else -%>
+                                       <%=pcdata(e)%>
+                               <%- end -%>
+                       </li>
+               <%- end %></ul>
+       </div>
+<%- end %>
+
+<% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %>
+       <div class="cbi-optionals" data-index="<%=#self.children + 1%>">
+               <%-
+               if self.dynamic then
+                       local keys, vals, name, opt = { }, { }
+                       for name, opt in pairs(self.optionals[section]) do
+                               keys[#keys+1] = name
+                               vals[#vals+1] = opt.title
+                       end
+               -%>
+                       <input type="text" id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-type="uciname" data-optional="true"<%=
+                               ifattr(#keys > 0, "data-choices", luci.util.json_encode({keys, vals}))
+                       %> />
+               <%- else -%>
+                       <select id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-optionals="true">
+                               <option><%: -- Additional Field -- %></option>
+                               <% for key, val in pairs(self.optionals[section]) do -%>
+                                       <option id="cbi-<%=self.config.."-"..section.."-"..val.option%>" value="<%=val.option%>" data-index="<%=val.index%>" data-depends="<%=pcdata(val:deplist2json(section))%>"><%=striptags(val.title)%></option>
+                               <%- end %>
+                       </select>
+               <%- end -%>
+               <input type="submit" class="cbi-button cbi-button-fieldadd" value="<%:Add%>" />
+       </div>
+<% end %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/upload.htm b/package/luci/modules/luci-base/luasrc/view/cbi/upload.htm
new file mode 100644 (file)
index 0000000..3c3d82b
--- /dev/null
@@ -0,0 +1,24 @@
+<%
+       local t = require("luci.tools.webadmin")
+       local v = self:cfgvalue(section)
+       local s = v and nixio.fs.stat(v)
+-%>
+<%+cbi/valueheader%>
+       <% if s then %>
+               <%:Uploaded File%> (<%=t.byte_format(s.size)%>)
+                <% if self.unsafeupload then %>
+                   <input type="hidden"<%= attr("value", v) .. attr("name", cbid) .. attr("id", cbid) %> />
+                   <input class="cbi-button cbi-button-image" type="image" value="<%:Replace entry%>" name="cbi.rlf.<%=section .. "." .. self.option%>" alt="<%:Replace entry%>" title="<%:Replace entry%>" src="<%=resource%>/cbi/reload.gif" />
+                <% end %>
+       <% end %>
+
+        <% if not self.unsafeupload then %>
+               <input type="hidden"<%= attr("value", v) .. attr("name", "cbi.rlf." .. section .. "." .. self.option) .. attr("id", "cbi.rlf." .. section .. "." .. self.option) %> />
+       <% end %>
+
+       <% if (not s) or (s and not self.unsafeupload) then %>
+               <input class="cbi-input-file" type="file"<%= attr("name", cbid) .. attr("id", cbid) %> />
+       <% end %>
+       <input type="text" class="cbi-input-text" data-update="change"<%=
+               attr("name", cbid .. ".textbox") .. attr("id", cbid .. ".textbox") .. attr("value", luci.cbi.AbstractValue.cfgvalue(self, section) or self.default) .. ifattr(self.size, "size") .. ifattr(self.placeholder, "placeholder") .. ifattr(self.readonly, "readonly") .. ifattr(self.maxlength, "maxlength") %> />
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/value.htm b/package/luci/modules/luci-base/luasrc/view/cbi/value.htm
new file mode 100644 (file)
index 0000000..144853f
--- /dev/null
@@ -0,0 +1,26 @@
+<%+cbi/valueheader%>
+       <%- if self.password then -%>
+               <input type="password" style="position:absolute; left:-100000px" aria-hidden="true" tabindex="-1"<%=
+                       attr("name", "password." .. cbid)
+               %> />
+       <%- end -%>
+       <input data-update="change"<%=
+               attr("id", cbid) ..
+               attr("name", cbid) ..
+               attr("type", self.password and "password" or "text") ..
+               attr("class", self.password and "cbi-input-password" or "cbi-input-text") ..
+               attr("value", self:cfgvalue(section) or self.default) ..
+               ifattr(self.password, "autocomplete", "new-password") ..
+               ifattr(self.size, "size") ..
+               ifattr(self.placeholder, "placeholder") ..
+               ifattr(self.readonly, "readonly") ..
+               ifattr(self.maxlength, "maxlength") ..
+               ifattr(self.datatype, "data-type", self.datatype) ..
+               ifattr(self.datatype, "data-optional", self.optional or self.rmempty) ..
+               ifattr(self.combobox_manual, "data-manual", self.combobox_manual) ..
+               ifattr(#self.keylist > 0, "data-choices", { self.keylist, self.vallist })
+       %> />
+       <%- if self.password then -%>
+               <button class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" aria-label="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'; event.preventDefault()">∗</button>
+       <% end %>
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm
new file mode 100644 (file)
index 0000000..805312e
--- /dev/null
@@ -0,0 +1 @@
+<% include( valuefooter or "cbi/full_valuefooter" ) %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm
new file mode 100644 (file)
index 0000000..761a54a
--- /dev/null
@@ -0,0 +1 @@
+<% include( valueheader or "cbi/full_valueheader" ) %>
diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm b/package/luci/modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm
new file mode 100644 (file)
index 0000000..eeb1d5c
--- /dev/null
@@ -0,0 +1,173 @@
+<%+cbi/valueheader%>
+
+<script type="text/javascript">//<![CDATA[
+       var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>;
+       var hwmodes  = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>;
+       var htmodes  = <%= luci.http.write_json(self.iwinfo.htmodelist) %>;
+       var acs =  <%= luci.http.write_json(self.hostapd_acs or 0) %>;
+
+       var channels = {
+               '11g': [
+                       'auto', 'auto', true
+               ],
+               '11a': [
+                       'auto', 'auto', true
+               ]
+       };
+
+       if (acs < 1) {
+               channels[(freqlist[freqlist.length - 1].mhz > 2484) ? '11a' : '11g'].length = 0;
+       }
+
+       for (var i = 0; i < freqlist.length; i++)
+               channels[(freqlist[i].mhz > 2484) ? '11a' : '11g'].push(
+                       freqlist[i].channel,
+                       '%d (%d MHz)'.format(freqlist[i].channel, freqlist[i].mhz),
+                       !freqlist[i].restricted
+               );
+
+       var modes = [
+               '', 'Legacy', true,
+               'n', 'N', hwmodes.n,
+               'ac', 'AC', hwmodes.ac
+       ];
+
+       var htmodes = {
+               '':   [
+                       '', '-', true
+               ],
+               'n':  [
+                       'HT20', '20 MHz', htmodes.HT20,
+                       'HT40', '40 MHz', htmodes.HT40
+               ],
+               'ac': [
+                       'VHT20', '20 MHz', htmodes.VHT20,
+                       'VHT40', '40 MHz', htmodes.VHT40,
+                       'VHT80', '80 MHz', htmodes.VHT80,
+                       'VHT160', '160 MHz', htmodes.VHT160
+               ]
+       };
+
+       var bands = {
+               '':   [
+                       '11g', '2.4 GHz', (channels['11g'].length > 3),
+                       '11a', '5 GHz', (channels['11a'].length > 3)
+               ],
+               'n':  [
+                       '11g', '2.4 GHz', (channels['11g'].length > 3),
+                       '11a', '5 GHz', (channels['11a'].length > 3)
+               ],
+               'ac': [
+                       '11a', '5 GHz', true
+               ]
+       };
+
+       function cbi_set_values(sel, vals)
+       {
+               if (sel.vals)
+                       sel.vals.selected = sel.selectedIndex;
+
+               while (sel.options[0])
+                       sel.remove(0);
+
+               for (var i = 0; vals && i < vals.length; i += 3)
+               {
+                       if (!vals[i+2])
+                               continue;
+
+                       var opt = document.createElement('option');
+                           opt.value = vals[i+0];
+                           opt.text  = vals[i+1];
+
+                       sel.add(opt);
+               }
+
+               if (!isNaN(vals.selected))
+                       sel.selectedIndex = vals.selected;
+
+               sel.parentNode.style.display = (sel.options.length <= 1) ? 'none' : '';
+               sel.vals = vals;
+       }
+
+       function cbi_toggle_wifi_mode(id)
+       {
+               cbi_toggle_wifi_htmode(id);
+               cbi_toggle_wifi_band(id);
+       }
+
+       function cbi_toggle_wifi_htmode(id)
+       {
+               var mode = document.getElementById(id + '.mode');
+               var bwdt = document.getElementById(id + '.htmode');
+
+               cbi_set_values(bwdt, htmodes[mode.value]);
+       }
+
+       function cbi_toggle_wifi_band(id)
+       {
+               var mode = document.getElementById(id + '.mode');
+               var band = document.getElementById(id + '.band');
+
+               cbi_set_values(band, bands[mode.value]);
+               cbi_toggle_wifi_channel(id);
+       }
+
+       function cbi_toggle_wifi_channel(id)
+       {
+               var band = document.getElementById(id + '.band');
+               var chan = document.getElementById(id + '.channel');
+
+               cbi_set_values(chan, channels[band.value]);
+       }
+
+       function cbi_init_wifi(id)
+       {
+               var mode = document.getElementById(id + '.mode');
+               var band = document.getElementById(id + '.band');
+               var chan = document.getElementById(id + '.channel');
+               var bwdt = document.getElementById(id + '.htmode');
+
+               cbi_set_values(mode, modes);
+
+               if (/VHT20|VHT40|VHT80|VHT160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
+                       mode.value = 'ac';
+               else if (/HT20|HT40/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
+                       mode.value = 'n';
+               else
+                       mode.value = '';
+
+               cbi_toggle_wifi_mode(id);
+
+               if (/a/.test(<%= luci.http.write_json(self.map:get(section, "hwmode")) %>))
+                       band.value = '11a';
+               else
+                       band.value = '11g';
+
+               cbi_toggle_wifi_band(id);
+
+               bwdt.value = <%= luci.http.write_json(self.map:get(section, "htmode")) %>;
+               chan.value = <%= luci.http.write_json(self.map:get(section, "channel")) %>;
+       }
+//]]></script>
+
+<label style="float:left; margin-right:3px">
+       <%:Mode%><br />
+       <select style="width:auto" id="<%= cbid %>.mode" name="<%= cbid %>.mode" onchange="cbi_toggle_wifi_mode('<%= cbid %>')"></select>
+</label>
+<label style="float:left; margin-right:3px">
+       <%:Band%><br />
+       <select style="width:auto" id="<%= cbid %>.band" name="<%= cbid %>.band" onchange="cbi_toggle_wifi_band('<%= cbid %>')"></select>
+</label>
+<label style="float:left; margin-right:3px">
+       <%:Channel%><br />
+       <select style="width:auto" id="<%= cbid %>.channel" name="<%= cbid %>.channel"></select>
+</label>
+<label style="float:left; margin-right:3px">
+       <%:Width%><br />
+       <select style="width:auto" id="<%= cbid %>.htmode" name="<%= cbid %>.htmode"></select>
+</label>
+<br style="clear:left" />
+
+<script type="text/javascript">cbi_init_wifi('<%= cbid %>');</script>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-base/luasrc/view/csrftoken.htm b/package/luci/modules/luci-base/luasrc/view/csrftoken.htm
new file mode 100644 (file)
index 0000000..57ac03f
--- /dev/null
@@ -0,0 +1,24 @@
+<%#
+ Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Form token mismatch%></h2>
+<br />
+
+<p class="alert-message"><%:The submitted security token is invalid or already expired!%></p>
+
+<p><%:
+       In order to prevent unauthorized access to the system, your request has
+       been blocked. Click "Continue »" below to return to the previous page.
+%></p>
+
+<hr />
+
+<p class="right">
+       <strong><a href="#" onclick="window.history.back();">Continue »</a></strong>
+</p>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/empty_node_placeholder.htm b/package/luci/modules/luci-base/luasrc/view/empty_node_placeholder.htm
new file mode 100644 (file)
index 0000000..b7e276b
--- /dev/null
@@ -0,0 +1,11 @@
+<%#
+ Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2018 Daniel F. Dickinson <cshored@thecshore.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<p>Component not present.</p>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/error404.htm b/package/luci/modules/luci-base/luasrc/view/error404.htm
new file mode 100644 (file)
index 0000000..a762f60
--- /dev/null
@@ -0,0 +1,11 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content">404 <%:Not Found%></h2>
+<p><%:Sorry, the object you requested was not found.%></p>
+<tt><%:Unable to dispatch%>: <%=url(unpack(luci.dispatcher.context.request))%></tt>
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/error500.htm b/package/luci/modules/luci-base/luasrc/view/error500.htm
new file mode 100644 (file)
index 0000000..34a52cd
--- /dev/null
@@ -0,0 +1,11 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content">500 <%:Internal Server Error%></h2>
+<p><%:Sorry, the server encountered an unexpected error.%></p>
+<pre class="error500"><%=message%></pre>
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/footer.htm b/package/luci/modules/luci-base/luasrc/view/footer.htm
new file mode 100644 (file)
index 0000000..1667d3a
--- /dev/null
@@ -0,0 +1,30 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local is_rollback_pending, rollback_time_remaining, rollback_session, rollback_token = luci.model.uci:rollback_pending()
+
+       if is_rollback_pending or trigger_apply or trigger_revert then
+               include("cbi/apply_widget")
+               cbi_apply_widget(redirect, rollback_token)
+%>
+       <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+       <script type="text/javascript">
+               document.addEventListener("DOMContentLoaded", function() {
+                       <% if trigger_apply then -%>
+                               uci_apply(true);
+                       <%- elseif trigger_revert then -%>
+                               uci_revert();
+                       <%- else -%>
+                               uci_confirm(true, Date.now() + <%=rollback_time_remaining%> * 1000);
+                       <%- end %>
+               });
+       </script>
+<%
+       end
+
+       include("themes/" .. theme .. "/footer")
+%>
diff --git a/package/luci/modules/luci-base/luasrc/view/header.htm b/package/luci/modules/luci-base/luasrc/view/header.htm
new file mode 100644 (file)
index 0000000..d68e39f
--- /dev/null
@@ -0,0 +1,24 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       if not luci.dispatcher.context.template_header_sent then
+               include("themes/" .. theme .. "/header")
+               luci.dispatcher.context.template_header_sent = true
+       end
+%>
+
+<script type="text/javascript" src="<%=resource%>/luci.js"></script>
+<script type="text/javascript">
+       L = new LuCI(<%= luci.http.write_json({
+               token       = token,
+               resource    = resource,
+               scriptname  = luci.http.getenv("SCRIPT_NAME"),
+               pathinfo    = luci.http.getenv("PATH_INFO"),
+               requestpath = luci.dispatcher.context.requestpath,
+               pollinterval    = luci.config.main.pollinterval or 5
+       }) %>);
+</script>
diff --git a/package/luci/modules/luci-base/luasrc/view/indexer.htm b/package/luci/modules/luci-base/luasrc/view/indexer.htm
new file mode 100644 (file)
index 0000000..28fc3de
--- /dev/null
@@ -0,0 +1,7 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% include("themes/" .. theme .. "/indexer") %>
\ No newline at end of file
diff --git a/package/luci/modules/luci-base/luasrc/view/lease_status.htm b/package/luci/modules/luci-base/luasrc/view/lease_status.htm
new file mode 100644 (file)
index 0000000..bbaf598
--- /dev/null
@@ -0,0 +1,102 @@
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(-1, '<%=url('admin/dhcplease_status')%>', null,
+               function(x, st)
+               {
+                       var tb = document.getElementById('lease_status_table');
+                       if (st && st[0] && tb)
+                       {
+                               var rows = [];
+
+                               for (var i = 0; i < st[0].length; i++)
+                               {
+                                       var timestr;
+
+                                       if (st[0][i].expires === false)
+                                               timestr = '<em><%:unlimited%></em>';
+                                       else if (st[0][i].expires <= 0)
+                                               timestr = '<em><%:expired%></em>';
+                                       else
+                                               timestr = String.format('%t', st[0][i].expires);
+
+                                       rows.push([
+                                               st[0][i].hostname || '?',
+                                               st[0][i].ipaddr,
+                                               st[0][i].macaddr,
+                                               timestr
+                                       ]);
+                               }
+
+                               cbi_update_table(tb, rows, '<em><%:There are no active leases.%></em>');
+                       }
+
+                       var tb6 = document.getElementById('lease6_status_table');
+                       if (st && st[1] && tb6)
+                       {
+                               tb6.parentNode.style.display = 'block';
+
+                               var rows = [];
+
+                               for (var i = 0; i < st[1].length; i++)
+                               {
+                                       var timestr;
+
+                                       if (st[1][i].expires === false)
+                                               timestr = '<em><%:unlimited%></em>';
+                                       else if (st[1][i].expires <= 0)
+                                               timestr = '<em><%:expired%></em>';
+                                       else
+                                               timestr = String.format('%t', st[1][i].expires);
+
+                                       var name = st[1][i].hostname,
+                                           hint = st[1][i].host_hint;
+
+                                       rows.push([
+                                               hint ? '%h (%h)'.format(name || '?', hint) : (name || '?'),
+                                               st[1][i].ip6addr,
+                                               st[1][i].duid,
+                                               timestr
+                                       ]);
+                               }
+
+                               cbi_update_table(tb6, rows, '<em><%:There are no active leases.%></em>');
+                       }
+               }
+       );
+//]]></script>
+
+<div class="cbi-section">
+       <h3><%:Active DHCP Leases%></h3>
+       <div class="table" id="lease_status_table">
+               <div class="tr table-titles">
+                       <div class="th"><%:Hostname%></div>
+                       <div class="th"><%:IPv4-Address%></div>
+                       <div class="th"><%:MAC-Address%></div>
+                       <div class="th"><%:Leasetime remaining%></div>
+               </div>
+               <div class="tr placeholder">
+                       <div class="td"><em><%:Collecting data...%></em></div>
+               </div>
+       </div>
+</div>
+
+<%
+       local fs = require "nixio.fs"
+       local has_ipv6 = fs.access("/proc/net/ipv6_route")
+
+       if has_ipv6 then
+-%>
+       <div class="cbi-section" style="display:none">
+               <h3><%:Active DHCPv6 Leases%></h3>
+               <div class="table" id="lease6_status_table">
+                       <div class="tr table-titles">
+                               <div class="th"><%:Host%></div>
+                               <div class="th"><%:IPv6-Address%></div>
+                               <div class="th"><%:DUID%></div>
+                               <div class="th"><%:Leasetime remaining%></div>
+                       </div>
+                       <div class="tr placeholder">
+                               <div class="td"><em><%:Collecting data...%></em></div>
+                       </div>
+               </div>
+       </div>
+<% end -%>
diff --git a/package/luci/modules/luci-base/luasrc/view/sysauth.htm b/package/luci/modules/luci-base/luasrc/view/sysauth.htm
new file mode 100644 (file)
index 0000000..9b0e2de
--- /dev/null
@@ -0,0 +1,75 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2012 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<form method="post" action="<%=pcdata(FULL_REQUEST_URI)%>">
+       <%- if fuser then %>
+               <div class="alert-message warning">
+                       <p><%:Invalid username and/or password! Please try again.%></p>
+               </div>
+       <% end -%>
+
+       <div class="cbi-map">
+               <h2 name="content"><%:Authorization Required%></h2>
+               <div class="cbi-map-descr">
+                       <%:Please enter your username and password.%>
+               </div>
+               <div class="cbi-section"><div class="cbi-section-node">
+                       <div class="cbi-value">
+                               <label class="cbi-value-title"><%:Username%></label>
+                               <div class="cbi-value-field">
+                                       <input class="cbi-input-text" type="text" name="luci_username" value="<%=duser%>" />
+                               </div>
+                       </div>
+                       <div class="cbi-value cbi-value-last">
+                               <label class="cbi-value-title"><%:Password%></label>
+                               <div class="cbi-value-field">
+                                       <input class="cbi-input-text" type="password" name="luci_password" />
+                               </div>
+                       </div>
+               </div></div>
+       </div>
+
+       <div class="cbi-page-actions">
+               <input type="submit" value="<%:Login%>" class="cbi-button cbi-button-apply" />
+               <input type="reset" value="<%:Reset%>" class="cbi-button cbi-button-reset" />
+       </div>
+</form>
+<script type="text/javascript">//<![CDATA[
+       var input = document.getElementsByName('luci_password')[0];
+       if (input)
+               input.focus();
+//]]></script>
+
+<%
+local uci  = require "luci.model.uci".cursor()
+local fs  = require "nixio.fs"
+local https_key = uci:get("uhttpd", "main", "key")
+local https_port = uci:get("uhttpd", "main", "listen_https")
+if type(https_port) == "table" then
+       https_port = https_port[1]
+end
+
+if https_port and fs.access(https_key) then
+       https_port = https_port:match("(%d+)$")
+%>
+
+<script type="text/javascript">//<![CDATA[
+       if (document.location.protocol != 'https:') {
+               var url = 'https://' + window.location.hostname + ':' + '<%=https_port%>' + window.location.pathname;
+               var img=new Image;
+               img.onload=function(){window.location = url};
+               img.src='https://' + window.location.hostname + ':' + '<%=https_port%>' + '<%=resource%>/cbi/up.gif?' + Math.random();;
+               setTimeout(function(){
+                       img.src=''
+               }, 5000);
+       }
+//]]></script>
+
+<% end %>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-base/luasrc/view/wifi_assoclist.htm b/package/luci/modules/luci-base/luasrc/view/wifi_assoclist.htm
new file mode 100644 (file)
index 0000000..f6f66fb
--- /dev/null
@@ -0,0 +1,120 @@
+<%
+       local supports_deauth = {}
+
+       local _, v
+       for _, v in ipairs(luci.util.ubus()) do
+               local iface = v:match("^hostapd%.(.+)$")
+               if iface then
+                       local funcs = luci.util.ubus(v)
+                       if type(funcs) == "table" and funcs.del_client then
+                               supports_deauth[iface] = true
+                       end
+               end
+       end
+%>
+
+<script type="text/javascript">//<![CDATA[
+       var supports_deauth = <%= luci.http.write_json(supports_deauth) %>;
+
+       function wifirate(bss, rx) {
+               var p = rx ? 'rx_' : 'tx_',
+                   s = '%.1f <%:Mbit/s%>, %d<%:MHz%>'
+                                       .format(bss[p+'rate'] / 1000, bss[p+'mhz']),
+                   ht = bss[p+'ht'], vht = bss[p+'vht'],
+                       mhz = bss[p+'mhz'], nss = bss[p+'nss'],
+                       mcs = bss[p+'mcs'], sgi = bss[p+'short_gi'];
+
+               if (ht || vht) {
+                       if (vht) s += ', VHT-MCS %d'.format(mcs);
+                       if (nss) s += ', VHT-NSS %d'.format(nss);
+                       if (ht)  s += ', MCS %s'.format(mcs);
+                       if (sgi) s += ', <%:Short GI%>';
+               }
+
+               return s;
+       }
+
+       function handleDeauth(ev) {
+               (new XHR()).post('<%=url('admin/wireless_deauth')%>', {
+                       token: '<%=token%>',
+                       iface: ev.target.getAttribute('data-iface'),
+                       bssid: ev.target.getAttribute('data-bssid')
+               }, function() {
+                       ev.target.disabled = true;
+               });
+       }
+
+       XHR.poll(-1, '<%=url('admin/wireless_assoclist')%>', null,
+               function(x, st)
+               {
+                       var tb = document.getElementById('wifi_assoclist_table');
+                       if (st && tb)
+                       {
+                               var rows = [];
+
+                               st.forEach(function(bss) {
+                                       var icon;
+                                       var q = (-1 * (bss.noise - bss.signal)) / 5;
+                                       if (q < 1)
+                                               icon = "<%=resource%>/icons/signal-0.png";
+                                       else if (q < 2)
+                                               icon = "<%=resource%>/icons/signal-0-25.png";
+                                       else if (q < 3)
+                                               icon = "<%=resource%>/icons/signal-25-50.png";
+                                       else if (q < 4)
+                                               icon = "<%=resource%>/icons/signal-50-75.png";
+                                       else
+                                               icon = "<%=resource%>/icons/signal-75-100.png";
+
+                                       rows.push([
+                                               '<span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> <a href="%s">%h</a><small>&#160;(%h)</small></span>'.format(
+                                                       bss.radio,
+                                                       bss.link,
+                                                       bss.name,
+                                                       bss.ifname),
+                                               bss.bssid,
+                                               bss.host_hint ? '%h (%h)'.format(bss.host_name || '?', bss.host_hint) : (bss.host_name || '?'),
+                                               '<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>'.format(
+                                                       bss.signal,
+                                                       bss.noise,
+                                                       bss.signal - bss.noise,
+                                                       icon,
+                                                       bss.signal,
+                                                       bss.noise),
+                                               E('span', {}, [
+                                                       E('span', wifirate(bss, true)),
+                                                       E('br'),
+                                                       E('span', wifirate(bss, false))
+                                               ]),
+                                               supports_deauth[bss.ifname] ? E('input', {
+                                                       type: 'button',
+                                                       class: 'cbi-button cbi-button-remove',
+                                                       value: '<%:Disconnect%>',
+                                                       'data-bssid': bss.bssid,
+                                                       'data-iface': bss.ifname,
+                                                       click: handleDeauth
+                                               }) : '-'
+                                       ]);
+                               });
+
+                               cbi_update_table(tb, rows, '<em><%:No information available%></em>');
+                       }
+               }
+       );
+//]]></script>
+
+<div class="table" id="wifi_assoclist_table">
+       <div class="tr table-titles">
+               <div class="th nowrap"><%:Network%></div>
+               <div class="th hide-xs"><%:MAC-Address%></div>
+               <div class="th nowrap"><%:Host%></div>
+               <div class="th nowrap"><%:Signal%> / <%:Noise%></div>
+               <div class="th nowrap"><%:RX Rate%> / <%:TX Rate%></div>
+               <% if next(supports_deauth) then %>
+                       <div class="th right"><%:Disconnect%></div>
+               <% end %>
+       </div>
+       <div class="tr placeholder">
+               <div class="td"><em><%:Collecting data...%></em></div>
+       </div>
+</div>
diff --git a/package/luci/modules/luci-base/po/ca/base.po b/package/luci/modules/luci-base/po/ca/base.po
new file mode 100644 (file)
index 0000000..8e3871f
--- /dev/null
@@ -0,0 +1,6547 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2014-06-06 11:17+0200\n"
+"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ca\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(finestra de %d minuts, interval de %d segons)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponibles)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(buit)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(sense interfícies adjuntes)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Camp addicional --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Escolliu, si us plau --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- personalitzat --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Càrrega d'1 minut:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Càrrega de 15 minuts:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Càrrega de 5 minuts:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Port de consulta <abbr title=\"Domain Name System\">DNS</abbr> "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Port del servidor <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Es consultaran els servidors <abbr title=\"Domain Name System\">DNS</abbr> "
+"segons l'ordre del fitxer de resolució"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Adreça <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Passarel·la <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+"Màscara de xarxa <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Adreça <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> o Xarxa (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Passarel·la <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Configuració dels <abbr title=\"Light Emitting Diode\">LED</abbr>s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nom <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Adreça <abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Arrendaments de <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> <abbr title=\"màxims\">max.</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"Mida <abbr title=\"màxima\">màx.</abbr> de paquet <abbr title=\"Extension "
+"Mechanisms for Domain Name System\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "Consultes concurrents <abbr title=\"màximes\">max.</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"Avís: cal reiniciar manualment el servei cron si el fitxer crontab estava "
+"buit abans d'editar-lo."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Llindar de reintent ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Ponts ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identificador de canal virtual (VCI) ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identificador de camí virtual (VPI) ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Els ponts ATM mostren ethernet encapsulat en connexions AAL5 com interfícies "
+"de xarxa virtual de Linux que es poden utilitzar conjuntament amb DHCP o PPP "
+"per trucar a la xarxa del proveïdor."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Número de dispositiu ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrador d'accés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Punt d'accés"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Accions"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Rutes <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> actives"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Rutes <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> actives"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Connexions actives"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Arrendaments DHCP actius"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Arrendaments DHCPv6 actius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Afegeix"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Afegeix el sufix de domini local als noms servits des dels fitxers de hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Afegeix una interfície nova..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Fitxers de Hosts addicionals"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adreça"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adreça per accedir al relay bridge local"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administració"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Paràmetres avançats"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permetre l'autenticació <abbr title=\"Secure Shell\">SSH</abbr> amb "
+"contrasenya"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Permet-les totes menys les llistades"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Permet només les llistades"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permetre el localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permetre a màquines remotes de connectar-se als ports reenviats de l'SSH "
+"local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Accés d'administrador amb contrasenya"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Permetre l'accés de l'usurari <em>root</em> amb contrasenya"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr "Permet respostes del rang 127.0.0.0/8, p.e. per serveis RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configuració d'antena"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Qualsevol zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Assigna interfícies..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Estacions associades"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autenticació"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritzada"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Es requereix autenticació"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Refresc automàtic"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponible"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Mitjana:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Enrere"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Enrere al Resum"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Enrere a la configuració"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Enrere al resum"
+
+# Endarrere cap a resultats d'escaneig
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Enrere als resultats de l'escaneig"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Còpia de seguretat"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Còpia de seguretat i microprogramari"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Llista de còpies de seguretat"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Adreça mal especificada!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"A sota hi ha la llista determinada de fitxers per fer-ne còpia. Consisteix "
+"en els fitxers de configuració canviats i marcats per l'opkg, fitxers base "
+"essencials i els patrons de còpia de seguretat definits per l'usuari."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Velocitat de bits"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Substitució dels dominis NX falsos"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Pont d'interfícies"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Número d'unitat de pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Aixecar a l'engegada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Controlador sense fil Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Controlador sense fil Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "En memòria intermèdia"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Ús de CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Cadena"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Canvis"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Canvis aplicats."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Comprovació"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Suma de verificació"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Escolliu la zona de tallafocs que voleu assignar a aquesta interfície. Trieu "
+"<em>sense especificar</em> per esborrar la interfície de la zona associada o "
+"ompliu el camp <em>crea</em> per definir una nova zona i adjuntar-hi la "
+"interfície."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Trieu les xarxes que voleu adjuntar a la interfície sense fil o ompliu el "
+"camp <em>crea</em> per definir una xarxa nova."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Xifra"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Fes clic a \"Genera l'arxiu\" per obtenir un fitxer .tar.gz amb els fitxers "
+"de configuració actuals."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "ID de client a enviar en les sol·licituds DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Tanca la llista..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Aplegant dades..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Ordre"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configuració comuna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuració"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmació"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Connecta"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Connectat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Límit de connexió"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Connexions"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Codi de País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Cobreix la interfície següent"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Cobreix les interfícies següents"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Crea / Assigna zona de tallafocs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Crea interfície"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Crea un pont entre múltiples interfícies"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Crític"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Nivell de registre del Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interfície personalitzada"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Personalitza el comportament dels <abbr title=\"Light Emitting Diode\">LED</"
+"abbr>s del dispositiu, si és possible."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Servidor DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP i DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Client DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opcions DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Reenviaments DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Depuració"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "%d per defecte"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Passarel·la per defecte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Estat per defecte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definiu el nom d'aquesta xarxa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Suprimeix"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Suprimeix aquesta xarxa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descripció"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destí"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispositiu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configuració de dispositiu"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnòstics"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Directori"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Inhabilita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Inhabilita el <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> en aquesta interfície."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Inhabilitat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Descarta les respostes RFC1918 des de dalt"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimització de distància"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distància al membre de la xarxa més allunyat en metres."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversitat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+"El Dnsmasq és un servidor <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> combinat i un reenviador de <abbr title=\"Domain Name System"
+"\">DNS</abbr> per tallafocs <abbr title=\"Network Address Translation\">NAT</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Es requereix un domini"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"No reenviïs les peticions <abbr title=\"Domain Name System\">DNS</abbr> "
+"sense el nom <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Descarrega còpia de seguretat"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instància de Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"El Dropbear ofereix accés a una consola <abbr title=\"Secure Shell\">SSH</"
+"abbr> per xarxa i un servidor <abbr title=\"Secure Copy\">SCP</abbr> integrat"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dinàmic"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Túnel dinàmic"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Mètode EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Edita"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Edita aquesta interfície"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Edita aquesta xarxa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Emergència"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Habilita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Habilita l'<abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Habilita negociació IPv6 en la enllaç PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Habilita el passatge de trames enormes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Habilita el client NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Habilita el servidor TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Habilita la funcionalitat VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Habilita l'aprenentatge i l'envelliment"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Activa/Desactiva"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Habilitat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Habilita l'Spanning Tree Protocol a aquest pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Mode d'encapsulació"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Encriptació"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Esborrant..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Error"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Adaptador Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch Ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Caduca"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Servidor de registre del sistema extern"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Port del servidor de registre del sistema extern"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Protocol del servidor de registre del sistema extern"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fitxer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nom de fitxer de la imatge d'inici que es publica als clients"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Sistema de fitxers"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtra privat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtra els no útils"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Troba i uneix-te a la xarxa"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Acaba"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Tallafocs"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Ajusts de tallafocs"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Estat de tallafocs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versió de microprogramari"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Escriptura del microprogramari a la memòria flaix"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Puja una imatge..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Escriu una imatge nova a la memòria flaix"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operacions a la memòria flaix"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Escrivint a la memòria flaix..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Força"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Força el CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Força el DHCP en aquesta xarxa encara que es detecti altre servidor."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Força el TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Força el TKIP i el CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Reenvia el trànsit DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Reenvia el trànsit difós"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Mode de reenviament"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Llindar de fragmentació"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Lliure"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Només GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Passarel·la"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Ports de passarel·la"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Ajusts generals"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Genera l'arxiu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Controlador sense fils 802.11%s genèric"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"La contrasenya i la confirmació de contrasenya no es coincideixen. La "
+"contrasenya no s'ha canviat!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Vés a la configuració de contrasenya"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Vés a la pàgina de configuració"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Contrasenya de HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Penja"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Ací pots configurar els aspectes bàsics del teu dispositiu, com el nom de la "
+"màquina o el fus horari."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"No mostris l'<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Nom de màquina"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entrades de noms de màquina"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Xarxa o adreça <abbr title=\"Internet Protocol Address\">IP</abbr>"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nom de màquina"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Noms de màquina"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Adreça IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Tallafocs IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Adreça IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Difusió IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Passarel·la IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Màscara de xarxa IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Longitud de prefix IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Adreça IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Tallafocs IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "Veïns IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Adreça IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Passarel·la IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefix IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Longitud de prefix IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Adreça IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-en-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-sobre-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-sobre-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identitat"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Si la teva memòria física és insuficient, les dades no usades es poden "
+"intercanviar a un dispositiu d'intercanvi, pel qual hi haurà una quantitat "
+"més gran de memòria <abbr title=\"Random Access Memory\">RAM</abbr> usable. "
+"Tingues en compte que intercanviar dades és un procés molt lent, ja que no "
+"es pot accedir al dispositiu d'intercanvi amb unes taxes tan altes com les "
+"de la <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignora <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignora la interfície"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignora el fitxer de resolució"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Fitxer d'imatge"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Entr."
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Temps d'espera d'inactivitat"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Entrant:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Informació"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script d'inici"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts d'inici"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instal·la el paquet %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instal·la extensions de protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfície"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configuració d'interfície"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Visió de conjunt de la interfície"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "La interfície s'està reconnectant..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfícies"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Error de servidor intern"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Invàlid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Usuari i/o contrasenya invàlids! Si us plau prova-ho de nou."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, "
+"si us plau verifica el fitxer d'imatge!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Es requereix JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Uneix-te a la xarxa"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Mantenir la configuració"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Registre del nucli"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versió del nucli"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Clau"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Clau #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Mata"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Servidor L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Llindar de fracàs d'eco LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Interval d'eco LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Etiqueta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Llengua"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Llengua i estil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Fitxer d'arrendament"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Temps d'arrendament restant"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Deixeu-ho en blanc per autodetectar"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Deixeu-ho en blanc per utilitzar l'adreça WAN actual"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Llegenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Límit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Enllaç actiu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Habilita el servei en totes les interfícies o, si no se n'especifica cap, en "
+"totes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Càrrega"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Càrrega mitjana"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Carregant"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Adreça IPv4 local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Adreça IPv6 local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Inici local"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Hora local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domini local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Servidor local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localitza les peticions"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Nivell de sortida de registre"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Registra les peticions"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Registre"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Entra"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Surt"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Adreça MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtre d'adreces MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtre MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Llista MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memòria"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Ús de Memòria (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Mètrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Manca l'extensió de protocol del protocol %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mode"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Dispositiu mòdem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Temps d'espera d'inici de mòdem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Punt de muntatge"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Punts de muntatge"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Els punts de muntatge defineixen en quin punt un dispositiu de memòria "
+"s'adjuntarà amb el sistema de fitxers"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Opcions de muntatge"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Sistemes de fitxers muntats"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Baixa"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Puja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Candidats de servidor NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nom"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nom de la nova interfície"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nom de la nova xarxa"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navegació"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Màscara de xarxa"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Xarxa"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilitats de xarxa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Imatge d'inici de xarxa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Xarxa sense interfícies."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Següent"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Cap servidor DHCP configurat en aquesta interfície"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Cap fitxer trobat"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "No hi ha informació disponible"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Sense memòria cau negativa"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Cap xarxa configurada en aquest dispositiu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Cap nom de xarxa especificat"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "No hi ha cap contrasenya establerta!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "No hi ha regles en aquesta cadena"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Cap zona assignada"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Soroll"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Soroll:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Cap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "No trobat"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "No associat"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "No connectat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Avís"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"En aquesta pàgina pots configurar les interfícies de xarxa. Pots fer un pont "
+"entre diverses interfícies clicant sobre el camp \"interfície pont\" i "
+"introduint els noms de les diverses interfícies de xarxa separats per "
+"espais. També pots fer servir la notació <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr> <samp>INTERFACE.VLANNR</samp> (<abbr title=\"per "
+"exemple\">p.e.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Cal especificar o el nom de host o l'adreça MAC!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Un o més dels camps requerits conté un valor invàlid!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Un o més dels camps requerits no té valor!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Obre una llista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Opció canviada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Opció treta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opcions"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Altres:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Sort."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Sortint:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Visió de conjunt"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Propietari"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Contrasenya PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Nom d'usuari PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Encapsulació PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Es requereix el paquet libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Paquets"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Part de la zona %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Contrasenya"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autenticació per contrasenya"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Contrasenya de la clau privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Ruta als Certificats CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Ruta a la clau privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Màxim:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Executa un reinici"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Executa un reinici"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Velocitat física:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Ajusts físics"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Paquets"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Si us plau entra el teu nom d'usuari i contrasenya."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Política"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Estatus de port"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Evita la comunicació client a client"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Procedeix"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processos"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Habilita el servidor NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Calidad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Llindar RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Velocitat RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Llegeix <code>/etc/ethers</code> per configurar el servidor <abbr title="
+"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Connexions en temps real"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Gràfiques en temps real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Càrrega en temps real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Trànsit en temps real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Dispositiu sense fils en temps real"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reinicia"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Reiniciant..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Arranca de nou el sistema operatiu del teu dispositiu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Recepció"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena receptora"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconnex aquesta interfície"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referències"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relé"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Pont de relé"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Relé entre xarxes"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Pont de relé"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Adreça IPv4 remota"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Adreça IPv4 remota o FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Treu"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Reemplaça l'entrada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Reemplaça la configuració sense fil"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Restableix"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reinicia els comptadors"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Reestableix els valors per defecte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Reinicia"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Reinicia el tallafocs"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restauració de la configuració"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restaura còpia de seguretat"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Mostra/amaga la contrasenya"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Reverteix"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Arrel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Directori arrel dels fitxers servits per TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Contrasenya de l'encaminador"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rutes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Les rutes especifiquen per quina interfície i passarel·la es pot arribar a "
+"un cert ordinador o xarxa."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Accés SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Claus SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Desa"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Desa i aplica"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Escaneja"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tasques programades"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Secció afegida"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Secció treta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Clients separats"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Ajusts de servidor"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nom de servei"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tipus de servei"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Serveis"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Configura la sincronització de l'hora"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Atura aquesta interfície"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Senyal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Senyal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Mida"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Salta"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Salta al contingut"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Salta a la navegació"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "No es pot desar els valors perquè alguns camps estan invàlids!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Tristament, l'object que heu sol·licitat no s'ha trobat."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Tristament, el servidor ha encontrat un error inesperat."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Origen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Especifica el directori a que el dispositiu està adjuntat"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Especifica el port d'escolta d'aquesta instància del <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Especifiqueu el clau de xifració secret aquí."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Inici"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Prioritat d'inici"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Arrencada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Rutes IPv4 estàtiques"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Rutes IPv6 estàtiques"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Leases estàtics"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Rutes estàtiques"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Adreça estàtica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Estat"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Atura"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Ordre estricte"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Envia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Entrada d'intercanvi"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Commutador"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Commutador %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Commutador %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Protocol de commutador"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Sincronitza amb el navegador"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Sincronitzant..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistema"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Registre del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Propietats del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Mida de la memòria intermèdia per al registre del sistema"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Ajusts TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Arrel del servidor TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Velocitat TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Taula"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Destí"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Acaba"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"El paquet <em>libiwinfo-lua</em> no està instal·lat. Heu de instal·lar "
+"aquest component per tenir una configuració sense fil funcionant!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Els caràcters permets són: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> i <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"El fitxer de dispositiu de la memòria o partició (<abbr title=\"per exemple"
+"\">p.e.</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"El sistema the fitxers que es va fer servir per formatar la memòria (<abbr "
+"title=\"per exemple example\">p.e.</abbr> <samp><abbr title=\"Third Extended "
+"Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"S'ha pujat la imatge per a la memòria flaix. A sota hi ha llistades la suma "
+"de verificació i la mida del fitxer per assegurar la integritat de les dades."
+"<br />Fes clic a \"Procedeix\" a continuació per començar el procés "
+"d'escriptura a la memòria flaix."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "S&#39;han desfet els següents canvis"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Les següents regles estan actualment actives en aquest sistema."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "El nom de xarxa donat no és únic"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"El maquinari no es capaç de múltiples SSID i la configuració existent es "
+"reemplaçara si procediu."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"La longitud del prefix IPv4 en bits, el reste s'utilitza en les adreces IPv6."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "La longitud del prefix IPv6 en bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "El protocol seleccionat necessita un dispositiu assignat"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"El sistema està esborrant la partició de configuració i es reiniciarà quan "
+"termini."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"S'està escrivint la imatge del microprogramari a la memòria flaix.<br />NO "
+"APAGUIS EL DISPOSITIU!<br />Espera uns minuts abans d'intentar connectar-te "
+"de nou. Pot ser necessari que renovis l'adreça DHCP del teu ordinador per "
+"connectar-te de nou a l'encaminador, depenent de la configuració que hi "
+"tinguis."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"La imatge pujada no conté un format suportat. Assegura't de triar el format "
+"d'imatge genèric per la teva plataforma."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "No hi ha arrendaments actius."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "No hi ha canvis pendents per revertir!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "No hi ha canvis pendents!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, "
+"configura una contrasenya per protegir la interfície web i l'accés SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes "
+"(abans de la línia 'exit 0') per executar-les en finalitzar el procés "
+"d'arrencada."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Aquest és l'únic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> a la teva xarxa local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Aquest és el crontab del sistema en el qual es poden definir tasques "
+"programades."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Aquesta llista mostra una vista general sobre els processos corrent al "
+"sistema actualment i el seu estat."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Aquesta pàgina ofereix una vista general de les connexions de xarxa actives "
+"actualment."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Aquesta secció encara no conté cap valor"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Sincronització de l'hora"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "La sincronització de hora encara no s'ha configurat."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Zona horària"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Per restaurar els fitxers de configuració, pots pujar una còpia de seguretat "
+"generada anteriorment aquí. Per restablir el microprogramari al seu estat "
+"inicial, fes clic a \"Restableix la configuració\" (només funciona amb "
+"imatges squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total disponible"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Rastre de ruta"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Trànsit"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transferència"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Taxa de transmissió"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmissió"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Potència de transmissió"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena transmissora"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Activador"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Mode d'activació"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "ID del túnel"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interfície del túnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Potència Tx"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tipus"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Només UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Dispositiu USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Sense gestionar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Canvis sense desar"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipus de protocol no suportat."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Puja aquí una imatge compatible amb sysupgrade per reemplaçar el "
+"microprogramari actual. Activa \"Mantenir la configuració\" per retenir la "
+"configuració actual (requereix una imatge de microprogramari compatible)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Puja un arxiu..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Fitxer pujat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Temps en marxa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Fes servir <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Utilitza la bandera de difusió"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Usat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs en %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs en %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Classe de venidor per enviar al sol·licitar DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verifica"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Sistema obert WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Clau compartit WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Contrasenya WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Mode WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Contrasenya WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"La xifratge WPA requereix que sigui instal·lat el wpa_supplicant (pel mode "
+"client) o el hostapd (pels modes AP i ad hoc)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Esperant que s'apliquin els canvis..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Esperant que s'acabi l'ordre..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Esperant el dispositiu..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Advertència"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Sense fils"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adaptador sense fils"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Xarxa sense fils"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Resum sense fils"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Seguretat sense fils"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "El dispositiu sense fils està inhabilitat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "El dispositiu sense fils està sense associar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "El dispositiu sense fils està reiniciant..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "La xarxa sense fil està inhabilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "La xarxa sense fils està habilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Escriure les peticions DNS rebudes al registre del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Escriure el registre del sistema al fitxer"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Pots activar o desactivar els scripts d'inici instal·lats ací. Els canvis "
+"s'aplicaran després d'arrancar de nou el dispositiu.<br /><strong>Atenció: "
+"Si desactives scripts d'inici necessaris com el \"network\", el teu "
+"dispositiu pot resultar inaccessible!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà "
+"correctament."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "qualsevol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "pontejat"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "crea:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "crea un pont entre les interfícies especificades"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "inhabilita"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "caducat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"fitxer on els leases de <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> s'emmagatzemaran"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "transemès"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "amagat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "si el destí és una xarxa"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "entrada"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "fitxer <abbr title=\"Domain Name System\">DNS</abbr> local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "no"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "cap enllaç"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "parat"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "engegat"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "obert"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "encaminat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "etiquetat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "desconegut"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "il·limitat"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "sense espeficicar"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "sense espeficicar -o- crear:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "sense etiquetar"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "sí"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Enrere"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Aquí pots afegir-hi les claus SSH públiques (una per línia) per entrar "
+#~ "per SSH amb autenticació per clau."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "La contrasenya s'ha canviat amb èxit!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "La contrasenya no s'ha canviat a causa d'un error desconegut!"
+
+#~ msgid "Design"
+#~ msgstr "Disseny"
+
+#~ msgid "Available packages"
+#~ msgstr "Paquets disponibles"
+
+#~ msgid ""
+#~ "Build/distribution specific feed definitions. This file will NOT be "
+#~ "preserved in any sysupgrade."
+#~ msgstr ""
+#~ "Repositoris específics de la distribució/compilació. Aquest fitxer NO es "
+#~ "preservarà durant les actualitzacions del microprogramari del sistema."
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Mostrant només els paquets que contenen"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "Repositoris de la distribució"
+
+#~ msgid "Download and install package"
+#~ msgstr "Descarrega i instal·la el paquet"
+
+#~ msgid "Filter"
+#~ msgstr "Filtre"
+
+#~ msgid "Find package"
+#~ msgstr "Cerca paquet"
+
+#~ msgid "Free space"
+#~ msgstr "Espai lliure"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Opcions generals d'opkg"
+
+#~ msgid "Install"
+#~ msgstr "Instal·la"
+
+#~ msgid "Installed packages"
+#~ msgstr "Paquets instal·lats"
+
+#~ msgid "No package lists available"
+#~ msgstr "No hi ha llistes de paquets disponibles"
+
+#~ msgid "OK"
+#~ msgstr "D'acord"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuració d&#39;OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Les llistes de paquets tenen més de 24 hores"
+
+#~ msgid "Package name"
+#~ msgstr "Nom del paquet"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Mida (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Programari"
+
+#~ msgid "Update lists"
+#~ msgstr "Actualitza les llistes"
+
+#~ msgid "Version"
+#~ msgstr "Versió"
+
+#~ msgid "none"
+#~ msgstr "cap"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 i IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Només IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Només IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Duració de validitat d'arrendament"
+
+#~ msgid "Multicast address"
+#~ msgstr "Adreça de difusió selectiva"
+
+#~ msgid "No chains in this table"
+#~ msgstr "No hi ha cadenes en aquesta taula"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Es mantindran els fitxers de configuració."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: Els fitxers de configuració s'esborraran."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Parella: %s / Grup: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Activa aquesta xarxa"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Controlador sense fil Hermes 802.11b"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "La interfície s'està aturant..."
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "Controlador sense fil RaLink 802.11%s"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Reconnectant la interfície"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Atura aquesta xarxa"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Sense fils reinciat"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Sense fils aturat"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Arrendaments DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Arrendaments DHCPv6"
+
+#~ msgid "Sort"
+#~ msgstr "Ordena"
+
+#~ msgid "help"
+#~ msgstr "ajuda"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Estat WAN IPv4"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Estat WAN IPv6"
+
+#~ msgid "Apply"
+#~ msgstr "Aplica"
+
+#~ msgid "Applying changes"
+#~ msgstr "Aplicant els canvis"
+
+#~ msgid "Configuration applied."
+#~ msgstr "S'ha aplicat la configuració."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Desa i aplica"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "S'han comès els següents canvis"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "No hi ha canvis pendents per aplicar!"
+
+#~ msgid "Action"
+#~ msgstr "Acció"
+
+#~ msgid "Buttons"
+#~ msgstr "Botons"
+
+#~ msgid "Leasetime"
+#~ msgstr "Duració d'arrendament"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estàtic"
+
+#~ 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."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Unir-se a la xarxa: Ajusts"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Interfície VLAN"
diff --git a/package/luci/modules/luci-base/po/cs/base.po b/package/luci/modules/luci-base/po/cs/base.po
new file mode 100644 (file)
index 0000000..2ab06f4
--- /dev/null
@@ -0,0 +1,6617 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-31 13:59+0200\n"
+"Last-Translator: koli <lukas.koluch@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d minutové okno, %d sekundový interval)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s k dispozici)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(prázdný)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(bez rozhraní připojení)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Doplňující pole --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Prosím vyberte --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- vlastní --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Zatížení za 1 minutu:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Zatížení za 15 minut:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Zatížení za 5 minut:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "port dotazů <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "port serveru <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servery budou dotazovány podle "
+"pořadí resolvfile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protokol Verze 4\">IPv4</abbr>-Adresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Verze 4\">IPv4</abbr>-Brána"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protokol Verze 4\">IPv4</abbr>-Maska sítě"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protokol Verze 6\">IPv6</abbr>-Adresa nebo Síť (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protokol Verze 6\">IPv6</abbr>-Brána"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Konfigurace"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Název"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Nejvyšší počet <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> výpůjček"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"Největší povolená velikost <abbr title=\"Extension Mechanisms for Domain "
+"Name System\">EDNS0</abbr> packetů"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "Nejvyšší počet souběžných dotazů"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP limit opakování"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM mosty"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identifikátor virtuálního kanálu ATM (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identifikátor virtuální cesty ATM (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Otevře ATM mosty přes uzavřené ethernetové rozhraní v AAL5 připojení jako "
+"virtuální síťová rozhraní Linuxu, které mohou být použity ve spojení s DHCP "
+"nebo PPP vytáčeného připojení od poskytovatele sítě."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "číslo ATM zařízení"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Přístupový koncentrátor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Přístupový bod"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Akce"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Aktivní záznamy ve směrovací tabulce <abbr title=\"Internet Protocol Version "
+"4\">IPv4</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Aktivní záznamy ve směrovací tabulce <abbr title=\"Internet Protocol Version "
+"6\">IPv6</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktivní spojení"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktivní propůjčené DHCP adresy (leases)"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktivní propůjčené DHCPv6 adresy (leases)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Přidat"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Přidat lokální koncovku k doménovým jménům ze souboru hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Přidat rozhraní..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Dodatečné Hosts soubory"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adresa"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adresa pro přístup k místnímu relay bridge"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Správa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Pokročilé nastavení"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Upozornění"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Povolit <abbr title=\"Secure Shell\">SSH</abbr> autentizaci heslem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Povolit vše mimo uvedené"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Povolit pouze uvedené"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Povolit localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Povolit vzdáleným hostitelům připojování k místním portům přesměrovaným "
+"pomocí SSH"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Povolit přihlašovaní root účtu pomocí hesla"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Povolit <em>root</em> účtu přihlášení bez nastaveného hesla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr "Povolit upstream odpovědi na 127.0.0.0/8 rozsah, např. pro RBL služby"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Anténa 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Anténa 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Konfigurace antén"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Libovolná zóna"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Přiřadit rozhraní..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Připojení klienti"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autentizace"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritativní"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Vyžadována autorizace"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Automaticky obnovovat"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Dostupné"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Průměr:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Zpět"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Zpět k přehledu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Zpět ke konfiguraci"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Zpět k přehledu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Zpět k výsledkům vyhledávání"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Zálohovat"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Zálohovat / nahrát firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Seznam souborů k zálohování"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Zadána neplatná adresa!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Seznam souborů k zálohování lze nalézt níže. Sestává se z konfiguračních "
+"souborů označených opkg, nezbyných systémových souborů a souborů "
+"vyhovujících uživatelem určeným vzorům."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Přenosová rychlost"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Přepíše falešnou hodnotu NX Domény"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Síťový most"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Síťové mosty"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Číslo síťového mostu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Zapnout po startu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s bezdrátový ovladač"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom modul BCM%04x 802.11 bezdrátový ovladač"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Bufferováno"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Vytížení CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Storno"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Řetěz"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Změny"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Změny aplikovány."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Změní administrátorské heslo pro přístup k zařízení"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanál"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Kontrola"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Kontrolní součet"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Zóna firewallu přiřazená k tomuto rozhraní. Pro odstranění rozhraní z "
+"přiřazené zóny vyberte volbu <em>nespecifikovaná</em>. Pro vytvoření nové "
+"zóny a její následné přiřazení danému rozhraní vyplňte pole <em>vytvořit</"
+"em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Vyberte síť(ě), které chcete připojit k tomuto bezdrátovému rozhraní, nebo "
+"vyplňte pole <em>vytvořit</em> a pojmenujte novou síť."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Šifra"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Pro stažení archivu tar s aktuální konfigurací stiskněte \"Vytvořit archiv\"."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Klient"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Klientské ID odesílané v DHCP požadavku"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Uzavírat neaktivní spojení po daném počtu sekund. Pro vypnutí časového "
+"omezení použijte jako hodntu nulu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Zavřít seznam..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Probíhá sběr dat..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Příkaz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Společná nastavení"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Nastavení"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Ověření"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Připojit"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Připojeno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Omezení počtu připojení"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Připojení"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Země"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Kód země"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Pokrýt následující rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Pokrýt následující rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Vytvořit / přiřadit zónu firewallu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Vytvořit rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Vytvořit síťový most přes více rozhraní"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritické"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Úroveň protokolování Cronu"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Vlastní rozhraní"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Upraví chování <abbr title=\"Light Emitting Diode\">LED</abbr> diod zařízení "
+"pokud je to možné."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP server"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP a DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP klient"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Volby DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Přeposílání DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Ladění"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Výchozí %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Výchozí brána"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Výchozí stav"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Jméno sítě."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Další možnosti DHCP, například \"<code>6,192.168.2.1,192.168.2.2</code>\", "
+"které odkazuje na různé DNS servery pro klienty."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Odstranit"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Odstranit tuto síť"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Popis"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Cíl"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Zařízení"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Nastavení zařízení"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnostika"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Adresář"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Zakázat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Pro toto rozhraní zakázat <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Zakázáno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Vyřadit upstream RFC1918 odpovědi"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimalizace na vzdálenost"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Vzdálenost nejodlehlejšího člena sítě v metrech."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diverzita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 je kombinace <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> serveru a <abbr title=\"Domain Name System\">DNS</abbr> "
+"forwarderu pro použití v <abbr title=\"Network Address Translation\">NAT</"
+"abbr> firewallech"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Necachovat negativní odpovědi (např. pro neexistující domény)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Nepřeposílat požadavky, které nemohou být zodpovězeny veřejnými jmennými "
+"servery"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Nepřeposílat reverzní dotazy na místní sítě"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Vyžadována doména"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Whitelist domén"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Nepřeposílat <abbr title=\"Domain Name System\">DNS</abbr> dotazy bez <abbr "
+"title=\"Domain Name System\">DNS</abbr> jména"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Stáhnout zálohu"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instance Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear poskytuje <abbr title=\"Secure Shell\">SSH</abbr> přístup a <abbr "
+"title=\"Secure Copy\">SCP</abbr> server"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Dynamický <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dynamický tunel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Pro klienty alokovat DHCP adresy dynamicky. Pokud je volba zakázána, budou "
+"obsloužení pouze klienti se statickými výpůjčkami."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Metoda EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Upravit"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Upravit toto rozhraní"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Upravit tuto síť"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Záchrana"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Povolit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Povolit <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Povolit dynamickou aktualizaci koncového bodu HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Na PPP spoji povolit vyjednání IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Povolit průchod jumbo rámců"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Povolit NTP klienta"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Povolit TFTP server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Povolit funkcionalitu VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Povolit ARP učení a stárnutí"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Povolit tento přípojný bod"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Povolit tento swapovací oddíl"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Povolit/Zakázat"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Povoleno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Na tomto síťovém mostě povolit Spanning Tree Protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Režim zapouzdření"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Šifrování"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Odstraňování..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Chyba"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernetový adaptér"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernetový switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Rozšířit hostitele"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Vyprší"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Čas vypršení vypůjčené adresy, minimum jsou 2 minuty (<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Externí protokolovací server"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Port externího protokolovacího serveru"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Soubor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Název souboru s bootovacím obrazem oznamovaný klientům"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Souborový systém"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrovat soukromé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtrovat nepotřebné"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Vyhledat a připojit síť"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Dokončit"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Nastavení firewallu"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Stav firewallu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Verze firmwaru"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Pevný zdrojový port pro odchozí DNS dotazy"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Nahrát firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Nahrát obraz..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Nahrát nový obraz s firmwarem"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operace nad flash pamětí"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Nahrávám..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Vynutit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Vynutit CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Na této síti vynutit DHCP i v případě detekování jiného serveru."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Vynutit TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Vynutit TKIP a CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Přeposílat DHCP provoz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Přeposílat broadcasty"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Režim přeposílání"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Hranice fragmentace"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Dávkování rámců"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Volné"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Pouze GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Brána"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Porty brány"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Obecná nastavení"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Obecné nastavení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Vytvorǐt archív"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Generic 802.11%s Wireless Controller"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Heslo nezměněno z důvodu nesouhlasu nového hesla a ověření hesla!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Přejít na nastavení hesla..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Přejít na související konfigurační stránku"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Heslo HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Zavěsit"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Nastavení základních vlastností zařízení jako je časová zóna nebo název "
+"zařízení."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Skrývat <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Záznamy hostitelů"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Vypršení časového limitu hostitele"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"<abbr title=\"Internet Protocol Address\">IP</abbr> adresa hostitele nebo síť"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Jméno hostitele"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Jméno hostitele odesílané s DHCP požadavky"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Jména hostitelů"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP adresy"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 firewall"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 adresa"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 broadcast"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 brána"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 maska sítě"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Délka IPv4 prefixu"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4 adresa"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 adresa"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 brána"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6 prefix"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Délka IPv6 prefixu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6 adresa"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-over-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-over-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identita"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr "Namísto pevného uzlu zařízení připojovat pomocí UUID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr "Namísto pevného uzlu zařízení připojovat pomocí názvu oddílu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Pokud není povoleno, není nastaven žádný výchozí směrovací záznam"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Pokud není povoleno, oznámené adresy DNS serverů budou ignorovány"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Pokud máte nedostatek fyzické paměti, nepoužívaná data mohou být dočasně "
+"odložena do odkládacího zařízení, což bude mít za důsledek větší množství "
+"použitelné  <abbr title=\"Random Access Memory\">RAM</abbr>. Vezměte na "
+"vědomí, že odkládání dat je velice pomalý proces, stejně jako fakt, že "
+"přístup na odkládací zařízení je řádově pomalejší, než přístup do paměti "
+"<abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorovat rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorovat resolv soubor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Obraz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Dovnitř"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Časový limit nečinnosti"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Příchozí:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Initskript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Initskripty"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instalovat balíček %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instalovat protokolové rozšíření..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Konfigurace rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Přehled rozhraní"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Rozhraní se znovu připojuje..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Rozhraní není přítomné nebo je dosud nepřipojeno."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Rozhraní"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+# Není co dodat.
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Vnitřní chyba serveru"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Neplatná vstupní hodnota"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"Uvedené VLAN ID je neplatné! Jsou povolena pouze ID z rozsahu %d až %d."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "Uvedené VLAN ID je neplatné! Každé ID musí být jedinečné"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Špatné uživatelské jméno a/nebo heslo! Prosím zkuste to znovu."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Zdá se, že se pokoušíte zapsat obraz, který se nevejde do flash paměti. "
+"Prosím ověřte soubor s obrazem!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Vyžadován JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Připojit k síti"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Připojit k síti: Vyhledání bezdrátových sítí"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Zachovat nastavení"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Záznam jádra"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Verze jádra"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Klíč"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Klíč #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Zabít"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP Server"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP echo prahová hodnota selhání"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP interval upozornění"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Popis"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Jazyk"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Jazyk a styl"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Soubor zájpůjček"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Zbývající doba trvání zápůjčky"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Ponechte prázdné pro automatickou detekci"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Ponecháte-li prázdné, použije stávající WAN adresu"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Odkaz na"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Seznam <abbr title=\"Domain Name System\">DNS</abbr> serverů, na které "
+"přeposílat požadavky"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Seznam domén, pro které povolit odpovědi podle RFC1918"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Seznam hostitelů, kteří udávají falešné hodnoty NX domén"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Poslouchat pouze na daném rozhraní, nebo pokud není specifikováno, na všech"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Port pro příchozí dotazy DNS"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Zátěž"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Zátěž průměrná"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Načítání"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Místní IPv4 adresa"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Místní IPv6 adresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Místní startup"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Místní čas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Místní doména"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Specifikace místní domény. Jména shodná s touto doménou nikdy nebudou "
+"přesměrována ani rozlušťována pomocí DHCP nebo souborů hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Přípona místní domény, připojená za názvy DHCP jmen a záznamů v souboru hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Místní server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Lokalizovat jméno v závislosti na dotazující se podsíti, pokud bylo nalezeno "
+"více IP adres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Lokalizační dotazy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Úroveň logování"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Dotazy pro logování"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Logování"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Přihlásit"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Odhlásit"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Nejnižší zapůjčenou adresu použít jako offset síťové adresy."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-Adresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtr MAC adres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtr MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Seznam Mac"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Nejvyšší povolené množství aktivních DHCP zápůjček"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Nejvyšší povolené množství souběžných DNS dotazů"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Nejvyšší počet sekund čekání, než bude modem připraven"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Maximální počet zapůjčených adres."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Paměť"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Využití paměti (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrika"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Chybějící rozšíření protokolu %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mód"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modemové zařízení"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Časový limit inicializace modemu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Sledování"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Připojit vstup"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Přípojný bod"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Přípojné body"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Přípojné body - vstupy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Přípojné body - změna vstupu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Přípojný bod určuje místo v souborovém systému, na kterém bude připojeno "
+"paměťové zařízení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Volby připojení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Přípojný bod"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Připojené souborové systémy"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Přesunout dolů"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Přesunout nahoru"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Kandidáti NTP serveru"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Název"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Název nového rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Název nové sítě"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigace"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Síťová maska"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Síť"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Síťové nástroje"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Síťový bootovací obraz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Síť bez rozhraní."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Další »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Pro toto rozhraní není nastaven žádný DHCP server"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nebyly nalezeny žádné soubory"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Údaje nejsou k dispozici"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Žádná negativní mezipaměť"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Síť není nastavena na tomto zařízení"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Neuvedeno jméno sítě"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Žádné heslo!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Žádná pravidla v tomto řetězci"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Žádná zóna nepřiřazena"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Šum"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Šum:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Žádný"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normální"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Nenalezeno"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Neasociováno"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Nepřipojeno"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Oznámení"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Vypnutí prodlevy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Na této stránce můžete nastavit síťová rozhraní. Můžete přemostit několik "
+"rozhraní zaškrtnutím pole \"přemostit rozhraní\" a zápisem názvů rozhraní, "
+"vzájemně oddělených mezerami. Také můžete použít <abbr title=\"Virtual Local "
+"Area Network\">VLAN</abbr> zápis <samp>INTERFACE.VLANNR</samp> (<abbr title="
+"\"například\">např.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Zapnutí prodlevy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Jedno jméno nebo mac adresa, musí být zadáno!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Jedno nebo více polí obsahuje neplatné hodnoty!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Jedno nebo více požadovaných polí neobsahuje hodnotu!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Otevřít seznam..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Volba změněna"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Volba odstraněna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Možnosti"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Ostatní:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Ven"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Odchozí:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Přepsat MAC adresu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Přepsat MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Přepsat bránu v DHCP odpovědích"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Přepsat síťovou masku, odesílanou klientům. Obvykle je spočítána podle "
+"subsítě, která je obsluhována."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Přepsat tabulku, používanou pro vnitřní cesty"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Přehled"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Vlastník"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Heslo PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Uživatelské jméno PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Zapouzdření PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Vyžadován balíček libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pakety"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Část zóny %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Heslo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autentizace heslem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Heslo privátního klíče"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Cesta k certifikátu CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Cesta k certifikátu klienta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Cesta k privátnímu klíči"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Špička:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Provést restart"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Provést reset"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Fyzická rychlost:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Fyzické nastavení"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Paketů"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Prosím vložte vaše uživatelské jméno a heslo."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Politika"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Stav portu:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Po takovém množství LCP echo selhání předpokládám, že peer je mrtvý. "
+"Použijte 0 pro ignorování chyb"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Zabraňuje komunikaci klient-klient"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Pokračovat"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Procesy"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protokol nového rozhraní"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Podpora pro protokol není nainstalována"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Poskytování NTP serveru"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Poskytování nové sítě"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Kvalita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Práh RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "RX Rate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Port pro Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Tajný klíč pro Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Server Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Výběr ověřování portů"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Tajný klíč pro Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Server Radius-Authentication"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Přečtěte si <code>/etc/ethers</code> ke konfiguraci <abbr title=\"Dynamic "
+"Host Configuration Protocol\">DHCP</abbr> Serveru"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Opravdu odstranit bezdrátovou síť? Odstranění nelze vrátit zpět!\n"
+"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím této "
+"sítě."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Opravdu resetovat všechny změny?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Opravdu prohodit protokol?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Připojení v reálném čase"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Grafy v reálném čase"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Zátěž v reálném čase"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Provoz v reálném čase"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Wireless v reálném čase"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Opětovné nastavení ochrany"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Rebootuji..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Rebootuje operační systém vašeho zařízení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Přijmout"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Přijímací anténa"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Přepojit toto rozhraní"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Reference"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Přenos"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Přenášet mezi sítěmi"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Vzdálená IPv4 adresa"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Odstranit"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Opakovat skenování"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Nahradit vstup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Nahradit bezdrátovou konfiguraci"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+# Charter je poskytovate
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Vyžadováno u některých ISP, např. Charter s DocSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Resetovat čítače"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Obnovit na výchozí"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Soubory Resolv a Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Soubor resolve"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Restart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Restartovat firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Obnovit"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Obnovit zálohu"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Odhalit/skrýt heslo"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Vrátit zpět"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Kořenový adresář souborů, přístupných přes TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Heslo routeru"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Trasy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Trasy určují, přes jaké rozhraní a bránu může být konkrétního hosta dosaženo."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Spustit kontrolu souborového systému před připojením zařízení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Spustit kontrolu souborového systému"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Přístup přes SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH klíče"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Uložit"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Uložit & použít"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Skenovat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Naplánované úlohy"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Přidána sekce"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sekce odebrána"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Podrobnosti viz manuálová stránka příkazu \"mount\""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Odesílat LCP echo požadaveky každých x sekund, účinné pouze ve spojení s "
+"prahem selhání."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Oddělovat klienty"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Nastavení serveru"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Název služby"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Typ služby"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Služby"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Nastavit synchronizaci času"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Nastavit DHCP server"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Ukázat aktuální seznam záložních souborů"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Shodit toho rozhraní"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signál"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Signál:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Velikost"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Přeskočit"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Skočit na obsah"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Skočit na navigaci"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Time sloty"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Některá pole obsahují neplatné hodnoty, nelze uložit!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Omlouváme se, ale požadovaný objekt nebyl nalezen."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Omlouváme se, na serveru došlo k neočekávané vyjímce."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Omlouváme se, ale v tomto zařízení není přítomná podpora pro upgrade "
+"systému. Nový obraz firmwaru musí být zapsán ručně. Prosím, obraťte se na "
+"wiki pro zařízení specifické instalační instrukce."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Zdroj"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Určuje port na kterém bude tato instance <em>Dropbearu</em> naslouchat"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Určuje množství neúspěšných ARP požadavků, po kterém je hostitel považován "
+"za mrtvého"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr "Určuje počet sekund, po kterém je hostitel považovám za mrtvého"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Zde nastavte soukromý šifrovací klíč."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Start"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Priorita spouštění"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Po spuštění"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statické IPv4 trasy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statické IPv6 trasy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Statické zápůjčky"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statické trasy"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Statická adresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Statické zápůjčky se používají pro přiřazení fixních IP adres a symbolických "
+"jmen DHCP klientům. Jsou také vyžadovány pro nedynamické konfigurace "
+"rozhraní, kde jsou povoleni pouze hosté s odpovídajícím nastavením."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Stav"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stop"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Striktní výběr"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Odeslat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Potlačit logování"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Vstupní bod"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Směrovač"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Směrovač číslo %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Směrovač číslo %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Směrovací protokol"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Synchronizovat s prohlížečem"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synchronizuji..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Systém"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Systémový log"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Vlastnosti systému"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Velikost bufferu systémového logu"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Nastavení TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Kořenový adresář TFTP serveru"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Rychlost TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Cíl"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Ukončit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Sekce <em>Nastavení zařízení</em> pokrývá fyzické nastavení radiového "
+"hardwaru jako kanál, vysílací výkon nebo výběr antény, které je sdíleno mezi "
+"všemi bezdrátovými sítěmi (pokud hardware podporuje multi-SSID). Nastavení "
+"konkrétní sítě jako šifrování, operační mód jsou seskupeny v sekci "
+"<em>Nastavení rozhraní</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Balíček <em>libiwinfo-lua</em> není nainstalován. Tato komponenta musí být "
+"nainstalována, aby fungovalo nastavení bezdátové sítě!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr "IPv6 prefix přidělený poskytovatelm většinou končí  <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Povolené znaky jsou: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> a "
+"<code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Soubor zařízení paměti nebo oddílu (<abbr title=\"například\">např.</abbr> "
+"<code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Souborový systém, který byl použit pro formátování paměti (<abbr title="
+"\"například\">napři.</abbr> <samp><abbr title=\"Souborový systém\">ext3</"
+"abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Obraz flash byl nahrán. Prosím porovnejte níže uvedený checksum a velikost "
+"souboru s originálním souborem pro zajištění integrity dat.<br /> Kliknutím "
+"na \"Pokračovat\" spustíte proceduru flashování."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Následující změny byly vráceny"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Následující pravidla jsou v nyní na tomto systému aktivní."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Zadané jméno sítě není jedinečné"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Tento hardware nepodporuje multi-SSID. Pokud budete pokračovat, existující "
+"konfigurace bude nahrazena."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr "Délka IPv4 prefixu v bitech, zbytek se používá v IPv6 adresách"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Délka IPv6 prefixu v bitech"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Síťové porty tohoto zařízení mohou být kombinovány do několika <abbr title="
+"\"Virtualních místních sítí\">VLAN</abbr>ve kterých počítače mohou "
+"komunikovat přímo mezi sebou. <abbr title=\"Virtualní místní sítě \">VLAN</"
+"abbr>se často používají na oddělení různých siťových částí. Většinou je "
+"jeden port pro připojení k vyšší síti (Uplink) jako třeba internet a "
+"zbývající porty pro místní síť."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Vybraný protokol potřebuje mít přiřazeno zařízení"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"Systém maže konfigurační oddíl, po skončení procesu bude automaticky "
+"restartován."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Systém nyní nahrává firmware.<br /> NEVYPÍNEJTE ZAŘÍZENÍ!<br /> Počkejte "
+"několik minut než se pokusíte znovu připojit. V záležitosti na vašem "
+"nastavení, bude možná nutné obnovit adresu vašeho počítače, aby jste se "
+"mohli znovu připojit."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Vzhled"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Nejsou žádné aktivní zápůjčky."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Nejsou zde žádné nevyřízené změny k navrácení!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Nejsou zde žádné nevyřízené změny!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Zatím zde není přiřazeno zařízení, prosím připojte nějaké v záložce "
+"\"Fyzické nastavení\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Na tomto routeru není nastaveno heslo. Prosím, nastavte heslo uživatele root "
+"tak, abyste ochránili webové rozhraní a mohli povolit SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Zde vidíte obsah souboru /etc/rc.local. Příkazy, které sem vložíte (před "
+"příkaz 'exit 0') budou spuštěny na konci bootovacího procesu."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Toto je jediný <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> v mistní síti"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Toto je systémový crontab, v němž můžete nastavit naplánované úlohy. "
+"Podrobnosti naleznete v crontab(5)."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a "
+"jejich stavy."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Tato sekce zatím neobsahuje žádné hodnoty"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Synchronizace času"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Synchronizace času dosud není nakonfigurována."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Časové pásmo"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Zde můžete nahrát dříve vygenerovaný záložní archiv, pokud chcete obnovit "
+"konfigurační soubory. Pro obnovení továrního nastavení stiskněte \"Obnovit "
+"výchozí\" (možné pouze s obrazy squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Dostupná celkem"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Provoz"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Přenos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Vysílací rychlost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Přenos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Vysílací výkon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Anténa vysílače"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Spouštění"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Trigger mód"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "ID tunelu"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Rozhraní tunelu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Tx-Power"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Typ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Pouze UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB zařízení"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Nespravovaný"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Neuložené změny"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Nepodporovaný typ protokolu."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Nahrát obraz pro upgrade systému, jímž bude přepsán běžící firmware. "
+"Zkontrolujte \"Keep settings\" za účelem udržení aktuální konfigurace "
+"(vyžaduje obraz kompatabilního firmwaru)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Nahrát archiv..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Nahrát soubor"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Použít <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Použít DHCP bránu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Pomocí ISO/IEC 3166 alpha2 kódů zemí."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Použít MTU na rozhraní tunelu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Použít TTL na rozhraní tunelu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Použít příznak broadcastu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Použít vlastní DNS servery"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Použít výchozí bránu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Použít směrovací tabulku"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Použitím tlačítka <em>Přidat</em> přidáte novou zápůjčku (lease). <em>MAC "
+"adresa</em> identifikuje počítač, <em>IPv4 adresa</em> určuje, jaká pevná "
+"adresa bude použita. <em>Hostname</em> je přiřazeno jako symbolické jméno."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Použit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Uživatelské jméno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANy na %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANy na %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN server"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Ověřit"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP Open System"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Sdílený klíč WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP heslo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM mód"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA heslo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Šifrování WPA vyžaduje nainstalovaný wpa_supplicant (pro klientský režim) "
+"nebo hostapd (pro AP a ad-hoc režim)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Čekání na realizaci změn..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Čekání na dokončení příkazu..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Varování"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Bezdrátová síť"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Bezdrátový adaptér"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Bezdrátová síť"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Přehled bezdrátových sití"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Zabezpečení bezdrátové sítě"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Bezdrátová síť vypnuta"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Bezdrátová síť nespojena"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Probíhá restartování bezdrátové sítě..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Bezdrátová síť je zakázána"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Bezdrátová síť je povolena"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Zapisovat přijaté požadavky DNS do systemového logu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Zde můžete povolit nebo zakázat init skripty. Změny se projeví po restartu "
+"zařízení.<br /><strong>Varování: Pokud zakážete základní init skripty jako "
+"\"network\", vaše zařízení se může stát nepřístupným!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "libovolný"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "přemostěný"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "vytvoří most přes vybraná rozhraní"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "zakázat"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "expirované"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Soubor, ve kterém budou uloženy zadané <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> výpůjčky (leases)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "plný-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "poloviční-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "skrytý"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "pokud cílem je síť"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "vstup"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "místní <abbr title=\"Domain Name System\">DNS</abbr> soubor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "ne"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "žádné spojení"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "off"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "on"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "směrované"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "označený"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "neznámý"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "neomezený"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "nespecifikovaný"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "nespecifikovaný -nebo- vytvořit:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "neoznačený"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "ano"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Zpět"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Vložte veřejné klíče (na každý řadek jeden) pro ověřovaní SSH přístupu."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Heslo bylo úspěšně změněno!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Neznámá chyba, heslo nebylo změněno!"
+
+#~ msgid "Design"
+#~ msgstr "Vzhled"
+
+#~ msgid "Available packages"
+#~ msgstr "Dostupné balíčky"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Zobrazeny pouze balíčky obsahující"
+
+#~ msgid "Download and install package"
+#~ msgstr "Stáhnout a nainstalovat balíček"
+
+#~ msgid "Filter"
+#~ msgstr "Filtr"
+
+#~ msgid "Find package"
+#~ msgstr "Vyhledat balíček"
+
+#~ msgid "Free space"
+#~ msgstr "Volné místo"
+
+#~ msgid "Install"
+#~ msgstr "Instalovat"
+
+#~ msgid "Installed packages"
+#~ msgstr "Nainstalované balíčky"
+
+#~ msgid "No package lists available"
+#~ msgstr "Seznam balíčků není k dispozici"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Konfigurace balíčků OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Seznamy balíčků jsou starší než 24 hodin"
+
+#~ msgid "Package name"
+#~ msgstr "Název balíčku"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Update lists"
+#~ msgstr "Aktualizovat seznamy"
+
+#~ msgid "Version"
+#~ msgstr "Verze"
+
+#~ msgid "none"
+#~ msgstr "žádný"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Zakázat nastavení DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 a IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Pouze IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Pouze IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Doba platnosti zápůjčky"
+
+#~ msgid "Multicast address"
+#~ msgstr "Adresa vícesměrového vysílání"
+
+#~ msgid "Protocol family"
+#~ msgstr "Rodina protokolů"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Žádné řetězce v této tabulce"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Konfigurační soubory budou zachovány."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Pozn: Konfigurační soubory budou vymazány."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Aktivovat tuto síť"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b bezdrátový ovladač"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Rozhraní se vypíná..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Rozhraní bylo znovu připojeno"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Rozhraní bylo vypnuto"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b Wireless Controller"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s Wireless Controller"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Opravdu vypnout rozhraní \"%s\" ?\n"
+#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
+#~ "tohoto rozhraní."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Přepojuji rozhraní"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Shodit tuto síť"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Bezdrátová síť restartována"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Bezdrátová síť vypnuta"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP výpůjčky"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6 přidělené IP"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Opravdu odstranit toto rozhraní? Odstranění nelze vrátit zpět!\n"
+#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
+#~ "tohoto rozhraní."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Opravdu vypnout síť ?\n"
+#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
+#~ "tohoto rozhraní."
+
+#~ msgid "Sort"
+#~ msgstr "Seřadit"
+
+#~ msgid "help"
+#~ msgstr "pomoc"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Stav IPv4 WAN"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Stav IPv6 WAN"
+
+#~ msgid "Apply"
+#~ msgstr "Použít"
+
+#~ msgid "Applying changes"
+#~ msgstr "Probíhá uplatňování nastavení"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Nastavení uplatněno."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Uložit &#38; použít"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Následující změny byly provedeny"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!"
+
+#~ msgid "Action"
+#~ msgstr "Akce"
+
+#~ msgid "Buttons"
+#~ msgstr "Tlačítka"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximální doba držení"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimální čas zápůjčky"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Na této stránce si můžete nastavit vlastní události tlačítek"
+
+#~ msgid "Leasetime"
+#~ msgstr "Doba trvání zápůjčky"
+
+#~ 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íť."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Připojit k síti: nastavení"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "Port %d je neoznačený ve více VLAN!"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Rozhraní VLAN"
diff --git a/package/luci/modules/luci-base/po/de/base.po b/package/luci/modules/luci-base/po/de/base.po
new file mode 100644 (file)
index 0000000..0983eb4
--- /dev/null
@@ -0,0 +1,6780 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 17:57+0200\n"
+"PO-Revision-Date: 2018-12-13 11:43+0100\n"
+"Last-Translator: Jo-Philipp Wich <jo@mein.io>\n"
+"Language-Team: \n"
+"Language: de\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.11\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d ungültige Felder"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s darf nicht ohne VLAN-Tag in mehreren VLAN-Gruppen vorkommen!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s verfügbar)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(leer)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(keine Schnittstellen)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Zusätzliches Feld --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Bitte auswählen --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- benutzerdefiniert --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- anhand Gerätedatei selektieren --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- anhand Label selektieren --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- UUID vergleichen --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- Bitte auswählen --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Systemlast (1 Minute):"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Systemlast (15 Minuten):"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "vierstellige hexadezimale ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Systemlast (5 Minuten):"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r: Schnelle Client-Übergabe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "802.11w: Schutz von Management-Frames aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "802.11w: Maximales Timeout"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "802.11w: Wiederholungsintervall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> Abfrageport"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> Serverport"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr>-Server in der Reihenfolge der "
+"Resolv-Datei abfragen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "IPv4-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "IPv4-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "IPv4-Netzmaske"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr "IPv6 Host- oder Netzwerk-Addresse (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "IPv6-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr "IPv6-Suffix (hexadezimal)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "LED Konfiguration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "MAC-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+"<abbr title=\"Eindeutiger DHCP Bezeichner (DHCP Unique Identifier)\">DUID</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> Anzahl von <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> Größe von <abbr title=\"Extension "
+"Mechanisms for Domain Name System\">EDNS0</abbr>-Paketen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Max.</abbr> Anzahl gleichzeitiger Abfragen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Hinweis: Der Cron-Dienst muss manuell neu gestartet werden wenn die "
+"Crontab-Datei vor der Bearbeitung leer war."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+"Ein neuer Login ist erforderlich da die Benutzersitzung abgelaufen ist."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Grenzwert für ARP-Auflösungsversuche"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr "ATM (Asynchroner Transfer-Modus)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM Brücken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM Virtual Channel Identifier (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM Virtual Path Identifier (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 Brücken exponieren in AAL5 gekapselten Ethernetverkehr als virtuelle "
+"Linux Netzwerkschnittstellen welche z.B. in Verbindung mit DHCP oder PPP "
+"genutzt werden können um sich in das Providernetzwerk einzuwählen."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM Geräteindex"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Access Concentrator"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Access Point"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Aktionen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Aktive IPv4-Routen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Aktive IPv6-Routen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktive Verbindungen"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktive DHCP-Leases"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktive DHCPv6-Leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "IPv4-Adresse hinzufügen…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "IPv6-Adresse hinzufügen…"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "Schlüssel hinzufügen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Lokalen Domainsuffx an Namen aus der Hosts-Datei anhängen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Neue Schnittstelle hinzufügen..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Zusätzliche Hosts-Dateien"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Zusätzliche Nameserver-Datei"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adresse"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adresse der lokalen Relay-Brücke"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "Erweitert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Erweiterte Einstellungen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "Vollständige Sendeleistung (ACTATP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alarm"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Alias-Schnittstelle"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Alias von \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Alle Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren "
+"Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "IPs sequenziell vergeben"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Erlaube Anmeldung per Passwort"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Erlaube dem Access-Point die Trennung von Clients mit schlechter "
+"Signalqualität"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Alle außer gelistete erlauben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Veraltete 802.11b-Raten erlauben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Nur gelistete erlauben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Erlaube localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "Entfernten Hosts erlauben zu lokale SSH-Tunnel-Ports zu verbinden"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "\"root\" Login mit Passwort aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+"Erlaubt es dem <em>root</em> Benutzer sich mit einem Passwort statt einem "
+"Zertifikat einzuloggen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Dies erlaubt DNS-Antworten im 127.0.0.0/8 Bereich der z.B. für RBL Dienste "
+"genutzt wird"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Erlaubte IP-Adressen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Immer Defaultrouter ankündigen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Immer 40MHz Kanalbandbreite benutzen, auch wenn sich der sekundäre Kanal mit "
+"benachbarten Funkzellen überlappt. Die Benutzung dieser Option ist eine "
+"Verletzung des IEEE 802.11n-2009 Standards!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr "Annex A, L und M (alle)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr "Annex B (alle Arten)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr "Annex J (alle Arten)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr "Annex M (alle Arten)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"Kündigt im Netzwerk einen Defaultrouter an, auch wenn kein öffentlicher "
+"Adressbereich verfügbar ist."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Angekündigte Suchdomains"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Angekündigte DNS Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Anonyme Identität"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "automatische Mountpunkte"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "automatische Swap-Aktivierung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenne 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenne 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Antennenkonfiguration"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Beliebige Zone"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Ungeprüft anwenden"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+"Anforderung zur Anwendung der Änderungen mit Status <code>%h</code> "
+"fehlgeschlagen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Architektur"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+"Legt die Größe der dieser Schnittstelle zugewiesenen Partitionen der "
+"öffentlichen IPv6-Präfixe fest."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Schnittstellen zuweisen..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+"Der Schnittstelle zugewiesene Partitionen des Adressraums werden anhand "
+"dieser hexadezimalen ID gewählt."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Assoziierte Clients"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "Assoziierungen"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Berechtigungsgruppe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Authentifizierung"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Authentifizierungstyp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Authoritativ"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorisierung benötigt"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Automatisches Neuladen"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Automatisch"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "automatisches Homenet-Protokoll (HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "Dateisystem vor dem Einhängen automatisch auf Fehler prüfen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "Unkonfigurierte Dateisysteme automatisch einhängen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "Unkonfigurierte SWAP-Partitionen automatisch aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Dateisystem automatisch einhängen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "SWAP automatisch aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Verfügbar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Durchschnitt:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Zurück"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Zurück zur Übersicht"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Zurück zur Konfiguration"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Zurück zur Übersicht"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Zurück zu den Scan-Ergebnissen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Sichern"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Backup / Firmware Update"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Liste zu sichernder Dateien"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Ungültige Adresse angegeben!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Frequenztyp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Beacon-Intervall"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Nachfolgend wird eine generierte Liste der zu sichernden Dateien angezeigt. "
+"Sie enthält alle notwendigen Systemdateien sowie die von opkg als geändert "
+"markierten Konfigurationsdateien. Des Weiteren sind die durch "
+"benutzerdefinierte Dateiemuster betroffenen Dateien enthalten."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+"Dynamisch an Schnittstellen binden statt die globale Standardadresse zu "
+"benutzen (als Standard für Linux-Systeme empfohlen)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "An Schnittstelle binden"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "Tunnelendpunkt an diese Schnittstelle binden (optional)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Ungültige \"NX-Domain\" Antworten ignorieren"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Netzwerkbrücke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Geräteindex der Brücke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Während des Bootvorgangs starten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s W-LAN Adapter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 W-LAN Adapter"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Gepuffert"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert "
+"wenn leer). "
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU-Nutzung (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "Anruf fehlgeschlagen"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Kategorie"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Achtung: Konfigurationsdateien werden gelöscht"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Achtung: Systemupgrade wird erzwungen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Kette"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "Login-Passwort ändern"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Änderungen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Änderungen angewendet."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "Änderungen wurden verworfen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "Ändere Passwort…"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"Kanal %d ist in der Regulierungszone \"%s\" nicht verfügbar und wurde "
+"automatisch auf %d gesetzt."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Prüfen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Dateisysteme prüfen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+"Diese Option setzen um existierende Netzwerke auf dem Radio zu löschen."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Prüfsumme"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Wähle \"mtdblock\" Datei"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert "
+"<em>unspezifiziert</em> wählen um die Schnittstelle von der Zone zu lösen "
+"oder das <em>erstellen</em> Feld ausfüllen um eine neue Zone direkt "
+"anzulegen und zuzuweisen."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Wählt die Netzwerke die dieser WLAN-Schnittstelle zugeordnet werden. Das "
+"<em>erstelle</em>-Feld ausfüllen um ein neues Netzwerk zu erzeugen."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Verschlüsselungsalgorithmus"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Cisco UDP-Kapselung"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Zum Herunterladen der aktuellen Konfigurationsdateien als gepacktes Archiv "
+"\"Sicherung erstellen\" drücken."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"\"Speichere mtdblock\" anklicken um die ausgewählte mtdblock-Datei "
+"herunterzuladen. (Hinweis: Diese Funktionalität ist nur für Experten "
+"gedacht!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Zu sendende Client-ID bei DHCP Anfragen"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "Schließen"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Inaktive Verbindungen nach Ablauf dieser Zeit in Sekunden schließen (0 um "
+"die Verbindung immer aufrecht zu erhalten)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Schließe Liste..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Sammle Daten..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Befehl"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "Kommentar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Allgemeine Konfiguration"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Deaktiviert bestimmte EAPOL-Key-Retransmissionen um Key-Reinstallation "
+"(KRACK) Angriffe auf Client-Seite zu erschweren. Diese Abhilfemaßnahme kann "
+"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von "
+"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "Konfiguration fehlgeschlagen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Konfigurationsdateien werden beibehalten"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "Die Konfiguration wurde angewendet."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "Die Konfiguration wurde zurückgerollt!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Bestätigung"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Verbinden"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Verbunden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Verbindungslimit"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "Verbindungsversuch fehlgeschlagen"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Verbindungen"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"Das Gerät konnte nach Anwendung der Konfigurationsänderungen nicht mehr "
+"erreicht werden. Unter Umständen müssen Sie sich neu verbinden wenn "
+"netzwerkbezogene Einstellungen wie die IP-Adresse oder W-LAN Passwörter "
+"geändert wurden."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Land"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Ländercode"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Die folgende Schnittstelle abdecken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Die folgende Schnittstellen abdecken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Firewallzone anlegen / zuweisen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Erzeuge Schnittstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Erzeuge Netzwerkbrücke über mehrere Schnittstellen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritisch"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron Protokoll-Level"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Benutzerdefinierte Schnittstelle"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Delegiertes IPv6-Präfix"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Eigene Dateien wie Zertifikate oder Scripte können unter Umständen auf dem "
+"System verbleiben. Um dies zu vermeiden, sollte zuerst auf "
+"Werkseinstellungen zurückgesetzt werden."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr "Passt das Verhalten der Geräte-LEDs an - wenn dies möglich ist."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP-Server"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP und DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP Client"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-Optionen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "DHCPv6 Client"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "DHCPv6-Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "DHCPv6-Dienst"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS-Weiterleitungen"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "DNSSEC Signaturstatus prüfen"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "DPD Inaktivitätstimeout"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "DS-Lite AFTR-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "DSL Leitungsmodus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Datenrate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Standard %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Default Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "Der Standardwert ist zustandslos und zustandsorientiert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Ausgangszustand"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definiert einen Namen für dieses Netzwerk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Definiert zusätzliche DHCP-Optionen, z.B. \"<code>6,192.168.2.1,192.168.2.2</"
+"code>\" um einen anderen DNS-Server an Clients zu verteilen."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Löschen"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "Schlüssel löschen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Dieses Netzwerk löschen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Beschreibung"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Ziel"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Gerät"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Gerätekonfiguration"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Das Gerät startet neu..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Das Gerät ist nicht erreichbar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Gerät nicht erreichbar! Wartet immer noch..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnosen"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Einwahlnummer"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Verzeichnis"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-Server auf "
+"dieser Schnittstelle deaktivieren"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Verschlüsselung deaktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "Inaktivitäts-Proben deaktivieren"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Dieses Netzwerk deaktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Deaktiviert (Standard)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Trennung bei schlechtem Antwortverhalten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Eingehende RFC1918-Antworten verwerfen"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "Trennen"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Verbindungstrennung fehlgeschlagen"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Schließen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Distanzoptimierung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distanz zum am weitesten entfernten Funkpartner in Metern."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversität"
+
+# Nur für NAT-Firewalls?
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ist ein kombinierter <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr>-Server und <abbr title=\"Domain Name System\">DNS</"
+"abbr>-Forwarder für <abbr title=\"Network Address Translation\">NAT</abbr> "
+"Router"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Negative Antworten nicht zwischenspeichern, z.B. bei nicht existierenden "
+"Domains"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Keine Anfragen weiterleiten welche nicht durch öffentliche Server "
+"beantwortet werden können"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Keine Rückwärtsauflösungen für lokale Netzwerke weiterleiten"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+"Soll der untenstehende SSH-Schlüssel wirklich vom System entfernt werden?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Anfragen nur mit Domain"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Domain-Whitelist"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Nicht fragmentieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr "Anfragen ohne Domainnamen nicht weiterleiten"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "runter"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Backup herunterladen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Mtdblock-Datei herunterladen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr "Downstream SNR-Offset"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear Instanz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Der SSH-Server ermöglicht Shell-Zugriff über das Netzwerk und bietet einen "
+"integrierten SCP-Dienst."
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "Dynamisches DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dynamischer Tunnel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"DHCP Adressen dynamisch erzeugen. Wenn dies deaktiviert ist, werden nur "
+"Clients mit konfigurierten statischen Leases bedient"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "EA-Bitlänge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-Methode"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration "
+"anpassen und \"Speichern\" klicken um die Seite neu zu laden."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Diese Schnittstelle bearbeiten"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Dieses Netzwerk bearbeiten"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Notfall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"<abbr title=\"Internet Group Management Protocol\">IGMP</abbr>-Erkennung "
+"aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> aktivieren"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Dynamisches HE.net IP-Adress-Update aktivieren"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "IPv6 anfordern"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Aktiviere Jumbo Frame Durchleitung"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Aktiviere NTP-Client"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Single-DES aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "TFTP-Server aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "VLAN-Funktionalität aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) Gegenmaßnahmen aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Learning und Aging aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Port-Mirroring für eingehende Pakete aktivieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Port-Mirroring für ausgehende Pakete aktivieren"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Diesen Mountpunkt aktivieren"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "Dieses Netzwerk aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Diesen Auslagerungsspeicher aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Aktivieren/Deaktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Aktiviert die automatische IGMP-Erkennung auf dieser Netzwerkbrücke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"Aktiviert schnelles Roaming zwischen Access-Points des selben "
+"Mobilitätsbereiches"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Kapselung"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Verschlüsselung"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "Entfernter Server"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "Entfernter Port"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "Eigenen Wert angeben"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "Eigene Werte angeben"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Lösche..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Fehler"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Fehlersekunden (ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Netzwerkschnittstelle"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Netzwerk Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Schnittstellen ausschließen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Hosts vervollständigen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "Erwarte %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Verfällt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Gültigkeitsdauer von vergebenen Adressen. Das Minimum sind 2 Minuten "
+"(<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Extern"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "Externe R0-Key-Holder-List"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "Externe R1-Key-Holder-List"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Externer Protokollserver IP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Externer Protokollserver Port"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Externes Protokollserver Protokoll"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Zusätzliche SSH-Kommando-Optionen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr "FT-über-DS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "FT-drahtlos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr "FT Protokoll"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+"Konnte nicht innerhalb von %d Sekunden bestätigen, warte auf Zurückrollen "
+"der Änderungen..."
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Datei"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Dateiname des Boot-Images welches den Clients mitgeteilt wird."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Dateisystem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Private Anfragen filtern"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Windowsanfragen filtern"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "Finalisierung fehlgeschlagen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert "
+"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte "
+"neu."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Suchen und Verbinden von Netzwerken"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Fertigstellen"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "Firewall-Markierung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Firewall Einstellungen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Firewall-Status"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Firmware-Datei"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Firmware Version"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Fester Port für ausgehende DNS-Anfragen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Firmware aktualisieren"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Firmware aktualisieren..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Neues Firmware Image schreiben"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Flash-Operationen"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Firmware wird installiert..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Start erzwingen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "40MHz-Modus forcieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "CCMP (AES) erzwingen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"Aktiviere DHCP-Server für dieses Netzwerk, selbst wenn ein anderer aktiver "
+"Server erkannt wurde."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Erzwinge TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Erzwinge TKIP und CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Erzwinge Verbindung"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Erzwinge Upgrade"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Benutzung von NAT-T erzwingen"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "Abweichendes Formular-Token"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "DHCP Traffic weiterleiten"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "Fehlerkorrektursekunden (FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Broadcasts weiterleiten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "Mesh-Nachbar-Traffic weiterleiten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Weiterleitungstyp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Fragmentierungsschwelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Frei"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter <a href="
+"\"http://wireguard.com\">wireguard.com</a>."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Nur GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "Gateway-Adresse ist ungültig"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Gateway-Ports"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Allgemeine Einstellungen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Allgemeine Einstellungen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Konfiguration generieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "PMK lokal generieren"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Sicherung erstellen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Generischer 802.11%s W-LAN Adapter"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"Die angegebenen Passwörter stimmen nicht überein, das Systempasswort wurde "
+"nicht geändert!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Globale Einstellungen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Globale Netzwerkeinstellungen"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Zur Passwortkonfiguration..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Gehe zur entsprechenden Konfigurationsseite"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Gruppenpasswort"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Gast"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net Passwort"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net Benutzername"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "HT-Modus (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Auflegen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr "Anzahl Header-Error-Code-Fehler (HEC)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"An dieser Stelle können Grundeinstellungen des Systems wie Hostname oder "
+"Zeitzone vorgenommen werden."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "ESSID verstecken"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "Leere Chains ausblenden"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Host-Einträge"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Host Verfallsdatum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> oder Netzwerk"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "\"Host-Uniq\"-Bezeichner"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Hostname"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Zu sendender Hostname bei DHCP Anfragen"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Rechnernamen"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "IKE-DH-Gruppe"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IP-Adressen"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "IP-Protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP-Adresse"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "IP-Adresse ist ungültig"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "IP-Adresse fehlt"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 Firewall"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 Adresse"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "IPv4 Zuweisungslänge"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 Broadcast"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 Gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 Netzmaske"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "IPv4-Netzwerk in Addresse/Netzmaske-Notation"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "IPv4 Bereich"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Länge des IPv4-Präfix"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-Adresse"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "IPv6 Nachbarn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6 Einstellungen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 ULA-Präfix"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 Adresse"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "IPv6 Zuweisungshinweis"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "IPv6 Zuweisungslänge"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 Gateway"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "IPv6-Netzwerk in Addresse/Netzmaske-Notation"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6-Präfix"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Länge des IPv6-Präfix"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "Geroutetes IPv6-Präfix"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "IPv6 Endung"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-Adresse"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6 Präfix-Delegation (PD)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-über-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-über-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identität"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Wenn angegeben, wird das Gerät anhand seiner UUID statt fester Gerätedatei "
+"gemounted"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Wenn angegeben, wird das Gerät nach anhhand des Partitionslabels statt "
+"fester Gerätedatei gemounted"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Wenn deaktiviert, wird keine Default-Route gesetzt"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Falls deaktiviert werden die zugewiesenen DNS-Server ignoriert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Falls der Arbeitsspeicher des Routers nicht ausreicht, kann dieser nicht "
+"benutzte Daten zeitweise auf einem SWAP-Laufwerk auslagern um so die "
+"effektive Größe des Arbeitsspeichers zu erhöhen. Die Auslagerung der Daten "
+"ist natürlich bedeutend langsamer als direkte Arbeitsspeicherzugriffe."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignoriere /etc/hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Schnittstelle ignorieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Resolv-Datei ignorieren"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Image"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Ein"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+msgid ""
+"In order to prevent unauthorized access to the system, your request has been "
+"blocked. Click \"Continue »\" below to return to the previous page."
+msgstr ""
+"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser "
+"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite "
+"zurückzukehren."
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Timeout bei Inaktivität"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Eingehend:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Initialisierung fehlgeschlagen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Startscript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Startscripte"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen "
+"zu können"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Installiere Paket %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Installiere Protokoll-Erweiterungen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Schnittstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Schnittstellenkonfiguration"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Schnittstellenübersicht"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Schnittstelle verbindet neu..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Schnittstellenname"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Schnittstelle existiert nicht oder ist nicht verbunden."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Schnittstellen"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Intern"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Interner Serverfehler"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Ungültige Eingabe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "Ungültige VLAN ID angegeben! Nur IDs zwischen %d und %d sind erlaubt."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "Ungültige VLAN ID angegeben! Die ID ist muß eindeutig sein!"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Clients isolieren"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Das verwendete Image scheint zu groß für den internen Flash-Speicher zu "
+"sein. Überprüfen Sie die Imagedatei!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScript benötigt!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Netzwerk beitreten"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Netzwerk beitreten: Suche nach Netzwerken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Trete Netzwerk %q bei"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Konfiguration behalten"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernelprotokoll"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Kernel Version"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Schlüssel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Schlüssel Nr. %d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Töten"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP Server"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP Echo Fehler Schwellenwert"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP Echo Intervall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Label"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Sprache"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Sprache und Aussehen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Latenz"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Zweigstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Laufzeit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Leasedatei"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Verbleibende Gültigkeit"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Zur automatischen Erkennung leer lassen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Leer lassen um die aktuelle WAN-Adresse zu verwenden"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legende:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch "
+"Dritte zu verhindern."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Dämpfung (LATN)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Verbindungsmodus"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Verbindungsstatus"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Verbindungsdauer"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Verbindung hergestellt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Liste von <abbr title=\"Domain Name System\">DNS</abbr>-Servern an welche "
+"Requests weitergeleitet werden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+"Liste von R0KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /"
+">Format: MAC-Adresse,NAS-Identifier,128 Bit Schlüssel in Hex-Notation. <br /"
+">Diese Liste wird verwendet um R0KH-Bezeichner (NAS Identifier) einer Ziel-"
+"MAC-Adresse zuzuordnen damit ein PMK-R1-Schlüssel von der R0KH angefordert "
+"werden kann, mit der sich der Client wärend der anfänglichen "
+"Mobilitätsdomänen-Assoziation verbunden hat."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+"Liste von R1KH-Bezeichnern innerhalb der selben Mobilitätsdomäne. <br /"
+">Format: MAC-Adresse,R1KH-ID im MAC-Adress-Format,128 Bit Schlüssel in Hex-"
+"Notation. <br />Diese Liste wird benutzt um einer R1KH-ID eine Ziel-MAC-"
+"Adresse zuzuordnen wenn ein PMK-R1-Schlüssel von einer R0KH-Station "
+"versendet wird. Die Liste dient auch zur Authorisierung von R1KH-IDs, welche "
+"innerhalb der Mobilitätsdomain PMK-R1-Schlüssel anfordern dürfen."
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Liste der SSH Schlüssel zur Authentifikation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Aktive Schnittstellen"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Aktive Ports"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Nur auf die gegebene Schnittstelle reagieren, nutze alle wenn nicht "
+"spezifiziert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Serverport für eingehende DNS Abfragen"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Last"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Durchschnittslast"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Lade"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "Lade SSH-Schlüssel…"
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "Lokale IP-Adresse ist ungültig"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Lokale IP-Adresse"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Lokale IPv4 Adresse"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Lokale IPv6 Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Nur lokale Dienste"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Lokales Startskript"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Lokale Zeit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Lokale Domain"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Spezifiziert den lokalen Domainnamen. Anfragen für Hostnamen welche auf "
+"diese Domain zutreffen werden nie weitergeleitet und ausschließlich aus DHCP-"
+"Namen oder Hosts-Dateien aufgelöst"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Lokaler Domain-Suffix welcher an DHCP Namen und Host-Datei Einträge "
+"angehangen wird"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Lokaler Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Hostnamen je nach anfragendem Subnetz auflösen wenn mehrere IPs verfügbar "
+"sind"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Lokalisiere Anfragen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Festgelegt auf Kanal %s, verwendet durch: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Protokolllevel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Schreibe Abfragelog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Protokollierung"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Anmelden"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Abmelden"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr "Signalverlustsekunden (LOSS)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-Adressfilter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-Filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-Adressliste"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "MAP-Regel ist ungültig"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Manuell"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "Maximal erreichbare Datenrate (ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "Maximal erlaubter Inaktivitätszeitraum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Maximal zulässige Anzahl an gleichzeitigen DNS-Anfragen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Maximale Zeit die gewartet wird bis das Modem bereit ist (in Sekunden)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des "
+"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" "
+"etc."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Hauptspeicher"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Speichernutzung (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "Mesh-ID"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "Spiegel-Monitor-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "Spiegel-Quell-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Erweiterung für Protokoll %q fehlt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "Mobilitätsbereich"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modus"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Modell"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Modem-Grundeinstellung"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modemgerät"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "Modem-Informationsabfrage fehlgeschlagen"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Wartezeit für Modeminitialisierung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Mount-Eintrag"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Einhängepunkt"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Einhängepunkte"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Mountpunkte - Mount-Eintrag"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Mountpunkte - Auslagerungsdatei"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Einhängepunkte bestimmen, an welcher Stelle des Dateisystems bestimmte "
+"Laufwerke und Speicher zur Verwendung eingebunden werden."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "Nicht explizit konfigurierte Dateisysteme einhängen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Mount-Optionen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Mountpunkt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Unkonfigurierte SWAP-Partitionen aktivieren"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Eingehängte Dateisysteme"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Nach unten schieben"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Nach oben schieben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "NAT-T Modus"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "NAT64-Präfix"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTP Server Kandidaten"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Name"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Name der neuen Schnittstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Name des neuen Netzwerkes"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigation"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Netzmaske"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Netzwerk"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Netzwerk-Werkzeuge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Netzwerk-Boot-Image"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "Netzwerkgerät ist nicht vorhanden"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Netzwerk ohne Schnittstellen."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Weiter »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "Nein"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Kein NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Keine Dateien gefunden"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Keine Informationen verfügbar"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "Kein passendes delegiertes Prefix"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Kein Negativ-Cache"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Keine Netzwerke auf diesem Gerät konfiguriert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Netzwerkname nicht angegeben"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Kein Passwort gesetzt!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "Bisher keine SSH-Schlüssel hinterlegt."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Keine Regeln in dieser Kette"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Noch keine Scan-Ergebnisse verfügbar..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Keine Zone zugewiesen"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Rauschen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Signal-Rausch-Abstand (SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Noise:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "Nicht-präemptive CRC-Fehler (CRC_P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "An Schnittstellen binden"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "keine"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Nicht Gefunden"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Nicht assoziiert"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Nicht verbunden"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Hinweis: Länge des Namens beachten"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Notiz"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "DNS-Auflösung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"Anzahl der zwischengespeicherten DNS-Einträge. Maximum sind 10000 Einträge, "
+"\"0\" deaktiviert die Zwischenspeicherung."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "Für Kompression benutze parallele Prozessanzahl"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "Chiffriertes Gruppenpasswort"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "Chiffriertes Passwort"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "IPv6-Adresse beziehen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Verzögerung für Ausschalt-Zustand"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"An dieser Stelle können die einzelnen Schnittstellen des Netzwerkes "
+"konfiguriert werden. Es können mehrere Schnittstellen zu einer Brücke "
+"zusammengefasst werden, indem diese durch Leerzeichen getrennt aufgezählt "
+"werden und ein entsprechender Haken im Feld Netzwerkbrücke gesetzt wird. Es "
+"können VLANs in der Notation SCHNITTSTELLE.VLANNR (z.B.: eth0.1) verwendet "
+"werden."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Verzögerung für Anschalt-Zustand"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Es muss entweder ein Hostname oder eine MAC-Adresse angegeben werden!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Ein oder mehrere Felder enthalten ungültige Werte!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "Ein oder mehrere ungültige/benötigte Werte auf Registerkarte"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Ein oder mehr benötigte Felder sind nicht ausgefüllt!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Liste öffnen..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Betriebsfrequenz"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Option geändert"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Option entfernt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Optional"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in "
+"hexadezimal mit führendem <code>0x</code> angeben."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder "
+"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem "
+"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um "
+"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere "
+"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Optionale Beschreibung des entfernten VPN-Partners."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor "
+"dem Verbindungsaufbau aufgelöst."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "Optional. Maximale MTU für Tunnelschnittstellen."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "Optional. Port-Nummer des Verbindungspartners."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 "
+"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 "
+"Sekunden."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Optionen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Andere:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Aus"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Ausgehend:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "Ausgehende Schnittstelle"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "MAC-Adresse überschreiben"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "MTU-Wert überschreiben"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "TOS-Wert überschreiben"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "TTL-Wert überschreiben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Standard Schnittstellennamen überschreiben"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Gateway-Adresse in DHCP-Antworten überschreiben"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Überschreibt die Netzmaske welche an Clients geschickt wird. Normalerweise "
+"wird diese vom bedienten Subnetz abgeleitet."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Überschreibt die benutzte Tabelle für interne Routen"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Übersicht"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Besitzer"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP Passwort"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP Benutzername"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "PIN-Code abgelehnt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA Kapselung"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "PSID-Offset"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "PSID-Bitlänge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr "PTM/EFM (Paket-Transfer-Modus)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Benötige das libiwinfo Paket!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pakete"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Teil von Zone %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Passwort"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Passwortanmeldung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Passwort des privaten Schlüssels"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Password des inneren, privaten Schlüssels"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Passwort Bestätigung"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "Schlüssel einfügen oder Schlüsseldatei hereinziehen…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Pfad zum CA-Zertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Pfad zu Client-Zertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Pfad zum Privaten Schlüssel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Pfad zum inneren CA-Zertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Pfad zum inneren Client-Zertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Pfad zum inneren, privaten Schlüssel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Spitze:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "Entfernte IP-Adresse"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Entfernte IP-Adresse fehlt"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Verbindungspartner"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Neustart durchführen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Reset durchführen"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "Persistentes Keep-Alive"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Phy-Rate:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Physische Einstellungen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping-Anfrage"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkte."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Bitte Benutzernamen und Passwort eingeben."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Standardregel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Port-Status:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Energiesparmodus"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "Präemptive CRC-Fehler (CRCP_P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "LTE bevorzugen"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "UMTS bevorzugen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "Delegiertes Präfix"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "Gemeinsamer Schlüssel"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Deklariere den Client als tot nach der angegebenen Anzahl von LCP Echo "
+"Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Verhindert das Binden an diese Schnittstellen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Unterbindet Client-Client-Verkehr"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Privater Schlüssel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Fortfahren"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Prozesse"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Profil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protokoll für die neue Schnittstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Protokollunterstützung ist nicht installiert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "NTP-Server anbieten"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Neues Netzwerk anbieten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Öffentlicher Schlüssel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"Öffentliche Schlüssel erlauben eine passwortlose SSH-Anmeldung mit höherer "
+"Sicherheit im Vergleich zur Benutzung einfacher Passwörter. Um einen neuen "
+"Schlüssel auf dem Gerät zu hinterlegen, kann entweder eine OpenSSH-"
+"kompatible öffentliche Schlüsselzeile in das Eingabefeld kopiert, oder eine "
+"eine Schlüsseldatei mit der Endung <code>.pub</code> in das Eingabefeld "
+"gezogen werden."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an "
+"Clients."
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Qualität"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr "Alle verfügbaren übergeordneten DNS-Server abfragen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "R0-Schlüsselgültigkeit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "R1-Schlüsselinhaber"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "RFC3947 \"NAT-T\"-Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS-Schwelle"
+
+# Ein / Aus, eingehend / ausgehend?
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "RX-Rate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radius-Accounting-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radius-Accounting-Secret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radius-Accounting-Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius-Authentication-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius-Authentication-Secret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius-Authentication-Server"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Hexadezimal-kodierte Zeichensequenz. Nur angeben wenn der Internetanbieter "
+"einen bestimmten Wert erwartet."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr "Lese Informationen aus /etc/ethers um den DHCP-Server zu konfigurieren"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"Diese Schnittstelle wirklich löschen? Das Löschen kann nicht rückgängig "
+"gemacht werden! Der Kontakt zum Gerät könnte verloren gehen wenn die "
+"Verbindung über diese Schnittstelle erfolgt."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Dieses Drahtlosnetzwerk wirklich löschen? Der Schritt kann nicht rückgängig "
+"gemacht werden!\n"
+"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über dieses Netzwerk "
+"verbunden sind."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Sollen wirklich alle Änderungen verworfen werden?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Protokoll wirklich wechseln?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Echtzeitverbindungen"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Echtzeit-Diagramme"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Echtzeitsystemlast"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Echtzeitverkehr"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Echtzeit-WLAN-Signal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Reassoziierungsfrist"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "DNS-Rebind-Schutz"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Neu Starten"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Das System wird neu gestartet..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Startet das Betriebssystem des Routers neu."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Empfangen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Empfangsantenne"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Diese Schnittstelle neu verbinden"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Verweise"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relay"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Relay-Brücke"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Zwischen folgenden Netzwerken weiterleiten"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Relay-Brücke"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Entfernte IPv4-Adresse"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Entfernte IPv4-Adresse oder Hostname"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Entfernen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Scan wiederholen"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Eintrag ersetzen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Drahtloskonfiguration ersetzen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "IPv6-Adresse anfordern"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "IPv6-Präfix dieser Länge anfordern"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Benötigt"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+"Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+msgid ""
+"Required. IP addresses and prefixes that this peer is allowed to use inside "
+"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
+"routes through the tunnel."
+msgstr ""
+"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des "
+"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des "
+"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und "
+"Unterstützung vom WLAN-Treiber."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob "
+"unsignierte Antworten wirklich von unsignierten Domains kommen."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Zähler zurücksetzen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Auslieferungszustand wiederherstellen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Resolv- und Hosts-Dateien"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Resolv-Datei"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Neustarten"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Firewall neu starten"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "W-LAN-Gerät neu starten"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Wiederherstellen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Sicherung wiederherstellen"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Passwort zeigen/verstecken"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Verwerfen"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Änderungen verwerfen"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "Anforderung zum Verwerfen mit Status <code>%h</code> fehlgeschlagen"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Verwerfe Konfigurationsänderungen..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Wurzelverzeichnis erzeugen"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "Erlaubte IP-Addressen routen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Routen-Typ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Router-Advertisement-Dienst"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Routerpasswort"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Routen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Netzwerkrouten geben an, über welche Schnittstellen bestimmte Rechner oder "
+"Netzwerke erreicht werden können"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "Regel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Vor dem Einhängen Dateisystemprüfung starten "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Dateisystemprüfung durchführen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH-Zugriff"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "SSH-Server-Adresse"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "SSH-Server-Port"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "SSH Benutzername"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-Schlüssel"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Speichern"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Speichern & Anwenden"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Speichere mtdblock"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Inhalte von mtdblock-Partitionen speichern"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "Speichere Schlüssel…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "Scan-Anforderung fehlgeschlagen"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Geplante Aufgaben"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Sektion hinzugefügt"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sektion entfernt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Siehe \"mount\" Handbuch für Details"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"\"Upgrade erzwingen\" auswählen um die Abbilddatei auch dann zu schreiben, "
+"wenn die Formatüberprüfung fehlschlägt. Diese Option nur benutzen wenn das "
+"Abbild korrekt und für dieses Gerät bestimmt ist!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Sende LCP Echo Anforderungen im angegebenem Interval in Sekunden, nur "
+"effektiv in Verbindung mit einem Fehler-Schwellwert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Clients isolieren"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Servereinstellungen"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Service-Name"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Service-Typ"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Dienste"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "Sitzung abgelaufen"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "VPN als Defaultroute benutzen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+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)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Zeitsynchronisierung einrichten"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "Setzen der PLMN fehlgeschlagen"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "Setzen des Betriebsmodus fehlgeschlagen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "DHCP Server einrichten"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr "schwerwiegende Fehlersekunden (SES)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "kurzes Guardintervall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Kurze Präambel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Zeige aktuelle Liste der gesicherten Dateien"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "Leere Chains anzeigen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Diese Schnittstelle herunterfahren"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Signaldämpfung (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Signal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Größe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Größe des DNS-Caches"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "Größe der ZRAM-Gerätedatei in Megabytes."
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Überspringen"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Zum Inhalt springen"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Zur Navigation springen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Zeitslot"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "Software-VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Einige Felder sind ungültig, kann das Formular nicht speichern!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Entschuldigung, das anfgeforderte Objekt wurde nicht gefunden."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+"Entschuldigung, auf dem Server ist ein unerwarteter Fehler aufgetreten."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Aufgrund des fehlenden sysupgrade-Supports muss die neue Firmware manuell "
+"geflasht werden. Weitere Informationen sowie gerätespezifische "
+"Installationsanleitungen entnehmen Sie bitte dem Wiki."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Quelle"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Gibt den Server-Port dieser <em>Dropbear</em>-Instanz an"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Maximale Anzahl fehlgeschlagener ARP-Anfragen bis ein Host als nicht "
+"verfügbar gilt"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Spezifiziert die maximale Anzahl an Sekunde nach denen Hoss als tot erachtet "
+"werden"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Setzt einen spezifischen TOS (Type of Service) Wert"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der "
+"standardmäßigen 64."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den "
+"standardmäßigen 1280 Bytes."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Start"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Startpriorität"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Starte Anwendung der Konfigurationsänderungen..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Starte WLAN Scan..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Systemstart"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statische IPv4 Routen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statische IPv6 Routen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Statische Einträge"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statische Routen"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Statische Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Statische Leases werden genutzt um feste IP-Adressen und Hostnames zu DHCP-"
+"Clients zuzuordnen. Sie werden auch für nicht-dynamische Schnittstellen-"
+"Konfigurationen benötigt auf denen lediglich Hosts mit zugehörigem "
+"statischem Lease-Eintrag bedient werden."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "Client-Inaktivitäts-Limit"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stoppen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Strikte Reihenfolge"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Absenden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Logeinträge unterdrücken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Auslagerungsspeicher"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Auslagerungsdatei"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Switch %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Switch %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten "
+"unpassend sein."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "Switch-Port-Maske"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "Switch-VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Wechsle Protokoll"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "Auf CIDR-Listen-Notation wechseln"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Mit Browser synchronisieren"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synchronisiere..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "System"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Systemprotokoll"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Systemeigenschaften"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Größe des Systemprotokoll-Puffers"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP Einstellungen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP Wurzelverzeichnis"
+
+# same as RX
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "TX-Rate"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Ziel"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Zielnetzwerk"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Beenden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Die <em>Gerätekonfiguration</em> deckt physische Einstellungen der WLAN-"
+"Hardware wie Kanal, Sendestärke oder Antennenauswahl ab. Diese Einstellungen "
+"werden von allen Netzwerken auf dem Gerät geteilt. Netzwerk-spezifische "
+"Einstellungen wie Verschlüsselung oder Betriebsmodus sind in der "
+"<em>Schnittstellenkonfiguration</em> gruppiert."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Das <em>libiwinfo-lua</em> Paket ist nicht installiert. Dieses Paket muss "
+"für eine funktionierende WLAN-Konfiguration vorhanden sein!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt "
+"der numerischen User-ID muss nun der normale Benutzername angegeben werden."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Vom Provider zugewiesenes IPv6-Präfix, endet normalerweise mit <code>::</"
+"code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Erlaubte Buchstaben sind: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "Das Backup-Archiv scheint keine valide GZip-Datei zu sein."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen "
+"werden:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"Das Gerät konnte nach dem Anwenden der ausstehenden Änderungen innerhalb von "
+"%d Sekunden nicht mehr erreicht werden, daher wurde die Änderungen aus "
+"Sicherheitsgründen zurückgerollt. Wenn Sie der Meinung sind, dass die "
+"Änderungen trotzdem korrekt sind, wenden sie die Änderungen ungeprüft an. "
+"Alternativ können Sie diese Meldung schließen und die Konfiguration weiter "
+"bearbeiten bevor Sie das Anwenden neu versuchen oder alle austehenden "
+"Änderungen verwerfen um den aktuell funktionierenden Konfigurationsstand "
+"beizubehalten."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 "Das Dateisystem mit dem der Speicher formatiert ist (z.B.: ext3)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Das Firmware-Image wurde hochgeladen. Nachfolgend sind die Prüfsumme und "
+"Dateigröße gelistet. Vergleichen Sie diese mit der Originaldatei um die "
+"Integrität sicherzustellen.<br /> Klicken Sie \"Fortfahren\" um die Flash-"
+"Prozedur zu starten."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Die folgenden Änderungen wurden verworfen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Die folgenden Regeln sind zur Zeit auf dem System aktiv."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "Der angegebene öffentliche SSH-Schlüssel wurde bereits hinzugefügt."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"Der angegebene öffentliche SSH Schlüssel ist ungültig, bitte OpenSSH-"
+"kompatible öffentliche RSA oder ECDSA-Schlüssel verwenden."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Der angebene Netzwerk-Name ist nicht eindeutig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Die Hardware ist nicht Multi-SSID fähig und die existierende Konfiguration "
+"wird beim Fortfahren ersetzt."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"Länge des IPv4-Präfix in Bits, die übrigen Bits werden in der IPv6-Adresse "
+"verwendet."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Länge des IPv6-Präfix in Bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Die Netzwerkschnittstellen dieses Geräts können zu verschienden <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s zusammengefasst werden, in denen "
+"Geräte miteinander direkt kommunizieren können. <abbr title=\"Virtual Local "
+"Area Network\">VLAN</abbr>s werden auch häufig dazu genutzt, um Netzwerke "
+"voneinander zu trennen. So ist oftmals eine Schnittstelle als Uplink zu "
+"einem größeren Netz, wie dem Internet, vorkonfiguriert und die anderen "
+"Schnittstellen bilden ein <abbr title=\"Virtual Local Area Network\">VLAN</"
+"abbr> für das lokale Netzwerk."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Dem ausgewähltem Protokoll muss ein Gerät zugeordnet werden"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+"Das mitgesendete Sicherheits-Token ist ungültig oder bereits abgelaufen!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"Die Einstellungen werden nun gelöscht! Anschließend wird ein Neustart des "
+"Systems durchgeführt."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Der Flashvorgang läuft jetzt.<br /> SCHALTEN SIE NICHT DEN STROM AUS!<br /> "
+"Warten Sie einige Minuten bis das Gerät wieder erreichbar ist. Je nach "
+"Konfiguration ist es notwendig, dass Sie auf Ihrem Computer eine neue IP-"
+"Adresse beziehen müssen um auf das Gerät zugreifen zu können."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "Das Systempasswort wurde erfolgreich geändert."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Das hochgeladene Firmware-Image hat ein nicht unterstütztes Format. Stellen "
+"Sie sicher dass Sie das generische Format für Ihre Platform gewählt haben."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Thema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Es gibt z.Z. keine aktiven Leases."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "Es gibt keine ausstehenden Änderungen anzuwenden."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Es gibt keine ausstehenen Änderungen!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Es wurde noch kein Netzwerkgerät zugeordnet, bitte ein Gerät im \"Physische "
+"Einstellungen\" Bereich anfügen"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Es ist kein Passwort auf diesem Router gesetzt. Bitte konfigurieren Sie ein "
+"Root-Passwort um das Web-Interface zu schützen und SSH zu aktivieren."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "IPv4-Adresse des Relais"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder "
+"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Dies ist eine Liste von Shell-Glob-Mustern um Dateien und Verzeichnisse zu "
+"selektieren welche während eines System-Upgrade gesichert werden sollen. "
+"Modifizierte Dateien in /etc/config/ und bestimmte andere essenzielle "
+"Konfigurationsdateien werden automatisch gesichert."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet "
+"wurde oder das normale Account-Passwort wenn kein separater Schlüssel "
+"gesetzt wurde."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Dies ist der Inhalt von /etc/rc.local. Hier kann man eigene Befehle einfügen "
+"(vor 'exit 0'), die dann am Ende des Bootvorgangs ausgeführt werden."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Dies ist die lokale, vom Broker zugewiesene IPv6-Adresse, sie endet "
+"üblicherweise mit <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr "Dies ist der einzige DHCP im lokalen Netz"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "Das ist der normale Login-Name für den Account."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung "
+"durch nachgelagerte Clients."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Dies ist die System-Crontab in der geplante Aufgaben definiert werden können."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Dies ist üblicherweise die Adresse des nächstgelegenen PoPs betrieben durch "
+"den Tunnelbroker"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und "
+"deren Status."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Diese Sektion enthält noch keine Einträge"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Zeitsynchronisation"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Die Zeitsynchronisation wurde noch nicht konfiguriert."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "Zeitintervall für die neubestimmung des Gruppenschlüssels"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Zeitzone"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "Zum Login…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Zum Wiederherstellen der Konfiguration kann hier ein bereits vorhandenes "
+"Backup-Archiv hochgeladen werden. \"Konfiguration zurücksetzen\" stellt den "
+"Auslieferungszustand des Systems wieder her (nur möglich bei squashfs-"
+"Images)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Ton"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Gesamt verfügbar"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Routenverfolgung"
+
+# Ich bin der Meinung Traffic versteht jeder! Wenn der Begriff "deutscher" sein soll, würde ich "Datenmenge" angeben. Aber "Verkehrs" passt nicht!
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Traffic"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transfer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Übertragungsrate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Senden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Sendeleistung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Sendeantenne"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Auslöser"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Auslösmechanismus"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Tunnel-ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Tunnelschnittstelle"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Basisschnittstelle"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Sendestärke"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Typ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Nur UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB-Gerät"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB Anschlüsse"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "Gerätename konnte nicht bestimmt werden"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "Externe IP-Adresse konnte nicht bestimmt werden"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "Externe Netzwerkschnittstelle konnte nicht bestimmt werden"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Kann Anfrage nicht zustellen"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "Client-ID konnte nicht bezogen werden"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "Der AFTR-Hostname konnte nicht aufgelöst werden"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "Der Name des entfernten Hosts konnte nicht aufgelöst werden"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Nicht verfügbare Sekunden (UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Protokollfehler: %s"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Ignoriert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Aushängen"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "Unbenannter Schlüssel"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Ungespeicherte Änderungen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "Nicht unterstützter MAP-Typ"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Nicht unterstütztes Modem"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Nicht unterstützter Protokolltyp."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "Hoch"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Zum Ersetzen der aktuellen Firmware kann hier ein sysupgrade-Kompatibles "
+"Image hochgeladen werden. Wenn die vorhandene Konfiguration auch nach dem "
+"Update noch aktiv sein soll, aktivieren Sie \"Konfiguration behalten\"."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Backup wiederherstellen..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "hochgeladene Datei"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Laufzeit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Verwende /etc/ethers"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Benutze DHCP-Gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Benutze die von der Gegenstelle zugewiesenen DNS-Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Muss ein ISO/IEC 3166 Länderkürzel sein."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Benutze MTU auf der Tunnelschnittstelle"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Benutze TTL auf der Tunnelschnittstelle"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "Als externes Overlay benutzen (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Als Root-Dateisystem benutzen (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Benutze Broadcast-Flag"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Eingebautes IPv6-Management nutzen"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Benutze eigene DNS-Server"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Benutze Standard-Gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Benutze Gateway-Metrik"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Benutze Routing-Tabelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Die <em>Hinzufügen</em> Schaltfläche fügt einen neuen Lease-Eintrag hinzu. "
+"Die <em>MAC-Adresse</em> identifiziert den Host, die <em>IPv4-Adresse</em> "
+"definiert die zu nutzende statische Adresse und der <em>Hostname</em> ist "
+"der symbolische Name der dem Host zugewisen wird."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Belegt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Benutzer Schlüsselindex"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für "
+"WPA(2)-PSK."
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "PEM-kodiertes Benutzerzertifikat"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "PEM-kodierter Benutzerschlüssel"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Benutzername"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs auf %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs auf %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "Lokale VPN-Adresse"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "Lokaler VPN-Port"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN-Server"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "VPN-Server Port"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "SHA1-Hash des VPN-Server-Zertifikates"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (VPN für CISCO 3000 und Ähnliche)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Hersteller"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verifizieren"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Virtuelle dynamisches Schnittstelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP Open System"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP Shared Key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP Schlüssel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA Schlüssel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-Verschlüsselung benötigt wpa_supplicant (für Client-Modus) oder hostapd "
+"(für AP oder Ad-Hoc Modus)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Änderungen werden angewandt..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Der Befehl wird ausgeführt..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Warte auf das Anwenden der Konfigurationsänderungen... %d Sekunden"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Warte auf Gerät..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Warnung"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren "
+"gehen!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"Wenn PSK-Schlüssel benutzt werden kann der PMK-Schlüssel automatisch "
+"generiert werden. Wenn diese Option aktiviert ist, werden die nachfolgenden "
+"R0/R1-Schlüsseloptionen nicht verwendet."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Breite"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "WLAN"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "WLAN-Gerät"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Drahtlosnetzwerk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Drahtlosübersicht"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "WLAN-Verschlüsselung"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "W-LAN ist deaktiviert"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "W-LAN ist nicht assoziiert"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "WLAN startet neu..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Das WLAN-Netzwerk ist deaktiviert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Das WLAN-Netzwerk ist aktiviert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Systemprotokoll in Datei schreiben"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "Ja"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Hier können installierte Startscripte aktiviert oder deaktiviert werden. "
+"Änderungen werden erst mit einem Geräteneustart angewendet.<br /"
+"><strong>Warnung: Wenn essentialle Startscripte wie \"network\" deaktiviert "
+"werden könnte das Gerät unerreichbar werden!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig "
+"funktionieren."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "ZRAM Kompressionsalgorithmus"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "ZRAM Kompressionsprozesse"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "ZRAM Einstellungen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "ZRAM Größe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "beliebig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "bridged"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "erzeugen"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "erstelle:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "überbrückt angegebene Schnittstelle(n)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "deaktivieren"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "deaktiviert"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "abgelaufen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr "Speicherort für vergebenen DHCP-Adressen"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "weitergeleitet"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "Voll-Duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "Halb-Duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "hexadezimal kodierten Wert"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "versteckt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "hybrider Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "falls Ziel ein Netzwerk ist"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "eingehend"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "Schlüssel zwischen 8 und 63 Zeichen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "Schlüssel mit exakt 5 oder 13 Zeichen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "Lokale DNS-Datei"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "Minuten"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "gemischtes WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nein"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "nicht verbunden"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "nicht-leeren Wert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "nicht vorhanden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "aus"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "ein"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "offen"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "ausgehend"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "Overlay"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "positiven Dezimalwert"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "positive Ganzzahl"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "zufällig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "Relay-Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "routed"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "Sekunden"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "Server-Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "nur zustandsorientiert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "nur zustandlos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "zustandslos + zustandsorientiert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "tagged"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "eindeutigen Wert"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "unbekannt"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "unbegrenzt"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "unspezifiziert"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "nichts auswählen -oder- erstellen:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "untagged"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "gültige IP-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "gültige IP-Adresse oder gültiges IP-Präfix"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "gültige IPv4-CIDR-Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "gültige IPv4-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "gültige IPv4-Adresse oder gültiges IPv4-Netzwerk"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "gültige IPv4 \"Adresse:Port\" Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "gültiges IPv4-Netzwerk"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "gültige IPv4- oder IPv6-CIDR-Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "gültiger IPv4-Präfix-Wert (0-32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "gültige iPv6-CIDR-Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "gültige IPv6-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "gültige IPv6-Addresse oder gültiger IPv6-Präfix"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "gültige IPv6 Host-Identifikation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "gültiges IPv6-Netzwerk"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "gültiger IPv6-Präfix-Wert (0-128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "gültige MAC-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "gültigen UCI-Bezeichner"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "gültigen UCI-Bezeichner, Hostnamen oder IP-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "gültige \"Adresse:Port\" Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "gültiges Datum (JJJJ-MM-DD)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "gültigen Dezimalwert"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "gültigen hexadezimalen WEP-Schlüssel"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "gültigen hexadezimalen WPA-Schlüssel"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "gültige \"Host:Port\" Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "gültigen Hostnamen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "gültigen Hostnamen oder IP-Adresse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "gültige Ganzzahl"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "gültiges Netzwerk in \"Addresse/Netzmaske\" Notation"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr "gültige Telefonnummernziffer (0-0, \"*\", \"#\", \"!\" oder \".\")"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "gültigen Netzwerkport oder Port-Bereich (von-bis)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "gültigen Netzwerkport"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "gültige Zeit (SS:MM:ss)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "Wert zwischen %d und %d Zeichen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "Wert zwischen %f und %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "Wert größer oder gleich %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "Wert kleiner oder gleich %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr "Wert mit mindestens %d Zeichen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "Wert mit maximal %d Zeichen"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "ja"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Zurück"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "einen von:\n"
+#~ "- %s"
+
+#~ 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 ""
+#~ "Die benutzte Version des Internet Explorers ist zu alt, um diese Seite "
+#~ "korrekt darzustellen. Bitte mindestens auf Version 7 upgraden oder einen "
+#~ "anderen Browser wie Firefox, Opera oder Safari benutzen."
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "When using a PSK, the PMK can be generated locally without inter AP "
+#~ "communications"
+#~ msgstr ""
+#~ "Wenn PSK in Verwendung ist, können PMK-Schlüssel lokal ohne Inter-Access-"
+#~ "Point-Kommunikation erzeugt werden."
+
+#, fuzzy
+#~ msgid ""
+#~ "The device could not be reached within %d seconds after applying the "
+#~ "pending changes, which caused the configuration to be rolled back for "
+#~ "safety reasons. If you believe that the configuration changes are correct "
+#~ "nonetheless, perform an unchecked configuration apply. Alternatively, you "
+#~ "can dismiss this warning and edit changes before attempting to apply "
+#~ "again, or revert all pending changes to keep the currently working "
+#~ "configuration state."
+#~ msgstr ""
+#~ "Das Gerät konnte nach Anwendung der ausstehenden Konfigurationsänderungen "
+#~ "nicht mehr innerhalb von %d Sekunden erreicht werden, daher wurde die "
+#~ "Konfiguration aus Sicherheitsgründen zurückgerollt. Wenn die Änderungen "
+#~ "dennoch korrekt sind, kann die Konfiguration ungeprüft "
+
+#~ msgid "Waiting for configuration to get applied… %ds"
+#~ msgstr "Warte auf das Anwenden der Konfiguration… %d Sek."
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Hier können öffentliche SSH-Schlüssel reinkopiert werden (einer pro "
+#~ "Zeile)."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Passwort erfolgreich geändert!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Unbekannter Fehler, Passwort nicht geändert!"
+
+#~ msgid "Design"
+#~ msgstr "Design"
+
+#~ msgid "Available packages"
+#~ msgstr "Verfügbare Pakete"
+
+#~ msgid "Bind only to specific interfaces rather than wildcard address."
+#~ msgstr ""
+#~ "Nur auf angegebenen Schnittstellen reagieren, anstatt auf allen "
+#~ "Schnittstellen zu antworten."
+
+#~ msgid ""
+#~ "Build/distribution specific feed definitions. This file will NOT be "
+#~ "preserved in any sysupgrade."
+#~ msgstr ""
+#~ "Konfiguriert die distributionsspezifischen Paket-Repositories. Diese "
+#~ "Konfiguration wird bei Upgrades NICHT gesichert."
+
+#~ msgid ""
+#~ "Custom feed definitions, e.g. private feeds. This file can be preserved "
+#~ "in a sysupgrade."
+#~ msgstr ""
+#~ "Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle "
+#~ "Quellen. Diese Konfiguration wird by Upgrades gesichert."
+
+#~ msgid "Custom feeds"
+#~ msgstr "Eigene Repositories"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Nur Pakete mit folgendem Inhalt anzeigen"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "Distributionsrepositories"
+
+#~ msgid "Download and install package"
+#~ msgstr "Paket herunterladen und installieren"
+
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#~ msgid "Find package"
+#~ msgstr "Paket suchen"
+
+#~ msgid "Free space"
+#~ msgstr "Freier Platz"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Allgemeine Optionen für Opkg."
+
+#~ msgid "Install"
+#~ msgstr "Installieren"
+
+#~ msgid "Installed packages"
+#~ msgstr "Installierte Pakete"
+
+# Ich glab das ist so richtiger
+#~ msgid "No package lists available"
+#~ msgstr "Es sind keine Paketlisten vorhanden"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-Konfiguration"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Die Paketlisten sind älter als 24 Stunden"
+
+#~ msgid "Package name"
+#~ msgstr "Paketname"
+
+#~ msgid "Please update package lists first"
+#~ msgstr "Bitte zuerst die Paketlisten aktualisieren"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Größe (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Paketverwaltung"
+
+#~ msgid "Update lists"
+#~ msgstr "Listen aktualisieren"
+
+#~ msgid "Version"
+#~ msgstr "Version"
+
+#~ msgid "none"
+#~ msgstr "keine"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "DNS-Verarbeitung deaktivieren"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 und IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "nur IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "nur IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Lease-Gültigkeitsdauer"
+
+#~ msgid "Multicast address"
+#~ msgstr "Multicast-Adresse"
+
+#~ msgid "Protocol family"
+#~ msgstr "Protokollfamilie"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Keine Ketten in dieser Tabelle"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Konfigurationsdateien sichern"
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Warnung: Konfigurationsdateien werden gelöscht."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Paarweise: %s / Gruppe: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Dieses Netzwerk aktivieren"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b W-LAN Adapter"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Schnittstelle fährt herunter..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Schnittstelle neu verbunden"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Schnittstelle heruntergefahren"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b W-LAN Adapter"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s W-LAN Adapter"
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface"
+#~ msgstr ""
+#~ "Dieses Netzwerk wirklich herunterfahren? Der Kontakt zum Gerät könnte "
+#~ "verloren gehen wenn die Verbindung über dieses Netzwerk erfolgt."
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Die Schnitstelle \"%s\" wirklich herunterfahren?\n"
+#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
+#~ "Schnittstelle verbunden sind."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Verbinde Schnittstelle neu"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Dieses Netzwerk herunterfahren"
+
+#~ msgid "Wireless is disabled or not associated"
+#~ msgstr "WLAN ist deaktiviert oder nicht assoziiert"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "WLAN neu gestartet"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "WLAN heruntergefahren"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP-Leases"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6-Leases"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Diese Schnittstelle wirklich löschen? Der Schritt kann nicht rückgängig "
+#~ "gemacht werden!\n"
+#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
+#~ "Schnittstelle verbunden sind."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Das Netzwerk wirklich herunterfahren?\n"
+#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
+#~ "Schnittstelle verbunden sind."
+
+#~ msgid "Sort"
+#~ msgstr "Sortieren"
+
+#~ msgid "help"
+#~ msgstr "Hilfe"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4 WAN Status"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6 WAN Status"
diff --git a/package/luci/modules/luci-base/po/el/base.po b/package/luci/modules/luci-base/po/el/base.po
new file mode 100644 (file)
index 0000000..25a8f34
--- /dev/null
@@ -0,0 +1,6505 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-03-31 15:35+0200\n"
+"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: el\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(παράθυρο %d λεπτών, διάστημα %d δευτερολέπτων)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s διαθέσιμα)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(κενό)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(χωρίς προσαρτημένες διεπαφές)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Επιπλέον Πεδίο --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Παρακαλώ επιλέξτε --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- προσαρμοσμένο --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Φορτίο 1 λεπτού:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Φορτίο 15 λεπτών:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Φορτίο 5 λεπτών:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Θύρα ερωτημάτων <abbr title=\"Σύστημα Ονόματος Τομέα\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Θύρα εξυπηρετητή <abbr title=\"Σύστημα Ονόματος Τομέα\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Οι <abbr title=\"Σύστημα Ονόματος Τομέα\">DNS</abbr> εξυπηρετητές θα "
+"ερωτηθούν με την σειρά εμφάνισης στο αρχείο resolvfile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Διεύθυνση <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Πύλη <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "Μάσκα <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Διεύθυνση <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> ή Δίκτυο "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Πύλη <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Παραμετροποίηση <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Όνομα <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Διεύθυνση <abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"μέγιστο\">Μεγ.</abbr> πλήθος <abbr title=\"Πρωτόκολλο "
+"Παραμετροποίησης Δυναμικού Συστήματος\">DHCP</abbr> leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"μέγιστο\">Μεγ.</abbr> μέγεθος πακέτου <abbr title=\"Μηχανισμοί "
+"επεκτάσεων για Συστήματα Ονόματος Τομέα\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"μέγιστο\">Μεγ.</abbr> πλήθος ταυτόχρονων ερωτηματων"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Όριο επαναδοκιμών ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Γέφυρες ΑΤΜ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM Εικονικό Κανάλι Αναγνωριστή (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM Εικονικό μονοπάτι Αναγνωριστή (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 αποκαλύπτουν ενθυλακωμένες ethernet σε συνδέσεις AAL5 σαν "
+"εικονικές διεπαφές δικτύου Linux, οι οποίες μπορούν να χρησιμοποιηθούν σε "
+"συνδυασμό με DHCP ή PPP για την κλήση προς τον παροχέα δικτύου."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Αριθμός συσκευής ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Συγκεντρωτής Πρόσβασης "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Σημείο Πρόσβασης"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Ενέργειες"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Ενεργές Διαδρομές <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Ενεργές Διαδρομές <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Ενεργές Συνδέσεις"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Προσθήκη κατάληξης τοπικού τομέα για ονόματα εξυπηρετούμενα από αρχεία hosts "
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Προσθήκη νέας διεπαφής..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Επιπλέον αρχεία Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Διεύθυνση"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Διεύθυνση για πρόσβαση σε την τοπική γέφυρα αναμετάδοσης"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Διαχείριση"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Προχωρημένες Ρυθμίσεις"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Ειδοποίηση"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Επιτρέπει την εξουσιοδότηση <abbr title=\"Secure Shell\">SSH</abbr> με "
+"κωδικό πρόσβασης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Να επιτρέπονται μόνο αυτές στην λίστα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Να επιτρέπεται το localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Να επιτρέπεται σε απομακρυσμένα συστήματα να συνδέονται σε τοπικά "
+"προωθημένες SSH θύρες"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Να επιτρέπονται root συνδέσεις με κωδικό πρόσβασης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+"Να επιτρέπεται στον χρήστη <em>root</em> να συνδέετε με κωδικό πρόσβασης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Να επιτρέπονται απαντήσεις από ανώτερο επίπεδο εντός του εύρους 127.0.0.0/8, "
+"π.χ. για υπηρεσίες RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Κεραία 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Κεραία 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Οιαδήποτε ζώνη"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Συνδεδεμένοι Σταθμοί"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Εξουσιοδότηση"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Κύριος"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Απαιτείται Εξουσιοδότηση"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Αυτόματη Ανανέωση"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Διαθέσιμο"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Μέσος Όρος:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Πίσω"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Πίσω προς Επισκόπηση"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Πίσω προς παραμετροποίηση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Πίσω προς επισκόπηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Πίσω στα αποτελέσματα σάρωσης"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Αποθήκευση"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Αντίγραφο ασφαλείας / Εγγραφή FLASH Υλικολογισμικό"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Λίστα αρχείων για αντίγραφο ασφαλείας"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+#, fuzzy
+msgid "Bad address specified!"
+msgstr "Μη έγκυρη διεύθυνση!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Παρακάτω είναι η προκαθορισμένη λίστα αρχείων για αντιγραφή ασφαλείας. "
+"Αποτελείτε από αλλαγμένα αρχεία παραμετροποίησης σημαδεμένα από το opkg, "
+"ουσιώδη βασικά αρχεία καθώς και καθορισμένα από το χρήστη μοτίβα αντιγράφων "
+"ασφαλείας."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Ρυθμός δεδομένων"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Παράκαμψη Ψευδούς Τομέα NX"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Γέφυρα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Γεφύρωμα διεπαφών"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Αριθμός μονάδας γέφυρας"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Ανέβασμα κατά την εκκίνηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Χρήση CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Ακύρωση"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Αλυσίδα"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Αλλαγές"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Αλλαγές εφαρμόστηκαν."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Αλλάζει τον κωδικό διαχειριστή για πρόσβαση στη συσκευή"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Κανάλι"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Έλεγχος"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Άθροισμα Ελέγχου"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Επιλέξατε την ζώνη τείχους προστασίας που επιθυμητέ να αναθέσετε σε αυτήν "
+"την διεπαφή. Επιλέξτε <em>απροσδιόριστο</em> για να αφαιρέσετε την διεπαφή "
+"από την συσχετισμένη ζώνη ή συμπληρώστε το <em>δημιουργία</em> πεδίο για να "
+"προσδιορίσετε μία νέα ζώνη και να προσαρτήσετε την διεπαφή σε αυτό."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Κλικ στο \"Δημιουργία αρχείου\" για να κατεβάσετε ένα tar αρχείο με τα "
+"τρέχοντα αρχεία παραμετροποίησης."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Πελάτης"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Αναγνωριστικό πελάτη που αποστέλλετε κατά την αίτηση DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Κλείσιμο, μη ενεργών συνδέσεων μετά το πέρας του ορισμένου αριθμού "
+"δευτερολέπτων, χρησιμοποιήστε 0 για να εξακολουθούν να υφίστανται επ' "
+"αόριστον"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Κλείσιμο λίστας..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Συλλογή δεδομένων..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Εντολή"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Κοινή Παραμετροποίηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Παραμετροποίηση"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Επιβεβαίωση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Σύνδεση"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Συνδεδεμένος"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Όριο Συνδέσεων"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Συνδέσεις"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Χώρα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Κωδικός Χώρας"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Κάλυψη της ακόλουθης διεπαφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Κάλυψη των ακόλουθων διεπαφών"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Δημιουργία / Ανάθεση ζώνης τείχους προστασίας"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Δημιουργία Διεπαφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Επίπεδο Καταγραφής Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Ρυθμίζει, αν είναι δυνατόν, την συμπεριφορά των <abbr title=\"Light Emitting "
+"Diode\">LED</abbr> της συσκευής."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Εξυπηρετητής DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP και DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Πελάτης DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Επιλογές DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Προωθήσεις DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Αποσφαλμάτωση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Προεπιλογή %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Προεπιλεγμένη πύλη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Προεπιλεγμένη κατάσταση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Ορίστε ένα όνομα για αυτό το δίκτυο."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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, που διαφημίζουν διαφορετικούς εξυπηρετητές "
+"DNS στους πελάτες, για παράδειγμα \"<code>6,192.168.2.1,192.168.2.2</code>\"."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Διαγραφή"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Διαγραφή αυτού του δικτύου"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Περιγραφή"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Προορισμός"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Συσκευή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Παραμετροποίηση Συσκευής"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Διαγνωστικά"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Κατάλογος"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Απενεργοποίηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Απενεργοποίηση <abbr title=\"Πρωτόκολλο Δυναμικής Απόδοσης Διεύθυνσης"
+"\">DHCP</abbr> για αυτή τη διεπαφή."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Απενεργοποιημένο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Βελτιστοποίηση Απόστασης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Απόσταση σε μέτρα από το πιο απομακρυσμένο μέλος του δικτύου."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Διαφορική Λήψη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 είναι ένας συνδυασμός εξυπηρετητή <abbr title=\"Πρωτόκολλο "
+"Δυναμικής Απόδοσης Παραμέτρων Συστήματος\">DHCP</abbr> και προωθητή<abbr "
+"title=\"Σύστημα Ονόματος Τομέα\">DNS</abbr> για τείχη προστασίας <abbr title="
+"\"Μεταφραστή Διεύθυνσης Δικτύου\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Να μην αποθηκεύονται στη λανθάνουσα μνήμη οι αρνητικές απαντήσεις, π.χ. για "
+"μη υπαρκτούς τομείς."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Να μην προωθούνται αιτήματα τα οποία δεν μπορούν να απαντηθούν από δημόσιους "
+"εξυπηρετητές ονομάτων"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Απαίτηση για όνομα τομέα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Λευκή λίστα τομέων"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Να μην προωθούνται ερωτήματα <abbr title=\"Domain Name System\">DNS</abbr> "
+"χωρίς όνομα τομέα <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Κατέβασμα αντιγράφου ασφαλείας"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> "
+"κέλυφος μέσω δικτύου και έναν ενσωματωμένο εξυπηρετητή <abbr title=\"Secure "
+"Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Δυναμικό <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Δυναμικό τούνελ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Δυναμική απόδοση DHCP διευθύνσεων στους πελάτες. Σε περίπτωση "
+"απενεργοποίησης, μόνο πελάτες με στατικα leases θα εξυπηρετούνται."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Μέθοδος EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Επεξεργασία"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Επεξεργασία αυτής της διεπαφής"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Επεξεργασία αυτού του δικτύου"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Έκτακτη ανάγκη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Ενεργοποίηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Ενεργοποίηση <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Ενεργοποίηση ενημέρωσης δυναμικού τερματικού σημείου HE.net."
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Ενεργοποίηση διαπραγμάτευσης IPv6 πάνω στη PPP ζεύξη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Ενεργοποίηση διέλευσης Jumbo Frame"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Ενεργοποίηση εξυπηρετητή TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Ενεργοποίηση λειτουργίας VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Ένεργοποίηση learning and aging"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Ενεργοποίηση αυτής της προσάρτησης"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Ενεργοποίηση αυτής της swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Ενεργοποίηση/Απενεργοποίηση"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Ενεργοποιημένο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Λειτουργία ενθυλάκωσης"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Κρυπτογράφηση"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Διαγράφεται..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Σφάλμα"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Προσαρμογέας Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Λήγει"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Ο ελάχιστος χρόνος λήξεως των διευθύνσεων lease είναι 2 λεπτά (<code>2m</"
+"code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Εξωτερικός εξυπηρετητής καταγραφής συστήματος"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Αρχείο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Όνομα αρχείου της εικόνας εκκίνησης που διαφημίζετε στους πελάτες"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Σύστημα Αρχείων"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Φιλτράρισμα ιδιωτικών"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Φιλτράρισμα άχρηστων"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Εύρεση και σύνδεση σε δίκτυο"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Τέλος"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Τείχος Προστασίας"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Ρυθμίσεις Τείχους Προστασίας"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Κατάσταση Τείχους Προστασίας"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Έκδοση Υλικολογισμικού"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Φλασάρισμα Firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Φλασάρισμα εικόνας..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Φλασάρισμα νέας εικόνας υλικολογισμικού"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Λειτουργίες φλασάρισματος"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Φλασάρεται..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Επιβολή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Επιβολή CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"Επιβολή DHCP σε αυτό το δίκτυο ακόμα κι αν έχει εντοπιστεί άλλος εξυπηρετητής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Επιβολή TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Επιβολή TKIP και CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Προώθηση κίνησης DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Προώθηση κίνησης broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Μέθοδος προώθησης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Όριο Κατακερµατισµού"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Bursting Πλαισίων"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Πύλη"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Θύρες πύλης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Γενικές Ρυθμίσεις"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Μετάβαση στη σχετική σελίδα ρυθμίσεων"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Κρέμασμα"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Εδώ μπορείτε να παραμετροποιήσετε βασικές πλευρές της συσκευής σας όπως το "
+"όνομα υπολογιστή ή τη ζώνη ώρας."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Κρυφό <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Καταχωρήσεις Υπολογιστών"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"<abbr title=\"Internet Protocol Address\">IP</abbr> Υπολογιστή ή Δικτύου"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Όνομα Υπολογιστή"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Ονόματα Υπολογιστών"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Διεύθυνση IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 Τείχος Προστασίας"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Διεύθυνση IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Πύλη IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Μάσκα IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-Διεύθυνση"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 Τείχος Προστασίας"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Διεύθυνση IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Πύλη IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Ταυτότητα"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Αν οριστεί, προσάρτησε τη συσκευή με βάση το UUID της αντί για το "
+"καθορισμένο όνομα της"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Αν οριστεί, προσάρτησε τη συσκευή με βάση την ετικέτα της αντί για το "
+"καθορισμένο όνομα της"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Αν η φυσική μνήμη δεν είναι αρκετή, μη-χρησιμοποιούμενα δεδομένα μπορούν "
+"προσωρινά να εναλλάσσονται σε μία συσκευή swap με αποτέλεσμα περισσότερη "
+"ενεργή <abbr title=\"Random Access Memory\">RAM</abbr>. Η εναλλαγή δεδομένων "
+"είναι μία πολύ αργή διαδικασία αφού η συσκευή swap δεν μπορεί να "
+"προσπελαστεί με τους υψηλούς ρυθμούς μεταφοράς δεδομένων που διαθέτει η "
+"<abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Αγνόησε <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Αγνόησε διεπαφή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Αγνόησε αρχείο resolve"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Είσοδος"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Πληροφορίες"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Σενάριο εκκίνησης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Σενάρια Εκκίνησης"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Εγκατάσταση πακέτου %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Εγκατάσταση επεκτάσεων πρωτοκόλλου..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Διεπαφή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Παραμετροποίηση Διεπαφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Επισκόπηση Διεπαφής"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Η διεπαφή επανασυνδέεται..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Η διεπαφή δεν υπάρχει ή δεν έχει συνδεθεί ακόμη."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Διεπαφές"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Άκυρη τιμή εισόδου"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Άκυρο όνομα χρήστη και/ή κωδικός πρόσβασης! Παρακαλώ προσπαθήστε ξανά."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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, παρακαλώ επιβεβαιώστε το αρχείο εικόνας!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Απαιτείται JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Διατήρηση ρυθμίσεων"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Καταγραφή Πυρήνα"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Έκδοση Πυρήνα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Κλειδί"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Κλειδί #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Σκότωμα"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Ετικέτα"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Γλώσσα"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Αρχείο Leases"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Υπόλοιπο χρόνου Lease"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Αφήστε το κενό για να γίνει αυτόματη ανίχνευση"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Αφήστε το κενό για να γίνει χρήση της τρέχουσας διεύθυνσης WAN"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Υπόμνημα:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Όριο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Αναμμένο με Ζεύξη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Φόρτος"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Μέσος όρος φόρτου"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Φόρτωση"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Τοπική διεύθυνση IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Τοπική διεύθυνση IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Τοπική Ώρα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Τοπικός εξυπηρετητής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Τοπικά ερωτήματα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Επίπεδο εξόδου αρχείων καταγραφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Καταγραφή ερωτημάτων"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Καταγραφή"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Σύνδεση"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Αποσύνδεση"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-Διεύθυνση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Φίλτρο MAC Διευθύνσεων"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-Φίλτρο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Λίστα MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Μέγιστος επιτρεπόμενος αριθμός ενεργών DHCP leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Μέγιστος επιτρεπόμενος αριθμός ταυτόχρονων ερωτημάτων DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Μέγιστο επιτρεπόμενο μέγεθος EDNS.0 UDP πακέτων"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+"Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Μέγιστος αριθμός διευθύνσεων lease"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Μνήμη"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Χρήση Μνήμης (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Μέτρο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Λειτουργία"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Συσκευή Modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Παρακολούθηση"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+#, fuzzy
+msgid "Mount Entry"
+msgstr "Προσάρτηση"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Σημείο Προσάρτησης"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Σημεία Προσάρτησης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Σημεία Προσάρτησης - Είσοδος Προσάρτησης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Τα σημεία προσάρτησης ορίζουν σε ποιο σημείο στο σύστημα αρχείων θα "
+"προσαρτηθεί μία συσκευή μνήμης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Επιλογές προσάρτησης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Σημείο προσάρτησης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Προσαρτημένα συστήματα αρχείων"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Μετακίνηση κάτω"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Μετακίνηση πάνω"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Όνομα"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Όνομα νέας διεπαφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Όνομα νέου δικτύου"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Πλοήγηση"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Μάσκα δικτύου"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Δίκτυο"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Εργαλεία Δικτύου"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Επόμενο »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Δεν υπάρχει ρυθμισμένος DHCP εξυπηρετητής για αυτή τη διεπαφή"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Δε βρέθηκαν αρχεία"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Δεν υπάρχουν πληροφορίες διαθέσιμες"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Δεν υπάρχει παραμετροποιημένο δίκτυο σε αυτή τη συσκευή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Δεν έχει οριστεί όνομα δικτύου"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Δεν έχει οριστεί κωδικός πρόσβασης!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Δεν έχει ανατεθεί ζώνη"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Θόρυβος"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Θόρυβος:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Κανένα"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Φυσιολογικό"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Επισήμανση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Σε αυτή τη σελίδα μπορείτε να ρυθμίσετε τις διεπαφές δικτύου. Μπορείτε να "
+"γεφυρώσετε πολλαπλές διεπαφές τικάροντας το πεδίο \"γεφύρωμα διεπαφών\" και "
+"εισάγοντας τα ονόματα των διεπαφών δικτύου χωρισμένα με κενά. Μπορείτε "
+"επίσης να χρησιμοποιήσετε παράσταση τύπου <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr> <samp>INTERFACE.VLANNR</samp> (<abbr title="
+"\"παραδείγματος χάριν\">π.χ.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Ένα ή περισσότερα πεδία περιέχουν μη έγκυρες τιμές!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Ένα ή περισσότερα πεδία δεν περιέχουν τιμές!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Η επιλογή άλλαξε"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Η επιλογή αφαιρέθηκε"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Επιλογές"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Έξοδος"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Επισκόπηση"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Κάτοχος"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Ενθυλάκωση PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Απαιτείται το πακέτο libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Πακέτα"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Μέρος της ζώνης %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Κωδικός Πρόσβασης"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Εξουσιοδότηση με κωδικό πρόσβασης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Κωδικός Πρόσβασης του Ιδιωτικού Κλειδιού"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Διαδρομή για Πιστοποιητικό CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Διαδρομή για Ιδιωτικό Κλειδί"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Εκτέλεση επανεκκίνησης"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Διενέργεια αρχικοποίησης"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Πκτ."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Παρακαλώ εισάγετε όνομα χρήστη και κωδικό πρόσβασης."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Πολιτική"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Θύρα"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+#, fuzzy
+msgid "Prevents client-to-client communication"
+msgstr "Αποτρέπει την επικοινωνία μεταξύ πελατών"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Συνέχεια"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Εργασίες"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Πρωτ."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Πρωτόκολλο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Πρωτόκολλο νέας διεπαφής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Η υποστήριξη πρωτοκόλλου δεν έχει εκγατασταθεί"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Ψευδό Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Όριο RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+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>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Αρχικοποίηση όλων των αλλαγών;"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Αλλαγή πρωτοκόλλου;"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Συνδέσεις πραγματικού χρόνου"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Γραφήματα πραγματικού χρόνου"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Κίνηση πραγματικού χρόνου"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Επανεκκίνηση"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Επανεκκίνηση..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Επανεκκίνηση του λειτουργικού συστήματος της συσκευής σας"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Λήψη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Κεραία Λήψης"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Επανασύνδεση της διεπαφής"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Αναφορές"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Απομακρυσμένη διεύθυνση IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Αφαίρεση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Επανάληψη σάρωσης"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Αντικατάσταση καταχώρησης"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Αντικατάσταση ρυθμίσεων ασύρματης σύνδεσης"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Αρχικοποίηση"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Αρχικοποίηση Μετρητών"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Αρχικοποίηση στις προεπιλεγμένες τιμές"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Αρχεία Resolv και Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Αρχείο Resolve"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Επανεκκίνηση"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Επανεκκίνηση Τείχους Προστασίας"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Επαναφορά Αντίγραφου Ασφαλείας"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Επαναφορά αντιγράφου ασφαλείας"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Αναίρεση"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Κατάλογος Root για αρχεία που σερβίρονται μέσω TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Κωδικός Πρόσβασης Δρομολογητή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+#, fuzzy
+msgid "Routes"
+msgstr "Διαδρομές"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Οι διαδρομές ορίζουν τη διεπαφή και πύλη από την οποία κάποιος υπολογιστής ή "
+"δίκτυο μπορεί να είναι προσβάσιμο/ς."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Εκτέλεση ελέγχου του συστήματος αρχείων πριν προσαρτηθεί η συσκευή"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Εκτέλεση ελέγχου συστήματος αρχείων"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Πρόσβαση SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Κλειδιά SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Αποθήκευση"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Αποθήκευση & Εφαρμογή"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Σάρωση"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Προγραμματισμένες Εργασίες"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Δείτε το manpage του \"mount\" για λεπτομέρειες"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+#, fuzzy
+msgid "Separate Clients"
+msgstr "Απομόνωση Πελατών"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Ρυθμίσεις Εξυπηρετητή"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Όνομα Υπηρεσίας"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Είδος Υπηρεσίας"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Υπηρεσίες"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Ρύθμιση Εξυπηρετητή DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Απενεργοποίηση αυτής της διεπαφής"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Σήμα"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Σήμα:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Μέγεθος"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Παράκαμψη"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Παράκαμψη σε περιεχόμενο"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Παράκαμψη σε πλοήγηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Κάποια πεδία δεν είναι έγκυρα, δεν μπορούν να αποθηκευτούν οι τιμές!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Πηγή"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+#, fuzzy
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+"Προσδιορίζει την θύρα ακρόασης αυτού του στιγμιοτύπου <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Ορίστε το κρυφό κλειδί κρυπτογράφησης."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Αρχή"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Προτεραιότητα εκκίνησης"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Εκκίνηση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Στατικές Διαδρομές IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Στατικές Διαδρομές IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Στατικά Leases"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Στατικές Διαδρομές"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Στατική διεύθυνση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Κατάσταση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Αυστηρή σειρά"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Υποβολή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Συγχρονισμός..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Σύστημα"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Καταγραφή Συστήματος"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Ιδιότητες Συστήματος"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Ρυθμίσεις TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Πίνακας"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Στόχος"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Τερματισμός"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Το αρχείο συσκευής της μνήμης ή του διαμέρισματος (<abbr title="
+"\"παραδείγματος χάρην\">π.χ.</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Το σύστημα αρχείων που χρησιμοποιήθηκε για διαμόρφωση (<abbr title="
+"\"παραδείγματος χάρην\">π.χ.</abbr> <samp><abbr title=\"Third Extended "
+"Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Οι παρακάτω αλλαγές έχουν αναιρεθεί"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Οι παρακάτω κανόνες είναι αυτή τη στιγμή ενεργοί σε αυτό το σύστημα."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Το παρεχόμενο όνομα δικτύου δεν είναι μοναδικό"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Το σύστημα φλασάρετε τώρα.<br /> ΜΗ ΣΒΗΣΕΤΕ ΤΗΝ ΣΥΣΚΕΥΗ!<br /> Περιμένετε "
+"λίγα λεπτά για να δοκιμάσετε επανασύνδεση. Ανάλογα με τις ρυθμίσεις σας, "
+"είναι πιθανό να χρειαστεί να ανανεώσετε την διεύθυνση του υπολογιστή σας για "
+"να αποκτήσετε ξανά πρόσβαση στη συσκευή."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Η εικόνα που ανεβάσατε δεν περιέχει κάποια υποστηριζόμενη μορφή. Βεβαιωθείτε "
+"ότι επιλέξατε την γενική μορφή εικόνας για την πλατφόρμα σας."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Εμφάνιση"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Δεν υπάρχουν ενεργά leases."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Αυτός είναι ο μόνος <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> στο τοπικό δίκτυο"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Αυτό είναι το crontab του συστήματος στο οποίο μπορούν να οριστούν "
+"προγραμματισμένες εργασίες."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της "
+"κατάστασής τους."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Αυτό το τμήμα δεν περιέχει τιμές ακόμη"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Ζώνη ώρας"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. Για να επαναφέρετε το υλικολογισμικό στην αρχική του "
+"κατάσταση, κάντε κλικ στο \"Εκτέλεσε επαναφορά\" (δυνατό μόνο σε squashfs "
+"εικόνες)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Διαθέσιμο Συνολικά"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Κίνηση"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Μεταφέρθηκαν"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Ρυθμός Εκπομπής"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Εκπομπή"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Ισχύς Εκπομπής"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Κεραία Εκπομπής"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Διεπαφή Τούνελ"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Ισχύς Εκπομπής"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Τύπος"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Συσκευή USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Άγνωστο"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Μη-αποθηκευμένες Αλλαγές"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Το Αρχείο Ανέβηκε"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Χρόνος εν λειτουργία"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Χρήση <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Χρήση πύλης DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Χρήση προεπιλεγμένης πύλης"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Σε χρήση"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Χρησιμοποιούμενη Υποδοχή Κλειδιού"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Όνομα Χρήστη"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Εξυπηρετητής VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Μοιραζόμενο κλειδί WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Κωδική φράση WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Υποστήριξη WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Κωδική φράση WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Προειδοποίηση"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Ασύρματο"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Ασύρματος Προσαρμογέας"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Ασύρματο Δίκτυο"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Επισκόπηση Ασύρματου Δικτύου"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Ασφάλεια Ασύρματου Δικτύου"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Το ασύρματο δίκτυο είναι απενεργοποιημένο"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Το ασύρματο δίκτυο μη συνδεδεμένο"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Το ασύρματο δίκτυο επανεκκινείται..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Το ασύρματο δίκτυο είναι ανενεργό"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Το ασύρματο δίκτυο είναι ενεργό"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Καταγραφή των ληφθέντων DNS αιτήσεων στο syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "αυτόματα"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+#, fuzzy
+msgid "creates a bridge over specified interface(s)"
+msgstr "δημιουργεί μία γέφυρα μεταξύ των ορισμένων διεπαφών"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "ανενεργό"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"αρχείο όπου θα αποθηκεύονται τα Leases του <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "προώθηση"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "αν ο στόχος είναι ένα δίκτυο"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "είσοδος"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "τοπικό αρχείο <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "όχι"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "κλειστό"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "ανοιχτό"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "απεριόριστα"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "μη-καθορισμένο"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "μη-καθορισμένο -ή- δημιουργείστε:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "ναι"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Πίσω"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Ο κωδικός πρόσβασης άλλαξε επιτυχώς!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Άγνωστο Λάθος. ο κωδικός πρόσβασης δεν άλλαξε!"
+
+#~ msgid "Design"
+#~ msgstr "Εμφάνιση"
+
+#~ msgid "Available packages"
+#~ msgstr "Διαθέσιμα πακέτα"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Εμφάνιση μόνο πακέτων που περιέχουν"
+
+#~ msgid "Download and install package"
+#~ msgstr "Κατέβασμα και εγκατάσταση πακέτου"
+
+#~ msgid "Filter"
+#~ msgstr "Φίλτρο"
+
+#~ msgid "Find package"
+#~ msgstr "Εύρεση πακέτου"
+
+#~ msgid "Free space"
+#~ msgstr "Ελεύθερος χώρος"
+
+#~ msgid "Install"
+#~ msgstr "Εγκατάσταση"
+
+#~ msgid "Installed packages"
+#~ msgstr "Εγκατεστημένα πακέτα"
+
+#~ msgid "No package lists available"
+#~ msgstr "Δεν υπάρχουν διαθέσιμες λίστες πακέτων"
+
+#~ msgid "OK"
+#~ msgstr "Εντάξει"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Παραμετροποίηση OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Οι λίστες πακέτων έχουν να ανανεωθούν πάνω από 24 ώρες"
+
+#~ msgid "Package name"
+#~ msgstr "Όνομα πακέτου"
+
+#~ msgid "Software"
+#~ msgstr "Λογισμικό"
+
+#~ msgid "Version"
+#~ msgstr "Έκδοση"
+
+#~ msgid "none"
+#~ msgstr "κανένα"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Απενεργοποίηση ρυθμίσεων DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 και IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Μόνο IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Μόνο IPv6"
+
+#~ msgid "Multicast address"
+#~ msgstr "Διεύθυνση Multicast"
+
+#~ msgid "Protocol family"
+#~ msgstr "Οικογένεια πρωτοκόλλου"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Δεν υπάρχουν αλυσίδες σε αυτόν τον πίνακα"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Σημείωση: Τα αρχεία παραμετροποίησης θα διαγραφούν."
+
+#~ msgid "Activate this network"
+#~ msgstr "Ενεργοποίηση αυτού του δικτύου"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Η διεπαφή απενεργοποιείται..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Η διεπαφή επανασυνδέθηκε"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Η διεπαφή απενεργοποιήθηκε"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Επανασύνδεση της διεπαφής"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Απενεργοποίηση αυτού του δικτύου"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Το ασύρματο δίκτυο επανεκκινήθηκε"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Το ασύρματο δίκτυο τερματίστηκε"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP Leases"
+
+#~ msgid "Sort"
+#~ msgstr "Ταξινόμηση"
+
+#~ msgid "help"
+#~ msgstr "βοήθεια"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Κατάσταση IPv6 WAN"
+
+#~ msgid "Apply"
+#~ msgstr "Εφαρμογή"
+
+#~ msgid "Applying changes"
+#~ msgstr "Εφαρμογή αλλαγών"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Η Παραμετροποίηση εφαρμόστηκε."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Αποθήκευση &#38; Εφαρμογή"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί"
+
+#~ msgid "Action"
+#~ msgstr "Ενέργεια"
+
+#~ msgid "Buttons"
+#~ msgstr "Κουμπιά"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Μέγιστος χρόνος κράτησης"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Ελάχιστος χρόνος κράτησης"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού"
+
+#~ msgid "Leasetime"
+#~ msgstr "Χρόνος Lease"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ 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 "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό"
+
+#~ msgid "Port %d"
+#~ msgstr "Θύρα %d"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Διεπαφή VLAN"
diff --git a/package/luci/modules/luci-base/po/en/base.po b/package/luci/modules/luci-base/po/en/base.po
new file mode 100644 (file)
index 0000000..5da6daf
--- /dev/null
@@ -0,0 +1,6389 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-04-03 08:44+0200\n"
+"Last-Translator: juhosg <juhosg@openwrt.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d minute window, %d second interval)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s available)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(empty)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(no interfaces attached)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Additional Field --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Please choose --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- custom --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1 Minute Load:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15 Minute Load:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5 Minute Load:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP retry threshold"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM Bridges"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM Virtual Channel Identifier (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM Virtual Path Identifier (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM device number"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Access Concentrator"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Access Point"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Actions"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Active Connections"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Add"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Add local domain suffix to names served from hosts files"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Add new interface..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Additional Hosts files"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Address"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Address to access local relay bridge"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Advanced Settings"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alert"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Allow all except listed"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Allow listed only"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Allow localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "Allow remote hosts to connect to local SSH forwarded ports"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Allow root logins with password"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Allow the <em>root</em> user to login with password"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenna 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenna 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Any zone"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Assign interfaces..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Associated Stations"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Authentication"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Authoritative"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Authorization Required"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Auto Refresh"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Available"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Average:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Back"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Back to Overview"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Back to configuration"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Back to overview"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Back to scan results"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Backup / Flash Firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Backup file list"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Bad address specified!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Bogus NX Domain Override"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Bridge interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Bridge unit number"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Bring up on boot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Buffered"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU usage (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Cancel"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Chain"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Changes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Changes applied."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Changes the administrator password for accessing the device"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Channel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Check"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Checksum"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Cipher"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Client ID to send when requesting DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Close list..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Collecting data..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Command"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Common Configuration"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuration"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmation"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Connect"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Connected"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Connection Limit"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Connections"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Country"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Country Code"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Cover the following interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Cover the following interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Create / Assign firewall-zone"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Create Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Create a bridge over multiple interfaces"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Critical"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron Log Level"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Custom Interface"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP Server"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP and DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP client"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-Options"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS forwardings"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Default %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Default gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Default state"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Define a name for this network."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Define additional DHCP options, for example "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" which advertises different DNS "
+"servers to clients."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Delete"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Delete this network"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Description"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destination"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Device"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Device Configuration"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnostics"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Directory"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Disabled"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Distance Optimization"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distance to farthest network member in meters."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversity"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domain required"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Don&#39;t forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests "
+"without <abbr title=\"Domain Name System\">DNS</abbr>-Name"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-Method"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Edit"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Enable/Disable"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Enabled"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Enables the Spanning Tree Protocol on this bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Encryption"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Error"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet Adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Filesystem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filter private"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filter useless"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Firewall Settings"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Firewall Status"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Flash Firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Force"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Fragmentation Threshold"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "General Setup"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Go to relevant configuration page"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Hang Up"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Host entries"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Hostname"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Hostnames"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP address"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identity"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignore <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignore interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignore resolve file"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "In"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Initscript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Initscripts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Invalid input value"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Invalid username and/or password! Please try again."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"It appears that you try to flash an image that does not fit into the flash "
+"memory, please verify the image file!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Join Network"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernel Log"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Kill"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Language"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Leasefile"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Leasetime remaining"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Link On"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Load"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Local Time"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localise queries"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Log queries"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Login"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Logout"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-Address Filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-Filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-List"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memory"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Memory usage (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metric"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mode"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modem device"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Mount Point"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Mount Points"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Mounted file systems"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Name"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Name of the new network"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigation"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Network"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "No rules in this chain."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Noise"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation "
+"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
+"<samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Options"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Out"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Overview"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Owner"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA Encapsulation"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Packets"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Password"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Password authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Password of Private Key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Path to CA-Certificate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Path to Private Key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Perform reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Physical Settings"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Please enter your username and password."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Policy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Prevents client-to-client communication"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Proceed"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processes"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS Threshold"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reboots the operating system of your device"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Receive"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Receiver Antenna"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "References"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Remove"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repeat scan"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Replace entry"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reset Counters"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Restart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Restart Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restore backup"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Revert"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Save"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Save & Apply"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Scheduled Tasks"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Separate Clients"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Services"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Size"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Skip"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Skip to content"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Skip to navigation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Slot time"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Source"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Start"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Start priority"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Static IPv4 Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Static IPv6 Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Static Leases"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Static Routes"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stop"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Strict order"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Submit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "System"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "System Log"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Table"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Target"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"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>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "The following changes have been reverted"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "The following rules are currently active on this system."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes until you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Theme"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "This is the system crontab in which scheduled tasks can be defined."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"This list gives an overview over currently running system processes and "
+"their status."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "This page gives an overview over currently active network connections."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "This section contains no values yet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Timezone"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Traffic"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transfer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Transmission Rate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Transmit Power"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Transmitter Antenna"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Type"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Unsaved Changes"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Uploaded File"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Use <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Used"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Username"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Mode"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Wireless Adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Wireless Network"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Wireless Overview"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Wireless Security"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"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>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "creates a bridge over specified interface(s)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "disable"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "if target is a network"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "unspecified -or- create:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Back"
+
+#~ msgid "Design"
+#~ msgstr "Design"
+
+#~ msgid "Available packages"
+#~ msgstr "Available packages"
+
+#~ msgid "Download and install package"
+#~ msgstr "Download and install package"
+
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#~ msgid "Find package"
+#~ msgstr "Find package"
+
+#~ msgid "Install"
+#~ msgstr "Install"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-Configuration"
+
+#~ msgid "Package name"
+#~ msgstr "Package name"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Version"
+#~ msgstr "Version"
+
+#~ msgid "none"
+#~ msgstr "none"
+
+#~ msgid "No chains in this table"
+#~ msgstr "No chains in this table"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Configuration files will be kept."
+
+#~ msgid "Activate this network"
+#~ msgstr "Activate this network"
+
+#~ msgid "Backup / Restore"
+#~ msgstr "Backup / Restore"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP Leases"
+
+#~ msgid "help"
+#~ msgstr "help"
+
+#~ msgid "Apply"
+#~ msgstr "Apply"
+
+#~ msgid "Applying changes"
+#~ msgstr "Applying changes"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configuration applied."
+
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Buttons"
+#~ msgstr "Buttons"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximum hold time"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimum hold time"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Specifies the button state to handle"
+
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#~ msgid "automatic"
+#~ msgstr "automatic"
+
+#~ 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."
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
diff --git a/package/luci/modules/luci-base/po/es/base.po b/package/luci/modules/luci-base/po/es/base.po
new file mode 100644 (file)
index 0000000..2b6369d
--- /dev/null
@@ -0,0 +1,6803 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2019-05-16 20:13-0300\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language: es\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 2.2.1\n"
+"Language-Team: \n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f dB"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr "%d Bit"
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d campo(s) inválido(s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "¡%s no está etiquetado en varias VLAN!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(ventana de %d minutos, intervalo de %d segundos)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponible)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(Vacío)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(Sin interfaces conectadas)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Campo adicional --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Por favor elija --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- Personalizado --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- Emparejar por dispositivo --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- Emparejar por etiqueta --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- Emparejar por uuid --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- Por favor seleccione --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+"0 = Sin utilizar el umbral RSSI, 1 = No cambiar el valor predeterminado del "
+"controlador"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Carga a 1 minuto:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Carga a 15 minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "ID hexadecimal de 4 caracteres"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Carga a 5 minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr "Identificador de 6 octetos como una cadena hexadecimal, sin dos puntos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "Habilitar 802.11r (FT)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "Consulta tiempo de espera máximo de Asociación SA de 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "Consulta tiempo de espera de reintento de Asociación SA de 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "Protección de marco de gestión de 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "Tiempo de espera máximo de 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "Tiempo de espera de reintento de 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Puerto de consultas al <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Puerto del servidor <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Los servidores de <abbr title=\"Domain Name System\">DNS</abbr> se consultan "
+"en el orden en que aparecen en el archivo resolv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Dirección <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr ""
+"Puerta de enlace <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "Máscara de red <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Dirección o red (CIDR)<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr ""
+"Puerta de enlace <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Configuración de <abbr title=\"Light Emitting Diode\">LEDs</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nombre del <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Dirección <abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Máximas conexiones <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr "Tamaño máximo de paquetes EDNS0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Máx.</abbr> consultas simultáneas"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Nota: debe reiniciar manualmente el servicio cron si el archivo crontab "
+"estaba vacío antes de editar."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+"Se requiere un nuevo inicio de sesión ya que la sesión de autenticación "
+"expiró."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Umbral de reintento ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr "ATM (Modo de transferencia asíncrono)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Puente ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identificador de canal virtual ATM (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identificador de camino virtual ATM (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Los puentes ATM exponen conexiones AAL5 ethernet encapsuladas como "
+"interfaces de red Linux que se pueden usar junto a DHCP o PPP para conectar "
+"a la red del proveedor."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Número de dispositivo ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "ID del proveedor del sistema ATU-C"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrador de acceso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Punto de Acceso"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Acciones"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Rutas <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> activas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Rutas <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> activas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Conexiones activas"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Clientes DHCP activos"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Clientes DHCPv6 activos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Añadir"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "Añadir dirección IPv4..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "Añadir dirección IPv6..."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "Añadir clave"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Añadir el sufijo de dominio local a los nombres servidos desde el archivo de "
+"hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Añadir nueva interfaz..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Archivos de hosts adicionales"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Archivo de servidores adicionales"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Dirección"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Dirección del puente relé local"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administración"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Configuración avanzada"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "Potencia de transmisión agregada (ACTATP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Apodo de interfaz"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Apodo de \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Todos los servidores"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+"Asigna direcciones IP secuencialmente, comenzando desde la dirección más "
+"baja disponible"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Asignar IPs secuencialmente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permitir autenticación de contraseña via <abbr title=\"Secure Shell\">SSH</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Permitir que el modo AP desconecte los clientes por una condición de ACK bajo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Permitir a todos excepto a los de la lista"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Permitir tasas de 802.11b heredadas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Permitir a los pertenecientes en la lista"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permitir host local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permitir que los hosts remotos se conecten a los puertos reenviados SSH "
+"locales"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Permitir conexiones a root con contraseña"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Permitir al usuario <em>root</em> conectar con contraseña"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Permitir respuestas en el rango 127.0.0.0/8, por ejemplo para servicios RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "IPs permitidas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Siempre anunciar el enrutador predeterminado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "Siempre apagado (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "Siempre encendido (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Usará siempre canales de 40MHz incluso si el canal secundario se superpone. "
+"¡El uso de esta opción no cumple con IEEE 802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr "Anexo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr "Anexo A + L + M (todos)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr "Anexo A G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr "Anexo A G.992.2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr "Anexo A G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr "Anexo A G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr "Anexo B (todos)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr "Anexo B G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr "Anexo B G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr "Anexo B G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr "Anexo J (todos)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr "Anexo L G.992.3 POTS 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr "Anexo M (todos)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr "Anexo M G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr "Anexo M G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"Anuncie como enrutador predeterminado incluso si no hay un prefijo público "
+"disponible."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Dominios DNS anunciados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Servidores DNS anunciados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Identidad anónima"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "Monte anónimo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "Swap anónimo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configuración de la antena"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Cualquier zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Aplicar de todos modos"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "Solicitud de aplicar fallida con estado <code>%h</code>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Arquitectura"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+"Asigna una parte de la longitud dada de cada prefijo IPv6 público a esta "
+"interfaz"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Asignar interfaces..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+"Asigna partes de prefijo utilizando este ID de subprefijo hexadecimal para "
+"esta interfaz."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Clientes conectados"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "Clientes"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Grupo de autenticaciones"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autenticación"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Tipo de autenticación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autorizar"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorización requerida"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Autorefrescar"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Automático"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "Homenet automático (HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+"Comprobar automáticamente el sistema de archivos para detectar errores antes "
+"del montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "Montar automáticamente el sistemas de archivos en hotplug"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "Montar swap automáticamente en hotplug"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Montar el sistema de archivos automáticamente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Montar Swap automáticamente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponible"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Media:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr "B43 + B43C"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr "B43 + B43C + V43"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr "BR / DMR / AFTR"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Volver"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Volver al resumen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Volver a la configuración"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Volver al resumen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Volver a resultados de la exploración"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Copia de seguridad"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Copia de seguridad / Grabar firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Salvar lista de archivos"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "¡Dirección no válida!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Banda"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Intervalo de baliza"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Lista de archivos a los que hacer copia de seguridad. Es una lista de "
+"archivos de configuración cambiados por archivos marcados por opkg, archivos "
+"esenciales base y los patrones de copia de seguridad definidos por el "
+"usuario."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+"Enlace dinámico a las interfaces en lugar de la dirección del comodín "
+"(recomendado como linux predeterminado)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "Interfaz de enlace"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "Enlazar el túnel a esta interfaz (opcional)."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Ignorar dominio falso NX"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Puente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Puentear interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Número de unidad del puente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Iniciar en el arranque"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Controlador WiFi 802.11%s Broadcom"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Controlador WiFi 802.11 BCM%04x"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "En búfer"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"Certificado de CA; Si está vacío se guardará después de la primera conexión."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Uso de CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "Llamada fallida"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Categoría"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Precaución: los archivos de configuración serán borrados"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Precaución: la actualización del sistema será forzada"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Cadena"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "Cambiar contraseña de inicio de sesión"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Cambios"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Cambios aplicados."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "Se eliminaron los cambios."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Cambie la contraseña del administrador para acceder al dispositivo"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "Cambiando contraseña..."
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"El canal %d no está disponible en el dominio regulatorio %s y se ha ajustado "
+"automáticamente a %d."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Comprobar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Comprobar los sistemas de archivos antes de montar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr "Marque esta opción para eliminar las redes existentes de esta radio."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Comprobación"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Elegir mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Elija la zona del firewall a la que quiere asignar esta interfaz. Seleccione "
+"<em>no especificado</em> para remover la interfaz de la zona asociada o "
+"rellene el campo <em>crear</em> para definir una zona nueva a la que "
+"asignarla."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Elija la red o redes a las que quiere unir esta interfaz WiFi o rellene el "
+"campo <em>crear</em> para definir una red nueva."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Cifrado"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Encapsulación UDP de Cisco"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Pulse \"generar archivo\" para descargar un archivo .tar con los archivos de "
+"configuración actuales."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"Haga clic en \"Guardar mtdblock\" para descargar el archivo mtdblock "
+"especificado. (NOTA: ¡ESTA FUNCIÓN ES PARA PROFESIONALES!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Cliente"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "ID de cliente que se enviará al solicitar DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "Cerrar"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Cerrar las conexiones inactivas tras los segundos dados. Use 0 para una "
+"conexión permanente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Cerrar lista..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Un momento..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Comando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "Comentario"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configuración común"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Complica los ataques de reinstalación de claves en el lado del cliente al "
+"deshabilitar la retransmisión de los marcos de claves EAPOL que se utilizan "
+"para instalar claves. Esta solución podría causar problemas de "
+"interoperabilidad y reducir la robustez de la negociación de claves, "
+"especialmente en entornos con una gran carga de tráfico."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuración"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "Configuración fallida"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Los archivos de configuración se mantendrán"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "Se ha aplicado la configuración."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "¡La configuración ha sido revertida!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmación"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Conectar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Conectado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Límite de conexión"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "Intento de conexión fallido"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Conexiones"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"No se pudo recuperar el acceso al dispositivo después de aplicar los cambios "
+"de configuración. Es posible que deba volver a conectarse si modificó la "
+"configuración relacionada con la red, como la dirección IP o las "
+"credenciales de seguridad WiFi."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Código de país"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Cubrir interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Cubre los siguientes interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Crear / Asignar zona de firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Crear interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Crear un puente sobre múltiples interfaces"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Crítico"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Nivel de registro de cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interfaz personalizada"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Delegado personalizado IPv6-prefix"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Los archivos personalizados (certificados, scripts) pueden permanecer en el "
+"sistema. Para evitar esto, primero realice un restablecimiento de fábrica."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "Intervalo de flash personalizado (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Personaliza el comportamiento de los <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s del dispositivo, si es posible."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr "Cliente DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr "Puerto DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr "Secreto DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Servidor DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP y DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Cliente DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opciones de DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "Cliente DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "Modo DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "Servicio DHCPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Reenvíos DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "Etiqueta DNS / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr "DNSSEC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "Comprobación DNSSEC sin firmar"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "Tiempo de espera de inactividad de DPD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "Dirección DS-Lite AFTR"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "Estado DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "Modo de línea DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr "Intervalo DTIM"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Velocidad de datos"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Depuración"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "%d por defecto"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "Ruta predeterminada"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Puerta de enlace predeterminada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "El valor predeterminado es Din estado + Con estado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Estado por defecto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definir un nombre para esta red."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Define opciones adicionales de DHCP, por ejemplo "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" que publica diferentes servidores "
+"DNS a los clientes."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Eliminar"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "Eliminar clave"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Eliminar esta red"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Intervalo de mensaje de indicación de tráfico de entrega"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descripción"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destino"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configuración del dispositivo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "El dispositivo se está reiniciando..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Dispositivo inalcanzable!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Dispositivo inalcanzable! Todavía esperando el dispositivo..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnósticos"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Marcar el número"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Directorio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Deshabilitar <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"para esta interfaz."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Deshabilitar encriptación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "Deshabilitar el sondeo de inactividad"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Deshabilitar esta red"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Deshabilitado (predeterminado)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Desasociarse en un reconocimiento bajo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Descartar respuestas RFC1918 salientes"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "Desconectar"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Intento de desconexión fallido"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimización de distancia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distancia al miembro de la red mas lejana en metros."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversidad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 es un programa que combina un servidor <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> y un reenviador <abbr title=\"Domain "
+"Name System\">DNS</abbr> para Firewalls <abbr title=\"Network Address "
+"Translation\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "No guardar respuestas negativas, por ejemplo dominios inexistentes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"No reenviar peticiones que no se puedan responder por servidores de nombres "
+"públicos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "No reenviar búsquedas inversas para redes locales"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "¿Realmente quieres eliminar la siguiente clave SSH?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Requerir dominio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Lista blanca de dominios"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "No fragmentar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"No reenviar peticiones de <abbr title=\"Domain Name System\">DNS</abbr> sin "
+"un nombre de <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "Abajo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Descargar copia de seguridad"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Descargar mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr "Desplazamiento SNR en sentido descendente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instancia Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear ofrece acceso <abbr title=\"Secure Shell\">SSH</abbr> y un servidor "
+"<abbr title=\"Secure Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr "Dual-Stack Lite (RFC6333)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dinámico"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Túnel dinámico"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Reparte direcciones DHCP dinámicamente a los clientes. Si se deshabilita, "
+"sólo se servirá a clientes con direcciones estáticas."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "Longitud de bits EA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Método EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Editar"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+"Edite los datos de configuración sin procesar anteriores para corregir "
+"cualquier error y presione \"Guardar\" para volver a cargar la página."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Editar esta interfaz"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Editar esta red"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Emergencia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Habilitar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"Habilitar <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"Snooping"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Habilitar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Habilitar actualización dinámica de punto final HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Habilitar negociación IPv6"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Habilitar negociación IPv6 en el enlace PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Habilitar paso de tramas jumbo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Habilitar cliente NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Habilitar solo DES"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Habilitar servidor TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Habilitar funcionalidad VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Habilitar botón WPS, requiere WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Habilitar las medidas correctivas de reinstalación de claves (KRACK)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Habilitar aprendizaje y envejecimiento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Habilitar la duplicación de paquetes entrantes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Habilitar la duplicación de paquetes salientes"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+"Habilita el indicador DF (No fragmentar) de los paquetes de encapsulación."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Habilitar este punto de montaje"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "Habilitar esta red"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Habilitar este swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Habilitar/Deshabilitar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Habilita el protocolo IGMP Snooping en este puente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"Habilita la itinerancia rápida entre los puntos de acceso que pertenecen al "
+"mismo dominio de movilidad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Habilita el protocolo STP en este puente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Modo de encapsulado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Encriptación"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "Punto final de Host"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "Punto final del puerto"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "Ingrese valor personalizado"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "Ingrese valores personalizados"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Borrando..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Error"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Segundos errados (ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Adaptador ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Excluir interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Expandir nombre del host"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "Esperando %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Expira"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Tiempo de expiración de direcciones dadas, con mínimo de dos minutos "
+"(<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Externo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "Lista de soporte de clave externa R0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "Lista de soporte de clave externa R1"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Servidor externo de registro del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Puerto del servidor externo de registro del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Protocolo de servidor de registro de sistema externo"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Opciones de comando SSH adicionales"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr "FT sobre DS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "FT sobre The Air"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr "Protocolo FT"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+"Error al confirmar aplicar dentro de %ds, a la espera de la reversión..."
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Archivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nombre del archivo de imagen de arranque mostrado a los clientes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Sistema de archivos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtro privado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtro inútil"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "La finalización falló"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+"Encuentre todos los sistemas de archivos actualmente conectados e "
+"intercambie y reemplace la configuración con los valores predeterminados "
+"según lo que se detectó"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Encontrar y unirse a red"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Terminar"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "Marca de Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Configuración del Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Estado del Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Archivo de firmware"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versión del firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Puerto origen fijo para peticiones de DNS salientes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Grabar firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Grabar imagen..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Grabar nueva imagen de firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operaciones de grabado"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Grabando..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "Acceso de escritura de memoria flash (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forzar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "Forzar modo 40MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forzar CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Forzar DHCP en esta red aunque se detecte otro servidor."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forzar TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forzar TKIP y CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Forzar enlace"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Forzar actualización"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Forzar uso de NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "No coincide el token del formulario"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Reenviar tráfico DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "Segundos de corrección de errores de reenvío (FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Reenviar tráfico de difusión"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "Reenviar tráfico de pares de malla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Modo de reenvío"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Umbral de fragmentación"
+
+# It should be "Frame Bursting" at once!
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Estallido del marco"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Libre"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"Más información sobre las interfaces y los pares de WireGuard en <a href="
+"\"http://wireguard.com\">wireguard.com</a>."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Sólo GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Puerta de enlace"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "La dirección de la puerta de enlace es inválida"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Puertos del gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Configuración general"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Configuración general"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Generar Config"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "Generar PMK localmente"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Generar archivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Controlador WiFi 802.11%s genérico"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"La confirmación y la contraseña no coinciden. ¡No se ha cambiado la "
+"contraseña!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Configuración global"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Opciones globales de red"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Ir a configuración de contraseña..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Ir a la página principal de configuración"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Grupo de contraseña"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Invitado"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Contraseña HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "Nombre de usuario HE.net"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "Modo HT (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Suspender"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr "Errores de código de error de encabezado (HEC)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "Intervalo de ritmo (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Aquí puede configurar los aspectos básicos de su dispositivo, como su nombre "
+"de host o la zona horaria."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Ocultar <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "Ocultar cadenas vacias"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Host"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entradas de hosts"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Tiempo de espera de expiración del host"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Dirección <abbr title=\"Internet Protocol Address\">IP</abbr> o red"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Contenido de la etiqueta Host-Uniq"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nombre del host"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Nombre del host a enviar cuando se solicite DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Nombres de hosts"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Híbrido"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "Grupo IKE DH"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "Direcciones IP"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "Protocolo IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Dirección IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "Dirección IP inválida"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "Falta la dirección IP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Firewall IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "Conexión IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Dirección IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "Longitud de asignación de IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Difusión IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Puerta de enlace IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Máscara de red IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "Red IPv4 en notación de dirección / máscara de red"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "Prefijo IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Longitud de prefijo IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr "IPv4+IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Dirección IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4 en IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Firewall IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "Vecinos de IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Configuraciones de IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 ULA-Prefix"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "Conexión IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Dirección IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "Sugerencia de asignación de IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "Longitud de asignación de IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Puerta de enlace IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "Red IPv6 en notación de dirección / máscara de red"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefijo IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Longitud de prefijo IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "Prefijo IPv6 enrutado"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "Sufijo IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Dirección IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6-PD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-en-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-sobre-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-sobre-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identidad"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Si está comprobado, 1DES está habilitado"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Si está marcado, el encriptado estará deshabilitado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Montar el dispositivo por su UUID en vez de un nodo fijo de dispositivo si "
+"se especifica"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Montar el dispositivo por la etiqueta de la partición en vez de por el nodo "
+"fijo de dispositivo si se especifica"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Si está desmarcado no se configurará una ruta por defecto"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+"Si está desmarcado las direcciones de servidores DNS ingresadas se ignorarán"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Si su dispositivo no tiene <abbr title=\"Random Access Memory\">RAM</abbr> "
+"suficiente, los datos no utilizados pueden ser guardados temporalmente en un "
+"dispositivo de Swap (swap-device) liberando el espacio que ocupan. Tenga en "
+"cuenta que el Swap es un proceso lento porque este método no puede "
+"transferir volúmenes de información a alta velocidad tal y como hace la "
+"<abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignorar <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Deshabilitar DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorar el archivo resolve"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Imagen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Entrada"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 evitar el acceso no autorizado al sistema, su solicitud ha sido "
+"bloqueada. Haga clic en \"Continuar» a continuación para volver a la página "
+"anterior."
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Espera de inactividad"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Entrante:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Información"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr "Información"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Fallo de inicialización"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Nombre del script de inicio"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts de inicio"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "Instale \"iputils-traceroute6\" para Traceroute IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instalar el paquete %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instalar extensiones de protocolo..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "La interfaz %q del dispositivo migra automáticamente de %q a %q."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configuración de la interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Resumen de interfaces"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Reconectando interfaz..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Nombre de interfaz"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "La interfaz no existe o no está aún conectado."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Interno"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Error interno del servidor"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Inválido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "¡ID VLAN no válido! Sólo se permiten IDs entre %d y %d."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "¡ID VLAN no válido! Sólo se permiten IDs únicos"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "¡Nombre de usuario y/o contraseña no válido/s!. Por favor reintente."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Aislar clientes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+"Parece que está intentando grabar una imagen de firmware mayor que la "
+"memoria flash de su equipo. ¡Por favor, verifique el archivo!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "¡Se necesita JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Conectar"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Conectarse a una red: Búsqueda de redes WiFi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Conectarse a: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Conservar la configuración del router"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Registro del Kernel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versión del Kernel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Clave"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Clave #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr "KiB"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Matar"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Servidor L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Umbral de fracaso en eco LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Intervalo de eco LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Etiqueta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Idioma"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Idioma y Estilo"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Latencia"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Hoja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Tiempo de finalización"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Archivo de conexiones"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Tiempo de conexión restante"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Deje vacío para autodetectar"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Deje vacío para usar la dirección WAN actual"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Registro de cambios:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "IP máxima"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"Limita el servicio de DNS a las subredes de interfaces en las que estamos "
+"sirviendo DNS."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "Limita la escucha de estas interfaces, y el bucle de retorno."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Atenuación de línea (LATN)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Modo de línea"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Estado de línea"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Tiempo de actividad de línea"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Enlace activado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Lista de servidores <abbr title=\"Domain Name System\">DNS</abbr> a los que "
+"enviar solicitudes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+"Lista de R0KHs en el mismo dominio de movilidad. <br />Formato: dirección "
+"MAC, identificador NAS, clave de 128 bits como cadena hexadecimal. <br /"
+">Esta lista se usa para asignar R0KH-ID (Identificador de NAS) a una "
+"dirección MAC de destino cuando se solicita la clave PMK-R1 del R0KH que el "
+"STA usó durante la Asociación de dominio de movilidad inicial."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+"Lista de R1KHs en el mismo dominio de movilidad. <br />Formato: dirección "
+"MAC, R1KH-ID como 6 octetos con dos puntos, clave de 128 bits como cadena "
+"hexadecimal. <br />Esta lista se utiliza para asignar R1KH-ID a una "
+"dirección MAC de destino cuando se envía la clave PMK-R1 desde R0KH. Esta es "
+"también la lista de R1KH autorizados en el MD que pueden solicitar claves "
+"PMK-R1."
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Lista de archivos de claves SSH para autenticación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Lista de dominios a los que se permiten respuestas RFC1918"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Lista de dispositivos que proporcionan resultados de dominio NX falsos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Interfaces de escucha"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Puerto de escucha"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr "Escucha solo en la interfaz dada o, si no se especifica, en todas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Puerto de escucha para consultas DNS entrantes"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Carga"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Carga media"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Cargando"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "Cargando claves SSH..."
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "Dirección IP local inválida"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Dirección IP local para asignar"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Dirección local IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Dirección local IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Solo servicio local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Arranque local"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Hora local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Dominio local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Especificación de dominio local. Los nombres que coinciden con este dominio "
+"nunca se reenvían y se resuelven solo desde archivos DHCP o hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Sufijo del dominio local que se añade a los nombres DHCP y a las entradas "
+"del archivo de dispositivos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Servidor local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Localice el nombre del host en función de la subred que solicita si hay "
+"varias IP disponibles"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localizar consultas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Bloqueado en el canal %s utilizado por: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Nivel de registro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Registrar consultas"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Registro"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Iniciar sesión"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Cerrar sesión"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr "Pérdida de segundos de señal (LOSS)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Dirección dada más baja como diferencia de la dirección de red."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Dirección MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtro por dirección MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtro por dirección MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Lista de direcciones MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4over6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "La regla MAP no es válida"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+"Asegúrate de clonar el sistema de archivos raíz usando algo como los "
+"siguientes comandos:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Manual"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "Max. velocidad de datos alcanzable (ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "Máximo permitido de intervalo de escucha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Número máximo de clientes DHCP activos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Número máximo de consultas DNS concurrentes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Segundos máximos de espera a que el módem esté activo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"La longitud máxima del nombre es de 15 caracteres, incluido el prefijo de "
+"protocolo/puente automático (br-, 6in4-, pppoe-, etc.)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Máximo de conexiones activas."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr "Medio"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memoria"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Uso de RAM (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "ID de malla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Métrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "Puerto monitor de espejo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "Puerto fuente de espejo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Extensión de protocolo faltante para %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "Dominio de movilidad"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Modelo"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Modem predeterminado"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Dispositivo de módem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "Error en la consulta de información del módem"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Espera de inicialización del modem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr "Más caracteres"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Entrada de montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Punto de montaje"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Puntos de montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Puntos de montaje - Entrada de montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Puntos de montaje - Entrada de Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Los puntos de montaje definen el directorio en el que un dispositivo de "
+"memoria se unirá al sistema del archivos"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "Sistemas de archivos de montaje no configurados específicamente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Opciones de montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Punto de montaje"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Montaje de Swap no configurado específicamente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Sistemas de archivo montados"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Bajar"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Subir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "Modo NAT-T"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "Prefijo NAT64"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "NDP-Proxy"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "Dominio NT"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Servidores NTP a consultar"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nombre"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nombre de la nueva interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nombre de la nueva red"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navegación"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Máscara de red"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Red"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilidades de red"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Imagen de arranque en red"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "Actividad del dispositivo de red (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "El dispositivo de red no está presente"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Red sin interfaces."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Siguiente »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "No"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "No se ha configurado un servidor DHCP para esta interfaz"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Sin NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "No se han encontrado archivos"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "No hay información disponible"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "No hay delegación de prefijo coincidente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Sin caché negativa"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "No hay red configurada para este dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "No se ha especificado un nombre de red"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "¡Sin contraseña!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "No hay claves públicas presentes todavía."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "No hay reglas en esta cadena."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Aún no hay resultados de escaneo disponibles ..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Sin zona asignada"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Ruido"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Margen de ruido (SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Ruido:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "Errores de CRC no preventivos (CRC P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "Sin comodín"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Ninguno"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "No encontrado"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "No asociado"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "No conectado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr "No se inició en el arranque"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Nota: longitud del nombre de la interfaz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Aviso"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "NSLookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"Número de entradas de DNS en caché (el máximo es 10000, 0 es sin "
+"almacenamiento en caché)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "Número de hilos paralelos utilizados para la compresión"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "Contraseña de grupo confusa"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "Contraseña confusa"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "Obtener dirección IPv6"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Retraso de desconexión"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Configure las interfaces de red. Puede hacer puentes con diferentes "
+"interfaces, marcando el campo \"puentear interfaces\" e introduciendo el "
+"nombre de las mismas separadas por espacios. También puede usar la notación "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr>, <samp>INTERFACE."
+"VLANNR</samp> (<abbr title=\"por ejemplo\">Ej.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Retraso de activación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "¡Debe especificar al menos un nombre de host o dirección MAC!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "¡Uno o más campos contienen valores inválidos!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "Uno o más valores inválidos / requeridos en la pestaña"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "¡Campos vacíos!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Abrir lista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Frecuencia de operación"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Opción cambiada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Opción removida"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Opcional"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"Opcional. Marca de 32 bits para los paquetes cifrados salientes. Ingrese el "
+"valor en hexadecimal, comenzando con <code>0x</code>."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Opcional. Valores permitidos: 'eui64', 'random', valor fijo como '::1' o "
+"'::1:2'. Cuando se recibe un prefijo IPv6 (como 'a:b:c:d::') desde un "
+"servidor delegante, use el sufijo (como '::1') para formar la dirección IPv6 "
+"('a:b:c:d::1') para la interfaz."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+"Opcional. Clave precompartida codificada en base64. Agrega una capa "
+"adicional de criptografía de clave simétrica para la resistencia post-"
+"cuántica."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "Opcional. Crear rutas para IPs permitidas para este par."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Opcional. Descripción del par."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+"Opcional. Host de pares. Los nombres se resuelven antes de abrir la interfaz."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "Opcional. Unidad máxima de transmisión de la interfaz del túnel."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "Opcional. Puerto de pares."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+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 mantener mensajes vivos. El valor predeterminado es "
+"0 (deshabilitado). El valor recomendado si este dispositivo está detrás de "
+"un NAT es 25."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr "Opcional. Puerto UDP utilizado para paquetes salientes y entrantes."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opciones"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Otros:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Salida"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Saliente:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "Interfaz de salida"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Reemplazar dirección MAC"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Reemplazar MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Reemplazar TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Reemplazar TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Reemplaza el nombre de interfaz predeterminado"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Reemplazar puerta de enlace en las respuestas DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Anula la máscara de red enviada a los clientes. Normalmente se calcula a "
+"partir de la subred que se sirve."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Anular la tabla utilizada para rutas internas"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Descripción general"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Propietario"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Contraseña PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Nombre de usuario PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "Código PIN rechazado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "PMK R1 Push"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Encapsulación PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "Desplazamiento PSID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "Longitud de PSID-bits"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr "PTM/EFM (Modo de transferencia de paquetes)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "¡Se necesita el paquete libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Paquetes"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Parte de zona %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Contraseña"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autentificación de contraseña"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Contraseña de la Clave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Contraseña de clave privada interna"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr "Seguridad de la contraseña"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Contraseña2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "Pegar o arrastrar archivo de clave SSH..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Ruta al Certificado CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Camino al certificado de cliente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Ruta a la Clave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Ruta al certificado interno de CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Ruta al certificado del cliente interno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Ruta a la clave privada interna"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Pico:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "Dirección IP del par para asignar"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Falta la dirección del compañero"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Pares"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr "Reenvío secreto perfecto"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Realizar restablecimiento"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "Mantener vivo persistente"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Ratio Phy:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Configuración física"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Paq."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Por favor, introduzca su nombre de usuario y contraseña."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Política"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr "Intervalo de autorefrezco"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr "Intervalo de autorefrezco para consultas de estado en segundos"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Puerto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Estado del puerto:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Modo de administración de energía"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "Errores preventivos de CRC (CRC P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Preferir LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Preferir UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "Prefijo delegado"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "Clave precompartida"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Asumir que el otro estará muerto tras estos fallos de echo LCP, use 0 para "
+"ignorar fallos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Evita escuchar en estas interfaces."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Impide la comunicación entre clientes"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Clave privada"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Proceder"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Procesos"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Prefil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protocolo de la nueva interfaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "No está instalado el paquete necesario del protocolo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Dar servicio NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Introduzca una nueva red"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Clave pública"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"Las claves públicas permiten los inicios de sesión SSH sin contraseña con "
+"una mayor seguridad en comparación con el uso de contraseñas simples. Para "
+"cargar una nueva clave en el dispositivo, pegue una línea de clave pública "
+"compatible con OpenSSH o arrastre un archivo <code>.pub</code> al campo de "
+"entrada."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+"Prefijo público enrutado a este dispositivo para su distribución a los "
+"clientes."
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "QMI Celular"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Calidad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Consulta todos los servidores <abbr title=\"Domain Name System\">DNS</abbr> "
+"disponibles en el enlace"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "Tiempo de vida de la clave R0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "Llavero R1"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "RFC3947 modo NAT-T"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr "Umbral RSSI para unirse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Umbral RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Ratio RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Puerto de contabilidad Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Secreto de contabilidad Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Servidor de contabilidad Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Puerto de autentificación Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Secreto de autentificación Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Servidor de autentificación Radius"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Bytes en bruto codificados en hexadecimal. Deje en blanco a menos que su ISP "
+"lo requiera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Leer <code>/etc/ethers</code> para configurar el servidor <abbr title="
+"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"¿Realmente eliminar esta interfaz? La eliminación no se puede deshacer! Es "
+"posible que pierda el acceso a este dispositivo si está conectado a través "
+"de esta interfaz"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"¿Realmente quiere eliminar esta red WiFi? La eliminación no se puede "
+"deshacer! Es posible que pierda el acceso a este dispositivo si está "
+"conectado a través de esta red."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "¿Está seguro de restablecer todos los cambios?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "¿Está seguro de querer cambiar el protocolo?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Conexiones en tiempo real"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Gráficos en tiempo real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Carga en tiempo real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Tráfico en tiempo real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Red WiFi en tiempo real"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Fecha límite de reasociación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Protección contra reasociación"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Reiniciando..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reiniciar el sistema operativo de su dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Recibir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena Receptora"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Recomendado. Direcciones IP de la interfaz de WireGuard."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconectar esta interfaz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referencias"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relé (relayd)"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Puente relé (relayd)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Relé entre redes"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Puente relé (relayd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Dirección IPv4 remota"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Dirección IPv4 remota o FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Remover"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repetir exploración"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Reemplazar entrada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Cambiar la configuración WiFi"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Solicitar dirección IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Solicitud IPv6-prefijo de longitud"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Requerido"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Requerido para ciertos ISPs, por ejemplo Charter con DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "Requerido. Clave privada codificada en base64 para esta interfaz."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Requerido. Base64 codificada clave pública de igual."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+"Requerido. Direcciones IP y prefijos que este par puede usar dentro del "
+"túnel. Por lo general, las direcciones IP del túnel del par y las redes que "
+"el mismo enruta a través del túnel."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"Requiere la versión completa de wpad/hostapd y soporte del controlador de "
+"wifi <br />(a partir de enero de 2019: ath9k, ath10k, mwlwifi y mt76)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Requiere upstream soporta DNSSEC; Verifique que las respuestas de los "
+"dominios no firmados realmente provengan de dominios no firmados"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reiniciar contadores"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Reiniciar a configuraciones predeterminadas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Archivos Resolv y Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Archivo de resolución"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Reiniciar Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "Reiniciar la interfaz de radio"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restaurar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restaurar copia de seguridad"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Mostrar/ocultar contraseña"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Revertir"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Revertir cambios"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "Error al revertir la solicitud con el estado <code>%h</code>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Revirtiendo configuración..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Raíz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Directorio raíz para los archivos servidos por TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Preparación de la raíz"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "Ruta permitida IPs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Tipo de ruta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Servicio de anuncio de enrutador"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Contraseña del router"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rutas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Las rutas especifican sobre qué interfaz y puerta de enlace se puede llegar "
+"a un cierto dispositivo o red."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "Regla"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Comprobar el sistema de archivos antes de montar el dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Comprobar el sistema de archivos"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Acceso SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "Dirección del servidor SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "Puerto del servidor SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "Nombre de usuario SSH"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Claves SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr "SWAP"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Guardar"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Guardar y aplicar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Guardar mtdblock"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Guardar contenidos mtdblock"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "Guardando llaves..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Escanear"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "Error en la solicitud de escaneo"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tareas programadas"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Sección añadida"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sección removida"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Vea la página del manual de \"mount\" para detalles"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"Seleccione \"Forzar actualización\" para flashear la imagen incluso si falla "
+"la verificación del formato de la imagen. ¡Úselo solo si está seguro de que "
+"el firmware es correcto y está diseñado para su dispositivo!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Enviar peticiones de echo LCP cada intervalo de segundos dado, solo efectivo "
+"usado conjuntamente con el umbral de fallo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Aislar clientes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Configuración del servidor"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nombre de servicio"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tipo de servicio"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Aplicaciones"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "Sesión expirada"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "Establecer VPN como ruta predeterminada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Configura las propiedades de la interfaz independientemente del operador de "
+"enlace (si está configurado, los eventos de detección de operador no invocan "
+"los controladores de conexión en caliente)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "Configurar la sincronización del tiempo"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "La configuración de la PLMN falló"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "El modo de operación de ajuste falló"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Configuración del servidor DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr "Segundos con errores graves (SES)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "GI corto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Preámbulo corto"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Mostrar lista de archivos a resguardar"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "Mostrar cadenas vacias"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Apagar esta interfaz"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Señal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Atenuación de señal (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Señal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Tamaño"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Tamaño de la caché de consultas DNS"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "Tamaño del dispositivo ZRam en megabytes"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Saltar"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Saltar al contenido"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Saltar a navegación"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Tiempo asignado"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "Software VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Algunos campos son inválidos, ¡no se pueden guardar!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Objeto no encontrado."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "El servidor encontró un error inesperado."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"No está instalado el soporte para el sysupgrade, la nueva imagen debe "
+"grabarse manualmente. Por favor, mire el wiki para instrucciones de "
+"instalación específicas."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Origen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Especifica el directorio al que está enlazado el dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+"Especifica los puertos de escucha de esta instancia de <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Especifica la cantidad de peticiones ARP fallidas hasta suponer muerto un "
+"dispositivo"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Especifica la cantidad de segundos a transcurrir hasta suponer muerto un "
+"dispositivo"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Especifique un TOS (Tipo de Servicio)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+"Especifique un TTL (Tiempo de vida) para el paquete de encapsulación que no "
+"sea el predeterminado (64)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+"Especifique una MTU (Unidad de transmisión máxima) distinta de la "
+"predeterminada (1280 bytes)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Especifica la clave secreta de encriptado."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Iniciar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Prioridad de inicio"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Iniciando aplicar configuración..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Iniciando escaneo de WiFi..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Arranque"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Rutas IPv4 estáticas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Rutas IPv6 estáticas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Direcciones estáticas"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Rutas estáticas"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Dirección estática"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Las direcciones estáticas se usan para asignar direcciones IP fijas y "
+"nombres identificativos de dispositivos a clientes DHCP. También son "
+"necesarias para configuraciones de interfaz no dinámica en las que a cada "
+"dispositivo siempre se le quiere dar la misma dirección IP."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "Límite de inactividad de la estación"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Estado"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Detener"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Orden estricto"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr "Fuerte"
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Enviar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Suprimir el registro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "Suprimir el registro de la operación rutinaria de estos protocolos"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Entrada de Swap"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Switch %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Switch %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+"El Switch %q tiene una topología desconocida: la configuración de VLAN puede "
+"no ser precisa."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "Máscara de puerto de Switch"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "Switch VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Intercambiar protocolo"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "Cambiar a la notación de lista CIDR"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "Actividad de switchport (%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr "Sincronizar con el servidor NTP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Sincronizar con el navegador"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Sincronizando..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistema"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Registro del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Propiedades del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Tamaño del buffer de registro del sistema"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Configuración TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Raíz del servidor TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Ratio TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabla"
+
+# Target = Meta --> Objetivo --> Destino?
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Destino"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Red de destino"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"La sección de <em>Configuración del dispositivo</em> ocupa la configuración "
+"física del hardware de radio como el canal, la potencia de transmisión o la "
+"selección de antena que se comparte entre todas las redes WiFi definidas (si "
+"el hardware de radio es capaz de ser multi-SSID). Configuración por red como "
+"encriptado o modo de operación se agrupan en <em>Configuración de la "
+"interfaz</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"El paquete <em>libiwinfo-lua</em> no está instalado. ¡Debe instalarlo para "
+"poder configurar la conectividad WiFi!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+"La configuración de actualización de punto final de HE.net cambió, ¡ahora "
+"debe usar el nombre de usuario simple en lugar de la ID de usuario!"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+"La dirección IPv4 o el nombre de dominio completo del extremo del túnel "
+"remoto."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"El prefijo IPv6 asignado por el proveedor, suele termina con <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Los caracteres permitidos son: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> y <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "El archivo de copia de seguridad no parece ser un archivo gzip válido."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+"El archivo de configuración no se pudo cargar debido al siguiente error:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"No se pudo alcanzar el dispositivo en %d segundos después de aplicar los "
+"cambios pendientes, lo que provocó que la configuración se revirtiera por "
+"razones de seguridad. Si cree que los cambios de configuración son "
+"correctos, proceda de todos modos. Alternativamente, puede descartar esta "
+"advertencia y editar los cambios antes de intentar aplicar nuevamente, o "
+"revertir todos los cambios pendientes para mantener el estado de "
+"configuración actualmente en funcionamiento."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"El archivo de dispositivo de memoria o partición (<abbr title=\"Por ejemplo"
+"\">e.j.</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"El sistema de archivo que fue utilizado para dar formato a la memoria (<abbr "
+"title=\"por ejemplo\">Ej.</abbr> <samp><abbr title=\"Third Extended "
+"Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Imagen recibida. Verifique que la comprobación y tamaño del archivo recibido "
+"coinciden con los del original.<br />Pulse \"Proceder\" para empezar el "
+"grabado."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Los siguientes cambios han sido revertidos."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Las siguientes reglas están actualmente activas en este sistema."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "La clave pública SSH dada ya se ha agregado."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"La clave pública SSH dada no es válida. Por favor, suministre las claves "
+"públicas RSA o ECDSA."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "El nombre de red dado no es único"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"El hardware no tiene capacidad de tener varios SSIDs y la configuración "
+"existente será reemplazada si continúa."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"Longitud del prefijo IPv4 en bits, el resto se usará en direcciones IPv6."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Longitud del prefijo IPv6 en bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "La dirección IPv4 local sobre la que se crea el túnel (opcional)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Los puertos de red de este dispositivo se pueden combinar en varias <abbr "
+"title=\"Virtual Local Area Network\">VLAN</abbr>s en las que los ordenadores "
+"se pueden comunicar directamente entre ellos. Las <abbr title=\"Virtual "
+"Local Area Network\">VLAN</abbr>s se usan a menudo para separar diferentes "
+"segmentos de red. Es común que exista un puerto por defecto para subida "
+"hacia una red mayor como internet y el resto se dediquen a la red local."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Este protocolo necesita estar asignado a un dispositivo"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "¡El token de seguridad enviado no es válido o ya está vencido!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"El sistema está borrando la partición de configuración y rearrancará cuando "
+"termine."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Escribiendo en la memoria flash.<br />¡NO APAGUE EL DISPOSITIVO!<br /> "
+"Espere unos minutos antes de reconectar. Es posible que tenga que renovar la "
+"conexión de su ordenador para poder acceder de nuevo al dispositivo."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "La contraseña del sistema se ha cambiado correctamente."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"El archivo con la imagen de firmware subido no tiene un formato adecuado. "
+"Asegúrese de haber elegido la imagen correcta para su plataforma."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Sin conexiones activas."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "No hay cambios para aplicar."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "¡No hay cambios a revertir!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "¡Sin cambios pendientes!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"No hay dispositivo asignado aún. Por favor, enlace un dispositivo de red en "
+"la pestaña \"Configuración física\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"No hay contraseñas en este router. Por favor, configure una contraseña para "
+"proteger el interfaz web y habilitar SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Dirección IPv4 del relé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+"Este archivo puede contener líneas como 'servidor=/dominio/1.2.3.4' o "
+"'servidor=1.2.3.4' para dominios específicos o dominantes completos <abbr "
+"title=\"Domain Name System\">DNS</abbr>."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Lista de patrones shell con los archivos y directorios que se deben incluir "
+"en un sysupgrade. Los archivos modificados en /etc/config/ y ciertas otras "
+"configuraciones se guardarán automáticamente."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+"Esta es la \"clave de actualización\" configurada para el túnel o la "
+"contraseña de la cuenta si no se ha configurado ninguna clave de "
+"actualización"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Contenido de /etc/rc.local. Ponga sus propios comandos aquí (antes de 'exit "
+"0') para ejecutarlos al final del proceso de inicio."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Esta es la dirección de punto final asignada por el broker del túnel, suele "
+"terminar con <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Este es el único servidor <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> en la red de área local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "Este es el nombre de usuario simple para iniciar sesión en la cuenta"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+"Este es el prefijo que le envía el agente de túneles para que lo utilicen "
+"los clientes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Definición de tareas programadas para crontab."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Esta es normalmente la dirección del PoP más cercano operada por el broker "
+"del túnel"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "Procesos del sistema que se están ejecutando actualmente y su estado."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Conexiones de red activas."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "No hay reglas definidas"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Sincronización horaria"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Sincronización horaria no configurada."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "Intervalo de tiempo para reprogramar GTK"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Zona horaria"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "Iniciar sesión…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Para restaurar los archivos de configuración, debe subir primero una copia "
+"de seguridad. Para reiniciar el firmware a sus configuraciones "
+"predeterminadas pulse \"Realizar restablecimiento\" (sólo posible con "
+"imágenes squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Tono"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total disponible"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Tráfico"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transferencia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Tasa de transmisión"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmitir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Potencia de transmisión"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena transmisora"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Disparador"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Modo de disparador"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "ID de túnel"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interfaz de túnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Enlace del túnel"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Potencia-TX"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tipo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Sólo UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Dispositivo USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "Puertos USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "No se puede determinar el nombre del dispositivo"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "No se puede determinar la dirección IP externa"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "No se puede determinar la interfaz ascendente"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Imposible repartir"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "No se puede obtener la identificación del cliente"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "No se puede resolver el nombre de host AFTR"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "No se puede resolver el nombre de host del par"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Segundos no disponibles (UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Error desconocido (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "No administrado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Desmontar"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "Clave sin nombre"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Cambios no guardados"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "Tipo de MAP no soportado"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Módem no soportado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipo de protocolo no soportado."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "Arriba"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Suba una imagen compatible con sysupgrade para reemplazar el firmware "
+"actual. Puede marcar \"Conservar la configuración del router\" si lo desea "
+"(es necesario que la imagen sea compatible)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Subir archivo..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Archivo subido"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Tiempo activo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Usar <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Usar puerta de enlace DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Usar otros servidores DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Usa códigos de país ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "MTU a usar en el interfaz de túnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "TTL a usar en el interfaz de túnel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "Utilizar como superposición externa (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Utilizar como sistema de archivos raíz (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Usar marca de difusión"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Utilizar la gestión integrada de IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Usar servidores DNS personalizados"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Utilizar la puerta de enlace predeterminada"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Usar métrica de puerta de enlace"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Usar tabla de rutas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Pulse el botón <em>Añadir</em> para insertar una nueva dirección. "
+"<em>Dirección MAC</em> identificará el dispositivo, <em>Dirección IPv4</em> "
+"especificará la dirección fija a usar y <em>Nombre de host</em> se asignará "
+"como nombre identificativo."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Usado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Espacio de clave usado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+"Se utiliza para dos propósitos diferentes: RADIUS NAS ID y 802.11r R0KH-ID. "
+"No es necesario con WPA normal (2)-PSK."
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Certificado de usuario (Codificado PEM)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Clave de usuario (codificada PEM)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Nombre de usuario"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs en %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs en %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "VPN dirección local"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "VPN puerto local"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Puerto del servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "Hash SHA1 del certificado del servidor VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (CISCO 3000 (y otros) VPN)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Proveedor"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Clase de vendedor a enviar cuando solicite DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verificar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Interfaz dinámica virtual"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Sistema abierto WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Clave compartida WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Contraseña WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Modo WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Contraseña WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Para el encriptado WPA se necesita que estén instalados \"wpa_supplicant\" "
+"para el modo cliente o \"hostapd\" para los modos AP y ad-hoc."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Esperando a que se apliquen los cambios..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Esperando a que termine el comando..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Esperando a que se aplique la configuración... %ds"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Esperando por el dispositivo..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Aviso"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "Advertencia: ¡Hay cambios no guardados que se perderán al reiniciar!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr "Débil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"Cuando se utiliza un PSK, el PMK se puede generar automáticamente. Cuando "
+"está habilitada, las siguientes opciones de teclas R0/R1 no se aplican. "
+"Deshabilite esto para usar las opciones de teclas R0 y R1."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "Actividad WiFi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "Asociación de clientes de WiFi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "Recepción de datos WiFi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "Transmisión de datos WiFi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "WiFi en (%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Ancho de banda"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "WiFi"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adaptador WiFi"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Red WiFi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Visión general de WiFi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Seguridad WiFi"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Red WiFi deshabilitada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Red WiFi no asociada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Reiniciando red WiFi..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Red WiFi deshabilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Red WiFi habilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Escribe las peticiones de DNS recibidas en el registro del sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Escribe el registro del sistema al archivo"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "Si"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Puede habilitar o deshabilitar los scripts de inicio instalados aquí. Los "
+"cambios se aplicarán después de que se reinicie el dispositivo.<br /> "
+"<strong>Advertencia: Si deshabilitas los scripts de inicio esenciales como "
+"\"red\", ¡Tu dispositivo podría volverse inaccesible!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Debe habilitar JavaScript en su navegador o LuCI no funcionará correctamente."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "Algoritmo de compresión ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "Streams de compresión ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "Configuración de ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "Tamaño de ZRam"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "Cualquiera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "Auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "Puenteado"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "Crear"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "Crear:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "Crea un puente sobre la interfaz o interfaces asociadas"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "Deshabilitar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "Deshabilitado"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "Expirado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Archivo en el que se guardarán las direcciones <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> asignadas"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "Reenviar"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "Full dúplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "Half dúplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "Valor codificado en hexadecimal"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "Oculto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "Modo híbrido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "Si el destino es una red"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "Entrada"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "clave entre 8 y 63 caracteres"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "clave con 5 o 13 caracteres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "Archivo <abbr title=\"Domain Name System\">DNS</abbr> local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "Minutos"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "WPA/WPA2 mixto"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "No"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "Sin enlace"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "Valor no vacío"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "No presente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "Apagado"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "Encendido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "Abierto"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "Salida"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "Overlay"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "Valor decimal positivo"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "Valor entero positivo"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "Aleatorio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "Modo relé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "Enrutado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "Seg"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "Modo servidor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "Con estado solamente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "Sin estado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "Sin estado + Con estado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "Etiquetado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "Unidades de tiempo (TUs / 1.024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "Valor único"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "Desconocido"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "Ilimitado"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "No especificado"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "No especificado -o- crear:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "Desetiquetado"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "Dirección IP válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "Dirección IP válida o prefijo"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "IPv4 válido CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "Dirección IPv4 válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "Dirección IPv4 o red válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "Dirección IPv4 válida: puerto"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "Red IPv4 válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "IPv4 válido o IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "Valor de prefijo IPv4 válido (0-32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "IPv6 válido CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "Dirección IPv6 válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "Dirección IPv6 válida o prefijo"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "ID de host IPv6 válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "Red IPv6 válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "Valor de prefijo IPv6 válido (0-128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "Dirección MAC válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "Identificador UCI válido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "Identificador UCI válido, nombre de host o dirección IP"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "Dirección válida: puerto"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "Fecha válida (AAAA-MM-DD)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "Valor decimal válido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "clave WEP hexadecimal válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "clave hexadecimal WPA válida"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "host válido: puerto"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "Nombre de host válido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "Nombre de host válido o dirección IP"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "Valor entero valido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "Red válida en notación de dirección/máscara de red"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr "Dígito de teléfono válido (0-9, \"*\", \"#\", \"!\" o \".\")"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "puerto válido o rango de puertos (port1-port2)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "Valor de puerto válido"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "Tiempo válido (HH: MM: SS)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "Valor entre %d y %d caracteres"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "Valor entre %f y %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "Valor mayor o igual a %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "Valor menor o igual a %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr "Valor con al menos %d caracteres"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "Valor con un máximo de %d caracteres"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "Si"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Volver"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "uno de:\n"
+#~ " - %s"
+
+#~ 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 ""
+#~ "Su Internet Explorer es demasiado viejo para mostrar esta página "
+#~ "correctamente. Actualícelo al menos a la versión 7 o use otro navegador "
+#~ "como Firefox, Opera o Safari."
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr "Claves públicas SSH. Ponga una por línea."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "¡Contraseña cambiada!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Error desconocido, ¡no se ha cambiado la contraseña!"
+
+#~ msgid "Design"
+#~ msgstr "Diseño"
+
+#~ msgid "Available packages"
+#~ msgstr "Paquetes disponibles"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Mostrar sólo paquete que contienen"
+
+#~ msgid "Download and install package"
+#~ msgstr "Descargar e instalar paquete"
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Find package"
+#~ msgstr "Buscar paquete"
+
+#~ msgid "Free space"
+#~ msgstr "Espacio libre"
+
+#~ msgid "Install"
+#~ msgstr "Instalar"
+
+#~ msgid "Installed packages"
+#~ msgstr "Paquetes instalados"
+
+#~ msgid "No package lists available"
+#~ msgstr "No hay listas de paquetes disponibles"
+
+#~ msgid "OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuración de OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Las listas de paquetes tienen más de 24 horas"
+
+#~ msgid "Package name"
+#~ msgstr "Nombre del paquete"
+
+#~ msgid "Software"
+#~ msgstr "Instalación de programas"
+
+#~ msgid "Update lists"
+#~ msgstr "Actualizar listas"
+
+#~ msgid "Version"
+#~ msgstr "Versión"
+
+#~ msgid "none"
+#~ msgstr "ninguno"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Desactivar configuración de DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 e IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Sólo IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Sólo IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Tiempo de validación de cesión"
+
+#~ msgid "Multicast address"
+#~ msgstr "Dirección multicast"
+
+#~ msgid "Protocol family"
+#~ msgstr "Familia de procolo"
+
+#~ msgid "No chains in this table"
+#~ msgstr "No hay cadenas en esta tabla"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Se mantendrán los ficheros de configuración."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: se borrarán los ficheros de configuración."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Grupo: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Activar esta red"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11b Hermes"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Parando interfaz..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interfaz reconectado"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interfaz detenido"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11n Prism2/2.5/3"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11%s RaLink"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "¿Está seguro de apagar la interfaz \"%s\"?.\n"
+#~ "Puede perder el acceso a este dispositivo si está conectado por interfaz."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Reconectando la interfaz"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Apagar esta red"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Red inalámbrica rearrancada"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Apagando red inalámbrica"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Cesiones DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Cesiones DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "¿Está seguro de borrar esta interfaz?. ¡No será posible deshacer el "
+#~ "borrado!\n"
+#~ "Puede perder el acceso a este dispositivo si está conectado por esta "
+#~ "interfaz."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "¿Está seguro de querer apagar esta red?.\n"
+#~ "Puede perder el acceso a este dispositivo si está conectado por esta red."
+
+#~ msgid "Sort"
+#~ msgstr "Ordenar"
+
+#~ msgid "help"
+#~ msgstr "ayuda"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Estado de la WAN IPv4"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Estado de la WAN IPv6"
+
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
+
+#~ msgid "Applying changes"
+#~ msgstr "Aplicando cambios"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configuración establecida."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Guardar y aplicar"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Se han hecho los siguientes cambios"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "¡No hay cambios pendientes!"
+
+#~ msgid "Action"
+#~ msgstr "Acción"
+
+#~ msgid "Buttons"
+#~ msgstr "Botones"
+
+#~ msgid "Handler"
+#~ msgstr "Manejador"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Pausa máxima de transmisión"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Pausa mínima de espera"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Ruta al ejecutable que maneja el evento button"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Especifica el estado de botón a manejar"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Configuración de acciones personalizadas para los botones"
+
+#~ msgid "Leasetime"
+#~ msgstr "Tiempo de cesión"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
+#~ 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."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Unirse a Red: Configuración"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Puerto %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "¡El puerto %d está desmarcado en múltiples VLANs!"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Interfaz VLAN"
diff --git a/package/luci/modules/luci-base/po/fr/base.po b/package/luci/modules/luci-base/po/fr/base.po
new file mode 100644 (file)
index 0000000..39ce9b5
--- /dev/null
@@ -0,0 +1,6671 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2013-12-22 17:11+0200\n"
+"Last-Translator: goofy <pierre.gaufillet@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(fenêtre de %d minutes, intervalle de %d secondes)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponible)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(vide)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(pas d'interface connectée)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Champ Supplémentaire --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Choisir --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- autre --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Charge sur 1 minute :"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Charge sur 15 minutes :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Charge sur 5 minutes :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Port des requêtes <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Port du serveur <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Les serveurs <abbr title=\"Domain Name System\">DNS</abbr> seront<br/"
+">interrogés dans l'ordre du fichier de résolution"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Adresse <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Passerelle <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "Masque réseau <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Adresse ou réseau <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> "
+"(notation CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Passerelle <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr ""
+"Configuration des <abbr title=\"Diode Électro-Luminescente\">DEL</abbr>s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nom de la <abbr title=\"Diode Électro-Luminescente\">DEL</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Adresse <abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Nombre de baux <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> maximum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"taille maximum des paquets <abbr title=\"Extension Mechanisms for Domain "
+"Name System\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "Maximum de requêtes concurrentes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Niveau de ré-essai ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Ponts ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+"Identifiant de canal virtuel (<abbr title=\"Virtual Channel Idendifier"
+"\">VCI</abbr>) ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+"Identifiant de chemin virtuel (<abbr title=\"Virtual Path Idendifier\">VPI</"
+"abbr>) ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Les ponts ATM présentent l'Ethernet encapsulé dans des connexions AAL5 comme "
+"des interfaces réseau virtuelles Linux qui peuvent être utilisées avec DHCP "
+"ou PPP pour se connecter au réseau du fournisseur d'accès."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Numéro de périphérique ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrateur d'accès"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Point d'accès"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Actions"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Routes <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> actives"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Routes <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> actives"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Connexions actives"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Bails DHCP actifs"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Bails DHCPv6 actifs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Ajouter"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Ajouter le suffixe du domaine local aux noms résolus d'après le fichier hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Ajout d'une nouvelle interface..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Fichiers hosts supplémetaires"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adresse"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adresse pour accéder au pont-relais local"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Paramètres avancés"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerte"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Autoriser l'authentification <abbr title=\"Secure Shell\">SSH</abbr> par mot "
+"de passe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Autoriser tout sauf ce qui est listé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Autoriser seulement ce qui est listé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Autoriser l'hôte local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permettre à des hôtes distants de se conecter à des ports SSH locaux "
+"correspondants (« forwarded »)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Autoriser les connexions administrateur avec mot de passe"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+"Autoriser l'utilisateur <em>root</em> à se connecter avec un mot de passe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Autorise les réponses de l'amont dans la plage 127.0.0.0/8, par ex. pour les "
+"services RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenne 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenne 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configuration de l'antenne"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "N'importe quelle zone"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Affecte les interfaces…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Équipements associés"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Authentification"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritaire"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorisation requise"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Rafraîchissement automatique"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponible"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Moyenne :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Retour"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Retour à la vue générale"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Retour à la configuration"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Retour à la vue générale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Retour aux résultats de la recherche"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Sauvegarder"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Sauvegarde / Mise à jour du micrologiciel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Liste des fichiers de sauvegarde"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Adresse spécifiée incorrecte!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Voici la liste des fichiers à sauvegarder. Elle est constituée des fichiers "
+"de configuration modifiés marqués par opkg, des fichiers de base essentiels, "
+"et des motifs de sauvegarde définis par l'utilisateur."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Débit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Contourne les «  NX Domain » bogués"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Interfaces en pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Numéro d'unité du pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "L'activer au démarrage"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Contrôleur sans fil Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Contrôleur sans fil Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Temporisé"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Utilisation CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Annuler"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Chaîne"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Changements"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Changements appliqués."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Change le mot de passe administrateur pour accéder à l'équipement"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Vérification"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Somme de contrôle"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Choisissez la zone de pare-feu à laquelle vous voulez affecter cette "
+"interface. Sélectionnez <em>non précisé</em> pour retirer l'interface de la "
+"zone associée, ou remplissez le champ <em>créer</em> pour définir une "
+"nouvelle zone et y inclure cette interface."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Choisissez le(s) réseau(x)  que vous souhaitez attachez a cette interface "
+"sans-fil ou remplissez le <em>créer</em>  champ pour définir un nouveau "
+"réseau. "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Code de chiffrement"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Cliquer sur \"Construire l'archive\" pour télécharger une archive tar des "
+"fichiers de la configuration actuelle."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Identifiant client à envoyer dans les requêtes DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Fermer une connexion inactive après le délai donné en secondes, mettre 0 "
+"pour garder les connexions"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Fermer la liste…"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Récupération de données..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Commande"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configuration commune"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuration"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmation"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Se connecter"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Connecté"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limite de connexion"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Connexions"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Pays"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Code pays"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Couvre l'interface suivante"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Couvre les interfaces suivantes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Créer / Assigner une zone du pare-feu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Créer une interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Créer un pont par dessus plusieurs interfaces"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Critique"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Niveau de journalisation de Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interface spécifique"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Personnaliser le comportement des <abbr title=\"Diode Électro-Luminescente"
+"\">DEL</abbr>s si possible."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Serveur DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP et DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "client DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Options DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "transmissions DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Deboguage"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "%d par défaut"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Passerelle par défaut"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "État par défaut"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Donne un nom à ce réseau."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Définir des options DHCP supplémentaires, par exemple "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" qui publie différents serveurs "
+"DNS à ses clients."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Effacer"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Supprimer ce réseau"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Description"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destination"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Équipement"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configuration de l'équipement"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnostics"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Répertoire"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Désactiver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Désactiver <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"pour cette interface."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Jeter les réponses en RFC1918 amont"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimisation de la distance"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distance au membre du réseau le plus éloigné, en mètres."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversité"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 est un serveur <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> combiné à un relais <abbr title=\"Domain Name System\">DNS</"
+"abbr> pour les pare-feu <abbr title=\"Network Address Translation\">NAT</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Ne pas mettre en cache les réponses négatives, par ex. pour des domaines "
+"inexistants"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Ne pas transmettre les requêtes qui ne peuvent être résolues par les "
+"serveurs de noms publics"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+"Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domaine nécessaire"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Liste blanche de domaines"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Ne pas transmettre de requêtes <abbr title=\"Domain Name System\">DNS</abbr> "
+"sans nom <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Télécharger la sauvegarde"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Session Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear est un serveur <abbr title=\"Secure Shell\">SSH</abbr> et intègre "
+"un serveur <abbr title=\"Secure Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dynamique"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Tunnel dynamique"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Alloue dynamiquement des adresses pour les clients du DHCP. Si désactivé, "
+"seuls les clients ayant des baux statiques seront gérés."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Méthode EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Éditer"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Éditer cette interface"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Éditer ce réseau"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Urgence"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Activer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Activer le protocole <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Activer la mise à jour dynamique de l'extrémité du tunnel chez HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Activer la négociation IPv6 sur le lien PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Activer la circulation de très grandes trames (Jumbo)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Activer client NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Activer le serveur TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Acviter la gestion des VLANs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Activer l'apprentissage et la péremption"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Activer ce montage"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Activer cette mémoire d'échange (swap)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Activer/Désactiver"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Activé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+"Activer le protocole <abbr title=\"Spanning Tree Protocol\">STP</abbr> sur "
+"ce pont"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Mode encapsulé"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Chiffrement"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Effacement…"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Erreur"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Module Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Commutateur Ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Étendre le nom d'hôte"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Expire"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Délai d'expiration des adresses allouées, le minimum est de 2 minutes "
+"(<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Serveur distant de journaux système"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Port du serveur distant de journaux système"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fichier"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nom de fichier d'une image de démarrage publiée aux clients"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Système de fichiers"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrer les requêtes privées"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtrer les requêtes inutiles"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Cherche et rejoint un réseau"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Terminer"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Pare-feu"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Paramètres du pare-feu"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "État du pare-feu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Version du micrologiciel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Port source fixe pour les requêtes DNS sortantes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Mise à jour du micrologiciel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Écriture de l'image…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Écrire l'image du nouveau micrologiciel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Opérations d'écriture"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Écriture…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forcer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forcer CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Force le DHCP sur ce réseau même si un autre serveur est détecté."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forcer TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forcer TKIP et CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Transmettre le trafic DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Transmettre le trafic de diffusion"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Mode de transmission"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Seuil de fragmentation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Rafale de trames"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Libre"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "Ghz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "seulement GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Passerelle"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Ports de la passerelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Paramètres généraux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Configuration générale"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Construire l'archive"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Contrôleur sans fil générique 802.11%s"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"La confirmation du nouveau mot de passe ne correspond pas, changement "
+"annulé !"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Aller à la configuration du mot de passe…"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Aller à la page de configuration correspondante"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Mot de passe HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Signal (HUP)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Ici, vous pouvez configurer les aspects basiques de votre routeur comme son "
+"nom ou son fuseau horaire."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Cacher le ESSID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entrées d'hôtes"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Délai d'expiration pour les hôtes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "adresse IP ou réseau"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nom d'hôte"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Nom d'hôte à envoyer dans une requête DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Noms d'hôtes"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Adresse IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Pare-feu IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Adresse IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Diffusion IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Passerelle IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Masque-réseau IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "longueur du préfixe IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Adresse IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Pare-feu IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Adresse IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Passerelle IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Préfixe IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "longueur du préfixe IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Adresse IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6 dans IPv4 (RFC 4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6 sur IPv4 (6ème)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6 sur IPv4 (6 vers 4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identité"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Monte le périphérique identifié par cet UUID au lieu d'un nom de "
+"périphérique fixe"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Monte le périphérique identifié par cette étiquette au lieu d'un nom de "
+"périphérique fixe"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Décoché, aucune route par défaut n'est configurée"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Décoché, les adresses des serveurs DNS publiés sont ignorées"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Si la mémoire physique n'est pas en quantité suffisante, les données "
+"inutilisées peuvent être temporairement transférée sur une partition "
+"d'échange, relevant la quantité de RAM disponible. Ce processus est lent car "
+"la mémoire d'échange ne peut être accédée aux taux de transfert de la RAM."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignorer /etc/hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorer l'interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorer le fichier de résolution"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Image"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Entrée"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Délai d'inactivité"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Intérieur :"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script d'initialisation"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts d'initialisation"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Installer le paquet %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Installation des extensions de protocole…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configuration de l'interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Vue d'ensemble de l'interface"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "L'interface se reconnecte…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "L'interface n'est pas présente ou pas encore connectée."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Erreur Serveur Interne"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Erreur : donnée entrée invalide"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"Identifiant VLAN invalide !Seuls les IDs entre %d et %d sont autorisés."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+"Identifiant VLAN donné invalide ! Seuls les identifiants uniques sont "
+"autorisés"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Il semble que vous essayez de programmer votre routeur avec une image qui ne "
+"tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-"
+"image !"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Nécessite un Script Java !"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Rejoindre un réseau"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Rejoindre un réseau : recherche des réseaux sans-fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Garder le paramètrage"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Journal du noyau"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Version du noyau"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Clé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Clé n° %d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Tuer"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Serveur L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Seuil d'erreur des échos LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Intervalle entre échos LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Étiquette"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Langue"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Langue et apparence"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Fichier de baux"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Durée de validité"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Laisser vide pour l'auto-détection"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Laisser vide pour utiliser l'adresse WAN actuelle"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Légende :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Lien établi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Liste des serveurs auquels sont transmis les requêtes <abbr title=\"Domain "
+"Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Liste des domaines où sont permises les réponses de type RFC1918"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+"Liste des hôtes qui fournissent des résultats avec des « NX domain » bogués"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr "Écouter seulement sur l'interface spécifié, sinon sur toutes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Port d'écoute des requêtes DNS entrantes"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Charger"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Charge moyenne"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Chargement"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Adresse IPv4 locale"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Adresse IPv6 locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Démarrage local"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Heure Locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domaine local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Domaine local à préciser. Les noms correspondants à ce domaine ne sont "
+"jamais transmis, mais résolus seulement depuis le serveur DHCP ou le fichier "
+"Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Suffixe du domaine local ajouté aux noms du serveur DHCP et du fichier Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Serveur local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Trouve le nom d'hôte suivant le sous-réseau d'où vient la requête si "
+"plusieurs adresses IPs sont possibles"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localiser les requêtes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Niveau de journalisation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Journaliser les requêtes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Journalisation"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Connexion"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Déconnexion"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+"Adresse allouée la plus basse, spécifiée par un décalage à partir de "
+"l'adresse réseau."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Adresse MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtrage par adresses MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtrage par adresses MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Liste des adresses MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Nombre maximum de baux DHCP actifs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Nombre maximum de requêtes DNS au même moment"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Taille maximum autorisée des paquets UDP EDNS.0"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Délai d'attente maximum que le modem soit prêt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Nombre maximum d'adresses allouées."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Mémoire"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Utilisation Mémoire (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrique"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Extention de protocole manquante pour le proto %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mode"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Interface Modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Délai max. d'initialisation du modem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Montage"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Point de montage"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Point de montage"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Points de montage - élément à monter"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Points de montage - partition d'échange"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Les points de montage définissent l'attachement d'un périphérique au système "
+"de fichier"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Options de montage"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Point de montage"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Systèmes de fichiers montés"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Descendre"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Monter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Serveurs NTP candidats"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nom"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nom de la nouvelle interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nom du nouveau réseau"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigation"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Masque de réseau"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Réseau"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilitaires réseau"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Image de démarrage réseau"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Réseau sans interfaces."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Prochain »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Aucun serveur DHCP configuré sur cette interface"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Aucun fichier trouvé"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Information indisponible"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Pas de cache négatif"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Ce périphérique n'a aucune adresse configurée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Aucun nom de réseau donné"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Pas de mot de passe positionné !"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Aucune règle dans cette chaîne"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Aucune zone attribuée"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Bruit"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Bruit :"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Vide"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Pas trouvé"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Pas associé"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Non connecté"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Note"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Durée éteinte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Dans cette page vous pourrez configurer les interfaces réseaux. Vous pouvez "
+"bridger différentes interfaces en cochant le champ \"bridger les interfaces"
+"\" et en saisissant les noms des interfaces réseau séparées par des espaces. "
+"Vous pouvez aussi utiliser la notation VLAN, INTERFACE.VLANNB (ex : eth0.1)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Durée allumée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Il faut indiquer un nom d'hôte ou une adresse MAC !"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Un ou plusieurs champs contiennent des valeurs incorrectes !"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Un ou plusieurs champs n'ont pas de valeur !"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Ouvrir la liste…"
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Option modifiée"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Option retirée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Options"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Autres :"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Sortie"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Extérieur :"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Modifier l'adresse MAC"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Modifier le MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Modifier la passerelle dans les réponses DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Remplacer le masque réseau envoyés aux clients. Il est normalement calculé à "
+"partir du sous-réseau géré."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Modifier la table utilisée pour les routes internes"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Vue d'ensemble"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Propriétaire"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Mot de passe PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Identifiant PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "code PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA Encapsulation"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Nécessite le paquet libiwinfo !"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Paquets"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Fait partie de la zone %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Mot de passe"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Authentification par mot de passe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Mot de passe de la clé privée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Chemin de la CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Chemin du certificat-client"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Chemin de la clé privée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Pic :"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Redémarrer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Réinitialiser"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Débit de la puce:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Paramètres physiques"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pqts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Saisissez votre nom d'utilisateur et mot de passe."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Politique"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Statut du port :"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Suppose que le distant a disparu une fois le nombre donné d'erreurs d'échos "
+"LCP ; utiliser 0 pour ignorer ces erreurs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Empêche la communication directe entre clients"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Continuer"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processus"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocole"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protocole de la nouvelle interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "La gestion du protocole n'est pas installée"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Fournir serveur NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Donner un nouveau réseau"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Qualitée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Seuil RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "Reçu"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Débit en réception"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Port de la comptabilisation Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Secret de la comptabilisation Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Serveur de la comptabilisation Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Port de l'authentification Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Secret de l'authentification Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Serveur de l'authentification Radius"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr "Lire /etc/ethers pour configurer le serveur DHCP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Voulez-vous vraiment supprimer ce réseau sans-fil? L'effacement ne peut être "
+"annulé!\n"
+"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par ce "
+"réseau."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Voulez-vous vraiment ré-initialiser toutes les modifications ?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Voulez-vous vraiment changer de protocole ?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Connexions temps-réel"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Graphiques temps-réel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Charge temps-réel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Trafic temps-réel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Qualité de réception actuelle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Protection contre l'attaque « rebind »"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Redémarrage"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Redémarre…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Redémarrage du système d'exploitation de votre équipement"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Reçoit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antenne émettrice"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconnecter cet interface"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Références"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relais"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Pont-relais"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Relais entre réseaux"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Pont-relais"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Adresse IPv4 distante"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Désinstaller"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Répéter la recherche"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Remplacer l'entrée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Remplacer la configuration sans-fil"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Remise à zéro"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Remise à zéro des compteurs"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Ré-initialisation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Fichiers Resolv et Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Fichier de résolution des noms"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Redémarrer"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Redémarrer le pare-feu"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restaurer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restaurer une sauvegarde"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Montrer/cacher le mot de passe"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Revenir"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Racine"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Répertoire racine des fichiers fournis par TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Mot de passe du routeur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Avec les routes statiques vous pouvez spécifier à travers quelle interface "
+"ou passerelle un réseau peut être contacté."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+"Faire un vérification du système de fichiers avant de monter le périphérique"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Faire une vérification du système de fichiers"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Accès SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Clés SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Sauvegarder"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Sauvegarder et Appliquer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tâches Régulières"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Section ajoutée"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Section retirée"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Voir le manuel de « mount » pour les détails"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Envoyer des demandes d'échos LCP à intervalles donnés, en secondes ; utile "
+"uniqument associé à un seuil d'erreurs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Isoler les clients"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Paramètres du serveur"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nom du service"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Type du service"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Services"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Configurer la synchronisation de l'heure"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Configurer le serveur DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Afficher la liste des fichiers de la sauvegarde actuelle"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Arrêter cet interface"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Signal :"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Taille"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Passer au suivant"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Skip to content"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Skip to navigation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Tranche de temps"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Certains champs sont invalides, ne peut sauvegarder les valeurs !"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Désolé, l'objet que vous avez demandé n'as pas été trouvé."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Désolé, le serveur à rencontré une erreur inattendue."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Désolé, il n'y a pas de gestion de mise à jour disponible, une nouvelle "
+"image du micrologiciel doit être écrite manuellement. Reportez-vous S.V.P. "
+"au wiki pour connaître les instructions d'installation spécifiques à votre "
+"matériel."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Source"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Indique le répertoire auquel le périphérique est rattaché"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Indique le port d'écoute de cette instance <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Indique le nombre de requêtes ARP ratées au delà duquel les hôtes seront "
+"supposés disparus"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr "Indique le délai après quoi les hôtes seront supposés disparus"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Spécifiez ici la clé secrète de chiffrage."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Démarrer"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Priorité de démarrage"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Démarrage"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Routes IPv4 statiques"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Routes IPv6 statiques"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Baux Statiques"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Routes statiques"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Adresse statique"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Les baux statiques sont utilisés pour donner des adresses IP fixes et des "
+"noms symboliques à des clients DHCP. Il sont également nécessaires pour les "
+"interfaces sans configuration dynamique où l'on fournit un bail aux seuls "
+"hôtes configurés."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Arrêter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Ordre stricte"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Soumettre"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Élement de partition d'échange"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Commutateur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Commutateur %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Commutateur %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Protocole du commutateur"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Synchro avec le navigateur"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synchronisation…"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Système"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Journal système"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Propriétés système"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Taille du tampon du journal système"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Paramètres TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Racine du serveur TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "Transmis"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Débit en émission"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Table"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Cible"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"La section <em>Configuration de l'équipement</em> couvre les paramètres "
+"physiques du matériel radio comme le canal, la puissance d'émission ou la "
+"sélection de l'antenne, qui sont partagés entre tous les réseaux sans-fil "
+"définis (si le matériel radio gère plusieurs réseaux SSID). Les paramètres "
+"dépendant de chaque réseau comme le chiffrage ou le mode de fonctionnement "
+"sont groupés dans <em>Configuration de l'interface</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Le paquet <em>libiwinfo-lua</em> n'est pas installé. Vous devez l'installer "
+"pour une configuration sans-fil fonctionnelle !"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Le préfixe IPv6 attribué par le fournisseur, se termine généralement par "
+"<code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Les caractères autorisés sont : <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> et <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr "Le périphérique de bloc contenant la partition (ex : /dev/sda1)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Le système de fichiers utilisé pour formatter le support de stockage (ex : "
+"ext3)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"L'image du micrologiciel a été chargée. Ci-dessous la taille et la somme de "
+"contrôle de cette image, comparez-les avec le fichier original pour vous "
+"assurer de son intégrité.<br /> Cliquez sur \"Continuer\" pour lancer la "
+"procédure d'écriture."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Les changements suivants ont été annulés"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Les règles suivantes sont actuellement actives sur ce système."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Le nom de réseau donné n'est pas unique"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Le matériel ne sait pas gérer plusieurs SSID et la configuration existante "
+"sera remplacée si vous continuez."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"La longueur du préfixe IPv4 en bits, le reste est utilisé dans les adresses "
+"IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "La longueur du préfixe IPv6 en bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Les ports de votre équipement peuvent être configurés pour combiner "
+"plusieurs <abbr title=\"Virtual Local Area Network\">VLANs</abbr> dans "
+"lesquels les machines connectées peuvent dialoguer directement l'une avec "
+"l'autre. Les <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s sont "
+"souvent utilisés pour séparer différences sous-réseaux. Bien souvent il y a "
+"un port d'uplink pour une connexion vers un réseau plus vaste, comme "
+"internet et les autres ports sont réservés au réseau local."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Le protocole sélectionné nécessite l'attribution d'un périphérique"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"Le système est en train d'effacer la partition de configuration et "
+"redémarrera tout seul une fois cela fini."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes until you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Apparence"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Il n'y a aucun bail actif."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Il n'y a aucun changement à annuler !"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Il n'y a aucun changement en attente !"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Il n'y a aucun périphérique attribué pour l'instant, liez s.v.p. un "
+"périphérique réseau dans l'onglet \"Paramètres du matériel\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Ce routeur n'a pas de mot de passe configuré. Veuillez configurer un mot de "
+"passe pour l'utilisateur root pour protéger l'accès de votre interface web "
+"et activer l'accès par SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "L'adresse IPv4 du relais"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Voici la liste des motifs de type glob shell utilisés pour sélectionner les "
+"fichiers et répertoires à inclure durant la mise à jour système. Les "
+"fichiers modifiés dans /etc/config/ et certains autres sont automatiquement "
+"conservés."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Voici le contenu de /etc/rc.local. Placez-y vos propres commandes (avant le "
+"« exit 0 ») pour qu'ils soient exécutés en fin de démarrage."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Il s'agit de l'adresse de l'extrémité locale attribuée par le fournisseur de "
+"tunnels, elle se termine habituellement avec <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr "C'est le seul serveur DHCP sur le réseau local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Ceci est le système crontab avec lequel sont définies les tâches récurrentes."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Il s'agit habituellement de l'adresse du plus proche PoP géré par le "
+"fournisseur de tunnels"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Cette liste donne une vue d'ensemble des processus en exécution et leur "
+"statut."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Cette page donne une vue d'ensemble des connexions réseaux actuellement "
+"actives."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Cette section ne contient pas encore de valeur"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Synchronisation de l'heure"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "La synchronisation de l'heure n'est pas encore configurée."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Fuseau horaire"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Pour restaurer les fichiers de configuration, vous pouvez charger ici une "
+"archive de sauvegarde construite précédemment. Pour réinitialiser le "
+"micrologiciel dans son état initial, cliquer sur \"Réinitialiser\" (possible "
+"seulement avec les images de type squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total disponible"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Trafic"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transfert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Débit d'émission"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Puissance d'émission"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antenne émettrice"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Déclenchement"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Mode de déclenchement"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "ID du tunnel"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interface du tunnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Puissance d'émission"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Type"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP :"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "seulement UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Périphérique USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Impossible d'envoyer"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "non-géré"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Changements non appliqués"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Type de protocole non pris en charge."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Envoyer ici une image compatible avec le système de mise à jour pour "
+"remplacer le micrologiciel actuel. Cochez \"Garder la configuration\" pour "
+"maintenir la configuration actuelle (nécessite une image de micrologiciel "
+"compatible)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Envoi de l'archive…"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Fichier Uploadé"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Utiliser /etc/ethers"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Utiliser la passerelle DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Utiliser les serveurs DNS publiés par le distant"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Utiliser les codes-pays ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Utiliser le MTU sur l'interface du tunnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Utiliser le TTL sur l'interface du tunnel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Utiliser une marque de diffusion"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Utiliser des serveurs DNS spécifiques"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Utiliser la passerelle par défaut"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Utiliser la métrique de la passerelle"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Utiliser la table de routage"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Utiliser le bouton <em>Ajouter</em> pour créer un nouveau bail. "
+"L'<em>adresse MAC</em> identifie l'hôte, l'<em>adresse IPv4</em> décrit "
+"l'adresse fixe à utiliser et le <em>nom d'hôte</em> sera le nom symbolique "
+"attribué à l'hôte qui fait la demande."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Utilisé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Clé utilisée"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs sur %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs sur %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Serveur VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Classe de fournisseur à envoyer dans les requêtes DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Vérifier"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Système ouvert WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Clé partagée WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Mot de passe WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Mode WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Mot de passe WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Le chiffrage WPA nécessite l'installation du paquet wpa_supplicant (en mode "
+"client) ou hostapd (en mode Point d'accès ou Ad-hoc)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "En attente de l'application des changements..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "En attente de la fin de la commande..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Attention"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Sans-fil"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Module Wi-Fi"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Réseau sans-fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Présentation des réseaux sans-fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Sécurité des réseaux sans-fil"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Le Wi-Fi est désactivé"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Le Wi-Fi est non associé"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Le Wi-Fi est ré-initialisé…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Le réseau Wi-Fi est désactivé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Le réseau Wi-Fi est activé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Écrire les requêtes DNS reçues dans syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Vous pouvez ici activer ou désactiver les scripts d'initialisation "
+"installés. Les changements seront pris en compte après un redémarrage.<br/"
+"><strong>Attention: Si vous désactivez des scripts essentiels comme \"réseau"
+"\", votre équipement pourrait ne plus être accessible&#160;!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne "
+"correctement."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "n'importe lequel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "ponté"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "créer:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "créer un bridge entre plusieurs interfaces"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "désactiver"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "expiré"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr "fichier dans lequel les baux DHCP seront stockés"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "transfert"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "half-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "cacher"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "si la destination est un réseau"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "entrée"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "fichier de résolution local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "non"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "pas de lien"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "Arrêté"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "Actif"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "ouvrir"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "routé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "marqué"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "inconnu"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "non limité"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "non précisé"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "non précisé -ou- créer :"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "non marqué"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "oui"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Retour"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Vous pouvez copier ici des clés SSH publiques (une par ligne) pour une "
+#~ "authentification SSH sur clés publiques."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Mot de passe changé avec succès !"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Erreur inconnue, mot de passe inchangé !"
+
+#~ msgid "Design"
+#~ msgstr "Apparence"
+
+#~ msgid "Available packages"
+#~ msgstr "Paquets disponibles"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "N'afficher que les paquets contenant"
+
+#~ msgid "Download and install package"
+#~ msgstr "Télécharge et installe le paquet"
+
+#~ msgid "Filter"
+#~ msgstr "Filtrer"
+
+#~ msgid "Find package"
+#~ msgstr "Trouver un paquet"
+
+#~ msgid "Free space"
+#~ msgstr "Espace libre"
+
+#~ msgid "Install"
+#~ msgstr "Installer"
+
+#~ msgid "Installed packages"
+#~ msgstr "Paquets installés"
+
+#~ msgid "No package lists available"
+#~ msgstr "Aucune liste de paquets disponible"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuration OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Les listes de paquets ont plus de 24 heures"
+
+#~ msgid "Package name"
+#~ msgstr "Nom du paquet"
+
+#~ msgid "Software"
+#~ msgstr "Logiciels"
+
+#~ msgid "Update lists"
+#~ msgstr "Mettre les listes à jour"
+
+#~ msgid "Version"
+#~ msgstr "Version"
+
+#~ msgid "none"
+#~ msgstr "aucun"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Désactiver la configuration DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 et IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "IPv4 seulement"
+
+#~ msgid "IPv6 only"
+#~ msgstr "IPv6 seulement"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Durée de validité d'un bail"
+
+#~ msgid "Multicast address"
+#~ msgstr "Adresse multidiffusion"
+
+#~ msgid "Protocol family"
+#~ msgstr "Famille du protocole"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Aucune chaîne dans cette table"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Les fichiers de configuration seront préservés."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Note : les fichiers de configuration seront effacés."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Activer ce réseau"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Contrôleur sans fil Hermes 802.11b"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "L'interface s'arrête…"
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interface reconnectée"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interface arrêtée"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Contrôleur sans fil Prism2/2.5/3 802.11b"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "Contrôleur sans fil RaLink 802.11%s"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Voulez-vous vraiment arrêter l'interface %s ?\n"
+#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
+#~ "cette interface."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Reconnecte cet interface"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Arrêter ce réseau"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Wi-Fi ré-initialisé"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Wi-Fi arrêté"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Baux DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Bails DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Voulez-vous vraiment supprimer cette interface? L'effacement ne peut être "
+#~ "annulé!\n"
+#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
+#~ "cette interface."
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Voulez-vous vraiment arrêter l'interface %s ?\n"
+#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
+#~ "cette interface."
+
+#~ msgid "Sort"
+#~ msgstr "Trier"
+
+#~ msgid "help"
+#~ msgstr "aide"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "État IPv4 du WAN"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "État IPv6 du WAN"
+
+#~ msgid "Apply"
+#~ msgstr "Appliquer"
+
+#~ msgid "Applying changes"
+#~ msgstr "Changements en cours"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configuration appliquée."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Sauvegarder et appliquer"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Les changements suivants ont été appliqués"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Il n'y a aucun changement en attente d'être appliqués !"
+
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Buttons"
+#~ msgstr "Boutons"
+
+#~ msgid "Handler"
+#~ msgstr "Gestionnaire"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Temps de maintien maximum"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Temps de maintien mimimum"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Chemin du programme exécutable gérant les évènements liés au bouton"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Indique l'état du bouton à gérer"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Cette page permet la configuration d'actions spécifiques des boutons"
+
+#~ msgid "Leasetime"
+#~ msgstr "Durée du bail"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "statique"
+
+#~ 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é."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Rejoindre un réseau : paramètres"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "Le port %d n'est pas marqué dans plusieurs VLANs !"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Interface du VLAN"
diff --git a/package/luci/modules/luci-base/po/he/base.po b/package/luci/modules/luci-base/po/he/base.po
new file mode 100644 (file)
index 0000000..8fbc29f
--- /dev/null
@@ -0,0 +1,6296 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-02-02 14:32+0200\n"
+"Last-Translator: oranav <oranav@gmail.com>\n"
+"Language-Team: none\n"
+"Language: he\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s פנוי)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(ריק)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(אין ממשק מצורף)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- שדה נוסף --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- נא לבחור --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- מותאם אישית --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "עומס במשך דקה:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "עומס במשך רבע שעה:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "עומס במשך 5 דקות:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> יציאת שאילתא"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> יציאת שרת"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "כתובות <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"כתובת או רשת (CIDR) <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "הגדרות <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "שם <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "כתובת-<abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+#, fuzzy
+msgid "ARP retry threshold"
+msgstr "סף נסיונות של ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+#, fuzzy
+msgid "ATM Bridges"
+msgstr "גשרי ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+#, fuzzy
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "מזהה ערוצים ווירטואליים של ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+#, fuzzy
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "מזהה נתיבים ווירטואליים של ATM  (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "מס' התקן של ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+#, fuzzy
+msgid "Access Concentrator"
+msgstr "מרכז גישות"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "נקודת גישה"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "פעולות"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "חיבורים פעילים"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "הרשאות DHCP פעילות"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "הרשאות DHCPv6 פעילות"
+
+# צריך אימות של מישהו שמבין יותר במושגים האלו אם צריך בכלל לתרגם את זה או להשאיר כמו שזה
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+#, fuzzy
+msgid "Ad-Hoc"
+msgstr "אד-הוק"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "הוסף"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+#, fuzzy
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "הוסף דומיין מקומי לשמות המוגשים מהקבצים של המארח"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "הוסף ממשק חדש..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "קבצי מארח נוספים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "כתובת"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+#, fuzzy
+msgid "Administration"
+msgstr "מנהלה"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "הגדרות מתקדמות"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+#, fuzzy
+msgid "Alert"
+msgstr "אזעקה"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+#, fuzzy
+msgid "Allow all except listed"
+msgstr "אפשר הכל חוץ מהרשומים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "אפשר רשומים בלבד"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+#, fuzzy
+msgid "Allow localhost"
+msgstr "אפשר localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "אנטנה 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "אנטנה 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "הגדרות אנטנה"
+
+# אזור?
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+#, fuzzy
+msgid "Any zone"
+msgstr "כל תחום"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "הקצה ממשקים"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "תחנות קשורות"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "אימות"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "מוסמך"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "דרוש אימות"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "רענון אוטומטי"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "זמין"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "ממוצע:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "חזרה"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "חזרה לסקירה"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "חזרה להגדרות"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "חזרה לסקירה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "חזרה לתוצאות סריקה"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "גיבוי"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "גיבוי / קושחת פלאש"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "גיבוי רשימת קבצים"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "פורטה כתובת לא תקינה"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"למטה יש את הרשימה הסופית של קבצים לגיבוי. היא מורכבת ע\"י קבצי הגדרות ששונו, "
+"המסומנים ב opkg ׁOpen PacKaGe Managementׂ, קבצי בסיס חיוניים ותבניות הגיבוי "
+"המוגדרות ע\"י המשתמש."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "גשר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "ממשקי גשר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "מס' יח' גשר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+#, fuzzy
+msgid "Bring up on boot"
+msgstr "הבא באיתחול"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "שלט אלחוטי Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "שלט אלחוטי Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "שימוש מעבד (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "בטל"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "שרשרת"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "שינויים"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "השינויים הוחלו"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "משנה את סיסמת המנהל לגישה למכשיר"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "ערוץ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "לבדוק"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr "סגור חיבורים לא פעילים אחרי מספר השניות שהוגדר, הזן 0 על-מנת לא לסגור"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "סגור רשימה..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "אוסף מידע..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "פקודה"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "הגדרות נפוצות"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "הגדרות"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "אישור"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "התחבר"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "מחובר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "מגבלת חיבורים"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "חיבורים"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "מדינה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "קוד מדינה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "כסה את הממשק הבא"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "כסה את הממשקים הבאים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "צור / הקצה תחום-חומת אש"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "צור ממשק"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "צור גשר בין מספר ממשקים"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "קריטי"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "ממשק מותאם אישית"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"מתאים את הגדרות ה-<abbr title=\"Light Emitting Diode\">LED</abbr>-ים במכשיר "
+"(אם אפשרי)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "שרת DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP ו- DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "לקוח DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "אפשרויות-DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "הגדר שם לרשת זו"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 שונים ללקוח"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "למחוק"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "מחק רשת זו"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "תיאור"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "יעד"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "מכשיר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "הגדרות מכשיר"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "אבחון"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "מרחק לנק' הרשת הרחוקה ביותר במטרים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "גיוון"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "הורד גיבוי"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> רשתית ושרת <abbr "
+"title=\"Secure Copy\">SCP</abbr> מובנה"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> דינאמי"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "ערוך"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "ערוך ממשק זה"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "ערוך רשת זו"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "מצב חרום"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "אפשר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "אפשר <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "אפשר שרת TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "אפשר תפקוד VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "אפשר למידה והזדקנות"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "אפשר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "הצפנה"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "מוחק..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "שגיאה"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "כתבות IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "מספר VLAN שגוי! רק ערכים בין %d לבין %d הם חוקיים."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "שם משתמש ו/או סיסמה שגויים! אנא נסה שנית."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "עומס"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "עומס ממוצע"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "טוען"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "כתובת IPv4 מקומית"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "כתובת IPv6 מקומית"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "שרת מקומי"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "שם"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "לא הוגדרה סיסמה!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "לא מחובר"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "ישנם שדות המכילים ערכים בלתי חוקיים!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "נתיב למפתח הפרטי"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "אנא הזן את שם המשתמש והסיסמה שלך:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "קצב קליטה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "שחזור"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "הרץ בדיקת מערכת קבצים"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "שירותים"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "סנכרון זמן"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "דלג אל התוכן"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "דלג אל הניווט"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "חלק מהשדות אינם תקינים, אין אפשרות לשמור את הערכים!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "סליחה, אך האובייקט שביקשת אינו נמצא."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "סליחה, השרת נתקל בשגיאה לא צפויה."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"סליחה, אין תמיכה בעדכון מערכת, ולכן קושחה חדשה חייבת להיצרב ידנית. אנא פנה "
+"אל ה-wiki של OpenWrt עבור הוראות ספציפיות למכשיר שלך."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "מקור"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "אתחול"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "ניתובי IPv4 סטטיים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "ניתובי IPv6 סטטיים"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "הקצאות סטטיות"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "ניתובים סטטיים"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "כתובת סטטית"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"הקצאות סטטיות נועדו להקצות כתובות IP קבועות ואת שם הרשת שלהן ללקוחות DHCP. "
+"הן נחוצות גם עבור הגדרות ממשק שאינן דינאמיות, בהן מטופלות רק ישויות בעלות "
+"הקצאה מתאימה."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "מצב"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "עצור"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "שלח"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "הגדרות TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "שידור"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "קצב שידור"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "טבלה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "יעד"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "החוקים הבאים מאופשרים כרגע במערכת זו."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "השם שניתן לרשת איננו ייחודי"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr "החומרה אינה תומכת בריבוי SSID ולכן ההגדרות הנוכחיות יוחלפו אם תמשיך."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "עיצוב"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "אזור זה עדיין לא מכיל ערכים."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "סנכרון זמן"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "סנכרון זמן עדיין לא הוגדר."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "אזור זמן"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"על מנת לשחזר את קבצי ההגדרות, באפשרותך להעלות ארכיון גיבוי שנוצר לפני כן."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "סה\"כ פנוי"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "תעבורה"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "העברה"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "קצב שידור"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "שידור"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "עוצמת שידור"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "אנטנת שידור"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "עוצמת שידור"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "השתמש בדגל broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "השתמש בשרתי DNS מותאמים אישית"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "השתמש בטבלת ניתוב"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "שם משתמש"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "שרת VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "סיסמת WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "סיסמת WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "אזהרה"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "רשת אלחוטית מנוטרלת"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "רשת אלחוטית מאופשרת"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "אתה חייב להפעיל את JavaScript בדפדפן שלך; אחרת, LuCI לא יפעל כראוי."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "כלשהו"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "אוטומטי"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "בטל"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "קדימה"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "אם היעד הוא רשת"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "קלט"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "לא"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "כבוי"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "פועל"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "מנותב"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "מתויג"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "ללא הגבלה"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "לא מוגדר"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "לא מוגדר -או- יצר"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "לא מתויג"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "כן"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "<< אחורה"
+
+#~ msgid "Design"
+#~ msgstr "עיצוב"
+
+#~ msgid "Available packages"
+#~ msgstr "חבילות זמינות"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "מציג רק חבילות המכילות"
+
+#~ msgid "Download and install package"
+#~ msgstr "הורד והתקן חבילות"
+
+#~ msgid "No package lists available"
+#~ msgstr "אין רשימת חבילות זמינה"
+
+#~ msgid "Package name"
+#~ msgstr "שם החבילה"
+
+#~ msgid "Software"
+#~ msgstr "תוכנה"
+
+#~ msgid "Version"
+#~ msgstr "גרסה"
+
+#~ msgid "none"
+#~ msgstr "ללא"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 ו-IPv6"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "קבצי ההגדרות ישמרו."
+
+#~ msgid "Activate this network"
+#~ msgstr "הפעל רשת זו"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "הרשאות DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "הרשאות DHCPv6"
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "האם למחוק את הרשת האלחוטית הזו? המחיקה אינה ניתנת לביטול!\n"
+#~ "ייתכן ותאבד גישה לנתב הזה אם אתה מחובר דרך השרת הזו."
+
+#~ msgid "Sort"
+#~ msgstr "מיין"
+
+#~ msgid "help"
+#~ msgstr "עזרה"
+
+#~ msgid "Apply"
+#~ msgstr "החל"
+
+#~ msgid "Applying changes"
+#~ msgstr "מחיל הגדרות"
+
+#~ msgid "Configuration applied."
+#~ msgstr "הגדרות הוחלו"
+
+#~ msgid "Action"
+#~ msgstr "פעולה"
+
+#~ msgid "Buttons"
+#~ msgstr "כפתורים"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ 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 "רשת נוספת תווצר אם תשאיר את זה לא מסומן"
+
+#~ msgid "CPU"
+#~ msgstr "מעבד"
diff --git a/package/luci/modules/luci-base/po/hu/base.po b/package/luci/modules/luci-base/po/hu/base.po
new file mode 100644 (file)
index 0000000..83e5f83
--- /dev/null
@@ -0,0 +1,6655 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-01-31 09:59+0200\n"
+"Last-Translator: Gabor <juhosg@openwrt.org>\n"
+"Language-Team: none\n"
+"Language: hu\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d perces ablak, %d másodperces intervallum)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s elérhető)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(üres)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(nincs csatalkoztatott interfész)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- További mező --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Kérem válasszon --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- egyéni --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Terhelés (utolsó 1 perc):"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Terhelés (utolsó 15 perc):"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Terhelés (utolsó 5 perc):"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> lekérdezési port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> szerver port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> szerverek a resolv fájl "
+"sorrendjében"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-cím"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-útválasztó"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-cím, vagy hálózat "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-útválasztó"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> konfiguráció"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Név"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-cím"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> bérlés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> csomagméret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Max.</abbr> párhuzamos lekérdezés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP újrapróbálkozási küszöbérték"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM Hidak"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM Virtuális Csatorna Azonosító (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM Virtuális Út Azonosító (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Az ATM hidak az AAL5-be ágyazott ethernet kapcsolatokat mint virtuális Linux "
+"hálózati interfész mutatják, mely így DHCP-vel vagy PPP-vel összekapcsolva "
+"használható a szolgáltatói hálózatba történő betárcsázáshoz."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM eszközszám"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Elérési központ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Hozzáférési pont"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Műveletek"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Aktív <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> útvonalak"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Aktív <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> útvonalak"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktív kapcsolatok"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktív DHCP bérletek"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktív DHCPv6 bérletek"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Hozzáadás"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Helyi tartomány utótag hozzáadása a hosts fájlokból kiszolgált nevekhez"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Új interfész hozzáadása..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "További 'hosts' fájlok"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Cím"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Helyi közvetítő híd elérési címe"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Adminisztráció"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Haladó beállítások"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Riasztás"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"<abbr title=\"Secure Shell\">SSH</abbr> jelszó hitelesítés engedélyezése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Összes engedélyezése a felsoroltakon kívül"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Csak a felsoroltak engedélyezése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Lolcalhost engedélyezése"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Távoli hostok csatlakozásának engedélyezése a helyi SSH továbbított "
+"portokhoz."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "root jelszavas bejelentkezésének engedélyezése"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Engedélyezi a <em>root</em> felhasználó jelszavas bejelentkezését"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"A 127.0.0.0/8-as tartományba eső DNS válaszok engedélyezése (pl. RBL "
+"szervizek)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "1-es antenna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "2-es antenna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Antenna beállítások"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Bármelyik zóna"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Interfészek összekapcsolása..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Kapcsolódó kliensek"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Hitelesítés"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Hiteles"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Hitelesítés szükséges"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Automatikus frissítés"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Elérhető"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Átlag:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Vissza"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Vissza az áttekintéshez"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Vissza a beállításokhoz"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Vissza az áttekintéshez"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Vissza a felderítési eredményekhez"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Mentés"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Mentés / Firmware frissítés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Mentési fájl lista"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Hibás címet adott meg!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Alább található a biztonsági mentésbe kerülő fájlok listája. A lista az opkg "
+"által megjelölt módosított konfigurációs fájlokból, fontos alapvető "
+"fájlokból valamint a felhasználó által megadott mintáknak megfelelő "
+"fájlokból áll."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitráta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Hamis NX tartomány felülbírálása"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Híd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Híd interfészek"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Híd eszközszám"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Hozza fel a rendszer indításakor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s vezeték-nélküli vezérlő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 vezeték-nélküli vezérlő"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Átmeneti tárban van"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Processzor használat (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Lánc"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Módosítások"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "A módosítások alkalmazva."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+"Itt módosíthatja az eszköz eléréséhez szükséges adminisztrátori jelszót"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Csatorna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Ellenőrzés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Ellenőrző összeg"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Válassza ki a tűzfal zónát amit hozzá akar rendelni ehhez az interfészhez. "
+"Válassza a <em>nincs megadva</em> elemet az interfésznek a hozzárendelt "
+"zónából történő eltávolításához, vagy töltse ki az <em>új</em> mezőt új zóna "
+"megadásához és csatlakoztassa az interfészt ahhoz."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Válassza ki azokat a hálózatokat, amelyeket csatlakoztatni akar ehhez a "
+"vezetéknélküli interfészhez, vagy töltse ki az <em>új</em> mezőt egy új "
+"hálózat definiálásához."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Titkosító"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Kattintson az \"Archívum készítése\" gombra a jelenlegi konfiguráció tar "
+"archívumként történő letöltéséhez."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Ügyfél"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "DHCP kérés során küldendő kliens azonosító"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Inaktív kapcsolatok bezárása a megadott másodpercek után, használjon 0-t "
+"állandó kapcsolathoz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Lista bezárása..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Adatok összegyűjtése..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Parancs"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Álatános beállítás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Beállítás"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Megerősítés"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Kapcsolódás"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Kapcsolódva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Kapcsolati korlát"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Kapcsolatok"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Ország"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Országkód"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "A következő interfészt tartalmazza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "A következő interfészeket tartalmazza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Tűzfal zóna készítés / hozzárendelés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Új interfész"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Híd létrehozása több interfész között"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritikus"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron naplózási szint"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Egyéni interfész"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Az eszköz <abbr title=\"Light Emitting Diode\">LED</abbr>-jei működésének "
+"testreszabása."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP kiszolgáló"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP és DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP ügyfél"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP beállítások"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS továbbítások"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Hibakeresés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Alapértelmezés %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Alapértelmezett átjáró"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Alapértelmezett állapot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Adja meg a hálózat nevét."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Adjon meg további DHCP opciókat, például \"<code>6,192.168.2.1,192.168.2.2</"
+"code>\", mely különböző DNS kiszolgálókat hirdet az ügyfelek részére."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Törlés"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Hálózat törlése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Leírás"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Cél"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Eszköz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Eszköz beállítások"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnosztika"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Könyvtár"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Letiltás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> tiltása ezen "
+"az interfészen."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Letiltva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Beérkező RFC1918 DHCP válaszok elvetése. "
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Távolság optimalizáció"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "A hálózat legtávolabbi tagjának távolsága méterben."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diverzitás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+"A Dnsmasq egy kombinált <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>-kiszolgáló és  <abbr title=\"Domain Name System\">DNS</abbr>-"
+"továbbító <abbr title=\"Network Address Translation\">NAT</abbr> tűzfalak "
+"számára"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Ne gyorsítótárazza a negatív válaszokat, pl. nem létező domain-ok esetén"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Ne továbbítsa a publikus név szerverek által nem megválaszolható kéréseket"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+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"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Tartomány szükséges"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Tartomány fehérlista"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Ne továbbítsa a <abbr title=\"Domain Name System\">DNS</abbr>-név nélküli "
+"<abbr title=\"Domain Name System\">DNS</abbr>-kéréseket "
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Biztonsági mentés letöltése"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear példány"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"A Dropbear a hálózaton <abbr title=\"Secure Shell\">SSH</abbr> hozzáférést "
+"tesz lehetővé, valamint integrált <abbr title=\"Secure Copy\">SCP</abbr> "
+"szolgáltatást nyújt."
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Dinamikus <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dinamikus alagút"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Az ügyfelek számára kiosztott DHCP címek dinamikus lefoglalása. Letiltása "
+"esetén csak a statikus DHCP bérlettel rendelkező kliensek lesznek "
+"kiszolgálva."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP metódus"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Szerkesztés"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Interfész szerkesztése"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Hálózat szerkesztése"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Vészhelyzet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Engedélyezés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> engedélyezése"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "HE.net dinamikus végpont frissítésének engedélyezése"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "IPv6 egyeztetés engedélyezése a PPP linken"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Óriás keretek átengedésének engedélyezése"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "NTP-kliens engedélyezése"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "TFTP kiszolgáló engedélyezése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "VLAN funkció engedélyezése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Tanulás és aging engedélyezése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "A csatolás engedélyezése"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "A lapozó terület engedélyezése"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Engedélyezés/Letiltás"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Engedélyezve"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "A Spanning Tree prokoll engedélyezése erre a hídra"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Beágyazási mód"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Titkosítás"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Törlés..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Hiba"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Gépek kibontása"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Lejárat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "A bérelt címek lejárati ideje, a minimális érték 2 perc."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Külső rendszernapló kiszolgáló"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Külső rendszernapló kiszolgáló port"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fájl"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "A kliensek részére közzétett betöltö kép fájlneve"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Fájlrendszer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Privát kérések szűrése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Használhahatlan kérések szűrése"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Hálózatok keresése és csatlakozás"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Befejezés"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Tűzfal"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Tűzfal Beállítások"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Tűzfal Állapot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Tűzfal verzió"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Rögzített forrás port a kimenő DNS kérésekhez"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Firmware flash-elés"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Flash image..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Új firmware image flash-elése"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Flash műveletek"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Flash-elés..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Kényszerítés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "CCMP (AES) kényszerítése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"DHCP kényszerítése ezen a hálózaton még akkor is ha van másik szerver "
+"észlelve."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "TKIP kényszerítése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "TKIP és CCMP (AES) kényszerítése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "DHCP forgalom továbbítás"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Broadcast forgalom továbbítás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Továbbítás módja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Töredezettségi küszöb"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Keretfűzés"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Szabad"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Csak GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Átjáró"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Átjáró portok"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Általános beállítások"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Általános beállítások"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Archívum készítése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Általános 802.11%s vezeték-nélküli vezérlő"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "A megadott jelszavak nem egyeznek, a jelszó nem lett megváltoztatva!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Ugrás a jelszó beállításhoz..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Ugrás a tárgyhoz tartozó beállításokhoz"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net jelszó"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Befejezés"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Itt állíthatja be az eszköz alapvető tulajdonságait, mint például a gépnév "
+"vagy az időzóna."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr> elrejtése"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Host bejegyzések"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Host lejárati idő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> vagy hálózat"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Gépnév"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "DHCP kérés során küldendő gépnév"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Gépnevek"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP cím"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 tűzfal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 cím"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 broadcast"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 átjáró"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 hálózati maszk"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "IPv4 prefix hossza"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-cím"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 tűzfal"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 cím"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 átjáró"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6 előtag"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "IPv6 prefix hossz"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-cím"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6 IPv4-ben (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6 IPv4 felett (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6 IPv4 felett (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identitás"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Megadás esetén az eszköz csomópont helyett UUID alapján történő csatolása"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Megadás esetén az eszköz csomópont helyett címke alapján történő csatolása"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Ha nincs kiválasztva, akkor nincs alapértelmezett útvonal beállítva"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+"Ha nincs kiválasztva, akkor a hirdetett DNS kiszolgáló címeket nem veszi "
+"figyelembe"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Ha a fizikai memória túl kevés a nem használt adatok ideiglenesen áttehetők "
+"egy swap-eszközre mely így nagyobb mennyiségű használható <abbr title="
+"\"Random Access Memory\">RAM</abbr>-ot eredményez. Az adatok áttétele egy "
+"nagyon lassú folyamat mivel a swap-eszköz nem érhető el akkora sebességgel "
+"mint a <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Interfész figyelmen kívül hagyása"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "A resolve fájl figyelmen kívül hagyása"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Image"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Be"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Inaktivitási időtúllépés"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Bejövő"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Információk"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Indítási állomány"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Indítási állományok"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "%q csomag telepítése"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Protokoll kiterjesztések telepítése..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfész"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Interfész beállítások"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Interfész áttekintés"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Interfész újracsatlakoztatása..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Az interfész nincs jelen, vagy még nincs csatlakoztatva."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfészek"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Belső szerverhiba"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Érvénytelen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"A megadott VLAN azonosító érvénytelen. Az azonosítónak %d és %d közé kell "
+"esnie."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+"A megadott VLAN azonosító érvénytelen! Minden VLAN-hoz egyedi azonosító kell."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+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!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Ú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!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScript szükséges!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Csatlakozás a hálózathoz"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Csatlakozás a hálózathoz: vezetéknélküli hálózatok keresése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Beállítások megtartása"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernel napló"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Kernel verzió"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Kulcs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Kulcs #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Kilövés"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP szerver"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP echo hibaküszöb"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP Echo időtartam"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Címke"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Nyelv"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Nyelv és megjelenés"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Bérlet fájl"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "A bérletből hátralévő idő"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Automatikus észleléshez hagyja üresen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "A jelenlegi WAN cím használatához hagyja üresen"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Jelmagyarázat:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Korlát"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Kapcsolat létrehozva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> szerverek listája, ahová a "
+"kérések továbbításra kerülnek"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Domain-ok listája, melyeknél az RFC1918 válaszok megengedettek"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "A hamis NX tartomány eredményeket szolgáltató gépek listája"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Csak a megadott interfészen hallgat, vagy az összesen, amennyiben nem adja "
+"meg"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Szerver port a beérkező DNS kérések számára"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Terhelés"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Átlagos terhelés"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Betöltés"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Helyi IPv4 cím"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Helyi IPv6 cím"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Helyi indítóscript"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Helyi idő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Helyi tartomány"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Helyi tartomány meghatározása. Az ezzel a tartománnyal egyező nevek soha "
+"nincsenek továbbítva és csak DHCP-n vagy host fájlok által kerülnek "
+"feloldásra"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"A helyi tartomány utótag csatolása a DHCP nevekhez és hosts fájl "
+"bejegyzésekhez"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Helyi kiszolgáló"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Gépnév lokalizációja a lekérdező alhálózattól függően, ha több IP cím is "
+"elérhető"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Lekérdezések lokalizációja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Napló kimeneti szintje"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Kérések naplózása"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Naplózás"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Bejelentkezés"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Kijelentkezés"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "A legalacsonyabb bérleti címnek az interfész címétől való távolsága"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-cím"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-cím szűrő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-szűrő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-lista"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Aktív DHCP bérletek maximális száma"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Párhuzamos DNS kérések maximális száma"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "EDNS.0 UDP csomagok maximális mérete"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Maximális várakozási idő a modem kész állapotára (másodpercben)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "DHCP címek maximális száma"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memória"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Memória használat (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrika"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Hiányzó protokoll kiterjesztés a %q progokoll számára"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mód"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modemeszköz"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Modem inicializálás időtúllépés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Ellenőrzés"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Csatolási bejegyzés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Csatolási pont"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Csatolási pontok"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Csatolási pontok - Csatolási bejegyzés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Csatolási pontok - Lapozóterület bejegyzés"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"A csatolási pontok határozzák meg, hogy egy memória eszköz hová lesz "
+"csatlakoztatva a fájlendszeren belül "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Csatolási beállítások"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Csatolási pont"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Csatolt fájlrendszerek"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Mozgatás lefelé"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Mozgatás felfelé"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS azonosító"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Kijelölt NTP kiszolgálók"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Név"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Az új interfész neve"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Az új hálózat neve"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigáció"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Hálózati maszk"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Hálózat"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Hálózati eszközök"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Hálózati rendszertöltő lemezkép"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Interfészhez nem rendelt hálózat"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Következő »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Ehhez az interfészhez nincs DHCP kiszolgáló beállítva"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nem találhatók fájlok"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Nincs elérhető információ"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Nincs negatív gyorsítótár"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Ehhez az eszközhöz nincs hálózat beállítva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Nincs megadva hálózatnév"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Nincs jelszó!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Ez a lánc nem tartalmaz szabályokat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Nincs hozzárendelt zóna"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Zaj"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Zaj:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Nincs"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normál"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Nem található"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Nincs hozzárendelve"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Nincs kapcsolódva"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Megjegyzés"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Kikapcsolt állapot késleltetés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Ezen az oldalon a hálózati interfészeket állíthatja be. Több interfész "
+"között híd hozható létre a \"híd interfész\" mező bejelölésével és több "
+"hálózati interfész nevének szóközzel történő elválasztásával. Lehetőség van "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr> jelölés "
+"<samp>INTERFÉSZ.VLANSZÁM</samp> használatára is, pl. <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Bekapcsolt állapot késleltetés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Legalább gépnevet vagy MAC-címet meg kell adni!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Egy vagy több mező érvénytelen adatot tartalmaz!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Egy vagy több kötelezően kitöltendő mező üres!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Lista megnyitása..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Beállítás módosítva"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Beállítás eltávolítva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Lehetőségek"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Egyéb:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Ki"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Kimenő:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "MAC cím felülbírálása"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "MTU felülbíráslás"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Átjáró felülbírálása a DHCP válaszokban"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Az ügyfelek részére küldött hálózati masz felülbírálása. Ez alapesetben a "
+"kiszolgált alhálózat alapján kerül meghatározásra."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "A belső útvonalakhoz használt tábla felülbírálása"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Áttekintés"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Tulajdonos"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP jelszó"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP felhasználói név"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA beágyazás"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "A libiwinfo csomag szükséges!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Csomagok"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "A %q zóna része"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Jelszó"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Jelszó hitelesítés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "A privát kulcsh jelszava"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "CA tanúsítvány elérési útja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Kliens tanúsítvány elérési útja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "A privát kulcs elérési útja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Csúcs:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Újraindítás végrehajtása"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Visszaállítás végrehajtása"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Phy sebesség:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Fizikai beállítások"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "csom."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Adja meg a felhasználónevét és a jelszavát."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Szabály"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Port állapot:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"A peer halottnak tekintése a megadott számú LCP echo hibák után. Használjon "
+"0-t a hibák figyelmen kívül hagyásához."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Ügyfél-ügyfél közötti kommunikáció megakadályozása"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Folytatás"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Folyamatok"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Az új interfész protokollja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Protokoll támogatás nincs telepítve"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "NTP kiszolgáló"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Új hálózat nyújtása"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Ál Ad-hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Minőség"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS küszöbérték"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "RX sebesség"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radius-Naplózási-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radius-Naplózás-Kulcs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radius-Naplózás-Kiszolgáló"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius-Hitelesítés-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius-Hitelesítés-Kulcs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius-Hitelesítés-Kiszolgáló"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Az <code>/etc/ethers</code> fájl olvasása a <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> kiszolgáló beállításához"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Biztosan törli ezt a vezetéknélküli hálózatot? A törlés nem visszavonható!\n"
+"Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a hálózaton "
+"keresztül kapcsolódik."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Biztos, hogy visszavonja az összes módosítást?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Biztos, hogy cserélni szeretné a protokollt?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Valósidejű kapcsolatok"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Valósidejű grafikonok"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Valósidejű terhelés"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Valósidejű forgalom"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Valósidejű vezetéknélküli adatok"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Rebind elleni védelem"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Újraindítás"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Újraindítás..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Újraindítja az eszköz operációs rendszerét"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Fogadás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Vevő antenna"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Csatlakoztassa újra az interfészt"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Hivatkozások"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Átjátszás"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Átjátszó híd"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Átjátszás hálózatok között"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Átjátszó híd"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Távoli IPv4 cím"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Eltávolítás"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Felderítés ismétlése"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Bejegyés lecserélése"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Vezetéknélküli beállítások lecserélése"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+"Szükséges bizonyos internetszolgáltatók esetén, pl. Charter 'DOCSIS 3'-al"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Visszaállítás"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Számlálók nullázása"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Alapértelmezések visszaállítása"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Resolv és hosts fájlok"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Resolv fájl"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Újraindítás"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Tűzfal újraindítása"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Visszaállítás"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Biztonsági mentés visszaállítása"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Jelszó mutatása/elrejtése"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Visszavonás"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Gyökérkönyvtár"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "TFTP-n keresztül megosztott fájlok gyökérkönyvtára"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Router jelszó"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Útvonalak"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Az útvonalak határozzák meg, hogy bizonyos gépek illetve hálózatok melyik "
+"interfészen keresztül érhetők el."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Fájlrendszer ellenőrzés futtatása az eszköz csatolása előtt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Fájlrendszer ellenőrzés futtatása"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH hozzáférés"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH kulcsok"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Mentés"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Mentés & Alkalmazás"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Felderítés"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Ütemezett feladatok"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Szakasz hozzáadva"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Szakasz eltávolítva"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Részletekért lásd a 'mount' man oldalát"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"LCP echo kérések küldése a másodpercben megadott időközönként, csak a "
+"hibaküszöbbel együtt van hatása."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Kliensek szétválasztása"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Kiszolgáló beállításai"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Szolgáltatás neve"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Szolgáltatás típusa"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Szolgáltatások"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Idő szinkronizálás beállítása"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "DHCP kiszolgáló beállítása"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Mentendő fájlok aktuális listájának megjelenítése"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Interfész leállítása"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Jel"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Jel:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Méret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Ugrás"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Ugrás a tartalomhoz"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Ugrás a navigációhoz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Időrés"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Néhán mező érvénytelen, az értékek nem menthetők!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Sajnálom, a kért objektum nem található."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Sajnálom, a szerver váratlan hibát észlelt."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Sajnáljuk, a 'sysupgrade' támogatás nem elérhető, az új firmware fájl "
+"telepítését manuálisan kell elvégezni. Az eszközhöz tartozó telepítési "
+"utasításokért keresse fel az wiki-t."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Forrás"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Megadja az eszköz csatlakozási könyvtárát."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Megadja a <em>Dropbear</em> példány portját"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Megadja a maximális sikertelen ARP kérések számát, amik után a host nem "
+"elérhetőnek tekinthető"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Megadja a másodpercek számát, amik után a host nem elérhetőnek tekinthető"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Itt adja meg a titkosító kulcsot."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Indítás"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Indítás prioritása"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Rendszerindítás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statikus IPv4 útvonalak"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statikus IPv6 útvonalak"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Statikus bérletek"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statikus útvonalak"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Statikus cím"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"A statikus bérletekkel a DHCP kliensekhez fix IP-címet és hostnevet "
+"rendelhet. Olyan nem dinamikus interfész konfigurációk esetén is "
+"szükségesek, ahol a csak a megfelelő bérlettel rendelkező hosztok kerülnek "
+"kiszolgálásra."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Állapot"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Leállítás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Kötött sorrend"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Elküldés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Lapozóterület"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Kapcsoló"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Kapcsoló %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Kapcsoló %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Protokoll csere"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Szinkronizálás a böngészővel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Szinkronizálás..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Rendszer"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Rendszernapló"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Rendszer tulajdonságok"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Rendszer napló puffer méret"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP beállítások"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP szerver gyökér könyvtár"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "TX sebesség"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tábla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Cél"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Megszakítás"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Az <em>Eszköz beállítások</em> szakasz a rádió hardver fizikai beállításait, "
+"úgymint csatorna, adóteljesítmény vagy antenna választás teszi lehetővé, "
+"amelyen az összes definiált vezeték nélküli hálózat (ha a rádió hardver "
+"multi-SSID képes) osztozik. A hálózatonkénti beállítások, mint az "
+"titkosítás, mód az <em>Interfész beállítások</em> alá vannak csoportosítva."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"A <em>libiwinfo-lua</em> nincs telepítve. A vezetéknélküli beállítás "
+"működéséhez ezt az összetevőt telepítnei kell."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"A szolgáltatóhoz rendelt IPv6 előtag, általában így végződik: <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"A következő karakterek használhatók: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> and <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"A memória vagy partíció eszköz fájlja (<abbr title=\"például\">pl.</abbr> "
+"<code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"A memória formázásához használt fájlrendszer típusa (<abbr title=\"for "
+"example\">pl.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</"
+"abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Az image feltöltve. Alább található a fájl ellenőrző összege és mérete, "
+"hasonlítsa össze az eredeti fájllal a feltöltött adatok sértetlenségének "
+"ellenőrzéséhez.<br />Kattintson az alábbi \"Folytatás\" gombra a flash-elési "
+"eljárás elindításához."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "A következő módosítások lettek visszavonva"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Jelenleg a következő szabályok aktívak a rendszeren."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "A megadott hálózati név már létezik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"A hardver nem képes többszörös SSID kezelésre ezért a meglévő beállítások "
+"elvesznek ha folytatja."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"Az IPv4 előtag hossza bitekben, a maradék az IPv6 címekben használatos."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Az IPv6 előtag hossza bitekben"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Az eszközön található hálózati portok kombinálhatók több <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>-ba, amelyekben a számítógépek "
+"közvetlenül kommunikálhatnak egmással. A <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>-ok gyakran a hálózati szegmensek elkülönítésére "
+"használják. Gyakran van egy alapértelmezett Uplink port a következő nagyobb "
+"hálózathoz (pl. az internet) való kapcsolódásra és a többi port a helyi "
+"hálózathoz."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "A kiválasztott protokoll eszköz hozzárendelést igényel"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr "A rendszer most törli a konfigurációs partíciót majd újraindul."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"A rendszer frissítése folyamatban.<br /> NE KAPCSOLJA KI AZ ESZKÖZT!<br /> "
+"Várjon néhány percet, amíg az eszköz ismételten elérhető. Az eszköz "
+"eléréséhez a beállításaitól függően szükséges lehet a számítógépe IP-címének "
+"megújítása."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"A feltöltött image fájl formátuma nem támogatott. Ügyeljen arra, hogy a "
+"platformjának megfelelő általános image formátumot válassza ki."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Megjelenés"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Nincsenek aktív bérletek."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Nincsenek visszavonásra váró változtatások!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Nincsenek el nem mentett változtatások!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Nincs hozzárendelt eszköz, kérem csatoljon egy hálózati eszközt a \"Fizikai "
+"beállítások\" fülön."
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"A routeren jelenleg nincs jelszó beállítva. Állítsa be a root felhasználó "
+"jelszavát a felhasználói felület védelme és az SSH elérés engélyezése "
+"érdekében."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Az átjátszó IPV4 címe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Ez egy shell mintákból álló lista a rendszer frissítés során megőrzendő "
+"fájlok és könytárak meghatározására. Az /etc/config/ könyvtárban található "
+"módosított fájlok és bizonyos további beállítások automatikusan megőrződnek."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Ez a /etc/rc.local fájl tartalma. Ide írhatja be a saját parancsait (az "
+"'exit 0' sor elé) a boot folyamat végén történő futtatásukhoz."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Ez az alagút közvetítő (tunnel broker) által megadott helyi végpont címe, "
+"általában így végződik: <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Ez az egyetlen <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> a helyi hálózaton"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Ez a rendszer crontab, amiben időzített feladatok definiálhatók."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Ez általában a legközelebbi alagút közvetítő (tunnel broker) által vezérelt "
+"jelenléti pont (PoP) címe"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad "
+"áttekintést."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Ez a lap a rendszerben jelenleg aktív hálózati kapcsolatokról ad áttekintést."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Ez a szakasz még nem tartalmaz értékeket"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Idő szinkronizálás"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Idő szinkronizálás még nincs beállítva."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Időzóna"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Itt tölthet fel egy korábban létrehozott biztonsági mentés archívumot a "
+"konfigurációs fájlok visszaállításához. A firmware kezdeti állapotának "
+"visszaállításához kattintson a \"Visszaállítás végrehajtása\" gombra (csak "
+"squashfs image-ek esetén lehetséges)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Összes elérhető"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Forgalom"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Átvitel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Átviteli sebesség"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Küldés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Adóteljesítmény"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Adó antenna"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Trigger"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Trigger mód"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Tunnel azonosító"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Tunnel interfész"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Adóteljesítmény"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Típus"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Csak UTMS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB eszköz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Nem indiítható"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Nem kezelt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "El nem mentett módosítások"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Nem támogatott protokoll típus."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Itt tölthet fel egy új sysupgrade-kompatibilis képet a futó firmware "
+"lecseréléséhez. A jelenlegi beállítások megtartásához jelölje be a "
+"\"Beállítások megtartása\" négyzetet (kompatibilis firmware kép szükséges)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Archívum feltöltése..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Feltöltött fájl"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Működési idő"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "<code>/etc/ethers</code> használata"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "DHCP kiszolgáló használata"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Másik fél által ajánlott DNS szerverek használata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "ISO/IEC 3166 alpha2 országkódok használata"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "MTU használata az alagút interfészen"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "TTL használata az alagút interfészen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Broadcast flag használata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Egyedi DNS szerverek használata"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Alapértelmezett átjáró használata"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Átjáró metrikájának használata"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Útválasztó tábla használata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Használja a <em>Hozzáadás</em> gombot új bérleti bejegyzés hozzáadásához. A "
+"<em>MAC-cím</em> azonosítja a gépet. az <em>IPv4-cím</em> adja meg a "
+"használandó rögzített IP címet és a <em>Gépnév</em> lesz szimbolikus névként "
+"hozzárendelve az igénylő géphez."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Használt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Használt kulcsindex"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Felhasználónév"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLAN-ok %q-n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLAN-ok %q-n (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN kiszolgáló"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "DHCP kérés során küldendő 'Vendor Class'"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Ellenőrzés"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP nyílt rendszer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP megosztott kulcs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP jelmondat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM mód"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA jelmondat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA titkosításhoz kliens módnál 'wpa_supplicant', hozzáférési pont illetve "
+"ad-hoc módnál 'hostapd' telepítése szükséges."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Várakozás a változtatások alkalmazására..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Várakozás a parancs befejezésére..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Figyelmeztetés"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Vezetéknélküli rész"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Vezetéknélküli adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Vezetéknélküli hálózat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Vezetéknélküli rész áttekintés"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Vezetéknélküli biztonság"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Vezetéknélküli hálózat le van tiltva"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Vezetéknélküli hálózat nincs kapcsolódva"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Vezetéknélküli rész újraindítása folyamatban..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Vezetéknélküli hálózat letiltva"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Vezetéknélküli hálózat engedélyezve"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "A kapott DNS kéréseket írja a rendszernaplóba"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Itt engedélyezheti vagy tilthatja le a telepített indítási állományokat. A "
+"módosítások a rendszer újraindítása után lesznek alakalmazva.<br /"
+"><strong>Figyelem: alapvető indítási állomány pl. \"network\" letiltása "
+"esetén, az eszköz elérhetetlenné válhat!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "bármelyik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "automatikus"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "áthidalt"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "új:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "híd létrehozása a megadott interfész(ek) között"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "letiltás"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "lejárt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"fájl ahová a <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"bérletek tárolásra kerülnek"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "továbbítás"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "half-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "rejtett"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "ha a cél hálózat"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "bemenet"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "helyi <abbr title=\"Domain Name System\">DNS</abbr> fájl"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nem"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "nincs link"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "ki"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "be"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "nyitás"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "irányított"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "cimkézett"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "korlátlan"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "nincs meghatározva"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "nincs magadva -vagy- új:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "cimkézetlen"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "igen"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Vissza"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Nyilvános kulcs alapú SSH azonosításhoz itt adhat meg nyilvános SSH "
+#~ "kulcsokat (soronként egyet)."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "A jelszó megváltoztatása sikeres!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Ismeretlen hiba, a jelszó nem lett megváltoztatva!"
+
+#~ msgid "Design"
+#~ msgstr "Megjelenés"
+
+#~ msgid "Available packages"
+#~ msgstr "Elérhető csomagok"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Csak azon csomagok megjelenítése, amelyek tartalmazzák"
+
+#~ msgid "Download and install package"
+#~ msgstr "Csomag letöltése és telepítése"
+
+#~ msgid "Filter"
+#~ msgstr "Szűrő"
+
+#~ msgid "Find package"
+#~ msgstr "Csomag keresése"
+
+#~ msgid "Free space"
+#~ msgstr "Szabad hely"
+
+#~ msgid "Install"
+#~ msgstr "Telepítés"
+
+#~ msgid "Installed packages"
+#~ msgstr "Telepített csomagok"
+
+#~ msgid "No package lists available"
+#~ msgstr "Csomaglisták nem állnak rendelkezésre"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-Beállítások"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "A csomag listák 24 óránál régebbiek"
+
+#~ msgid "Package name"
+#~ msgstr "Csomagnév"
+
+#~ msgid "Software"
+#~ msgstr "Szoftver"
+
+#~ msgid "Update lists"
+#~ msgstr "Listák frissítése"
+
+#~ msgid "Version"
+#~ msgstr "Verzió"
+
+#~ msgid "none"
+#~ msgstr "nincs"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "DNS beállítás letiltása"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 és IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "csak IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "csak IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Bérlet érvényességi ideje"
+
+#~ msgid "Multicast address"
+#~ msgstr "Multicast cím"
+
+#~ msgid "Protocol family"
+#~ msgstr "Protokoll család"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Ez a tábla nem tartalmaz láncokat."
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "A konfigurációs fájlok megmaradnak."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Megjegyzés: konfigurációs fájlok törölve lesznek."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Hálózat aktiválása"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b vezeték nélküli vezérlő"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Interfész leállítása..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interfész újracsatlakoztatva"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interfész leállítás"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b vezeték nélküli vezérlő"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s vezeték nélküli vezérlő"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Biztos, hogy leállítja a \"%s\" interfészt?\n"
+#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
+#~ "interfészen keresztül kapcsolódik."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Interfész újracsatlakoztatása"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Hálózat leállítása"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Vezetéknélküli rész újraindítva"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Vezetéknélküli rész leállítása"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP bérletek"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6 bérletek"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Biztosan törli az interfészt? A törlés nem visszavonható!\n"
+#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
+#~ "interfészen keresztül kapcsolódik."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Biztos, hogy leállítja a hálózatot?!\n"
+#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a "
+#~ "hálózaton keresztül kapcsolódik."
+
+#~ msgid "Sort"
+#~ msgstr "Sorbarendezés"
+
+#~ msgid "help"
+#~ msgstr "súgó"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4 WAN állapot"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6 WAN állapot"
+
+#~ msgid "Apply"
+#~ msgstr "Alkalmaz"
+
+#~ msgid "Applying changes"
+#~ msgstr "Módosítások alkalmazása"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Beállítások alkalmazva."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Mentés &#38; Alkalmazás"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "A következő módosítások lettek alkalmazva"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Nincsenek alkalmazásra váró módosítások!"
+
+#~ msgid "Action"
+#~ msgstr "Művelet"
+
+#~ msgid "Buttons"
+#~ msgstr "Gombok"
+
+#~ msgid "Handler"
+#~ msgstr "Kezelő"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximális tartási idő"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimális tartási idő"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Meghatározza a gomb kezelendő állapotát"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé"
+
+#~ msgid "Leasetime"
+#~ msgstr "Bérlet időtartama"
+
+#~ 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"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Csatlakozás a hálózathoz: Beállítások"
+
+#~ msgid "CPU"
+#~ msgstr "Processzor"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "A %d port egyszerre több VLAN-ban is cimkézetlen!"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "VLAN interfész"
diff --git a/package/luci/modules/luci-base/po/it/base.po b/package/luci/modules/luci-base/po/it/base.po
new file mode 100644 (file)
index 0000000..73c63eb
--- /dev/null
@@ -0,0 +1,6499 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-09-05 00:33+0100\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: it\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.6.10\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d finestra in minuti , %d secondi intervallo)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponibile)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(vuoto)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(nessuna interfaccia collegata)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Campo aggiuntivo --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Per favore scegli --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- personalizzato --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Carico in 1 minuto:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Carico in 15 minut:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Carico in 5 minuti:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+"<abbr title=\"Servizio basilare di impostazione Identificatore\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Richiesta porta <abbr title=\"Sistema Nome Dominio\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Porta Server <abbr title=\"Sistema Nome Dominio\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Sistema Nome Dominio\">DNS</abbr> I server che verranno "
+"interrogati nell'ordine del resolv file"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"<abbr title=\"Impostazione Identificatore Servizio Esteso\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Indirizzo <abbr title=\"Protocollo Internet Versione 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Gateway <abbr title=\"Protocollo Internet Versione 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+"Maschera di rete <abbr title=\"Protocollo Internet Versione 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Indirizzo <abbr title=\"Protocollo Internet Versione 6\">IPv6</abbr> o rete "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Gateway <abbr title=\"Protocollo Internet Versione 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Configurazione <abbr title=\"Diodo ad Emissione di Luce\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Diodo ad Emissione di Luce\">LED</abbr> Nome"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Indirizzo <abbr title=\"Controllo Accesso Supporto\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> Contratto <abbr title=\"Configurazione "
+"Protocollo Host Dinamico\">DHCP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> dimensione pacchetti <abbr title="
+"\"Estensione Meccanismi per il Sistema dei Nomi dei Domini\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Max.</abbr> Richiesta in uso"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Nota: devi riavviare manualmente il servizio cron se il file crontab "
+"era vuoto prima delle modifiche."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "riprova soglia ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Ponti ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identificatore Canale Virtuale ATM (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identificatore Percorso Virtuale ATM (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"I ponti ATM incapsulano connessioni in AAL5, in modo che i dispositivi "
+"virtuali si possono interfacciare con le reti virtuali Linux in congiunzione "
+"con la comunicazione DHCP o PPP dell'ISP."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Numero dispositivo ATM "
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Accesso Concentratore"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Punto di Accesso"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Azioni"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Instradamento <abbr title=\"Protocollo Internet Versione 4\">IPv4</abbr> "
+"attivo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Instradamento <abbr title=\"Protocollo Internet Versione 6\">IPv6</abbr> "
+"attivo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Connessioni attive"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Contratti attivi DHCP"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Contratti attivi DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Aggiungi"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Aggiungere il suffisso di dominio locale ai nomi serviti dal file hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Aggiungi nuova interfaccia..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "File Hosts Aggiuntivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Indirizzo"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Indirizzo per accedere al ponte locale di trasmissione"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Amministrazione"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Opzioni Avanzate"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Allerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permetti autenticazione <abbr title=\"Secure Shell\">SSH</abbr> tramite "
+"password"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Consenti tutti tranne quelli nell'elenco"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Consenti solo quelli nell'elenco"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permetti localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permetti agli host remoti di connettersi tramite ssh reindirizzando le porte"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Permetti l'accesso a root con password"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Abilita l'utente root con l'accesso via password"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Permetti le risposte upstream nell'intervallo 127.0.0.0/8, per esempio nei "
+"servizi RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenna 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenna 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configurazione dell'Antenna"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Qualsiasi Zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Assegna Interfacce..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Dispositivi Wi-Fi connessi"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autenticazione PEAP"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritativo"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorizzazione richiesta"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Aggiornamento Automatico"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Automatico"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "Homenet (HNCP) automatico"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "Controlla automaticamente il filesystem per errori prima di montare"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "Monta automaticamente i filesystem in hotplug"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "Monta automaticamente lo swap in hotplug"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Automonta Filesystem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Automonta Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponibile"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Media:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Indietro"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Ritorna alla panoramica"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Indietro alla configurazione"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Ritorna alla panoramica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Ritorno ai risultati della scansione"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Copia di Sicurezza"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Copia di Sicurezza / Flash Firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Elenco dei file di cui effettuare una copia di sicurezza"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "E' stato specificato un indirizzo errato!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Di seguito l'elenco dei file di cui effettuare la copia di sicurezza. Essa è "
+"composta dai file di configurazione modificati installati da opkg, file di "
+"base essenziali e i file di backup definiti dall'utente."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Ignora Dominio Bogus NX"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Interfacce Ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Numero Unità Ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Attivare all'avvio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Dispositivo Wireless Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Dispositivo Wireless Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Buffered"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Uso CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Annulla"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Categoria"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Catena"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Modifiche"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Modifiche applicate."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Cambia la password di amministratore per accedere al dispositivo"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Verifica"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Controlla i filesystem prima di montare"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr "Marca questa opzione per cancellare le reti esistenti da questa radio."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Checksum"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Scegli la zona del firewall che si desidera assegnare a questa interfaccia. "
+"Selezionare <em>non specificato</em> per rimuovere l'interfaccia dalla zona "
+"associata o compilare il campo <em>crea</em> per definire una nuova zona e "
+"collegare l'interfaccia ad esso."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Scegliere la/le rete/reti a cui vuoi collegare questa interfaccia wireless o "
+"riempire il campo <em>crea<em> per definire una nuova rete."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Cifratura"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Premi su \"Genera archivio\" per scaricare un archivio tar di backup dei "
+"file di configurazione attuali."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Cliente"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "ID Cliente da inviare all'interno della richiesta DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Chiudi le connessioni inattive dopo x secondi, usa 0 per connessioni "
+"persistenti"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Scegliere dall'elenco..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Raccolgo i dati..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Comando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configurazioni Comuni"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configurazione"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Conferma"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Connetti"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Connesso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limite connessioni"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Connessioni"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Nazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Codice Nazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Coprire la seguente interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Coprire le seguenti interfacce"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Crea / Assegna zona firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Crea Interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Crea un ponte tra interfacce multiple"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Critico"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Livello di log del Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interfaccia personalizzata"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Personalizza la configurazione dei <abbr title=\"Light Emitting Diode\">LED</"
+"abbr> del sistema se possibile."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Server DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP e DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Cliente DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opzioni DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "Cliente DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Inoltri DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Predefinito %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Gateway predefinito"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Stato Predefinito"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definisci un nome per questa rete."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Definisci opzioni DHCP aggiuntive, per esempio "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" fornisce differenti server DNS ai "
+"client."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Elimina"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Rimuovi questa rete"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descrizione"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destinazione"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configurazione del dispositivo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Dispositivo in riavvio..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Dispositivo irraggiungibile"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnostica"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Cartella"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Disabilita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Disabilita <abbr title=\"Protocollo di Configurazione Host Dinamico\">DHCP</"
+"abbr> per questa interfaccia."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Disabilita Crittografia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Disabilitato (default)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Ignora risposte RFC1918 upstream"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Ottimizzazione distanza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distanza del membro più lontano della rete in metri."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversità"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 è un server <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> e inoltratore <abbr title=\"Domain Name System\">DNS</abbr> "
+"per firewall <abbr title=\"Network Address Translation\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Non memorizzare le repliche negative, es. per domini non esistenti"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Non inoltrare le richieste che non possono essere risolte dai name server "
+"pubblici"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Non proseguire con le ricerche inverse per le reti locali."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Dominio richiesto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Elenco Domini consentiti"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Non Frammentare"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Non inoltrare le richieste <abbr title=\"Domain Name System\">DNS</abbr> "
+"senza nome <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Download backup"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instanza di Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear offre accesso <abbr title=\"Secure Shell\">SSH</abbr> e integra un "
+"server <abbr title=\"Secure Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dinamico"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dynamic tunnel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Fornisci dinamicamente gli indirizzi DHCP ai client. Se disabilitato, solo i "
+"client con un indirizzo statico saranno serviti."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Metodo EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Modifica"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Modifica questa interfaccia"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Modifica questa rete"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Emergenza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Abilita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Abilita <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Abilitazione aggiornamento endpoint dinamico HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Abilita negoziazione IPv6"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Attiva la negoziazione IPv6 sul collegamento PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Abilita Jumbo Frame passthrough"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Attiva il cliente NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Abilita Single DES"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Abilita il server TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Abilita la funzionalità VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Attivare l'apprendimento e l'invecchiamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Abilita mirroring dei pacchetti in ingresso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Abilita mirroring dei pacchetti in uscita"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "Abilita l'opzione DF (non Frammentare) dei pacchetti incapsulati"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Abilita questo mount"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Abilita questo swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Abilita/Disabilita"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Abilita il protocollo di Spanning Tree su questo bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Modalità di incapsulamento"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Crittografia"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Cancellazione..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Errore"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Scheda di Rete"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch di Rete"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Espandi gli hosts"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Scadenze"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Tempo di scadenza di indirizzi a contratto, il minimo è di 2 minuti (<code> "
+"2m </code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Server Log di Sistema esterno"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Porta Server Log di Sistema esterno"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "File"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nome del file dell'immagine di avvio annunciato ai clienti."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Filesystem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtra privati"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtra inutili"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Trova e aggiungi una rete"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Fine"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Impostazioni Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Stato del Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versione del Firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Porta di origine fissa per le richieste DNS in uscita"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Flash Firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Flash immagine..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Flash immagine nuovo firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operazioni Flash"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Flashing..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forza CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Forza DHCP su questa rete, anche se un altro server viene rilevato."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forza TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forza TKIP e CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Forza collegamento"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Forza uso del NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Inoltra il traffico DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Inoltra il traffico broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Modalità di Inoltro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Soglia di frammentazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Disponibile"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Solo GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Porte Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Opzioni Generali"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Impostazioni Generali"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Genera Configurazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Genera Archivio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Dispositivo Wireless 802.11%s Generico"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"La conferma della password assegnata non ha prodotto risultati, la password "
+"non è stata cambiata!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Impostazioni Globali"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Opzioni rete globale"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Vai alla configurazione della password..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Vai alla pagina di configurazione relativa"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Password HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Hangup"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Qui puoi configurare gli aspetti base del tuo dispositivo come l&#39;"
+"hostname o il fuso orario."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Nascondi <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Campi host"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Timeout scadenza Host"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"<abbr title=\"Internet Protocol Address\">IP</abbr> dell&#39;host o rete"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Hostname"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Nome host da inviare al momento della richiesta DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Hostname"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Ibrido"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "Indirizzi IP"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Indirizzo IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 Firewall"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Indirizzi IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "trasmissione IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Gateway IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Maschera rete IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "Prefisso IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Lunghezza prefisso IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Indirizzo-IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Impostazioni IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Indirizzi IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Gateway IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefisso IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Lunghezza prefisso IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "Suffisso IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Indirizzo-IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-su-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-su-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identità PEAP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Se selezionata, 1DES è abilitata"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Se selezionata, crittografia è disabilitata"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Se specificato, montare il dispositivo dal suo UUID invece che dal nodo di "
+"dispositivo fisso"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Se specificato, montare il dispositivo dall'etichetta della partizione al "
+"posto di un nodo di un dispositivo fisso"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Se deselezionata, alcun percorso predefinito è configurato"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+"Se deselezionata, gli indirizzi ai Server DNS annunciati saranno ignorati"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Se la tua memoria è insufficiente i dati non usati possono venire "
+"temporaneamente spostati in un'area di swap risultando in un più grande "
+"quantitativo di <abbr title=\"Random Access Memory\">RAM</abbr> usabile. "
+"Sappi che spostare dati in swap è un processo molto lento e che il "
+"dispositivo di swap non può essere acceduto alle alte velocità della <abbr "
+"title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignora <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignora interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignora file resolv"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Immagine"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "In"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Tempo di Inattività"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "In entrata:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Informazioni"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script di avvio"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts di avvio"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Installa il pacchetto %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Installa le estensioni del protocollo..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configurazione Interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Riassunto Interfaccia"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "L'interfaccia si sta ricollegando..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Nome Interfaccia"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Interfaccia non presente o non ancora connessa."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfacce"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Interno"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Errore del Server Interno"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Valore immesso non valido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "ID VLAN non valido! Solo gli ID compresi tra %d e %d sono consentiti."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Username o password non validi! Per favore riprova."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Isola Clienti"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Sembra tu stia provando a flashare un'immagine più grande delle dimensioni "
+"della memoria flash, per favore controlla il file!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Richiesto JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Aggiungi Rete"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Aggiunta Rete: Rilevamento Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Mantieni le Impostazioni"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Registro del Kernel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versione del Kernel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Chiave"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Chiave #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Uccidi"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Server L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Fallimento soglia echo LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Intervallo echo LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Etichetta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Lingua"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Lingua e Stile"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Tempo Contratto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "File di contratti"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Tempo contratto residuo"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Lasciare vuoto per l'autorilevamento"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Lasciare vuoto per usare l'indirizzo WAN attuale"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Collegamento on"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Elenco di Server <abbr title=\"Sistema Nome Dimio\">DNS</abbr>a cui "
+"inoltrare le richieste in"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Elenco di domini da consentire le risposte RFC1918 per"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Elenco degli host che forniscono falsi risultati di dominio NX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr "Ascolta solo l'interfaccia data o, se non specificato, su tutte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Porta di ascolto per le richieste DNS in entrata"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Carico"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Carico Medio"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Caricamento"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Indirizzo IPv4 locale"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Indirizzo IPv6 locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Avvio Locale"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Ora locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Dominio Locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Specifiche dominio locale. I nomi di dominio corrispondenti a questi criteri "
+"non sono mai inoltrate e risolti solo da DHCP o file hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Suffisso di dominio locale aggiunto ai nomi dei DHCP e voci del file hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Server Locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Localizzare nome host a seconda della sottorete richiedente se sono "
+"disponibili IP multipli"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localizza richieste"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Livello di dettaglio registro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Logga richieste"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Logging"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Login"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Slogga"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtro indirizzo MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtro MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Lista MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Manuale"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Numero massimo indirizzi in contratto"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memoria"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Uso Memoria (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modalità"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Modello"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Dispositivo modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Voce di Mount"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Punto di Mount"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Punti di Mount"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Punti di Mount - Voce di Mount"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Punti di Mount - Voce Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"I punti di mount definiscono in quale punto un dispositivo di memoria verrà "
+"attaccato al tuo filesystem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Opzioni di mount"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Punto di mount"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Monta swap non configurato specificatamente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "File system montati"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Muovi giù"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Muovi su"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "ID della NAS"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Candidati server NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nome"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nome della nuova interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nome della nuova rete"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigazione"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Maschera di rete"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Rete"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilità di Rete"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Rete senza interfaccia"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Prossimo »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Nessun Server DHCP configurato per questa interfaccia"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nessun file trovato"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Nessuna informazione disponibile"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Nessuna rete è configurata su questo dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Nessuna password immessa!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Nessuna regola in questa catena"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Nessuna zona assegnata"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Rumore"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Margine di Rumore (SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Rumore:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Nessuno"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normale"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Non Trovato"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Non associato"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Non connesso"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Nota: lunghezza nome interfaccia"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Notifica"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"In questa pagina puoi configurare le interfacce di rete.Puoi unire più "
+"interfacce spuntando la voce \"unisci interfacce\" e inserendo i nomi di più "
+"interfacce di rete separate da spazi. Puoi anche usare la notazione <abbr "
+"title=\"Virtual Local Area Network\">VLAN</abbr> <samp>INTERFACCIA.VLANNUM</"
+"samp> (<abbr title=\"per esempio\">e.s.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Uno o più campi contengono valori non validi!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Uno o più campi obbligatori sono vuoti!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Apri lista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Opzione cambiata"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Opzione cancellata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opzioni"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Altro:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Uscita"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "In uscita:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Sovrascrivi indirizzo MAC"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Sovrascrivi MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Sovrascrivi TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Sovrascrivi TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Sovrascrivi nome interfaccia di default"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Sovrascrivi il gateway nelle risposte DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla subnet "
+"servita."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Sovrascrivi la tabella usata per le route interne"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Riassunto"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Proprietario"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Incapsulamento PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "E' richiesto il pacchetto libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pacchetti"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Parte della zona %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Password"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Password di authenticazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Password della chiave privata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Percorso al certificato CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Percorso alla chiave privata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Picco:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Esegui un riavvio"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Per favore inserisci il tuo username e la password."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Porta"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Status porta:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Impedisci la comunicazione fra Client"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Continuare"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processi"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Profilo"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocollo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protocollo della nuova interfaccia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Supporto protocollo non installato"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Fornisci server NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Fornisci nuova rete"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Chiave Pubblica"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Qualità"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Soglia RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Velocità RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Leggi <code>/etc/ethers</code> per configurare il server <abbr title="
+"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Vuoi davvero rimuovere questa interfaccia wireless? La rimozione non può "
+"essere ripristinata! Potresti perdere l'accesso a questo dispositivo se sei "
+"connesso con questa rete."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Azzerare veramente tutte le modifiche?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Cambiare veramente il protocollo?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Connessioni in Tempo Reale"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Grafici in Tempo Reale"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Carico in Tempo Reale"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Traffico in Tempo Reale"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Wireless in Tempo Reale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Riavvia"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Riavviando..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Riavvia il sistema operativo del tuo dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Ricezione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antenna Ricevente"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Ricollega questa interfaccia"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Riferimenti"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Ripeti scan"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Sostituisci campo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Sostituisci configurazione wireless"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Richiede indirizzo-IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Richiede prefisso-IPv6 di lunghezza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Richiesto"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Azzera Contatori"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Azzera a default"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "File Resolve"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Riavvia"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Riavvia Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Ripristina"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Ripristina backup"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Rivela/nascondi password"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Ripristina"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Route"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Le route specificano attraverso quale interfaccia e gateway un certo host o "
+"rete può essere raggiunto."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Esegui un controllo del filesystem prima di montare il dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Esegui controllo del filesystem"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Salva"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Salva & applica"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Operazioni programmate"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Sezione aggiunta"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sezione rimossa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Vedi \"mount\" manpage per dettagli"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Isola utenti"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Impostazioni Server"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Servizi"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Segnale"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Dimensione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Salta"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Salta a contenuto"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Salta a navigazione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Slot time"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Alcuni campi non sono validi, non è possibile salvare i valori!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Siamo spiacenti, l'oggetto che hai richiesto non è stato trovato."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Spiacente, il server ha rilevato un errore imprevisto."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Spiacenti, non è presente alcun supporto sysupgrade, una nuova immagine "
+"firmware deve essere memorizzata (Flash) manualmente. Si prega di fare "
+"riferimento al wiki per le istruzioni di installazione di dispositivi "
+"specifici."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Origine"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Specifica la cartella a cui è collegato il dispositivo in"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Specifica la porta di ascolto di questa istanza <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Consente di specificare la quantità massima di richieste ARP fallite finché "
+"gli host si presume siano morti."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Specifica la quantità massima di secondi dopo di che si presume che gli host "
+"siano morti."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Specificare la chiave di cifratura qui."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Inizio"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Priorità di avvio"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Avvio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Instradamento statico IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Instradamento statico IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Contratti statici"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Instradamenti Statici"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Indirizzo Statico"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e "
+"nomi host simbolici ai client DHCP. Essi sono necessari anche per interfacce "
+"di configurazione non dinamici, dove solo gli host col contratto "
+"corrispondente vengono serviti."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Stato"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Ferma"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Ordine severo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Invia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Scambia ingresso"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Switch %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Switch %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Cambia protocollo"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Sincronizza con il browser"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Sincronizzazione..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistema"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Registro di Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Proprietà di Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Dimensione Buffer Log di Sistema"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Impostazioni TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Server TFTP principale"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Velocità TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabella"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Destinazione"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Termina"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"La sezione <em>Configurazione del Dispositivo</em> illustra le impostazioni "
+"fisiche del hardware radio come canale, la potenza di trasmissione o la "
+"selezione dell'antenna che viene condiviso tra tutte le reti wireless "
+"definite (se l'hardware radio è multi-SSID compatibilie). Per le "
+"impostazioni di rete come la crittografia o la modalità di funzionamento "
+"sono raggruppati nella <em>configurazione dell'interfaccia</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Il pacchetto <em>libiwinfo-lua</em> non è installato. È necessario "
+"installare questo componente per il lavoro di configurazione wireless!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Il prefisso IPv6 assegnati dal provider, si conclude di solito con <code>::</"
+"code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Il file del dispositivo di memoria o della partizione (<abbr title=\"per "
+"esempio\">e.s.</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Il filesystem usato per formattare la memoria (<abbr title=\"per esempio\">e."
+"s.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Le seguenti modifiche sono state annullate"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Le seguenti regole sono al momento attive su questo sistema."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes until you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Non ci sono contratti attivi."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Non ci sono cambiamenti pendenti da regredire"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Non ci sono cambiamenti pendenti!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Questo è l&#39;unico server <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> nella tua rete locale"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Questa è la crontab del sistema nella quale possono essere definiti le "
+"operazioni da programmare."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Questa lista da un riassunto dei processi correntemente attivi e del loro "
+"stato."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Questa sezione non contiene ancora valori"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Sincronizzazione Orario"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Sincronizzazione Orario non ancora configurata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Fuso orario"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Per ripristinare i file configurazione, puoi inviare un archivio di backup "
+"generato precedentemente qui. Per ripristinare il firmware al suo stato "
+"iniziale premi \"Esegui Ripristino\" (solo per firmware basati su squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Totale"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Traffico"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Velocità di transmissione"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Trasmissione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Potenza di trasmissione"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antenna trasmettente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tipo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Periferica USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "Porte USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Non gestito"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Smonta"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Modifiche non salvate"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipo protocollo non supportato."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Carica un'immagine sysupgrade compatibile quì per sostituire il firmware in "
+"esecuzione. Attivare la spunta \"Mantieni Impostazioni\" per mantenere la "
+"configurazione corrente (richiede un immagine del firmware compatibile)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Carica archivio..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "File Inviato"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Tempo di attività"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Usa <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Usa il DHCP del gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Usa i server DNS annunciati dal peer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Usa i codici delle nazioni ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Usa MTU nel tunnel dell'interfaccia"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Usa TTL nel tunnel dell'interfaccia"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Usa flag broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Usa server DNS personalizzati"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Usa il gateway predefinito"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Usa la metrica del gateway"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Utilizzare tabella di instradamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Utilizzare il pulsante <em>Aggiungi</em> per aggiungere una nuova voce di "
+"contratto. L'<em>Indirizzo-MAC</em> identifica l'host, l'<em>Indirizzo-IPv4</"
+"em> specifica l'indirizzo fisso da utilizzare e il <em>Nome Host</em> è "
+"assegnato come nome simbolico alla richiesta dell'host. L'opzionale "
+"<em>tempo di Contratto</em> può essere usato per impostare un tempo di "
+"contratto non-standard a uno specifico host, p.e. 12h, 3d o infinito."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Usato"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Slot Chiave Usata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Nome Utente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs su %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs su %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Server VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Classe del Produttore da 'inviare al momento della richiesta DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verifica"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Sistema Aperto WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Chiave Condivisa WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "frase di accesso WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Modalità WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "frase di accesso WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"La crittografia WPA richiede wpa_supplicant (per la modalità client) o "
+"hostapd (per AP e modalità ad hoc) per essere installato."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "In attesa delle modifiche da applicare ..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "In attesa del comando da completare..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Avviso"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Dispositivo Wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Rete Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Panoramica Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Sicurezza Wireless"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "La rete Wireless è disattivata"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "La rete Wireless è non associata"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Riavvio della Wireless..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "La rete Wireless è disattivata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "La rete wireless è attivata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Scrittura delle richiesta DNS ricevute nel syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Scrivi registro di sistema su file"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"È possibile abilitare o disabilitare gli script di inizializzazione "
+"installati qui. Le modifiche saranno applicate dopo il riavvio del "
+"dispositivo <br/><strong>Attenzione: Se si disattiva gli script di "
+"inizializzazione essenziali come ad esempio la \"rete\", il dispositivo "
+"potrebbe diventare inaccessibile!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"È necessario attivare JavaScript nel tuo browser o LuCI non funzionerà "
+"correttamente."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "qualsiasi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "ponte"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "crea:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "Crea un ponte sulle interfacce selezionate"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "disabilita"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "disabilitato"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "scaduto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"file dove vengono salvati i contratti <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> dati"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "inoltro"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "half-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "nascosto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "modo ibrido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "se la destinazione è una rete"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "ingresso"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "File <abbr title=\"Sistema Nome Dominio\">DNS</abbr> locale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "no"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "Nessun collegamento"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "spento"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "acceso"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "apri"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "instradato"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "etichettato"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "illimitato"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "non specificato"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "non specificato - o - creato:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "non etichettato"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "Sì"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Indietro"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Qui è possibile incollare le chiavi pubbliche SSH (uno per riga) per "
+#~ "l'autenticazione con chiave pubblica SSH."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Password cambiata con successo!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Errore sconosciuto, password non cambiata!"
+
+#~ msgid "Design"
+#~ msgstr "Tema"
+
+#~ msgid "Available packages"
+#~ msgstr "Pacchetti disponibili"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Visualizza solo i pacchetti contenenti"
+
+#~ msgid "Download and install package"
+#~ msgstr "Scarica e installa pacchetto"
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Find package"
+#~ msgstr "Cerca pacchetto"
+
+#~ msgid "Free space"
+#~ msgstr "Spazio libero"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Opzioni generali per opkg"
+
+#~ msgid "Install"
+#~ msgstr "Installa"
+
+#~ msgid "Installed packages"
+#~ msgstr "Pacchetti installati"
+
+#~ msgid "No package lists available"
+#~ msgstr "Nessuna lista pacchetti disponibile"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configurazione di OPKG"
+
+#~ msgid "Package name"
+#~ msgstr "Nome pacchetto"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Update lists"
+#~ msgstr "Aggiorna liste"
+
+#~ msgid "Version"
+#~ msgstr "Versione"
+
+#~ msgid "none"
+#~ msgstr "nessuna"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Disabilita il setup dei DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 e IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Solo IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Solo IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Periodo di Validità del Contratto"
+
+#~ msgid "Multicast address"
+#~ msgstr "Indirizzo Multicast"
+
+#~ msgid "Protocol family"
+#~ msgstr "Famiglia protocollo"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "I file di configurazione verranno mantenuti."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: i files di Configurazione saranno eliminati"
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Accoppiata: %s / Gruppo: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Attiva questa rete"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Dispositivo Wireless Hermes 802.11b"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "L'intefaccia si sta spegnendo..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interfaccia ricollegata."
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interfaccia spenta"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Vuoi davvero spegnere questa interfaccia \"%s\"? Potresti perdere "
+#~ "l'accesso a questo router se stai usando questa interfaccia."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Sto ricollegando l'interfaccia"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Wireless riavviato"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Wireless spento"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Contratti DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Contratti DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Vuoi davvero rimuovere questa interfaccia? La rimozione non può essere "
+#~ "ripristinata! Potresti perdere l'accesso a questo dispositivo se sei "
+#~ "connesso con questa rete."
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Vuoi davvero spegnere questa interfaccia? Potresti perdere l'accesso a "
+#~ "questo router se sei connesso usando questa interfaccia."
+
+#~ msgid "Sort"
+#~ msgstr "Ordina"
+
+#~ msgid "help"
+#~ msgstr "aiuto"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Stato WAN IPv4"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Stato WAN IPv6"
diff --git a/package/luci/modules/luci-base/po/ja/base.po b/package/luci/modules/luci-base/po/ja/base.po
new file mode 100644 (file)
index 0000000..cddf5c3
--- /dev/null
@@ -0,0 +1,6428 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2019-05-13 18:57+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"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f dB"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr "%d ビット"
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "無効な入力欄: %d 個"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s は複数のVLANにUntaggedしています!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d 分幅, %d 秒間隔)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s 使用可能)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(空)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(インターフェースが接続されていません)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- 追加項目 --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- 選択してください --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- 手動設定 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- デバイスを指定 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- ラベルを指定 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- UUID を指定 --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- 選択してください --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr "0: RSSI しきい値を使用しない, 1: ドライバのデフォルトを使用する"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "過去1分の負荷:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "過去15分の負荷:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "過去5分の負荷:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r 高速ローミング"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "802.11w アソシエーションSAクエリの最大タイムアウト時間です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "802.11w アソシエーションSAクエリの再試行タイムアウト時間です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "802.11w 管理フレーム保護"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "802.11w 最大タイムアウト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "802.11w 再試行タイムアウト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> クエリポート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> サーバーポート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"リゾルバファイルの順番に、<abbr title=\"Domain Name System\">DNS</abbr>サー"
+"バーに問い合わせを行います"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-ゲートウェイ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-ネットマスク"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-アドレス又はネット"
+"ワーク (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-ゲートウェイ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-サフィックス (16進数)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">最大</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> リース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">最大</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> パケットサイズ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">最大</abbr> 並列処理クエリ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br />注意: 編集前の crontab ファイルが空の場合、手動で cron サービスの再起動"
+"を行う必要があります。"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr "認証セッションの期限切れのため、再ログインが必要です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP再試行しきい値"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATMブリッジ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM仮想チャネル識別子 (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM仮想パス識別子 (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATMデバイス番号"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Access Concentrator"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "アクセスポイント"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "動作"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"稼働中の <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-経路情報"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"稼働中の <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-経路情報"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "アクティブ コネクション"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "アクティブなDHCPリース"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "アクティブなDHCPv6リース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "アドホック"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "追加"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "IPv4 アドレスを追加…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "IPv6 アドレスを追加…"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "公開鍵を追加"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"hosts ファイルにより解決される名前にローカルドメイン サフィックスを付加しま"
+"す。"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "インターフェースの新規作成..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "追加のホストファイル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "追加のサーバー ファイル"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "アドレス"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "ローカル リレーブリッジにアクセスするためのIPアドレス"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "管理画面"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "詳細設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "詳細設定"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "警告"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "エイリアス インターフェース"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "\"%s\" のエイリアス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "全てのサーバー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "<abbr title=\"Secure Shell\">SSH</abbr> パスワード認証を許可します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "AP モード動作時に、低 ACK(確認応答)状態の STA の切断を許可します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "リスト内の端末からのアクセスを禁止"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "レガシー 802.11b レートを許可"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "リスト内の端末からのアクセスを許可"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "ローカルホストを許可する"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"リモートホストがSSH転送されたローカルのポートに接続することを許可します。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "パスワードでの root ログインを許可"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "パスワードを使用した <em>root</em> 権限でのログインを許可します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "許可されるIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "常にデフォルト ルーターを通知する"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "常にオフ (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "常にオン (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"セカンダリ チャンネルの重複にかかわらず、常に 40MHz チャンネルを使用します。"
+"このオプションの使用は、 IEEE 802.11n-2009 に準拠しません!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"利用可能なパブリック プレフィクスが無くても、デフォルトのルーターとして通知し"
+"ます。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "アノニマス マウント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "アノニマス スワップ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "アンテナ 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "アンテナ 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "アンテナ設定"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "全てのゾーン"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "チェックなしの適用"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "適用リクエストはステータス <code>%h</code> により失敗しました"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "アーキテクチャ"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "インターフェースの割当て..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "アソシエーション済み端末"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "アソシエーション数"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "認証グループ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "認証"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Authoritative"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "ログイン認証"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "自動更新"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "自動"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "マウント実行前にファイルシステムのエラーを自動的にチェックします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "ホットプラグによってファイルシステムを自動的にマウントします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "ホットプラグによってスワップ パーティションを自動的にマウントします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "ファイルシステム 自動マウント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "スワップ 自動マウント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "使用可"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "平均値:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "戻る"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "概要へ戻る"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "設定へ戻る"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "概要へ戻る"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "スキャン結果へ戻る"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "バックアップ"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "バックアップ / ファームウェア更新"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "バックアップファイル リスト"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "無効なアドレスです!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "バンド"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "ビーコン間隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"以下は、バックアップの際に含まれるファイルのリストです。このリストは、opkgに"
+"よって認識されている設定ファイル、重要なベースファイル、ユーザーが設定したパ"
+"ターンに一致したファイルの一覧です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+"ワイルドカード アドレスよりもインターフェースへ動的にバインド(Linux のデフォ"
+"ルトとして推奨されます)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "インターフェースのバインド"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "ビットレート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "ブリッジ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "ブリッジ インターフェース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "ブリッジ ユニット番号"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "デフォルトで起動する"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s 無線LANコントローラ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 無線LANコントローラ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "バッファ"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU使用率 (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "カテゴリー"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "注意: 設定ファイルは消去されます"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "注意: システムは強制的にアップグレードされます"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "チェイン"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "ログイン パスワードの変更"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "変更"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "変更が適用されました。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "変更は取り消されました。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "デバイスの管理者パスワードを変更します"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "パスワードを変更中…"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "チャネル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"チャンネル %d は、 %s 領域内では規制により利用できません。%d へ自動調整されま"
+"した。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "チェック"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "マウント前にファイルシステムをチェックする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+"この無線から既存のネットワークを削除する場合、このオプションを有効にします。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "チェックサム"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "mtdblock を選択"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"このインターフェースに設定するファイウォール ゾーンを選択してください。<em>設"
+"定しない</em>を選択すると、設定済みのゾーンを削除します。また、<em>作成</em>"
+"フィールドにゾーン名を入力すると、新しくゾーンを作成し、このインターフェース"
+"に設定します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"無線インターフェースをアタッチするネットワークを選択してください。または、"
+"<em>作成</em>欄を選択すると新しいネットワークを作成します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "暗号化方式"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"\"バックアップ アーカイブを生成\" をクリックすると、現在の設定ファイルをtar形"
+"式のアーカイブファイルとしてダウンロードします。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"指定した mtdblock ファイルをダウンロードするには、 \"mtdblock を保存\" をク"
+"リックしてください。(注: この機能はプロフェッショナル向けです!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "クライアント"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "DHCPリクエスト時に送信するクライアントID"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "閉じる"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"設定した秒数後に、使用していない接続を閉じます。0を設定した場合、接続を維持し"
+"ます"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "リストを閉じる"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "コマンド"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "コメント"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "一般設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"キーのインストールに使用される EAPOL キーフレームの再送信を無効にすることによ"
+"り、クライアント サイドの Key Reinstallation Attacks (KRACK) を困難にします。"
+"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー "
+"ネゴシエーションの信頼性低下の原因となることがあります。"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "設定"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "設定が失敗しました"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "設定ファイルは保持されます"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "設定が適用されました。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "設定はロールバックされました!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "確認"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "接続"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "接続中"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "接続制限"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "接続の試行が失敗しました"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "ネットワーク接続"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"設定の変更を適用後、デバイスへのアクセスを回復できませんでした。もし IP アド"
+"レスや無線のセキュリティ認証情報などのネットワーク関連の設定を変更した場合、"
+"再接続が必要かもしれません。"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "国"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "国コード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "インターフェースの指定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "インターフェースの指定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "ファイアウォール ゾーンの作成 / 割り当て"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "インターフェースの作成"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "複数のインタフェースを指定してブリッジを作成します"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "重大"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cronのログ出力レベル"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "新しいインターフェース"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"カスタム ファイル(証明書, スクリプト)がシステムに残るかもしれません。これを"
+"防ぐには、まず最初に factory-reset を行います。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "カスタムな点滅間隔 (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"<abbr title=\"Light Emitting Diode\">LED</abbr> デバイスの挙動をカスタマイズ"
+"します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCPサーバー"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP 及び DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP クライアント"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCPオプション"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "DHCPv6 クライアント"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "DHCPv6-モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "DHCPv6-サービス"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNSフォワーディング"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "DNS-ラベル / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr "DNSSEC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "DS-Lite AFTR アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "DSL ステータス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr "DTIM インターバル"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "デバッグ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "標準設定 %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "デフォルト ルート"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "デフォルト ゲートウェイ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "デフォルトは ステートレス + ステートフル です。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "標準状態"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "ネットワーク名を設定してください。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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サーバーを通知します。)"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "削除"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "公開鍵を削除"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "ネットワークを削除します"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Delivery Traffic Indication Message インターバル"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "詳細"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "宛先"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "デバイス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "デバイス設定"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "デバイスを再起動中です..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "デバイスに到達できません"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "デバイスに到達できません!まだデバイスを待っています..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "診断機能"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "ディレクトリ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "無効"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"このインターフェースでは<abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>機能を使用しません。"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "暗号化を無効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "非アクティブ状態ポーリングを無効化"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "このネットワークを無効にします"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "無効"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "無効(デフォルト)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "低 Acknowledgement 時のアソシエーション解除"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "RFC1918の応答を破棄します"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "切断"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "切断の試行が失敗しました"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "閉じる"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "距離の最適化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "最も遠い端末との距離(メートル)を設定してください。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "ダイバシティ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 は <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+"サーバーと <abbr title=\"Network Address Translation\">NAT</abbr>ファイア"
+"ウォールの為の <abbr title=\"Domain Name System\">DNS</abbr>フォワーダーを複"
+"合したサービスです。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"無効なリプライをキャッシュしません (例:存在しないドメインからの返答など)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr "パブリック DNSサーバーが返答できなかったリクエストを転送しません"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "ローカル ネットワークへの逆引きを転送しません"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "本当に以下の SSH 公開鍵を削除しますか?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "ドメイン必須"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "ドメイン ホワイトリスト"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "非フラグメント化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr>名の無い <abbr title=\"Domain "
+"Name System\">DNS</abbr>リクエストを転送しません"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "下へ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "バックアップ アーカイブのダウンロード"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "mtdblock のダウンロード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> ネットワークへのシェルア"
+"クセスと統合された <abbr title=\"Secure Copy\">SCP</abbr> サーバーを提供しま"
+"す。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr "Dual-Stack Lite (RFC6333)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "動的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "動的トンネル機能"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"クライアントに対して動的にDHCPアドレスを割り振ります。無効に設定した場合、静"
+"的リースのみを行います。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "EA ビット長"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAPメソッド"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "編集"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+"上記の設定データを直接編集してエラーを修正し、 \"保存\" ボタンを押してこの"
+"ページをリロードします。"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "インターフェースを編集します"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "ネットワークを編集"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "緊急"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "有効"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"<abbr title=\"Internet Group Management Protocol\">IGMP</abbr> スヌーピングの"
+"有効化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr>を有効にする"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "HE.netの動的endpoint更新を有効にします"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "IPv6 ネゴシエーションの有効化"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "PPPリンクのIPv6 ネゴシエーションを有効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "ジャンボフレーム パススルーを有効にする"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "NTPクライアント機能を有効にする"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "シングルDESの有効化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "TFTPサーバーを有効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "VLAN機能を有効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) 対策の有効化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "ラーニング エイジング機能を有効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "受信パケットのミラーリングを有効化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "送信パケットのミラーリングを有効化"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを有効にします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "マウント設定を有効にする"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "このネットワークを有効にします"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "スワップ設定を有効にする"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "有効 / 無効"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "有効"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "ブリッジの IGMP スヌーピングを有効にします"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"同一のモビリティ ドメイン(モビリティ グループ)に属するアクセスポイント間の"
+"高速ローミングを有効にします。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "スパニングツリー プロトコルを有効にする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "カプセル化モード"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "暗号化モード"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "エンドポイント ホスト"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "エンドポイント ポート"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "カスタム値を入力"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "カスタム値を入力"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "消去中..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "エラー"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "イーサネットアダプタ"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "イーサネットスイッチ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "除外インターフェース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "拡張ホスト設定"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "期待される値: %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "期限切れ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"リースアドレスの有効時間を入力します。最小設定値は2分です。 (<code>2m</"
+"code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "外部"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "外部システムログ サーバー"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "外部システムログ・サーバー ポート"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "外部システムログ・サーバー プロトコル"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "拡張 SSHコマンドオプション"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr "%d 秒以内の適用を確認できませんでした。ロールバック中です..."
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "ファイル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "クライアントに通知するブートイメージのファイル名"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "ファイルシステム"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "プライベートフィルター"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+"現在アタッチされている全てのファイルシステムとスワップを検索し、検出結果に基"
+"づいてデフォルト設定を置き換えます。"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "ネットワークの検索と参加"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "終了"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "ファイアウォール"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "ファイアウォール設定"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "ファイアウォール ステータス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "ファームウェア ファイル"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "ファームウェア バージョン"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "DNSクエリを送信する送信元ポートを固定します"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "ファームウェアの更新"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "更新"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "ファームウェアの更新"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "更新機能"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "更新中..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "フラッシュメモリー 書込アクセス (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "強制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "強制 40MHz モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "CCMP (AES) を使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"別のDHCPサーバーが検出された場合でも、DHCPサーバー機能を強制的に起動します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "TKIP を使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "TKIP 及びCCMP (AES) を使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "強制リンク"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "強制アップグレード"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "NAT-Tの強制使用"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "フォーム トークンの不一致"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "DHCPトラフィックを転送する"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "ブロードキャスト トラフィックを転送する"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "転送モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "フラグメンテーションしきい値"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "フレームバースト"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "空き"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"WireGuard インターフェースとピアについての詳細情報: <a href=\"http://"
+"wireguard.com\">wireguard.com</a>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "GPRSのみ"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "ゲートウェイ"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "無効なゲートウェイ アドレスです"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "ゲートウェイ ポート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "一般設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "一般設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "コンフィグ生成"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "バックアップ アーカイブを生成"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "802.11%s 無線LANコントローラ"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "入力されたパスワードが一致しません。パスワードは変更されませんでした!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "全体設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "グローバル ネットワークオプション"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "パスワード設定へ移動..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "関連する設定ページへ移動"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "グループ パスワード"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "ゲスト"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net パスワード"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net ユーザー名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "HT モード (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "再起動"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "ハートビート (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"このページではホスト名やタイムゾーンなどの基本的な設定を行うことが出来ます。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>の隠匿"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "空のチェインを非表示"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "ホスト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "ホスト エントリー"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"ホスト<abbr title=\"Internet Protocol Address\">IP</abbr> または ネットワーク"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "ホスト名"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "DHCPリクエスト時に送信するホスト名"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "ホスト名"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "ハイブリッド"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "IKE DHグループ"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IPアドレス"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "IP プロトコル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IPアドレス"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "無効な IP アドレスです"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "IP アドレスがありません"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 ファイアウォール"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "IPv4 アップストリーム"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 アドレス"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "IPv4 割り当て長"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 ブロードキャスト"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 ゲートウェイ"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 ネットマスク"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "IPv4 ネットワーク(アドレス/ネットマスク 表記)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "IPv4 プレフィクス"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "IPv4 プレフィクス長"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr "IPv4+IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-アドレス"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4-in-IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 ファイアウォール"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6 設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 ULA-プレフィクス"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "IPv6 アップストリーム"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 アドレス"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "IPv6 割り当て長"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 ゲートウェイ"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "IPv6 ネットワーク(アドレス/ネットマスク 表記)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6 プレフィクス"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "IPv6 プレフィクス長"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "IPv6 サフィックス"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-アドレス"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6-PD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-over-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-over-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "識別子"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "チェックした場合、暗号化は無効になります。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"固定のデバイス ノード名のかわりに、設定されたUUIDを使用してマウントします"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"固定のデバイス ノード名のかわりに、設定されたパーティション ラベルを使用して"
+"マウントします。"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "チェックされていない場合、デフォルト ルートは構成されません"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "チェックされていない場合、通知されたDNSサーバー アドレスを無視します"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"物理メモリが不足する場合、使用されていないデータを一時的にスワップ デバイスに"
+"スワップし、<abbr title=\"Random Access Memory\">RAM</abbr>の使用可能領域を増"
+"やすことができます。ただし、スワップ デバイスは<abbr title=\"Random Access "
+"Memory\">RAM</abbr>から高速にアクセスすることができないため、データのスワップ"
+"は非常に遅い処理であることに注意します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "<code>/etc/hosts</code>を無視"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "インターフェースを無視する"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "リゾルバ ファイルを無視する"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "イメージ"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "イン"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+"システムへの未認証のアクセスを防ぐために、リクエストはブロックされました。以"
+"下の \"続行\" をクリックして、前のページに戻ります。"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "未使用時タイムアウト"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "受信:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "情報"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr "情報"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "起動スクリプト"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "起動スクリプト"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+"IPv6 の traceroute を使用するには、 iputils-traceroute6 をインストールしま"
+"す。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "%q パッケージをインストールします"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "プロトコル拡張機能をインストールします..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "インターフェース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "インターフェース設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "インターフェース一覧"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "インターフェース再接続中..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "インターフェース名"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "インターフェースが存在しないか、接続していません"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "インターフェース"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "内部"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "内部サーバー エラー"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "入力値が不正です"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "無効なVLAN IDです! IDは%dから%dまでの値のみ入力可能です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "無効なVLAN IDです! ユニークなIDを入力してください。"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+"ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "クライアント間の分離"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+"更新しようとしたイメージファイルはこのフラッシュメモリに適合しません。イメー"
+"ジファイルを確認してください!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScriptを有効にしてください!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "ネットワークに接続する"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "ネットワークに接続する: 無線LANスキャン"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "ネットワークに接続: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "設定を保持する"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "カーネル ログ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "カーネル バージョン"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "暗号キー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "キー #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr "KiB"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "強制終了"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP サーバー"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP echo 失敗数しきい値"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP echo 送信間隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "ラベル"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "言語"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "言語とスタイル"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "レイテンシー"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "リース時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "リースファイル"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "残りリース時間"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "空欄の場合、自動検知を行います"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "空欄の場合、現在のWANアドレスを使用します"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "凡例:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "割り当て数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"DNS サービスを、現在 DNS を提供しているサブネットのインターフェースに限定しま"
+"す。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "待ち受けをこれらのインターフェースとループバックに制限します。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "リンクオン"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"問い合わせを転送する<abbr title=\"Domain Name System\">DNS</abbr> サーバーの"
+"リストを設定します"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "認証用 SSH暗号キー ファイルのリスト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "RFC1918の応答を許可するリスト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "待ち受けインターフェース"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "待ち受けポート"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"指定されたインターフェースでのみ待ち受けを行います。設定しない場合はすべての"
+"インタフェースが対象です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "DNSクエリを受信するポート"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "負荷"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "システム平均負荷"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "ロード中"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "SSH 鍵をロード中…"
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "無効なローカル IP アドレスです"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "割り当てるローカル IPアドレス"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "ローカル IPv4 アドレス"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "ローカル IPv6 アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "ローカルサービスのみ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "ローカル スタートアップ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "時刻"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "ローカル ドメイン"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"ローカル ドメインの定義です。このドメインに一致する名前は転送が行われず、 "
+"DHCP または hosts ファイルのみにより解決されます。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"DHCP名とhostsファイルのエントリーに付される、ローカルドメイン サフィックスで"
+"す。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "ローカル サーバー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"複数の IP が利用可能な場合に、ホスト名をリクエスト中のサブネットによってロー"
+"カライズします"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "ローカライズクエリ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "チャネル %s にロックされています。次で使用されています: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "ログ出力レベル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "ログ クエリ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "ログ"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "ログイン"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "ログアウト"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+"ネットワークアドレスをオフセットとして、最小のアドレスを設定してください"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-アドレス フィルタ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-フィルタ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-リスト"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4over6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "無効な MAP ルールです"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+"以下のようなコマンドを使用して、ルート ファイルシステムを複製してください:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "手動"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "許容される最大 Listen 間隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "DHCPリースの許可される最大数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "並列DNSクエリの許可される最大数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "EDNS.0 UDP パケットサイズの許可される最大数"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "モデムが準備完了状態になるまでの最大待ち時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"名前の長さは、自動的に含まれるプロトコル/ブリッジ プレフィクス (br-, 6in4-, "
+"pppoe- など)と合わせて最大15文字です。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "リースされるアドレスの最大数です。"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr "中"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "メモリー"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "メモリ使用率 (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "メッシュ ID"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "メトリック"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "ミラー監視ポート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "ミラー元ポート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "プロトコル %qのプロトコル拡張が見つかりません"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "モビリティ ドメイン"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "モード"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "モデル"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "モデム デフォルト"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "モデム デバイス"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "モデム初期化タイムアウト"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "モニター"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr "文字数不足"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "マウント機能"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "マウントポイント"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "マウントポイント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "マウントポイント - マウント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "マウントポイント - スワップ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"マウントポイントは、記憶デバイスがファイルシステムのどこに接続されているかを"
+"表示しています。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "明確に設定されていないファイルシステムをマウントします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "マウントオプション"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "マウントポイント"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "明確に設定されていないスワップ パーティションをマウントします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "マウント中のファイルシステム"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "下へ移動"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "上へ移動"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "NAT-T モード"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "NAT64 プレフィクス"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "NDP-プロキシ"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "NT ドメイン"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTPサーバー候補"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "名前"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "新しいインターフェースの名前"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "新しいネットワークの名前"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "ナビゲーション"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "ネットマスク"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "ネットワーク"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "ネットワーク ユーティリティ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "ネットワークブート用イメージ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "ネットワークデバイス アクティビティ (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "ネットワーク デバイスが存在しません"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "インターフェースの無いネットワークです。"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "次 »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "いいえ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "このインターフェースにはDHCPサーバーが設定されていません"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "NAT-Tを使用しない"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "ファイルが見つかりませんでした"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "情報がありません"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "ネガティブキャッシュを行なわない"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "このデバイスに設定されているネットワークがありません"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "ネットワーク名が設定されていません"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "パスワードが設定されていません!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "まだ公開鍵はありません。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "チェイン内にルールがありません"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "利用可能なスキャン結果はまだありません..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "ゾーンが設定されていません"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "ノイズ"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "ノイズ:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "非ワイルドカード"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "なし"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "標準"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "見つかりません"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "アソシエーションされていません"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "未接続"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr "システム起動時に開始されません"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "注意: インターフェース名の長さ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "注意"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ"
+"シュしません)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "圧縮に使用される、並列スレッド数です。"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "消灯時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"このページではネットワーク インターフェースの設定を行うことが出来ます。\"ブ"
+"リッジインターフェース\"フィールドにチェックを付け、複数のネットワーク イン"
+"ターフェースをリストから選択することで複数のインターフェースをブリッジするこ"
+"とが出来ます。また、<samp>INTERFACE.VLANNR</samp>という表記により<abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>も使用することが出来ます。(<abbr "
+"title=\"for example\">例</abbr>: <samp>eth0.1</samp>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "点灯時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "1つ以上のホスト名またはMACアドレスを設定してください!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "1つ以上のフィールドに無効な値が設定されています!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "タブに1つ以上の 無効/必須 の値があります。"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "1つ以上のフィールドに値が設定されていません!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "リストを開く..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "動作周波数"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "変更されるオプション"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "削除されるオプション"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "オプション"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+"ピアのホストです。名前はインターフェースの起動前に解決されます。(オプショ"
+"ン)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "トンネル インターフェースのMaximum Transmission Unit(オプション)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "ピアのポート(オプション)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+"キープアライブ メッセージの送信間隔(秒)です。既定値: 0。このデバイスがNAT"
+"以下に存在する場合の推奨値は25です。(オプション)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr "発信パケットと受信パケットに使用されるUDPポート(オプション)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "オプション"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "その他:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "アウト"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "送信:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "出力インターフェース"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "MACアドレスを上書きする"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "MTUを上書きする"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "デフォルトのインターフェース名を上書きします。"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "DHCPレスポンス内のゲートウェイアドレスを上書きする"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"クライアントへ通知するネットマスクを上書きします。通常は、設定されているサブ"
+"ネットから計算されます。"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "内部ルートに使用されるテーブルを上書きします。"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "概要"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "所有者"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP パスワード"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP ユーザー名"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "PIN コードが拒否されました"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoAカプセル化"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "PSID オフセット"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "PSID ビット長"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "libiwinfo パッケージが必要です!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "パケット"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "ゾーン %q の一部"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "パスワード"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "パスワード認証"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "秘密鍵のパスワード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "秘密鍵のパスワード"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr "パスワード強度"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "パスワード2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "貼付けまたは SSH 鍵ファイルをドラッグ…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "CA証明書のパス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "クライアント証明書のパス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "秘密鍵のパス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "CA 証明書のパス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "クライアント証明書のパス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "秘密鍵のパス"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "ピーク:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "ピアのアドレスがありません"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "ピア"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "再起動を実行"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "設定リセットを実行"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "永続的なキープアライブ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "物理レート:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "デバイス設定"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "パケット"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "ユーザー名とパスワードを入力してください。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "ポリシー"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr "ポーリング間隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr "ステータス クエリのポーリング間隔(秒)です。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "ポート"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "ポート ステータス:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "委任されたプレフィクス (PD)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "事前共有鍵"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"設定回数のLCP echo 確認失敗後、ピアノードがダウンしているものと見なします。0"
+"を設定した場合、失敗しても無視します"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "これらのインターフェースでの待ち受けを停止します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "クライアント同士の通信を制限します"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "秘密鍵"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "続行"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "プロセス"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "プロファイル"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "プロトコル"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "プロトコル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "新しいインターフェースのプロトコル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "プロトコル サポートがインストールされていません"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "NTPサーバー機能を有効にする"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "新しいネットワークを設定します"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "擬似アドホック (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "公開鍵"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"公開鍵は、プレーン パスワードの使用と比べ、高セキュリティなパスワード無しで"
+"の SSH ログインを可能とします。新しい鍵をデバイスにアップロードするために、入"
+"力欄に OpenSSH 互換の公開鍵(1行)を貼り付けるか、 <code>.pub</code> ファイル"
+"をドラッグしてください。"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "クオリティ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"アップストリームの利用可能な全 <abbr title=\"Domain Name System\">DNS</abbr> "
+"サーバを問い合わせます"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "RFC3947 NAT-Tモード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr "ネットワーク参加の RSSI しきい値"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTSしきい値"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "受信レート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radiusアカウントサーバー ポート番号"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radiusアカウント秘密鍵"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radiusアカウントサーバー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius認証サーバー ポート番号"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius認証秘密鍵"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius認証サーバー"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>サーバーの設定"
+"として<code>/etc/ethers</code> をロードします"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"本当にこのインターフェースを削除しますか?一度削除すると、元に戻すことはでき"
+"ません!もしこのインターフェースを経由して接続している場合、このデバイスにア"
+"クセスできなくなる場合があります"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"本当にこの無線ネットワークを削除しますか?一度削除すると、元に戻すことはできま"
+"せん!\n"
+"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場"
+"合があります。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "本当に全ての変更をリセットしますか?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "本当にプロトコルを切り替えますか?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "リアルタイム・コネクション"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "リアルタイム グラフ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "リアルタイム・ロード"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "リアルタイム・トラフィック"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "リアルタイム・無線LAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "再アソシエーション制限時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "DNSリバインディング・プロテクション"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "再起動"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "再起動中..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "デバイスのオペレーティングシステムを再起動します。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "受信"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "受信アンテナ"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "WireGuard インターフェースのIPアドレスです。(推奨)"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "インターフェースを再接続します"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "参照カウンタ"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "リレー"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "リレーブリッジ"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "ネットワーク間のリレー設定"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "リレーブリッジ"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "リモート IPv4アドレス"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "リモート IPv4アドレス または FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "削除"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "再スキャン"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "エントリーの置換"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "無線設定を置換する"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "IPv6-アドレスのリクエスト"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "リクエストするIPv6-プレフィクス長"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "必須"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "DOCSIS 3.0を使用するいくつかのISPでは必要になります"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "このインターフェースに使用するBase64-エンコード 秘密鍵(必須)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"'フル' バージョンの wpad/hostapd と、無線LANドライバーによるサポートが必要で"
+"す。<br />(2019年1月現在: ath9k、ath10k、mwlwifi 及び mt76)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "リセット"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "カウンタをリセット"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "標準設定にリセット"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "名前解決およびホストファイル設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "リゾルバファイル"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "再起動"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "ファイアウォールを再起動"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "無線インターフェースを再起動します"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "復元"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "バックアップから復元する"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "パスワードを表示する/隠す"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "元に戻す"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "変更の取り消し"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "取り消しのリクエストはステータス <code>%h</code> により失敗しました"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "設定を元に戻しています..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "ルート"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "TFTP経由でファイルを取り扱う際のルートディレクトリ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "ルートの準備"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "ルート タイプ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "ルーター アドバタイズメント-サービス"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "ルーター パスワード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "経路情報"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"特定のホスト又はネットワークに、どのインターフェース及びゲートウェイを通して"
+"通信を行うか、経路情報を設定します。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "ルール"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "デバイスのマウントを行う前にファイルシステムチェックを行う"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "ファイルシステムチェックを行う"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH アクセス"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "SSH サーバーアドレス"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "SSH サーバーポート"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "SSH ユーザー名"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH キー"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr "スワップ"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "保存"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "保存 & 適用"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "mtdblock を保存"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "mtdblock の保存"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "公開鍵を保存中…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "スキャン"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "スキャン要求が失敗しました"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "スケジュールタスク"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "追加されるセクション"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "削除されるセクション"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "詳細情報は \"mount\" のmanページを参照してください"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"イメージ形式のチェックが失敗した場合でも更新を行う場合、'強制アップグレード' "
+"を選択してください。ファームウェアが正しいこと、デバイスに適していることを確"
+"認できている場合にのみ使用してください!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"設定された秒間隔でLCP echoリクエストを送信します。失敗数しきい値を設定した場"
+"合のみ、機能が有効になります。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "クライアントの分離"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "サーバー設定"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "サービス名"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "サービスタイプ"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "サービス"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "セッションの期限切れ"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "VPN をデフォルト ルートとして設定します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "時刻同期設定"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "DHCPサーバーを設定"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "Short GI"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Short Preamble"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "現在のバックアップファイルのリストを表示する"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "空のチェインを表示"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "インターフェースを終了します"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "信号強度"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "信号:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "サイズ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "DNS クエリ キャッシュのサイズ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "ZRam デバイスのサイズ (MB) です。"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "スキップ"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "コンテンツへ移動"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "ナビゲーションへ移動"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "スロット時間"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "ソフトウェア VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "無効な値が設定されているフィールドがあるため、保存できません。"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "申し訳ありません。リクエストされたオブジェクトは見つかりませんでした。"
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "申し訳ありません。サーバーに予期せぬエラーが発生しました。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"申し訳ありません。現在このボードではsysupgradeがサポートがされていないため、"
+"ファームウェア更新は手動で行っていただく必要があります。wikiを参照して、この"
+"デバイスのインストール手順を参照してください。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "送信元"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "デバイスが接続するディレクトリを設定します"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "<em>Dropbear</em> の待ち受けポートを設定してください。"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "TOS (Type of Service) を指定します。"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+"デフォルト値 (64) 以外のカプセル化パケットの TTL (Time to Live) を指定しま"
+"す。"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+"デフォルト値 (1280 bytes) 以外の MTU (Maximum Transmission Unit) を指定しま"
+"す。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "暗号鍵を設定します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "開始"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "優先順位"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "設定の適用を開始しています..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "無線LANのスキャンを開始しています..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "スタートアップ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "IPv4 静的ルーティング"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "IPv6 静的ルーティング"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "静的リース"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "静的ルーティング"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "静的アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"静的リース機能は、DHCPクライアントに対して固定のIPアドレス及び一時的なホスト"
+"名をアサインします。また、クライアントは対応するリースを使用するホストがその1"
+"台のみで、かつ静的なインターフェース設定にする必要があります。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "非アクティブなステーションの制限"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "ステータス"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "停止"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "問い合わせの制限"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr "強"
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "送信"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "ログの抑制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "これらのプロトコルの、ルーチン的操作についてのログを抑制します。"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "スワップ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "スワップ機能"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "スイッチ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "スイッチ %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "スイッチ %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+"スイッチ %q は不明なトポロジを持っています - VLAN 設定は正確ではないかもしれ"
+"ません。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "スイッチポート マスク"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "スイッチ VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "プロトコルの切り替え"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "CIDR リスト表記へ切替"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "スイッチポート アクティビティ (%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr "NTP サーバーと同期"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "ブラウザの時刻と同期"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "同期中..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "システム"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "システムログ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "システム プロパティ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "システムログ バッファサイズ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTPサーバー・ルート"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "送信レート"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "テーブル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "ターゲット"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "対象ネットワーク"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "停止"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"<em>デバイス設定</em>セクションでは、チャネル、送信出力、アンテナ設定などの無"
+"線ハードウェアの設定を行います。また、無線ハードウェアがマルチSSID機能をサ"
+"ポートしている場合、これらの設定は全て共通の設定として扱われます。暗号化設定"
+"や無線モードなどのネットワーク毎の設定は、<em>インターフェース設定</em>で設定"
+"を行います。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"<em>libiwinfo-lua</em> パッケージがインストールされていません。無線設定機能を"
+"正しく動作させるために、このパッケージをインストールする必要があります。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"プロバイダに割り当てられる IPv6 プレフィクスです。通常、 <code>::</code> で終"
+"わります。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr "設定ファイルは以下のエラーにより読み込めませんでした:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"未適用の変更を適用後、デバイスは %d 秒以内に完了できなかった可能性がありま"
+"す。これは、安全上の理由によりロールバックされる設定に起因するものです。それ"
+"でも設定の変更が正しいと思う場合は、チェックなしの変更の適用を行ってくださ"
+"い。もしくは、再度適用を試行する前にこの警告を閉じて設定内容の編集を行うか、"
+"現在動作している設定状況を維持するために未適用の変更を取り消してください。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"デバイスファイルまたはパーティション(<abbr title=\"for example\">例</abbr> "
+"<code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"記憶領域をフォーマットしているファイルシステムを指定します。(<abbr title="
+"\"for example\">例</abbr> <samp><abbr title=\"Third Extended Filesystem"
+"\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 />\"続行"
+"\"ボタンをクリックすると、更新処理を開始します。"
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "以下の変更が取り消されました"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "このシステムでは、現在以下のルールが有効になっています。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "入力された SSH 公開鍵は既に追加されています。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"入力された SSH 公開鍵は無効です。正しい RSA または ECDSA 鍵を入力してくださ"
+"い。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "設定されたネットワーク名はユニークなものではありません"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"このハードウェアでは複数のESSIDを設定することができないため、続行した場合、設"
+"定は既存の設定と置き換えられます。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"IPv4 プレフィクスの長さ (bit) です。残りは IPv6 アドレスで使用されます。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "IPv6 プレフィクスの長さ (bit) です。"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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=\"Virtual Local Area Network\">VLAN</abbr> にまとめることができま"
+"す。 <abbr title=\"Virtual Local Area Network\">VLAN</abbr> は、異なるネット"
+"ワーク セグメントの分離にしばしば用いられます。通常、インターネットなどより上"
+"位のネットワークへの接続に使用するアップリンク ポートと、ローカル ネットワー"
+"ク用のその他のポートが存在します。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "選択中のプロトコルを使用する場合、デバイスを設定する必要があります"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "送信されたセキュリティ トークンは無効もしくは期限切れです!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr "システムは設定領域を消去中です。完了後、自動的に再起動します。"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"システム更新中です。<br />絶対に電源を切らないでください!<br />ルーターの再"
+"接続まで数分お待ち下さい。システムが更新されることにより、ルーターの設定が変"
+"わる可能性があるため、再接続時にあなたのコンピュータのIPアドレスを変更しなけ"
+"ればならない場合があります。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "システム パスワードの変更に成功しました。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"アップロードされたイメージファイルは、このボードでサポートされているフォー"
+"マットではありません。このプラットフォームに適合したイメージファイルかどう"
+"か、確認してください。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "テーマ"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "リース中のIPアドレスはありません。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "適用する変更はありません。"
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "復元が未完了の変更はありません!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "未完了の変更はありません!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"デバイスが設定されていません。\"デバイス設定\"タブで、ネットワークデバイスを"
+"選択してください。"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"ルーターにパスワードが設定されていません。Webインターフェースの保護及びSSH"
+"サービスを有効にするために、管理者パスワードを設定してください。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "リレーの IPv4 アドレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+"このファイルは、特定ドメイン用、または上位 <abbr title=\"Domain Name System"
+"\">DNS</abbr> サーバーのための 'server=/domain/1.2.3.4' や 'server=1.2.3.4' "
+"というような行を含めることができます。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"以下は、sysupgrade中にバックアップ対象に含めるファイルとディレクトリのパター"
+"ンリストです。/etc/config/内の設定ファイル及びその他特定の設定ファイルは自動"
+"的に保持されます。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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'行より上に入力して"
+"ください。これらのコマンドはブートプロセスの最後に実行されます。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、"
+"<code>...:2/64</code>が終端に設定されます。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"これはローカル ネットワーク内のみの <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> です。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"スケジュールタスク システムを使用することで、定期的に特定のタスクの実行を行う"
+"ことが可能です。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"このリストは現在システムで動作しているプロセスとそのステータスを表示していま"
+"す。"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "このページでは、現在アクティブなネットワーク接続を表示します。"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "このセクションは未設定です。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "時刻設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "時刻同期機能はまだ設定されていません。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "Group Temporal Key (GTK) 再生成間隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "タイムゾーン"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "ログイン…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"設定を復元するには、作成しておいたバックアップ アーカイブをアップロードしてく"
+"ださい。設定のリセットを行う場合、\"設定リセット\"をクリックしてください。(た"
+"だし、squashfsをお使いの場合のみ使用可能です)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "合計"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "トラフィック"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "転送"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "転送レート"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "送信"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "電波出力"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "送信アンテナ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "トリガー"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "トリガーモード"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "トンネル ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "トンネルインターフェース"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "トンネルリンク"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "送信電力"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "タイプ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "UMTSのみ"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USBデバイス"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB ポート"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "デバイス名を確定できません"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "外部 IP アドレスを確定できません"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "アップストリーム インターフェースを確定できません"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "ディスパッチできません"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "AFTR ホスト名を解決できません"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "ピアのホスト名を解決できません"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "不明"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "不明なエラー (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Unmanaged"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "アンマウント"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "名称未設定の公開鍵"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "保存されていない変更"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "非対応の MAP タイプです"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "サポートされていないプロトコルタイプ"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "上へ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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機能に互換性のあるファームウェア イ"
+"メージをここにアップロードしてください。\"設定の保持\"を有効にすると、現在の"
+"設定を維持してアップデートを行います(互換性のあるファームウェア イメージが必"
+"要)。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "アーカイブをアップロード..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "アップロード完了"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "起動時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "<code>/etc/ethers</code> を使用する"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "DHCPゲートウェイを使用する"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "ピアから通知されたDNSサーバーを使用する"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "ISO/IEC 3166 alpha2の国コードを使用します。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "トンネル インターフェースのMTUを設定"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "トンネル インターフェースのTTLを設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "外部オーバーレイとして使用する (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "ルート ファイルシステムとして使用する (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "ブロードキャスト フラグを使用する"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "ビルトインのIPv6-マネジメントを使用する"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "DNSサーバーを手動で設定"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "デフォルト ゲートウェイを使用する"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "ゲートウェイ メトリックを使用する"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "ルーティング テーブルの使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"<em>追加</em> ボタンを押して、新しくエントリーを作成してください。<em>MAC-ア"
+"ドレス</em> はそのホストを識別し, <em>IPv4-アドレス</em> には払いだす固定のア"
+"ドレスを設定します。また、<em>ホスト名</em> はそのホストに対して一時的なホス"
+"ト名をアサインします。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "使用するキースロット"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "ユーザー証明書(PEM エンコード)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "ユーザー秘密鍵(PEM エンコード)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "ユーザー名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "%q上のVLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "%q上のVLAN (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "VPN ローカルアドレス"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "VPN ローカルポート"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN サーバー"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "VPN サーバーポート"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "VPN サーバー証明書 SHA1ハッシュ"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (CISCO 3000 (またはその他の) VPN)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "ベンダー"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "DHCPリクエスト送信時のベンダークラスを設定"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "確認"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "仮想ダイナミックインターフェース"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP オープンシステム"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP 共有キー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP 暗号フレーズ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA 暗号フレーズ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+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 (アクセスポイント及びアドホック) がインストールされている必要がありま"
+"す。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "変更を適用中です..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "コマンド実行中です..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "設定を適用中です... %d 秒"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "デバイスを起動中です..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "警告"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "警告: 再起動すると消えてしまう、保存されていない設定があります!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr "弱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"PSK を使用する場合、 PMK は自動的に生成されることができます。このオプションが"
+"有効な場合、以下の R0/R1 キー オプションは適用されません。 R0 と R1 キーのオ"
+"プションを使用するには、これを無効化してください。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "無線アクティビティ (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "無線クライアント アソシエーション (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "無線データ受信状態 (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "無線データ送信状態 (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "無線オン (%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "帯域幅"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "無線"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "無線アダプタ"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "無線ネットワーク"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "無線LANデバイス一覧"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "無線LANセキュリティ"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "無線LAN機能は無効になっています"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "無線LAN機能がアソシエーションされていません"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "無線LAN機能再起動中..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "無線LAN機能は無効になっています"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "無線LAN機能は有効になっています"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "受信したDNSリクエストをsyslogへ記録します"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "システムログをファイルに書き込む"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "はい"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "JavaScriptを有効にしない場合、LuCIは正しく動作しません。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "ZRam 圧縮アルゴリズム"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "ZRam 圧縮ストリーム"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "ZRam 設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "ZRam サイズ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "全て"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "自動"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "ブリッジ"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "作成"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "作成:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "指定したインターフェースでブリッジを作成します"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "無効"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "無効"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "期限切れ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>リース情報を記"
+"録するファイル"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "転送"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "全二重"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "半二重"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "エンコードされた値(16進数)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "(不明)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "ハイブリッド モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "ターゲットがネットワークの場合"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "入力"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "8 文字以上 63 文字以下のキー"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "5 文字または 13 文字のキー"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "ローカル <abbr title=\"Domain Name System\">DNS</abbr>ファイル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "分"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "mixed WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "いいえ"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "リンクなし"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "空ではない値"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "オフ"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "オン"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "オープン"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "出力"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "オーバーレイ"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "正の値(10進数)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "正の整数値"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "ランダム"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "リレー モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "routed"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "秒"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "サーバー モード"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "ステートフルのみ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "ステートレス"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "ステートレス + ステートフル"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "tagged"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "ユニークな値"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "不明"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "無期限"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "設定しない"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "設定しない -又は- 作成:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "untagged"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "有効な IP アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "有効な IP アドレスまたはプレフィクス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "有効な IPv4 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "有効な IPv4 アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "有効な IPv4 アドレスまたはネットワーク"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "有効な IPv4 アドレス:ポート"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "有効な IPv4 ネットワーク"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "有効な IPv4 または IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "有効な IPv4 プレフィクス値 (0 - 32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "有効な IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "有効な IPv6 アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "有効な IPv6 アドレスまたはプレフィクス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "有効な IPv6 ホスト ID"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "有効な IPv6 ネットワーク"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "有効な IPv6 プレフィクス値 (0 - 128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "有効な MAC アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "有効な UCI 識別子"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "有効な UCI 識別子またはホスト名、 IP アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "有効なアドレス:ポート"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "有効な日付 (YYYY-MM-DD)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "有効な10進数の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "有効な WEP キー(16進数)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "有効な WPA キー(16進数)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "有効なホスト:ポート"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "有効なホスト名"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "有効なホスト名または IP アドレス"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "有効な整数値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "有効なネットワーク(アドレス/ネットマスク 表記)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "有効なポートまたはポート範囲(port1-port2)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "有効なポート番号"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "有効な時刻 (HH:MM:SS)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "%d 以上 %d 文字以下の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "%f 以上 %f 以下の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "%f 以上の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "%f 以下の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr " %d 文字以上の値"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "%d 文字以下の値"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "はい"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« 戻る"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "以下を満たす1つ:\n"
+#~ " - %s"
diff --git a/package/luci/modules/luci-base/po/ko/base.po b/package/luci/modules/luci-base/po/ko/base.po
new file mode 100644 (file)
index 0000000..8f0efb9
--- /dev/null
@@ -0,0 +1,6374 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2012-04-03 08:44+0200\n"
+"Last-Translator: Weongyo Jeong <weongyo@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d 분 window, %d 초 간격)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1 분 부하:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15 분 부하:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5 분 부하:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> query 포트"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 서버 포트"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-주소"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 설정"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 이름"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-주소"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">최대</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> lease 수"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">최대</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> 패킷 크기"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">최대</abbr> 동시 처리 query 수"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "관리 도구"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Route 경로"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Route 경로"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Active 연결수"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Active DHCP 임대 목록"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Active DHCPv6 임대 목록"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "추가"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "새로운 인터페이스 추가..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "추가적인 Hosts 파일들"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "주소"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "관리"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "고급 설정"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "<abbr title=\"Secure Shell\">SSH</abbr> 암호 인증을 허용합니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "암호를 이용한 root 접근 허용"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "암호를 이용한 <em>root</em> 사용자 접근을 허용합니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "연결된 station 들"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "인증이 필요합니다"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "자동 Refresh"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "평균:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "뒤로"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "개요로 이동"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "설정으로 돌아가기"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "백업"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Firmware 백업 / Flash"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"아래는 백업할 파일 목록입니다.   이 목록은 opkg 이 수정되었다고 판단한 파일, "
+"필수 기본 파일 그리고 사용자가 패턴 정의로 백업하도록 지정한 것로 이루어져 있"
+"습니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Bridge 인터페이스"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "부팅시 활성화"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "버퍼된 양"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU 사용량 (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "변경 사항"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "장비 접근을 위한 관리자 암호를 변경합니다"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"이 인터페이스에 할당하고자 하는 firewall zone 을 선택하세요. 연결된 zone 으로"
+"부터 인터페이스를 제거하고 싶다면 <em>unspecified</em> 를 선택하세요.  새로"
+"운 zone 을 정의하고 인터페이스 연결을 원한다면 <em>create</em> 항목을 입력하"
+"세요."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"이 무선랜 인터페이스와 연결하고자 하는 네트워크(들)을 선택하세요. 혹은 새로"
+"운 네트워크를 정의할려면 <em>create</em> 을 작성하세요."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"현재 설정 파일에 대한 tar 아카이브 다운로드를 원한다면 \"아카이브 생성\" 버튼"
+"을 클릭하세요."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "DHCP 요청시 전송할 Client ID"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "목록 닫기..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Data 를 수집중입니다..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "명령어"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "공통 설정"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "설정"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "다시 확인"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "연결"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "연결 시간"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "연결"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Firewall-zone 생성 / 할당"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "임의의 인터페이스"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"원한다면 장치에 부착된 <abbr title=\"Light Emitting Diode\">LED</abbr> 들의 "
+"행동을 마음대로 변경할 수 있습니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP 서버"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP 와 DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP client"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-옵션들"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "기본 상태"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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>\" 는 client 에게 다른 DNS 서버를 세"
+"팅하도록 권고할 수 있습니다."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "삭제"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "이 네트워크를 삭제합니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "설명"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "장치 설정"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "진단"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "비활성화"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"이 인터페이스에 대해 <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> 기능을 비활성합니다."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 는 <abbr title=\"Network Address Translation\">NAT</abbr> 방화벽을 위"
+"한 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-서버와 "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Forwarder 기능을 제공합니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "백업 다운로드"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> network shell 접근과 "
+"<abbr title=\"Secure Copy\">SCP</abbr> 서버 기능을 제공합니다"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"동적으로 DHCP 주소를 client 에게 할당합니다.  만약 비활성화시, static lease "
+"가 설정된 client 만 주소 제공이 이루어집니다."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "수정"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "이 인터페이스를 수정합니다"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "이 네트워크를 수정합니다"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "활성화"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> 활성화"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "NTP client 활성화"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "TFTP 서버 활성화"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "VLAN 기능 활성화"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "활성/비활성"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "활성화됨"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "이 bridge 에 Spanning Tree Protocol 활성화합니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "암호화"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet 스위치"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "만료 시간"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "임대한 주소의 유효 시간.  최소값은  2 분 (<code>2m</code>) 입니다."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "외부 system log 서버"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "외부 system log 서버 포트"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "외부 system log 서버 프로토콜"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "네트워크 검색 및 연결합니다"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "방화벽"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "방화벽 설정"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "방화벽 상태"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Firmware 버전"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "이미지로 Flash..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "새로운 firmware 이미지로 flash"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Flash 작업"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "강제하기"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "다른 DHCP 서버가 탐지되더라도 이 네트워크에 DHCP 를 강제합니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "이용 가능한 양"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "기본 설정"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "기본 설정"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "아카이브 생성"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "암호 설정 하기"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"여기서 호스트이름이나 시간대와 같은 기본적인 장비 설정을 할 수 있습니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr> 숨기기"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "호스트"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "호스트 목록들"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> 혹은 Network"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "호스트이름"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "DHCP 요청시 전달할 호스트이름"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "호스트이름"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP 주소"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 방화벽"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 주소"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-주소"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 방화벽"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "IPv6 Neighbour 들"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6 설정"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-주소"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "체크하지 않을 경우, 기본 route 가 설정되지 않습니다"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "체크하지 않을 경우, 사용하도록 권장된 DNS 주소는 무시됩니다"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "<code>/etc/hosts</code> 파일 무시"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "인터페이스 무시"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "resolve 파일 무시"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "이미지"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "In"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Initscript 들"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "인터페이스"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "인터페이스 설정"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "인터페이스 개요"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "인터페이스 이름"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "인터페이스"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "네트워크 연결"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "네트워크 연결: 무선랜 스캔 결과"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "네트워크 연결중: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "설정 유지"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernel 로그"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Kernel 버전"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "언어"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "언어와 스타일"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "임대 시간"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "남아있는 임대 시간"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "제한"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"DNS 를 제공하기로한 subnet 인터페이스들에 대해서만 DNS 서비스를 제공합니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"지정한 인터페이스에만 listening 하며 미지정시 모든 인터페이스에 적용됩니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "부하"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "부하 평균"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Local 시작 프로그램"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "지역 시간"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Log output 레벨"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "로그인"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "로그아웃"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "임대되는 주소의 최소 시작점. (네트워크 주소로 부터의 offset)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-주소"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-주소 필터"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-필터"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Active DHCP lease 건의 최대 허용 숫자"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "허용되는 최대 동시 DNS query 수"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "허용된 최대 EDNS.0 UDP 패킷 크기"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "임대될 수 있는 주소의 최대 숫자."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "메모리"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "메모리 사용량 (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "모델"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTP 서버 목록"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "이름"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "네트워크"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "네트워크 유틸리티"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "네트워크 boot 이미지"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "이용 가능한 정보가 없습니다"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "암호 설정을 해주세요!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "노이즈"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "연결되지 않음"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"이 페이지에서는 네트워크 인터페이스를 설정할 수 있습니다. \"Bridge 인터페이스"
+"\" 항목을 클릭하고, 공백으로 구분된 네트워크 인터페이스들의 이름을 적는 방식"
+"으로 여러 인터페이스들을 bridge 할 수 있습니다.  또한 <abbr title=\"Virtual "
+"Local Area Network\">VLAN</abbr> 표기법인 <samp>INTERFACE.VLANNR</samp> "
+"(<abbr title=\"for example\">예</abbr>: <samp>eth0.1</samp>) 를 사용하실 수 "
+"있습니다."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "목록 열람..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "동작 주파수"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "변경된 option"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "삭제된 option"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "MAC 주소 덮어쓰기"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "MTU 덮어쓰기"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "기본 인터페이스 이름을 덮어씁니다"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Client 에 전달될 netmask 를 덮어 쓸 수 있습니다.  보통 해당 값은 제공되는 "
+"subnet 에 따라 자동 계산됩니다."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "개요"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "암호"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "암호 인증"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "최고치:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "재부팅하기"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Reset 하기"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Physical 설정"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "사용자이름과 암호를 입력해 주세요."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "포트"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "포트 상태:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "프로세스"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "프로토콜"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "새로운 네트워크를 추가합니다"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+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>-서버를 설정합니다"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "정말 프로토콜 변경을 원하세요?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "실시간 연결수"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "실시간 그래프"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "실시간 부하"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "실시간 트래픽"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "재부팅"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "장치의 운영체제를 재부팅합니다"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "이 인터페이스를 재연결합니다"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "제거"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "특정 ISP 들에 요구됨.  예: Charter (DOCSIS 3 기반)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "초기화"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Counter 초기화"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "초기값으로 reset"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Resolv 와 Hosts 파일"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Resolve 파일"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "재시작"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "방화벽 재시작"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "복구"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "백업 복구"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "암호 보이기/숨기기"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "변경 취소"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "TFTP 를 통해 제공되는 파일들의 root 디렉토리"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "라우터 암호"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Route 경로"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Route 경로는 특정 호스트 혹은 네트워크가 사용해야 할 인터페이스와 gateway 정"
+"보를 나타냅니다."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "저장"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "저장 & 적용"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan 하기"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "작업 관리"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "추가된 section"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "삭제된 section"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "서버 설정"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "서비스"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "현재 백업 파일 목록 보기"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "이 인터페이스를 정지합니다"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "신호"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Size"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "<em>Dropbear</em> instance 의 listening 포트를 지정합니다"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "시작"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "시작 우선순위"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "시작 프로그램"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Static IPv4 Route 경로"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Static IPv6 Route 경로"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Static Lease 들"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Static Route 경로"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Static Lease 는 DHCP client 에게 고정된 IP 주소와 symbolic hostname 을 할당"
+"할 때 사용됩니다.  이 기능은 또한 지정된 host 에 대해서만 주소 임대를 하도록 "
+"하는 non-dynamic 인터페이스 설정에도 사용됩니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "상태"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "정지"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Strict order"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "제출하기"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "스위치"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "스위치 %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "스위치 %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "스위치 VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "프로토콜 변경"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "브라우저 시간대로 동기화"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "시스템"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "시스템 로그"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "시스템 등록 정보"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "System log 버퍼 크기"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP 설정"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP 서버 root"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"<em>장치 설정<em> 섹션은 channel, transmit power 혹은 antenna 선택과 같은 물"
+"리적인 설정 내용을 다룹니다.  이 설정은 (만약 radio 하드웨어가 multi-SSID 지"
+"원이 가능하다면) 정의된 모든 무선 네트워크에 공통적으로 적용됩니다. 암호화 혹"
+"은 operation mode 와 같은 각 네트워크 설정들은 <em>인터페이스 설정</em>에서 "
+"다루어집니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "다음의 변경 사항들이 취소되었습니다"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "다음의 rule 들이 현재 이 시스템에 적용 중입니다."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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=\"Virtual Local Area Network\">VLAN</abbr> 으로 구성될 수 있습니다. "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr>은 종종 다른 네트워크 "
+"segment 들을 분리하는데 사용되기도 합니다. 한 개의 uplink 포트가 인터넷에 연"
+"결되어 있고 나머지 포트들은 local 네트워크로 연결되는 구성에 자주 사용됩니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "디자인"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"이 공유기에 암호 설정이 되지 않았습니다. 웹 UI 와 SSH 부분을 보호하기 위해서 "
+"꼭 root 암호를 설정해 주세요."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"이것은 sysupgrade 시 유지되어야 하는 파일과 디렉토리 목록에 대한 shell glob "
+"패턴들입니다.  /etc/config/ 하위의 수정된 파일이나 특정 다른 설정들은 자동적"
+"으로 변경 사항이 보존됩니다."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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' 앞에) 부팅 절차가 "
+"끝날 때 실행하고자 하는 명령들을 삽입하세요."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "아래는 예정된 작업들이 정의된 시스템 crontab 내용입니다."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "이 section 은 아직 입력된 값이 없습니다"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "시간 동기화"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "시간 동기화가 아직 설정되지 않았습니다."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "시간대"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"설정 파일을 복구하고자 한다면 이전에 백업하신 아카이브 파일을 여기로 업로드"
+"할 수 있습니다.  Firmware 의 초기 설정 reset 을 원한다면 \"Reset 하기\" 를 클"
+"릭하세요. (squashfs 이미지들만 가능)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "총 이용 가능한 양"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "트래픽"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "전송량"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "유형"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "알수없음"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "적용 안된 변경 사항"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"실행중인 firmware 변경을 하고자 한다면 여기에 sysupgrade 호환성이 유지되는 이"
+"미지를 업로드하세요.  현재의 설정을 유지하고자 한다면 \"설정 유지\" 를 체크하"
+"세요. (이를 지원하는 firmware 이미지 필요)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "아카이브 업로드..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Uploaded File"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "가동 시간"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "<code>/etc/ethers</code> 사용"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Peer 가 권장한 DNS 서버 사용"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Broadcast flag 사용"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "자체 내장 IPv6-관리 기능 사용"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "임의의 DNS 서버 사용"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Default gateway 사용"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Gateway metric 사용"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Routing table 사용"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"새로운 항목을 추가하기 위해서는 <em>추가</em> 버튼을 사용하세요. <em>MAC-주소"
+"</em>는 host 를 나타내며, <em>IPv4-주소</em>는 사용할 고정 주소를 나타내고, "
+"요청하는 host 에 대해 <em>hostname</em> 이 symbolic name 으로 부여됩니다. 선"
+"택 사항인 <em>임대 시간</em>은 해당 host 에만 해당되는 시각을 설정하는데 사용"
+"될 수 있습니다.  예를 들어 12h, 3d 혹은 infinite 값들이 가능합니다."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "사용자이름"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLAN 설정: %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "DHCP 요청시 전송할 Vendor Class"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Mode"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "변경 사항이 적용되기를 기다리는 중입니다..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "실행한 명령이 끝나기를 기다리는 중입니다..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "무선"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "무선랜 네트워크"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "무선랜 개요"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "무선랜 보안"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "무선이 비활성화되어"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "무선이 연결되어 있지 않습니다"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "무선랜이 재시작중입니다..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "무선 네트워크가 꺼져 있음"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "무선 네트워크가 켜져 있음"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "받은 DNS 요청 내용을 systlog 에 기록합니다"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "System log 출력 파일 경로"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"이 메뉴에서 설치된 init script 를 활성화/비활성화 할 수 있습니다. 변경 사항"
+"은 장치가 재부팅 될 때 적용되게 됩니다.<br /><strong>경고: 만약 \"network\" "
+"와 같은 중요 init script 를 비활성화 할 경우, 장치에 접속을 못하실 수 있습니"
+"다!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "지정한 인터페이스(들)로 구성된 bridge 를 생성합니다"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "만료됨"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"할당된 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-lease "
+"정보가 저장되는 파일"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "Target 이 네트워크일 경우"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> 파일"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "link 없음"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "unspecified -혹은- create:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr ""
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "아래에 SSH public-key 인증을 위한 공개 SSH-Key 들 (한 줄당 한개) 를 입력"
+#~ "할 수 있습니다."
+
+#~ msgid "Design"
+#~ msgstr "디자인"
+
+#~ msgid "Available packages"
+#~ msgstr "이용 가능한 패키지"
+
+#~ msgid ""
+#~ "Build/distribution specific feed definitions. This file will NOT be "
+#~ "preserved in any sysupgrade."
+#~ msgstr ""
+#~ "Build/distribution 지정 feed 목록입니다.  이 파일의 내용은 sysupgrade 시 "
+#~ "초기화됩니다."
+
+#~ msgid ""
+#~ "Custom feed definitions, e.g. private feeds. This file can be preserved "
+#~ "in a sysupgrade."
+#~ msgstr ""
+#~ "개인이 운영하는 feed 같은 정보를 입력할 수 있는 custom feed 목록입니다. "
+#~ "이 파일은 sysupgrade 시 입력된 정보가 유지됩니다."
+
+#~ msgid "Custom feeds"
+#~ msgstr "Custom feed 들"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "Distribution feed 들"
+
+#~ msgid "Download and install package"
+#~ msgstr "패키지 다운로드 후 설치"
+
+#~ msgid "Filter"
+#~ msgstr "필터"
+
+#~ msgid "Find package"
+#~ msgstr "패키지 찾기"
+
+#~ msgid "Free space"
+#~ msgstr "여유 공간"
+
+#~ msgid "General options for opkg"
+#~ msgstr "opkg 명령의 기본 옵션들"
+
+#~ msgid "Install"
+#~ msgstr "설치"
+
+#~ msgid "Installed packages"
+#~ msgstr "설치된 패키지"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-설정"
+
+#~ msgid "Package name"
+#~ msgstr "패키지 이름"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "크기 (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "소프트웨어"
+
+#~ msgid "Version"
+#~ msgstr "버전"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 와 IPv6"
+
+#~ msgid "No chains in this table"
+#~ msgstr "이 table 에는 정의된 chain 이 없음"
+
+#~ msgid "Activate this network"
+#~ msgstr "이 네트워를 활성화합니다"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "인터페이스 재연결중입니다"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "이 네트워크를 shutdown 합니다"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "무선랜이 재시작되었습니다"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "무선랜이 shutdown 되었습니다"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP 임대 정보"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6 임대 정보"
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "정말로 네트워크를 shutdown 하시겠습니까?\\n이 인터페이스를 통해 연결하였다"
+#~ "면 접속이 끊어질 수 있습니다."
+
+#~ msgid "Sort"
+#~ msgstr "순서"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4 WAN 상태"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6 WAN 상태"
+
+#~ msgid "Apply"
+#~ msgstr "적용"
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "저장 &#38; 적용"
+
+#~ msgid "Leasetime"
+#~ msgstr "임대 시간"
diff --git a/package/luci/modules/luci-base/po/ms/base.po b/package/luci/modules/luci-base/po/ms/base.po
new file mode 100644 (file)
index 0000000..ee09ed1
--- /dev/null
@@ -0,0 +1,6340 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-05-07 17:57+1000\n"
+"PO-Revision-Date: 2010-05-07 17:57+1000\n"
+"Last-Translator: Wai Chet Teow <waichet@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.1.1\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s sedia)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(tiada interface dipasang)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Gelanggang Tambahan --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Sila pilih --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- memperibadi --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"<abbr title=\"perkhidmatan set mengenalpasti diperpanjangkan\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "IPv4-Alamat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "IPv4-Pintu gerbang"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "IPv4-Netmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr "IPv6 Host-Alamat atau Rangkaian (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "IPv6-Pintu gerbang"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Konfigurasi lampu LED"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "MAC-Alamat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Pusat akses"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Aksi"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Aktive IPv4-Routen"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Aktif IPv6-Laluan"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Sambungan Aktif"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Tambah"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Pentadbiran"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Tetapan Lanjutan"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Membenarkan pengesahan kata laluan SSH"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Izinkan semua kecualian yang disenaraikan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Izinkan senarai saja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Associated Stesen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Authentifizierung"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Pengesahan"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Otorisasi Diperlukan"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Boleh didapati"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Kembali ke ikhtisar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Kembali ke keputusan scan"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Sandaran"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Antara Muka Bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Penggunaan CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Batal"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Rantai"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Laman"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Laman diterapkan."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Saluran"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Jumlah disemak "
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr "Pilih zon firewall yang anda ingin tetapkan untuk antar muka ini."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#, fuzzy
+msgid "Client"
+msgstr "Pelanggan"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Perintah"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Konfigurasi"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Pengesahan"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Sambungan Batas"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Kod negara"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Buat / Menetapkan dinding api-zon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr "Mengkustomisasi perilaku peranti LED jika mungkin."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-Pilihan"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Padam"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Keterangan"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Tempat tujuan"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Alat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Jarak Optimasi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Jarak ke rangkaian terjauh ahli dalam meter."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Keanekaragaman"
+
+# Nur für NAT-Firewalls?
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 adalah gabungan <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>-Pelayan dan<abbr title=\"Domain Name System\">DNS</abbr>-"
+"Forwarder untuk <abbr title=\"Network Address Translation\">NAT</abbr> "
+"firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domain diperlukan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr "Jangan hantar permintaan DNS tanpa nama DNS"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear menawarkan SSH kulit rangkaian aksesdan pelayan yang terintegrasi."
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "Dinamik DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-Kaedah"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Sunting"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Mengaktifkan <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Aktifkan spanning Tree Protokol di jambatan ini"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Enkripsi"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Kesalahan"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet Adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet Beralih"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Fail Sistem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Penapis swasta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Penapis tak berguna"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Selesai"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Tetapan Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Status Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Firmware Flash"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Paksa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Fragmentasi Ambang"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Bingkai Meletup"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Setup Umum"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Menuju ke halaman konfigurasi yang relevan"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Menutup"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Di sini anda boleh mengkonfigurasi aspek asas peranti anda seperti nama host "
+"atau zon."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Menyembunyikan ESSID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entri host"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "IP host atau rangkaian"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nama Host"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Nama Host"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Alamat IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "Konfigurasi IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identiti"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Jika memori fizikal anda tidak cukup data yang boleh digunakan sementara "
+"menukar ke peranti-penukar yang dihasilkan dalam jumlah RAM berguna yang "
+"lebih tinggi. Berhati-hatilah bahawa penukaran data adalah proses yang "
+"sangat lambat kerana peranti-penukar tidak boleh diakses dengan datarates "
+"yang tinggi pada RAM."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Mengabaikan /etc/hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Abaikan antara muka"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Abaikan fail yang selesai"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Masuk"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interface"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Tak Sah"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Username dan / atau password tak sah! Sila cuba lagi."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan "
+"memori flash, sila buat pengesahan pada fail gambar!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+#, fuzzy
+msgid "Join Network"
+msgstr "Gabung Rangkaian"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Log Kernel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Kunci"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Tamatkan"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Bahasa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Sewa fail"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Sisa masa penyewaan"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Batas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Link Pada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Load"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Masa Tempatan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Soalan tempatan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Log soalan"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Login"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Logout"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Penapis alamat MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Penapis MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Senarai MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memori"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Penggunaan Memori (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mode"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Alat modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Mount Point"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Mount Points"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Mount Points menentukan di mana titik peranti memori akan melekat pada fail "
+"sistem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Mounted fail sistems"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nama"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nama rangkaian baru"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigation"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Rangkaian"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Kemudian »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Tidak ada peraturan dalam rantai ini"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Kebisingan"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Pada halaman ini anda boleh mengkonfigurasi antara muka rangkaian. Anda "
+"boleh menjembatani beberapa antara muka dengan menanda jambatan antara muka "
+"gelanggang dan masukkan beberapa nama antara muka rangkaian dipisahkan "
+"dengan ruang. Anda juga boleh menggunakan antara muka VLAN notasi. Seperti "
+"eth0.1."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Pilihan"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Keluar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Keseluruhan"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Pemilik"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Pengkapsulan PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Paket"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Kata laluan"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Kata laluan pengesahan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Kata Laluan Kunci Swasta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Path ke CA-Sijil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Path ke Kunci Swasta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Lakukan reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Tetapan Fizikal"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Sila masukkan username dan kata laluan anda."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Dasar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Mencegah komunikasi sesama Pelanggan"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Teruskan"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Proses"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS-Ambang"
+
+# Ein / Aus, eingehend / ausgehend?
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr "Baca /etc/ethers untuk mengkonfigurasikan DHCP-Server"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reboot sistem operasi peranti anda"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Menerima"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena Penerima"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Rujukan"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Menghapuskan"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Ulangi scan"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Tukar entri"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reset Loket"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Restart Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Mengembalikan"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Kembalikan sandaran"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Kembali"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Laluan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Laluan menentukan di mana interface dan gateway host atau rangkaian tertentu "
+"yang boleh dicapai."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Simpan"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Simpan & Melaksanakan"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tugas Jadual"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Rujuk \"mount\" laman manual untuk detail"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Pisahkan Pelanggan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Perkhidmatan"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Isyarat"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Saiz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Skip"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Skip ke kadar"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Skip ke navigation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Slot masa"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Sumber"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Mula"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Laluan IPv4 Statik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Laluan IPv6 Statik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Statische Einträge"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Laluan Statik"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Order Ketat"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Menyerahkan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Beralih"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistem"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Log Sistem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+# same as RX
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Meja"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Sasaran"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Menamatkan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Karakter yang diizinkan adalah: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> dan <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr "Fail peranti memori atau partisyen, (contohnya: /dev/sda)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 "Failsistem yang digunakan untuk memformat memori (contohnya: ext3)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Fail gambar flash telah di-upload. Berikut ini adalah checksum dan saiz fail "
+"yang berdaftar, membandingkannya dengan fail gambar asli untuk memastikan "
+"integriti data.<br /> Klik butang terus di bawah untuk memulakan prosedur "
+"flash."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Laman berikut telah kembali"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Peraturan berikut sedang aktif pada sistem ini."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Sistem ini sekarang mula flash.<br /> JANGAN TUTUP KUASA UNTUK PERANTI!<br /"
+"> Tunggu beberapa minit sehingga anda cuba untuk menyambung kembali. Mungkin "
+"anda perlu mengemas kini alamat komputer anda untuk mencapai peranti lagi, "
+"bergantung pada tetapan anda."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Format Fail gambar yang diupload tidak disokongkan. Pastikan anda memilih "
+"fail format gambar yang generik untuk platform anda."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr "Ini adalah DHCP hanya dalam rangkaian tempatan."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Ini adalah crontab sistem di mana tugas-tugas yang dijadualkan boleh "
+"ditakrifkan."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Senarai ini memberikan gambaran lebih pada proses sistem yang sedang "
+"berjalan dan statusnya."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang "
+"aktif."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Bahagian ini belum mengandungi nilai-nilai lagi"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Zon masa"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Lalu lintas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Pemindahan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Kelajuan Penghantaran"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Pancar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Daya Pancar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena Pemancar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Jenis"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Perubahan yang belum disimpan"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Uploaded Fail"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Masa Aktif"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Guna /etc/ethers"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Diguna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Username"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Mod"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-Enkripsi memerlukan pemohan wpa (untuk mod pelanggan) atau hostapd "
+"(untuk AP dan mod ad-hoc) yang akan dipasangkan."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adapter Wayarles"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Rangkaian Wayarles"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Gambaran keseluruhan Wayarles"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Keselamatan WLAN"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "mencipta jambatan di antara muka tertentu"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "mematikan"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr "fail dimana DHCP-sewa akan disimpan"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "jika target itu ialah rangkaian"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "Fail DNS tempatan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "Tidak dirinci -atau- buat:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Kembali"
+
+#~ msgid "Design"
+#~ msgstr "Disain"
+
+#~ msgid "Download and install package"
+#~ msgstr "Turun dan memasang pakej"
+
+#~ msgid "Filter"
+#~ msgstr "Penapis"
+
+#~ msgid "Find package"
+#~ msgstr "Cari pakej"
+
+#~ msgid "Install"
+#~ msgstr "Memasang"
+
+#~ msgid "OK"
+#~ msgstr "Baik"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-Konfigurasi"
+
+#~ msgid "Package name"
+#~ msgstr "Nama pakej"
+
+#~ msgid "Software"
+#~ msgstr "Perisian"
+
+#~ msgid "Version"
+#~ msgstr "Versi"
+
+#~ msgid "none"
+#~ msgstr "tidak ada"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Tiada rantai dalam jadual ini"
+
+#~ msgid "help"
+#~ msgstr "Membantu"
+
+#~ msgid "Apply"
+#~ msgstr "Melaksanakan"
+
+#~ msgid "Applying changes"
+#~ msgstr "Melaksanakan perubahan"
+
+#~ msgid "Action"
+#~ msgstr "Aksi"
+
+#~ msgid "Buttons"
+#~ msgstr "Butang"
+
+#~ msgid "Handler"
+#~ msgstr "Kawalan"
+
+#, fuzzy
+#~ msgid "Maximum hold time"
+#~ msgstr "Memegang masa maksimum"
+
+#, fuzzy
+#~ msgid "Minimum hold time"
+#~ msgstr "Memegang masa minimum"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Path ke eksekusi yang mengendalikan acara butang"
+
+#, fuzzy
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Menentukan state butang untuk melaku"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi"
+
+#~ msgid "Leasetime"
+#~ msgstr "Masa penyewaan"
+
+#~ msgid "automatic"
+#~ msgstr "automatik"
+
+#~ 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/package/luci/modules/luci-base/po/no/base.po b/package/luci/modules/luci-base/po/no/base.po
new file mode 100644 (file)
index 0000000..ad06b29
--- /dev/null
@@ -0,0 +1,6622 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2013-03-25 23:36+0200\n"
+"Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language: no\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d minutters vindu, %d sekunds intervall)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s Tilgjengelig)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(tom)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(ingen grensesnitt tilknyttet)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Tilleggs Felt --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Vennligst velg --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- egendefinert --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1 minutts belastning:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15 minutters belastning:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5 minutters belastning:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> spørre port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servere skal følge rekkefølgen "
+"i oppslagsfilen ved spørringer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Nettmaske"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Adresse eller "
+"Nettverk (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Konfigurasjon"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Navn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Maksimalt antall <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> leier"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"Maksimal\">Maks.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> pakke størrelse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"Maksimal\">Maks.</abbr> samtidige spørringer"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "<abbr title=\"Aksesspunkt Navn\">APN</abbr>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "APR terskel for nytt forsøk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "<abbr title=\"Asynchronous Transfer Mode\">ATM</abbr> Broer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+"<abbr title=\"Asynchronous Transfer Mode\">ATM</abbr> Virtuell kanal "
+"identifikator <abbr title=\"Virtual Channel Identifier\">(VCI)</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+"<abbr title=\"Asynchronous Transfer Mode\">ATM</abbr> Virtuell plasserings "
+"identifikator <abbr title=\"Virtual Path Identifier\">(VPI)</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 broer viser innkapslede ethernet i AAL5 forbindelser som virtuelle Linux-"
+"nettverk grensesnitt, dette kan brukes sammen med DHCP eller PPP for å koble "
+"seg mot en leverandørs nettverk."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "<abbr title=\"Asynchronous Transfer Mode\">ATM</abbr> enhetsnummer"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Tilgangskonsentrator"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Aksesspunkt"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Handlinger"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Aktive <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Ruter"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Aktive <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Ruter"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktive Tilkoblinger"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktive DHCP Leier"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktive DHCPv6 Leier"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc (Uavhengig)"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Legg til"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Legg det lokale domenesuffikset til navn utgitt fra vertsfiler"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Legg til grensesnitt..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Tilleggs vertsfiler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adresse"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adresse for tilgang til lokal relébro"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administrasjon"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Avanserte Innstillinger"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Varsle"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Tillat <abbr title=\"Secure Shell\">SSH</abbr> passord godkjenning"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Tillat alle unntatt oppførte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Tillat kun oppførte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Tillat lokalvert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "Tillat eksterne verter å koble til lokale SSH videresendt porter"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Tillat root pålogginger med passord"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Tillat bruker <em>root</em> å logge inn med passord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr "Tillat oppstrøms svar i 127.0.0.0/8 nettet, f.eks for RBL tjenester"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenne 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenne 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Antennekonfigurasjon"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Alle soner"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Tilknytt grensesnitt..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Tilkoblede Klienter"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Godkjenning"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritativ"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorisasjon er nødvendig"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Automatisk oppdatering"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Tilgjengelig"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Gjennomsnitt:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Tilbake"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Tilbake til oversikt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Tilbake til konfigurasjon"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Tilbake til oversikt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Tilbake til skanne resultat"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Sikkerhetskopi"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Sikkerhetskopiering/Firmware oppgradering"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Sikkerhetskopier filliste"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Ugyldig adresse oppgitt!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Nedenfor er listen med filer som blir sikkerthetskopiert. Listen består av "
+"konfigurasjonsfiler som er merket av opkg, essensielle enhets filer og andre "
+"filer valgt av bruker."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Overstyr falske NX Domener"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Bro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Sammenkoble grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Bro enhetsnummer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Slå på ved oppstart"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s Trådløs Kontroller"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 Trådløs Kontroller"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Bufret"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU forbruk (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Lenke"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Endringer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Endringer utført."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Endrer administrator passordet for tilgang til enheten"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Kontroller"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Kontrollsum"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Velg brannmur sonen du ønsker å knytte til dette grensesnittet. Velg "
+"<em>uspesifisert</em> for å fjerne grensesnittet fra den tilknyttede sonen. "
+"Eller fyll ut <em>Opprett</em> feltet for å definere en ny sone og tilknytte "
+"grensesnittet til det."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Velg det eller de nettverk du vil legge til dette trådløse grensesnittet, "
+"eller fyll ut <em>Opprett</em> feltet for å definere et nytt nettverk."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Krypteringsmetode"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Klikk \"Opprett arkiv\" for å laste ned et tar arkiv av de gjeldende "
+"konfigurasjons filer."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Klient"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Klient ID som sendes ved DHCP spørring"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Lukk inaktiver tilkoblinger etter angitt antall sekunder, bruk 0 for en "
+"kontinuerlig tilkobling"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Lukk liste..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Henter data..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Kommando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Vanlige Innstillinger"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Konfigurasjon"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Bekreftelse"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Koble til"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Tilkoblet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Tilkoblingsgrense (antall)"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Tilkoblinger"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Land"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Landskode"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Gjelder det følgende grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Gjelder de følgende grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Opprett/Tildel brannmur sone"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Opprett Grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Opprett en bro over flere grensesnitt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritisk"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron logg nivå"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Egendefinerte Grensesnitt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Tilpasser oppførselen til enhetens <abbr title=\"Light Emitting Diode\">LED</"
+"abbr>s om mulig."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP Server"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP og DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP klient"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-Alternativer"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS videresendinger"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Feilsøking"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Standard %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Standard gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Standard tilstand"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definer et navn for dette nettverket."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Definer flere DHCP valg, f.eks \"<code>192.168.2.1,192.168.2.2</code>\" som "
+"annonserer forskjellige DNS servere til klientene."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Fjern"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Fjern dette nettverket"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destinasjon"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Enhet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Enhet Konfigurasjon"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Nettverksdiagnostikk"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Katalog"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Deaktiver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Deaktiver <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"for dette nettverket."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Deaktivert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Forkast oppstrøms RFC1918 svar"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Avstand Optimalisering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Avstand i meter til det medlem av nettverket som er lengst unna."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Antennevariasjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 er en kombinert <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>-Server og <abbr title=\"Domain Navn System\">DNS</abbr>-"
+"Fremsender for <abbr title =\"Network Address Translation\">NAT</abbr> "
+"brannmurer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Ikke cache negative svar, f.eks for ikke eksisterende domener"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Ikke videresend forespørsler som ikke kan besvares med offentlige "
+"navneservere"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Ikke videresend reverserte oppslag for lokale nettverk"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domene kreves"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Domene hviteliste"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Ikke videresend <abbr title=\"Domain Name System\">DNS</abbr>-Forespørsler "
+"uten <abbr title=\"Domain Name System\">DNS</abbr>-Navn"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Last ned sikkerhetskopi"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear Instans"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear tilbyr <abbr title=\"Secure Shell\">SSH</abbr>-nettverks shell "
+"tilgang og en integrert <abbr title=\"Secure Copy\">SCP</abbr> server"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Dynamisk <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dynamisk tunnel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Dynamisk tildeling av DHCP adresser til klienter. Om deaktivert, kan en kun "
+"bruke klienter med statisk leie."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-metode"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Endre"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Endre dette grensesnittet"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Endre dette nettverket"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Krisesituasjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Aktiver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Aktiver <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Aktiver HE,net dynamisk endepunkt oppdatering"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Aktiver IPv6 på PPP lenke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Aktiver Jumbo Frames gjennomgang"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Aktiver NTP klient"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Aktiver TFTP server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Aktiver VLAN funksjonalitet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Aktiver 'læring' og 'aldring'"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Aktiver dette monteringspunktet"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Aktiver denne swapenhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Aktiver/Deaktiver"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Aktivert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Aktiverer Spanning Tree Protocol på denne broen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Innkapsling modus"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Kryptering"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Sletter..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Feil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet Tilslutning"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet Svitsj"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Utvid vertsliste"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Utgår"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "Utløpstid på leide adresser, minimum er 2 minutter (<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Ekstern systemlogg server"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Ekstern systemlogg server port"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Filnavn fra boot image annonsert til klienter"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Filsystem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrer private"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtrer ubrukelige"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Finn og koble til nettverk"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Fullfør"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Brannmur"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Brannmur Innstillinger"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Brannmur Status"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Firmware Versjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Fast kilde port for utgående DNS-spørringer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Firmware Oppradering"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Flash firmware..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Flash nytt firmware image"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Flash operasjoner"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Flasher..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Bruk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Bruk CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"Bruk DHCP i dette nettverket, selv om en annen DHCP server er oppdaget."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Bruk TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Bruk TKIP og CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Videresend DHCP trafikk"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Videresend kringkastingstrafikk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Videresending modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Fragmenterings Terskel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Ledig"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Kun GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Gateway porter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Generelle Innstillinger"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Generelt Oppsett"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Opprett arkiv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Generell 802.11%s Trådløs Kontroller"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Det oppgitte passordet var ikke korrekt, passord ble ikke endret!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Gå til passord konfigurasjon..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Gå til relevant konfigurasjonen side"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net passord"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Slå av"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Her kan du konfigurere grunnleggende aspekter av enheten som f.eks. dens "
+"vertsnavn eller tidssone."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Skjul <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Vertsoppføringer"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Verts utløpstid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"Verts-<abbr title=\"Internet Protocol Address\">IP</abbr> eller Nettverk"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Vertsnavn"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Vertsnavn som sendes ved DHCP forespørsel"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Vertsnavn"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP adresse"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 Brannmur"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 adresse"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 kringkasting"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 nettmaske"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "IPv4 prefikslengde"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-Adresse"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 Brannmur"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 adresse"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 gateway"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6 prefiks"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "IPv6 prefikslengde"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-Adresse"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-i-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-over-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-over-IPv4 (6til4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identitet"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr "Hvis oppgitt vil denne enhet monteres ut fra dens UUID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr "Hvis oppgitt vil denne enheten bli montert utfra dens Volumnavn"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Dersom ikke avmerket blir ingen standard rute konfigurert"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Dersom ikke avmerket blir de annonserte DNS server adresser ignorert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Om ruterens fysiske minne er utilstrekkelig, ubrukte data kan midlertidig "
+"gjøres om til en swap-enhet som gir deg mere tilgjengelig <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Vær oppmerksom på at bruk av swap er "
+"mye langsommere en <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorer grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorer oppslagsfil"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Firmware"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "i"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Tidsavbrudd etter innaktivitet"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Innkommende:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Informasjon"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Oppstartskript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Oppstartsskript"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Installer pakken %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Installer protokoll utvidelser..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Grensesnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Grensesnitt Konfigurasjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Grensesnitt Oversikt"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Grensesnittet kobler til igjen..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Grensesnittet er ikke tilgjengelig eller er ikke tilknyttet."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Grensesnitt"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Intern server feil"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Ugyldig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "Ugyldig VLAN ID gitt! Bare IDer mellom %d og %d er tillatt."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Det virker som du prøver å flashe med en firmware som ikke passer inn i "
+"flash-minnet, vennligst kontroller firmware filen!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScript kreves!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Koble til nettverket"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Koble til nettverk: Trådløs Skanning"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Behold innstillinger"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kjerne Logg"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Kjerne Versjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Nøkkel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Nøkkel #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Drep"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP Server"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP ekko feil terskel"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP ekko intervall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Volumnavn"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Språk"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Språk og Utseende"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "<abbr title=\"Leasefile\">Leie-fil</abbr>"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Gjenværende leietid"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "La stå tomt for automatisk oppdagelse"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "La stå tomt for å bruke gjeldene WAN adresse"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Forklaring:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Grense"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Forbindelse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Liste med <abbr title=\"Domain Name System\">DNS</abbr> servere som "
+"forespørsler blir videresendt til"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Liste over domener hvor en tillater RFC1918 svar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Liste over verter som returneren falske NX domene resultater"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Lytt kun på det angitte grensesnitt, om ingen er angitt lyttes det på alle"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Lytte-port for innkommende DNS-spørring"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Belastning"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Belastning Gjennomsnitt"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Laster"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Lokal IPv4 adresse"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Lokal IPv6 adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Lokal Oppstart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Lokal tid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Lokalt domene"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Lokalt domene spesifikasjon. Navn som passer dette domenet blir aldri "
+"videresendt, de blir kun løst av DHCP eller vertsfiler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr "Lokalt domenesuffiks lagt til DHCP navn og vertsfil oppføringer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Lokal server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Lokaliser vertsnavn avhengig av subnett hvis flere IP-adresser er "
+"tilgjengelig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Lokalisere søk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Logg nivå"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Logg spørringer"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Logging"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Logg inn"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Logg ut"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Laveste leide adresse, forskjøvet fra nettverks adressen."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-Adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-Addresse Filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-Filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-Liste"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Maksimalt antall aktive DHCP leieavtaler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Maksimalt antall samtidige DNS spørringer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Maksimalt antall utleide adresser."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Minne"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Minne forbruk (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrisk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Mangler protokoll utvidelse for proto %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modus"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Modem initiering tidsavbrudd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Monterings Enhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Monterings Punkt"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Monterings Punkter"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Monterings Punkter - Monterings Enhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Monterings Punkter - Swap Enhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Monterings punkter definerer hvor lagrings enheter blir tilsluttet "
+"filsystemet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Monterings alternativer"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Monterings punkt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Monterte Filsystemer"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Flytt ned"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Flytt opp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTP server kandidater"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Navn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Navnet til det nye grensesnittet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Navnet til det nye nettverket"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigasjon"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Nettmaske"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Nettverk"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Nettverks Verktøy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Nettverks boot image"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Nettverk uten grensesnitt."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Neste »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Ingen DHCP server er konfigurert for dette grensesnittet"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Ingen filer funnet"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Ingen informasjon tilgjengelig"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Ingen negative cache"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Ingen nettverk er konfigurert på denne enheten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Ingen nettverksnavn spesifisert"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Ruteren er ikke passordbeskyttet!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Ingen regler i denne tabellen"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Ingen sone tilknyttet"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Støy"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Støy:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Ingen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Ikke funnet"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Ikke tilknyttet"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Ikke tilkoblet"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Merk"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Forsinkelse ved tilstand Av"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"På denne siden kan du konfigurere nettverks grensesnittet. Du kan "
+"sammenkoble flere grensesnitt ved å hake av \"Sammekoble grensesnitt\" "
+"feltet og skrive inn navn på grensesnittene atskilt med mellomrom. Du kan "
+"også bruke <abbr title=\"Virtual Local Area Network\">VLAN</abbr> betegnelse "
+"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for eksempel\">f.eks</abbr>: "
+"<samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Forsinkelse ved tilstand -På-"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Enten Vertsnavn eller Mac-adresse må oppgis!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Ett eller flere felt inneholder ugyldige verdier!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Ett eller flere obligatoriske felter har ingen verdi!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Åpne liste..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Innstilling endret"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Innstilling fjernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Alternativer"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Andre:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Ut"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Ugående:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Overstyr MAC adresse"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Overstyr MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Overstyr gatewayen mottatt av DHCP respons"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Overstyr nettmaske sendt til klienter. Normalt er nettmasken beregnet ut fra "
+"subnettet som blir tildelt."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Overstyr tabellen som brukes for interne ruter"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Oversikt"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Eier"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP passord"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP brukernavn"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA Innkapsling"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Pakken libiwinfo er nødvendig!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pakker"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "En del av sone %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Passord"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Passord godkjenning"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Passord for privatnøkkel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Sti til CA-sertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Sti til klient-sertifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Sti til privatnøkkel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Maksimalt:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Omstart nå"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Foreta nullstilling"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Phy Hastighet:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Fysiske Innstillinger"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pakker."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Skriv inn ditt brukernavn og passord."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Policy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Port status:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Annta at peer er uten forbindelse om angitt LCP ekko feiler, bruk verdi 0 "
+"for å overse feil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Hindrer klient-til-klient kommunikasjon"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Fortsett"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Prosesser"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protokoll til det nye grensesnittet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Protokoll støtte er ikke installert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Funger som NTP Server"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Lag nytt nettverk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Kvalitet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS Terskel"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "RX Rate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radius-Accounting-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radius-Accounting-Secret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radius-Accounting-Server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius-Authentication-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius-Authentication-Secret"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius-Authentication-Server"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Benytt <code>/etc/ethers</code> for å konfigurere <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Fjerne dette trådløse nettverket? Slettingen kan ikke omgjøres!\n"
+"Du kan miste kontakten med ruteren om du er tilkoblet via dette nettverket."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Vil du nullstille alle endringer?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Vil du endre protokoll?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Tilkoblinger Sanntid"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Grafer i sanntid"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Belastning Sanntid"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Trafikk Sanntid"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Trådløst i sanntid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Binde beskyttelse"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Omstart"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Starter på nytt..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Omstarter operativsystemet på enheten"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Motta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Mottak antenne"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Koble til igjen"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referanser"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relay"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Relay bro"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Relay mellom nettverk"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Relay bro"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Ekstern IPv4 adresse"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Avinstaller"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Skann på nytt"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Erstatt oppføring"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Erstatt trådløs konfigurasjon"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Nullstill"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Nullstill Tellere"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Nullstill til standard innstilling"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Oppslag og Vertsfiler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "<abbr title=\"Resolvefile\">Oppslagsfil</abbr>"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Omstart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Omstart Brannmur"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Gjenoppretting"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Gjenopprett sikkerhetskopi"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Vis/Skjul passord"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Tilbakestill"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Rot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Rot katalog for filer gitt fra TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Ruter Passord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Ruter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Ruter, angir hvilket nettverksgrensesnitt og hvilken gateway som brukes for "
+"å nå et gitt nettverk eller vert."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Kjør filsystem sjekk før montering av enheten"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Kjør filsystem sjekk"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH Tilgang"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-Nøkler"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Lagre"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Lagre & Aktiver"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Skann"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Planlagte Oppgaver"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Seksjon lagt til"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Seksjon fjernet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Se \"mount\" manpage for detaljer"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Send LCP ekko forespørsler etter angitt intervall i sekunder, dette er kun "
+"gjeldene dersom feilterskelen er nådd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Separerte Klienter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Server Innstillinger"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Tjeneste navn"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tjeneste type"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Tjenester"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Oppsett tidssynkronisering"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Oppsett DHCP server"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Vis gjeldende liste med sikkerhetskopifiler"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Slå av dette grensesnittet"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Signal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Størrelse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Gå videre"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Gå til innhold"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Gå til navigasjon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Slot tid"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Noen felt er ugyldige, kan ikke lagre verdier!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Beklager, objektet du spurte om ble ikke funnet."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Beklager, det oppstod en uventet feil på serveren."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Beklager, men finner ikke støtte for 'sysupgrade', ny firmware må derfor "
+"flashes manuelt. Viser til wiki for installering av firmare på forskjellige "
+"enheter."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Kilde"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Angir den lyttende porten for denne <em>Dropbear</em> instansen"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Angir maksimalt antall feilede ARP forespørsler før verter ansees frakoblet"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr "Angir maksimalt antall sekunder før verter ansees som frakoblet"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Angi krypteringsnøkkelen her."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Start"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Start prioritet"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Oppstart"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statiske IPv4 Ruter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statiske IPv6 Ruter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Statiske Leier"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statiske Ruter"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Statisk adresse"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Statisk leieavtaler brukes til å tildele faste IP adresser og symbolske "
+"vertsnavn til DHCP klienter. Dette er nødvendig om grensesnittet ikke er "
+"dynamisk konfigurert og kun klienter med dhcp leieavtale får IP."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stop"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Streng overholdelse"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Send"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Swap Enhet"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Svitsj"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Svitsj %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Svitsj %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Svitsj protokoll"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Synkroniser med nettleser"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synkroniser..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "System"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "System Logg"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "System Egenskaper"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "System logg buffer størrelse"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP Innstillinger"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP server roten"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "TX rate"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabell"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Mål"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Avslutte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"<em>Enhet Konfigurasjon</em> seksjonen omhandler innstillingene av den "
+"trådløse enheten som kanaler, sende stryke eller antenne valg. Disse "
+"innstillingene er delt mellom alle definerte trådløse nettverk opprettet "
+"utfra denne enhet. (om den trådløse enheten støtter mulit-SSID). Nettverks "
+"innstillinger som kryptering eller kanaler er gruppert i <em>Grensesnitt "
+"Konfigurasjon</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Pakken <em>libiwinfo-lua</em> er ikke installert. Du må installere denne "
+"pakken for å kunne konfigurerer trådløse enheter!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"IPv6 prefikset tilordnet mot leverandør, ender som regel med <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Gyldige tegn er: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> og "
+"<code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Filenheten til partisjonen eller minnet (<abbr title=\"for eksempel\">f.eks."
+"</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Filsystemet som ble brukt til å formatere partisjonen eller minnet. (<abbr "
+"title=\"for eksempel\">f.eks.</abbr> <samp><abbr title=\"Third Extended "
+"Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Firmwaren ble lastet opp. Nedenfor er kontrollsum og filstørrelse oppført, "
+"sammenlign dem med den opprinnelige filen for å sikre dataintegriteten.<br /"
+"> Klikk \"Fortsett\" nedenfor for å starte flash prosedyren."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Følgende endringer er forkastet"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Følgende regler er aktiver på systemet."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Det angitte nettverksnavnet er ikke unikt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Maskinvaren er ikke multi-SSID kapabel og den ekisterende konfigurasjonen "
+"vil bli erstattet om du fortsetter."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr "Lengden IPv4 prefikset i bits, resten brukt i IPv6-adresser."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Lengden på IPv6 prefikset i bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Nettverks portene på ruteren kan kombineres til flere <abbr title=\"Virtual "
+"Local Area Network\">VLAN</abbr>s der datamaskiner kan kommunisere direkte "
+"med hverandre. <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s "
+"brukes ofte for å skille ulike nettverk segmenter. Det er vanlig og ha en "
+"Uplink port for tilkobling til større nettverk som internett og andre porter "
+"til lokalt nettverk."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Den valgte protokoll må ha en enhet tilknyttet"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"Systemet sletter konfigurasjonspartisjonen nå, enheten vil bli startet på "
+"nytt når dette er utført."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Systemet flashes nå.<br /> IKKE SLÅ AV ENHETEN!<br /> Vent noen minutter før "
+"du prøver å koble til igjen. Det kan være nødvendig å fornye ip-adressen til "
+"datamaskinen din for å nå enheten på nytt. (avhengig av innstillingene dine)"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Den opplastede programvaren er av et format som ikke støttes. Sørg for at du "
+"velger det generelle firmware-bildet for din plattform."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Det er ingen aktive leieavtaler."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Det finnes ingen endriger å reversere!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Det finnes ingen endringer!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Det er ingen enhet som er tilordnet ennå, vennligst legg til en "
+"nettverksenhet i \"Fysiske Innstillinger\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Det er ikke satt noe passord på denne ruter. Vennligst konfigurer et "
+"passord, dette beskytter webgrensesnittet og aktiverer SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Dette IPv4 adressen til relayet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Dette er en liste med 'shell glob patterns' for å matche filer og kataloger "
+"som skal inkluderes under sysupgrade. Endrede filer i /etc/config/ og "
+"enkelte andre konfigurasjoner blir automatisk bevart."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Dette er innholdet i /etc/rc.local. Her kan du legge til egne kommandoer som "
+"blir startet ved slutten av boot sekvensen. (før 'exit 0')"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Dette er den lokale endepunkt adressen som ble tildelt av tunnel 'broker', "
+"adressen ender vanligvis med <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Dette er den eneste <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> server i det lokale nettverket"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Dette er systemets crontab, hvor planlagte oppgaver kan defineres."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Dette er vanligvis adressen til nærmeste PoP som drives av tunell 'broker'"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Denne seksjonen inneholder ennå ingen verdier"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Tidssynkronisering"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Tiden Synkroniseringen er ikke konfigurert ennå."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Tidssone"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"For å gjenopprette konfigurasjonsfiler, kan du her laste opp et backup arkiv "
+"som ble opprettet tidligere. For å nullstille firmwaren til opprinnelig "
+"tilstand, klikker du på \"Utfør nullstilling\" (kun mulig på squashfs "
+"firmwarer)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Totalt Tilgjengelig"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Trafikk"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Overføring"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Overførings rate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Sende"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Sende styrke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Sende Antenne"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Utløser"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Utløsende Tilstand"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Tunnel ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Tunnel grensesnitt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Tx-Styrke"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Type"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Kun UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB Enhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Kan ikke sende"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Uhåndtert"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Ulagrede Endringer"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Protokoll type er ikke støttet."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Last her opp en sysupgrade-kompatibel firmware som skal erstatte den "
+"kjørende firmware. Merk av \"Behold innstillinger\" for å beholde gjeldene "
+"konfigurasjon. (en kompatibel firmware er nødvendig)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Last opp arkiv..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Opplastet Fil"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Oppetid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Bruk <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Bruk DHCP gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Bruk DNS servere annonsert av peer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Bruk ISO/IEC 3166 alpha2 landskoder."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Bruk MTU på tunnel grensesnitt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Bruk TTL på tunnel grensesnitt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Bruk kringkasting flagg"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Bruk egendefinerte DNS servere"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Bruk standard gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Bruk gateway metrikk"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Bruk rutingtabellen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Bruk <em>Legg til</em> knappen får å legge til en leieavtale. <em>MAC-"
+"Adresse</em> identifiserer verten, <em>IPv4-Adresse</em> angir hvilken "
+"statisk IP adresse som skal brukes og <em>Vertsnavn</em> blir symbolsk "
+"tilknyttet den anmodende verten."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Brukt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Brukte Nøkler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Brukernavn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs på %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs på %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN server"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Leverandør klasse som sendes ved DHCP spørring"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Bekreft"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP åpent system"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP delt nøkkel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP passord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Modus"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA passord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-Kryptering krever at wpa_supplicant (for klient-modus) eller hostapd "
+"(for AP og ad-hoc-modus) er installert."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Venter på at endringer utføres..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Venter på at kommando fullføres..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Advarsel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Trådløs"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Trådløs Tilslutning"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Trådløst Nettverk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Trådløs Oversikt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Trådløs Sikkerhet"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Trådløs er deaktiver"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Trådløs er ikke tilknyttet"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Trådløst starter på nytt..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Trådløst nettverk er deaktivert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Trådløst nettverk er aktivert"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Skriv mottatte DNS forespørsler til syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Her kan du aktivere eller deaktivere installerte oppstartsskript. Enheten må "
+"omstartes før endringene blir tatt i bruk.<br /><strong>Advarsel: Om du "
+"deaktiverer nødvendige init skript som f.eks. \"nettverk\", kan enheten bli "
+"utilgjengelig! </strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere "
+"skikkelig."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "enhver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "brokoblet"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "opprett:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "Oppretter en bro mellom angitte grensesnitt"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "Deaktiver"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "utgått"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"filen der gitt <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leier vil bli lagret"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "videresend"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-dupleks"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "halv-dupleks"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "skjult"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "Dersom målet er et nettverk"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "inndata"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "lokal <abbr title=\"Domain Navn System\">DNS</abbr>-fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nei"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "ingen forbindelse"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "av"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "på"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "åpen"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "rutet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "tagget"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "ukjent"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "ubegrenset"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "uspesifisert"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "uspesifisert --eller-- opprett:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "utagget"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "ja"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Tilbake"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Her kan du lime inn felles SSH-nøkler(en per linje), for SSH godkjenning."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Passordet er endret!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Ukjent feil, passordet ble ikke endret!"
+
+#~ msgid "Design"
+#~ msgstr "Design"
+
+#~ msgid "Available packages"
+#~ msgstr "Tilgjengelige pakker"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Viser bare pakker som inneholder"
+
+#~ msgid "Download and install package"
+#~ msgstr "Last ned og installer pakken"
+
+#~ msgid "Filter"
+#~ msgstr "Filter"
+
+#~ msgid "Find package"
+#~ msgstr "Finn pakke"
+
+#~ msgid "Free space"
+#~ msgstr "Ledig plass"
+
+#~ msgid "Install"
+#~ msgstr "Installer"
+
+#~ msgid "Installed packages"
+#~ msgstr "Installerte pakker"
+
+#~ msgid "No package lists available"
+#~ msgstr "Ingen pakkelister tilgjengelig"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "<abbr title=\"Open PacKaGe Management\">OPKG</abbr>-Konfigurasjon"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Pakkelistene er eldre enn 24 timer"
+
+#~ msgid "Package name"
+#~ msgstr "Pakkenavn"
+
+#~ msgid "Software"
+#~ msgstr "Programvare"
+
+#~ msgid "Update lists"
+#~ msgstr "Oppdater lister"
+
+#~ msgid "Version"
+#~ msgstr "Versjon"
+
+#~ msgid "none"
+#~ msgstr "ingen"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Deaktiver DNS oppsett"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 og IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Kun IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Kun IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Gyldig leietid"
+
+#~ msgid "Multicast address"
+#~ msgstr "Multicast adresse"
+
+#~ msgid "Protocol family"
+#~ msgstr "Protokoll familie"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Ingen lenker i denne tabellen"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Konfigurasjonsfiler vil bli bevart."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Merk: Konfigurasjonsfiler vil bli slettet"
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Parvis: %s / Gruppe: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Aktiver dette nettverket"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b Trådløs Kontroller"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Grensesnittet slår seg av..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Grensesnittet er koblet til igjen"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Grensesnittet er slått av"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b Trådløs Kontroller"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s Trådløs Kontroller"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Slå av dette grensesnittet \"%s\" ?\n"
+#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette "
+#~ "grensesnittet."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Kobler til igjen"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Slå av dette nettverket"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Trådløst startet på nytt"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Trådløst er slått av"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP Leier"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6 Leier"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Fjerne dette grensesnittet? Slettingen kan ikke omgjøres!\n"
+#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette "
+#~ "grensesnittet."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Slå av dette nettverket ?\n"
+#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette "
+#~ "grensesnittet."
+
+#~ msgid "Sort"
+#~ msgstr "Sortering"
+
+#~ msgid "help"
+#~ msgstr "Hjelp"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4 WAN Status"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6 WAN Status"
+
+#~ msgid "Apply"
+#~ msgstr "Bruk"
+
+#~ msgid "Applying changes"
+#~ msgstr "Utfører endringer"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Konfigurasjons endring utført."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Lagre &#38; Aktiver"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Følgende endringer er foretatt"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Det finnes ingen endringer som kan utføres!"
+
+#~ msgid "Action"
+#~ msgstr "Handling"
+
+#~ msgid "Buttons"
+#~ msgstr "Knapper"
+
+#~ msgid "Handler"
+#~ msgstr "Behandler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maksimal holde tid"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimum holde tid"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Sti til program som håndterer handling ved bruk av knapp"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Spesifiserer knappens handlemønster"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Denne siden gir mulighet for å definerte egne knappers handlingsmønster"
+
+#~ msgid "Leasetime"
+#~ msgstr "<abbr title=\"Leasetime\">Leietid</abbr>"
+
+#~ 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."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Koble til nettverk: Innstilling"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "Port %d er utagget i flere VLANs!"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "VLAN grensesnitt"
diff --git a/package/luci/modules/luci-base/po/pl/base.po b/package/luci/modules/luci-base/po/pl/base.po
new file mode 100644 (file)
index 0000000..d821840
--- /dev/null
@@ -0,0 +1,6655 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-04-20 09:40+0200\n"
+"PO-Revision-Date: 2019-01-05 19:30+0200\n"
+"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
+"Language-Team: Polish\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d nieprawidłowe pole(pola)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s jest nieotagowany w wielu grupach VLAN!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(okno %d minut, interwał %d sekund)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(dostępne %s)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(pusty)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(brak podłączonych interfejsów)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Dodatkowe pole --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Proszę wybrać --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- własne --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- dopasuj według urządzenia --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- dopasuj po etykiecie --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- dopasuj po uuid --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Obciążenie 1 min.:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Obciążenie 15 min.:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Obciążenie 5 min.:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr "Identyfikator 6-oktetowy jako ciąg szesnastkowy - bez dwukropków"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "802.11w maksymalny czas oczekiwania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "802.11w interwał ponawiania prób"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "Port wywołania <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "Port serwera <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Nazwa <abbr title=\"Domain Name System\">DNS</abbr> będzie rozwijana przez "
+"kolejne serwery w porządku podanym w resolvfile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Adres <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Brama <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "Maska sieci <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Adres sieci (CIDR) <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Brama <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr "Sufiks <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>(hex)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Konfiguracja diod <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nazwa diody <abbr title=\"Light Emitting Diode\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Adres <abbr title=\"Media Access Control\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"Maksymalna ilość\">Maks.</abbr> dzierżaw <abbr title=\"Dynamic "
+"Host Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"Maksymalny\">Maks.</abbr> rozmiar pakietu <abbr title="
+"\"Extension Mechanisms for Domain Name System\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"Maksymalna ilość\">Maks.</abbr> zapytań równoczesnych"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Uwaga: musisz ręcznie zrestartować usługę cron, jeśli plik crontab był "
+"pusty przed edycją."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr "Wymagane jest ponowne zalogowanie ponieważ sesja wygasła."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Próg powtórzeń ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Mosty ATM"
+
+# Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identyfikator kanału wirtualnego ATM (VCI)"
+
+# j.w.
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Mosty ATM eksponują enkapsulowaną sieć Ethernet w połączeniach AAL5 jako "
+"wirtualne interfejsy sieciowe systemu Linux, które mogą być używane w "
+"połączeniu z protokołem DHCP lub PPP w celu polączenia się z siecią dostawcy."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Numer urządzenia ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "ID dostawcy systemu ATU-C"
+
+# co to takiego?
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Koncentrator dostępowy (ATM)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Punkt dostępowy"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Akcje"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Aktywne trasy routingu <abbr title=\"Internet Protocol Version 4\">IPv4</"
+"abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Aktywne trasy routingu <abbr title=\"Internet Protocol Version 6\">IPv6</"
+"abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktywne połączenia"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktywne dzierżawy DHCP"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktywne dzierżawy DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Dodaj"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "Dodaj adres IPv4…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "Dodaj adres IPv6…"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "Dodaj klucz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Dodaj lokalny sufiks domeny do nazw urządzeń z pliku hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Dodaj nowy interfejs..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Dodatkowe pliki Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Dodatkowe pliki serwera"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adres"
+
+# Na upartego można by zrobić Adres dostępowy mostu przekaźnikowego - ale kto to zrozumie?
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adres dostępowy do \"relay bridge\""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Zarządzanie"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Ustawienia zaawansowane"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "Agregacja siły transmisji (ACTATP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alarm"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Alias Interfejsu"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Alias \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Wszystkie serwery"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+"Przydziel sekwencyjnie adresy IP, zaczynając od najmniejszego dostępnego"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Przydzielaj adresy IP po kolei"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "Pozwól aby tryb AP rozłączał stacje STA w oparciu o niski stan ACK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Pozwól wszystkim oprócz wymienionych"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Zezwalaj na starsze wersje 802.11b"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Pozwól tylko wymienionym"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Pozwól tylko sobie (localhost)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Zezwalaj zdalnym hostom na łączenie się z lokalnie przekazywanymi portami SSH"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Zezwól na logowanie roota przy pomocy hasła"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Pozwól użytkownikowi <em>root</em> na logowanie się przy pomocy hasła"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Dozwolone adresy IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Zawsze rozgłaszaj domyślny router"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "Zawsze wyłączony (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "Zawsze włączony (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Zawsze używaj kanału 40 MHz, nawet jeśli kanał dodatkowy nachodzi na inny. "
+"Używanie tej opcji nie jest zgodne z IEEE 802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"Rozgłaszaj jako domyślny router nawet jeśli publiczny prefiks nie jest "
+"dostępny."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Rozgłaszaj domeny DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Rozgłaszaj serwery DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Ustawienia anteny"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Dowolna strefa"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Zatwierdź mimo to"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "Żądanie zatwierdzenia nie powiodło się ze statusem <code>%h</code>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Architektura"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+"Przypisz część danej długości każdego publicznego prefiksu IPv6 do tego "
+"interfejsu"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Przypisz interfejsy..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+"Przypisz cześć prefiksu za pomocą szesnastkowego ID subprefiksu dla tego "
+"interfejsu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Połączone stacje"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "Połączeni"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Uwierzytelnianie"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autorytatywny"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Wymagana autoryzacja"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Automatyczne odświeżanie"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Dostępne"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Średnia:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Wróć"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Wróć do przeglądu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Wróć do konfiguracji"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Wróć do przeglądu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Wróć do wyników skanowania"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Kopia zapasowa"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Kopia zapasowa / aktualizacja firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Kopia zapasowa listy plików"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Wprowadzono zły adres"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Interwał Beaconu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Poniżej widoczna jest lista plików przeznaczonych do kopii zapasowej. "
+"Zawiera ona zmienione pliki konfiguracyjne oznaczone przez opkg, podstawowe "
+"pliki systemowe, oraz pliki oznaczone do kopiowania przez użytkownika."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Szybkość transmisji"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Podrób statystyki NXDOMAIN"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Most"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Interfejs mostu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Numer Mostu (urządzenia)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Podnieś przy stracie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Bezprzewodowy kontroler Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Bezprzewodowy kontroler Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Buforowana"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Użycie CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "Połączenie nieudane"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Uwaga: Zostanie wymuszone uaktualnienie systemu"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Łańcuch"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "Zmień hasło logowania"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Zmiany"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Zmiany zostały zastosowane."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "Zmiany zostały cofnięte."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Zmienia hasło administratora"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "Zmieniam hasło…"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanał"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Sprawdź"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Suma kontrolna"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Wybierz mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz "
+"<em>nieokreślone</em> aby usunąć interfejs z przypisanej strefy lub wybierz "
+"pole <em>utwórz</em> aby zdefiniować nową strefę i przypisać ją do "
+"interfejsu."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Wybierz sieć/sieci które chcesz przyłączyć do tego interfejsu "
+"bezprzewodowego lub wypełnij pole <em>utwórz</em> aby utworzyć nową sieć."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Szyfr"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Kliknij \"Twórz archiwum\" aby pobrać archiwum tar zawierające bieżące pliki "
+"konfiguracyjne."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"Kliknij \"Zapisz mtdblock\", aby pobrać określony plik mtdblock. (UWAGA: TA "
+"FUNKCJA JEST DLA PROFESJONALISTÓW! )"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Klient"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Nazwa (ID) klienta do wysłania podczas negocjacji DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "Zamknij"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Zamknij nieaktywne połączenia po określonym czasie podanym w sekundach, "
+"wpisz 0 aby uzyskać stałe połączenie."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Zamknij listę..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Zbieranie danych..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Polecenie"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "Komentarz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Konfiguracja podstawowa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyłączając "
+"retransmisję ramek klucza EAPOL, które są używane do instalowania kluczy. To "
+"obejście może powodować problemy z interoperacyjnością i zmniejszoną "
+"odporność kluczowych negocjacji, szczególnie w środowiskach o dużym "
+"natężeniu ruchu."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Konfiguracja"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "Konfiguracja nieudana"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Pliki konfiguracyjne zostaną zachowane"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "Konfiguracja została zastosowana."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "Konfiguracja została wycofana!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Potwierdzenie"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Połącz"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Połączony"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limit połączeń"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "Próba połączenia nieudana"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Połączenia"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Kraj"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Kod kraju"
+
+# Pokrywa następujące interfejsy
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Pokrywa następujący interfejs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Pokrywa następujące interfejsy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Utwórz / Przypisz strefę firewalla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Utwórz interfejs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Utwórz most pomiędzy wieloma interfejsami"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Krytyczne"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Poziom logowania Cron`a"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interfejs niestandardowy"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Delegowany niestandardowy prefiks IPv6"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Własne pliki (certyfikaty, skrypty) mogą pozostać w systemie. Aby zapobiec "
+"temu, wykonaj najpierw reset do ustawień fabrycznych"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "Własny interwał flash (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Dostosuj zachowanie diod <abbr title=\"Light Emitting Diode\">LED</abbr> "
+"urządzenia jeśli jest to możliwe."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr "DAE-Klient"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr "DAE-Port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Serwer DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP i DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Klient DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opcje DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "Klient DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "Tryb DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "Serwis DHCPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Przekierowania DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "Sprawdzanie DNSSEC bez podpisu"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "Status DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr "Interwał DTIM"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Szybkość przesyłania danych"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Domyślne %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "Domyślna ścieżka routingu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Brama domyślna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "Domyślnie jest to stateless + stateful"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Stan domyślny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Określ nazwę dla tej sieci."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Zdefiniuj dodatkowe opcje DHCP, np. \"<code>6,192.168.2.1,192.168.2.2</code>"
+"\" rozgłasza domyślne serwery DNS klientom DHCP."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Usuń"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "Usuń klucz"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Usuń tą sieć"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Interwał komunikatu o wskazaniu dostawy ruchu"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Opis"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Przeznaczenie"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Urządzenie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Konfiguracja urządzenia"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Urządzenie jest uruchamiane ponownie ..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Urządzenie nieosiągalne!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Urządzenie nieosiągalne! Wciąż czekam na urządzenie..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnostyka"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Katalog"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Wyłącz <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> na "
+"tym interfejsie."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Wyłącz szyfrowanie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Wyłącz tą sieć"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Wyłączony"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Wyłączone (domyślnie)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Rozłączaj przy niskim stanie ramek ACK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Odrzuć wychodzące odpowiedzi RFC1918"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Próba rozłączenia nie powiodła się"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optymalizacja odległości"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Odległość do najdalej oddalonego członka sieci w metrach."
+
+# Jak poprzednio trzymam się konwencji
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Wielorakość"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 jest kombajnem serwera <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> połączonym z serwerem <abbr title=\"Domain Name System"
+"\">DNS</abbr>. Jest to serwer przekazujący (Fowarder) dla firewalli <abbr "
+"title=\"Network Address Translation\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Nie cache`uj odpowiedzi negatywnych, np. nie dla bieżących domen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Nie przekazuj zapytań które nie mogą być zrealizowane przez publiczne "
+"serwery nazw"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "Czy na pewno chcesz usunąć następujący klucz SSH?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Wymagana domena"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Whitelist domen (Dozwolone domeny)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Nie przekazuj zapytań <abbr title=\"Domain Name System\">DNS</abbr> bez "
+"nazwy <abbr title=\"Domain Name System\">DNS</abbr>'a"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Pobierz kopię zapasową"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Pobierz mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Usługa Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear oferuje zdalny dostęp do konsoli (shell`a) poprzez swojego klienta "
+"<abbr title=\"Secure Shell\">SSH</abbr> oraz serwer <abbr title=\"Secure Copy"
+"\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> dynamiczne"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Tunel dynamiczny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Dynamicznie rezerwuje adresy DHCP dla klientów. Jeśli jest wyłączone tylko "
+"klienci posiadający stałe dzierżawy będą obsłużeni."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Metoda EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Edycja"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Edytuj ten interfejs"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Edytuj tą sieć"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Zagrożenie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Włącz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"Włącz nasłuchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Włącz <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Włącz negocjację IPv6"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Włącz negocjację IPv6 na łączu PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Włącz przechodzenie ramek Jumbo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Włącz klienta NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Włącz serwer TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Włącz funkcjonalność VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Włącz przycisk WPS, wymaga WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Włącz środki zaradcze dotyczące ponownej instalacji kluczy (KRACK)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Włącz uczenie się i starzenie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Włącz ten punkt montowania"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Włącz ten swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Wlącz/Wyłącz"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Włączony"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Włącz nasłuchiwanie IGMP na tym moście"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"Aktywuje szybki roaming pomiędzy punktami dostępowymi, które należą do tej "
+"samej domeny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+"Włącz protokół <abbr title=\"Spanning Tree Protocol\">STP</abbr> na tym "
+"moście"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Sposób enkapsulacji"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Szyfrowanie"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Usuwanie..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Błąd"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Ilość błędów (ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Karta Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch Ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Wyklucz interfejsy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Rozwiń hosty"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "Oczekiwano %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Wygasa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Czas wygasania dzierżawy adresu, minimum to 2 Minuty (<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Serwer zewnętrzny dla logów systemowych"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Port zewnętrznego serwera logów systemowych"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Protokół zewnętrznego serwera logów systemowych"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr "Nie udało się zatwierdzić w ciągu %ds, czekam na wycofanie…"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Plik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Rozgłoszono nazwę pliku obrazu startowego do klientów"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "System plików"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtruj prywatne"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtruj bezużyteczne"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "Finalizacja nie powiodła się"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Znajdź i podłącz się do sieci"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Zakończ"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Ustawienia firewalla"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Stan firewalla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Plik firmware"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Wersja firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Stały port źródłowy dla wychodzących zapytań DNS"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Aktualizuj firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Wgraj obraz..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Wgraj nowy firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operacje aktualizacji"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Flashowanie..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "Dostęp do zapisu flashmemory (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Wymuś"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "Wymuś tryb 40MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Wymuś CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"Wymuś uruchomienie serwera DHCP w tej sieci nawet gdy wykryto inny serwer."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Wymuś TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Wymuś TKIP i CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Wymuś połączenie"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Wymuś uaktualnienie"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Przekazuj ruch DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "Próby korekcji błędów (FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Przekazuj broadcast`y"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Tryb przekazywania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Próg Fragmentacji"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Dzielenie ramek"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Wolna"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Tylko GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Brama"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "Adres bramy jest nieprawidłowy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Porty bramy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Ustawienia główne"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Ustawienia podstawowe"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Wygeneruj konfigurację"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "Wygeneruj PMK lokalnie"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Twórz archiwum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Ogólny bezprzewodowy kontroler 802.11%s"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"Hasło nie zostało zmienione, wpisane poprzednie hasło routera jest "
+"niewłaściwe!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Globalne opcje sieciowe"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Przejdź do konfiguracji hasła..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Przejdź do powiązanych ustawień"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Gość"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Hasło HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Rozłącz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr "Błędy kodu nagłówka (HEC)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "Interwał Heartbeata (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Tutaj możesz skonfigurować podstawowe ustawienia twojego urządzenia, np. "
+"nazwę hosta, strefę czasową."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"Ukryj <abbr title=\"Extended Service Set Identifier (Nazwę sieci)\">ESSID</"
+"abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "Ukryj puste łańcuchy"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Wpisy PC"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Czas wygasania hosta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "<abbr title=\"Internet Protocol Address\">IP</abbr> lub sieć Hosta"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Zawartość znacznika Host-Uniq"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nazwa hosta"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Nazwa hosta wysyłana podczas negocjacji DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Nazwy hostów"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "Protokół IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Adres IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "Nieprawidłowy adres IP"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "Brakuje adresu IP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Firewall IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "Źródłowy IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Adres IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Broadcast IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Brama IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Maska IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Długość prefiksu IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Adres IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Firewall IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "Sąsiedztwo IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Ustawienia IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 Prefiks-ULA"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "Źródłowy IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Adres IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "Wskazówka przypisania IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "Długość przydziału IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Brama IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefiks IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Długość prefiksu IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "Sufiks IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Adres IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-w-IPv4 (RFC4213)"
+
+# 6rd to nie "szóste", tylko IPv6 rapid deployment
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-przez-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-przez-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Tożsamość"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Jeśli podano, zainstaluj urządzenie poprzez jego UUID zamiast <abbr title="
+"\"fixed device node\">ustalonego węzła urządzenia</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Jeśli podano, zainstaluj urządzenie poprzez nazwę partycji zamiast <abbr "
+"title=\"fixed device node\">ustalonego węzła urządzenia</abbr>"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Jeśli odznaczone, nie ma zdefiniowanej domyślnej ścieżki routingu"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Jeśli odznaczone, rozgłoszane adresy serwerów DNS są ignorowane"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Jeśli ilość twojej pamięci fizycznej jest niewystarczająca, nieużywane "
+"miejsce na dysku może być tymczasowo wykorzystane na urządzenie pliku "
+"wymiany. W rezultacie większa ilość pamięci <abbr title=\"Random Access "
+"Memory\">RAM</abbr> będzie dostępna. Uwaga - plik wymiany jest dużo "
+"wolniejszy niż pamięć <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignoruj interfejs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignoruj pliki resolve"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Obraz"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "W"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Czas bezczynności"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Przychodzący:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Błąd inicjalizacji"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Skrypt startowy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Skrypty startowe"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+"Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instaluj pakiet %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instaluj rozszerzenia protokołów..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfejs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Konfiguracja Interfejsu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Przegląd Interfejsów"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Ponowne łączenie interfejsu..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Nazwa interfejsu"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfejsy"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Wewnętrzny błąd serwera"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Niewłaściwy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko ID pomiędzy %d a %d."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko unikalne ID."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Izoluj klientów"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Wygląda na to, że próbujesz wgrać obraz większy niż twoja pamięć flash, "
+"proszę sprawdź czy to właściwy obraz!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScript jest wymagany!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Połącz z siecią"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Przyłącz do sieci: Skanuj sieci Wi-Fi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Przyłączanie do sieci: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Zachowaj ustawienia"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Log jądra"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Wersja jądra"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Klucz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Klucz #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Zabij"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Serwer L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Próg błędu echa LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Interwał echa LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Oznaczenie"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Język"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Wygląd i język"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Opoźnienie"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Czas dzierżawy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Plik dzierżaw"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Pozostały czas dzierżawy"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Pozostaw puste, aby automatycznie wykryć"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Pozostaw puste, aby użyć bieżącego adresu WAN"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"Ogranicz usługi DNS do podsieci interfejsów, na których obsługujemy DNS."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Tłumienie linii (LATN)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Tryb linii"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Stan linii"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Czas działania linii"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Połączenie aktywne"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Lista serwerów <abbr title=\"Domain Name System\">DNS</abbr> do których będą "
+"przekazywane zapytania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Lista domen zezwalających na odpowiedzi RFC1918"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Nasłuchuj interfejs"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Nasłuchuj port"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Słuchaj tylko na podanym interfejsie, lub jeśli nie podano na wszystkich"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Port nasłuchu dla przychodzących zapytań DNS"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Obciążenie"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Średnie obciążenie"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Ładowanie"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "Ładowanie kluczy SSH…"
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "Lokalny adres IP jest nieprawidłowy"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Lokalny adres IP do przypisania"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Lokalny adres IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Lokalny adres IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Tylko serwis lokalny"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Lokalny autostart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Czas lokalny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domena lokalna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Specyfikacja domeny lokalnej. Nazwy należące do tej domeny nie są "
+"przekazywane dalej ani rozwijane przez DHCP lub tylko pliki hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Przyrostek (sufiks) domeny przyłączany do nazw DHCP i wpisów w pliku hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Serwer lokalny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Zlokalizuj nazwę hosta w zależności od odpytującej podsieci jeśli jest "
+"dostępne więcej niż jedno IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Zapytania lokalizujące"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Poziom logowania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Loguj zapytania"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Logowanie"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Zaloguj"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Wyloguj"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr "Utrata sygnału (LOSS)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Adres MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtr adresów MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtr adresów MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Lista MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "Reguła MAP jest nieprawidłowa"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+"Upewnij się, że klonujesz główny system plików, używając czegoś podobnego do "
+"poleceń poniżej:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "Max. Osiągalna przepustowość danych (ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Maksymalna dozwolona liczba jednoczesnych zapytań DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Maksymalny czas podany w sekundach do pełnej gotowości modemu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Maksymalna liczba dzierżawionych adresów."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Pamięć"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Użycie pamięci (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metryka"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Brakujące rozszerzenie protokołu dla protokołu %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Tryb"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Model"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Domyślny modem"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Urządzenie modemowe"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "Zapytanie dotyczące modemu nie powiodło się"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Limit czasu inicjacji modemu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Wpis montowania"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Punkt montowania"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Punkty montowania"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Punkty montowania - Wpis montownia"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Punkty montowania - Wpis Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Punkty montowania definiują gdzie urządzenie pamięci zostanie podłączone do "
+"systemu plików"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Opcje montowania"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Punkt montownia"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Zamontowane systemy plików"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Przesuń w dół"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Przesuń w górę"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "Proxy NDP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Lista serwerów NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nazwa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nazwa nowego interfejsu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nazwa nowej sieci"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Nawigacja"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Maska sieci"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Sieć"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Narzędzia sieciowe"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Sieciowy obraz startowy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "Aktywność urządzenia sieciowego (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "Urządzenie sieciowe nie jest obecne"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Sieć bez interfejsów"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Następna »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Brak skonfigurowanego serwera DHCP dla tego interfejsu"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nie znaleziono plików"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Brak dostępnych informacji"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "Brak zgodnej delegacji prefiksu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Brak odwrotnego cache`a"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Brak skonfigurowanych sieci na tym urządzeniu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Nie podano nazwy sieci"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Nie ustawiono hasła!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "Nie ma jeszcze kluczy publicznych."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Brak zasad w tym łańcuchu."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Brak wyników skanowania..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Brak przypisanej strefy"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Szum"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Margines szumów (SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Szum:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "Nieprzewidziane błedy CRC (CRC_P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "Bez symboli wieloznacznych"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Brak"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normalny"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Nie znaleziono"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Nie powiązany"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Nie podłączony"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Spostrzeżenie"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"Liczba buforowanych wpisów DNS (max wynosi 10000, 0 oznacza brak pamięci "
+"podręcznej)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "Uzyskaj adres IPv6"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Zwłoka wyłączenia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Na tej stronie można skonfigurować interfejsy urządzenia. Możesz zmostkować "
+"kilka interfejsów zaznaczając pole \"mostkuj interfejsy\", a następnie "
+"wpisując ich nazwy oddzielone spacjami. Można także użyć notacji <abbr title="
+"\"Virtual Local Area Network\">VLAN`ów</abbr> <samp>INTERFACE.VLANNR</samp> "
+"(<abbr title=\"na przykład\">np.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Zwłoka włączenia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Nazwa hosta lub adres MAC musu być podany!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Jedno lub więcej pól zawiera nieprawidłowe wartości!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Jedno lub więcej pól nie posiada wpisanych wartości!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Otwórz listę..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Częstotliwość"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Wartość zmieniona"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Usunięto wartość"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Opcjonalny"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Opcjonalne. Dopuszczalne wartości: 'eui64', 'random', stałe wartości takie "
+"jak '::1' lub '::1:2'. Kiedy prefiks IPv6 (taki jak 'a:b:c:d::') jest "
+"odbierany z serwera delegującego, użyj sufiksa (takiego jak '::1') aby "
+"utworzyć adres IPv6 ('a:b:c:d::1') dla tego interfejsu."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Opcjonalny. Opis peera."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opcje"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Inne:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Wychodzące"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Wychodzący:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Nadpisz adres MAC"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Nadpisz MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Nadpisz TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Nadpisz TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Nadpisz domyślną nazwę interfejsu"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Nadpisz adres bramy w odpowiedziach DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Nadpisz maskę sieci wysyłaną do klientów. Zazwyczaj jest ona wyliczana z "
+"podsieci która jest rozsyłana."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Nadpisz tablicę routingu używaną dla wewnętrznych tras routowania"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Przegląd"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Właściciel"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Hasło PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Nazwa użytkownika PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "Kod PIN został odrzucony"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "PMK R1 Push"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Enkapsulacja PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Wymagany pakiet libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pakiety"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Część strefy %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Hasło"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Uwierzytelnianie hasłem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Hasło lub klucz prywatny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Wewnętrzne hasło klucza prywatnego"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "Wklej lub przeciągnij plik klucza SSH…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Ścieżka do certyfikatu CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Ścieżka do certyfikatu klienta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Ścieżka do Klucza Prywatnego"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Ścieżka do wewnętrznego certyfikatu CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Ścieżka do wewnętrznego certyfikatu Klienta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Ścieżka do wewnętrznego klucza prywatnego "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Szczyt:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Brakuje adresu Peera"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Wykonaj restart"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Wykonaj reset"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Szybkość Phy:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Ustawienia sprzętowe"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pktw."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Proszę wprowadź swój login i hasło."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Zasada"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Status portu:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Tryb zarządzania energią"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "Przewidziane błedy CRC (CRCP_P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Preferuj LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Preferuj UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Przypuszczaj że klient może być martwy po zadanej ilości błedów echa LCP, "
+"wpisz 0 aby zignorować te błędy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Zapobiega komunikacji między klientem a klientem"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Klucz prywatny"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Wykonaj"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Procesy"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Profil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokół"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protokół nowego interfejsu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Wsparcie dla protokołu nie jest zainstalowane"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Włącz serwer NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Utwórz nową sieć"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Klucz publiczny"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"Klucze publiczne pozwalają na logowanie bez haseł SSH z wyższymi "
+"zabezpieczeniami w porównaniu do użycia zwykłych haseł. Aby przesłać nowy "
+"klucz do urządzenia, wklej klucz publiczny zgodny z OpenSSH lub przeciągnij "
+"plik <code>.pub</code> do pola wejściowego."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "Komórkowy QMI"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Jakość"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Zapytaj o wszystkie dostępne serwery <abbr title=\"Domain Name System\">DNS</"
+"abbr> "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Próg RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Szybkość RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Port Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Sekret Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Serwer Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Port Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Sekret Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Serwer Radius-Authentication"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Surowe bajty kodowane szesnastkowo. Pozostaw puste, chyba że wymaga tego "
+"dostawca internetowy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Przejrzyj plik <code>/etc/ethers</code> aby skonfigurować serwer <abbr title="
+"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Naprawdę usunąć tę sieć bezprzewodową? Usunięcie nie może zostać cofnięte!\n"
+"Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez tę "
+"sieć!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Naprawdę usunąć wszelkie zmiany?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Naprawdę zmienić protokół?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Połączenia w czasie rzeczywistym"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Wykresy w czasie rzeczywistym"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Obciążenie w czasie rzeczywistym"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Ruch w czasie rzeczywistym"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Wi-Fi w czasie rzeczywistym"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Termin reasocjacji"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Przypisz ochronę"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Restart"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Ponowne uruchamianie..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Uruchamia ponownie system na twoim urządzeniu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Odebrane"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena odbiorcza"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Połącz ponownie ten interfejs"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referencje"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Przekaźnik"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Most przekaźnikowy"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Przekaźnik pomiędzy sieciami"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Most przekaźnikowy"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Zdalny adres IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Zdalny adres IPv4 lub FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Usuń"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Powtórz skanowanie"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Zamień wpis"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Zamień konfigurację WiFi"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Zażądaj adresu IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Zażądaj długość prefiksu IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Wymagany"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Wymagane jest wsparcie dla DNSSEC; sprawdzanie, czy niepodpisane odpowiedzi "
+"w domenie rzeczywiście pochodzą z domen bez znaku"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Resetuj"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Wyczyść liczniki"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Resetuj do domyślnych"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Pliki Resolv i Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Plik Resolve"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Uruchom ponownie"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Uruchom ponownie Firewalla"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "Uruchom ponownie interfejs radiowy"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Przywróć"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Przywróć kopię zapasową"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Odsłoń/Ukryj hasło"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Przywróć"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Przywróć zmiany"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "Żądanie powrotu nie powiodło się ze statusem <code>%h</code>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Przywracanie konfiguracji…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Katalog Root`a dla plików udostępnianych przez TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Typ trasy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Serwis rozgłoszeniowy routera"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Hasło routera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Ścieżki routingu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Ścieżki routingu pokazują routerowi przez który interfejs oraz którą bramę "
+"może skomunikować się z daną siecią lub komputerem."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "Reguła"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+"Sprawdź czy system plików nie zawiera błędów przed zamontowaniem urządzenia"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Sprawdź czy system plików nie zawiera błędów"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Dostęp SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "Adres serwera SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "Port serwera SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Klucze SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr "SWAP"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Zapisz"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Zapisz i zastosuj"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Zapisz mtdblock"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Zapisz zawartość mtdblock"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Skanuj"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "Próba skanowania nie powiodła się"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Zaplanowane Zadania"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Dodano sekcję"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Usunięto sekcję"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Aby poznać szczegóły przeczytaj stronę instrukcji \"mount\""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"Wybierz 'Wymuś uaktualnienie', aby wgrać obraz nawet jeśli sprawdzenie "
+"formatu obrazu nie powiedzie się. Używaj tylko wtedy, gdy masz pewność że "
+"oprogramowanie jest poprawne i jest przeznaczone dla Twojego urządzenia!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Wysyłaj żądania echa LCP w określonym przedziale czasowym, efektywne tylko "
+"wtedy gdy jest ustawiony próg błedu LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Rozdziel klientów"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Ustawienia serwera"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nazwa serwisu"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Typ serwisu"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Serwisy"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "Sesja wygasła"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Ustaw właściwości interfejsu, niezależnie od operatora łącza (nie wpływa na "
+"programy operatora które ustanawiają połączenie)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Ustawienia synchronizacji czasu"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "Ustawienie PLMN nie powiodło się"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "Ustawienie trybu nie powiodło się"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Ustawienia serwera DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr "Ilość poważnych błedów (SES)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Krótki Wstęp"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Pokaż aktualną listę plików do backupu"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "Pokaż puste łańcuchy"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Wyłącz ten interfejs"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Sygnał"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Tłumienie sygnału (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Sygnał:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Rozmiar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Rozmiar pamięci podręcznej zapytań DNS"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Pomiń"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Pomiń do zawartości"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Pomiń do nawigacji"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Szczelina czasowa"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "Programowy VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Przepraszamy, ale żądany obiekt nie został znaleziony."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Przepraszamy, ale serwer napotkał nieoczekiwany błąd."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Przepraszamy, ale nie ma wsparcia dla trybu sysupgrade. Nowy firmware musi "
+"być wgrany ręcznie. Sprawdź stronę wiki, aby uzyskać instrukcję dla danego "
+"urządzenia."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Źródło"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Podaje katalog do którego jest podłączone urządzenie"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Określa port nasłuchu dla tej instancji <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Określa maksymalną ilość błędów dla zapytania ARP przed założeniem, że host "
+"jest martwy"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Określa maksymalny czas w sekundach przed założeniem, że host jest martwy"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Określ tajny klucz szyfrowania."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Uruchomienie"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Priorytet uruchomienia"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Zatwierdzanie konfiguracji…"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Rozpoczynanie skanowania..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Autostart"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statyczne ścieżki routingu IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statyczne ścieżki routingu IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Dzierżawy statyczne"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statyczne ścieżki routingu"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Stały adres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Statyczne dzierżawy są używane do przypisania stałych adresów IP i "
+"symbolicznych nazw klientom DHCP. Są one również wymagane dla "
+"niedynamicznych konfiguracji interfejsu, gdzie obsługiwane są tylko hosty z "
+"odpowiednim dzierżawami."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "Station inactivity limit"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stop"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Zachowaj kolejność"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Wyślij"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Pomiń rejestrowanie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "Pomiń rejestrowanie rutynowych operacji dla tych protokołów"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Zamień wpis"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Przełącznik"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Przełącznik %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Przełącznik %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Protokół przełącznika"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "Przejdź do notacji listy CIDR"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "Aktywność Switchportu (%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Synchronizuj z przeglądarką"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synchronizacja..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "System"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Log systemowy"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Właściwości systemu"
+
+# Wszędzie używane jest "loga" z małej litery.
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Rozmiar bufora loga systemu"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Ustawienia TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Root serwera TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Szybkość TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tablica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Cel"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Zakończ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Sekcja <em>Konfiguracja Urządzenia</em> zawiera sprzętowe ustawienia toru "
+"transmisji radiowej takie jak kanał, moc sygnału, czy wybór anteny, które to "
+"są wspólne dla wszystkich zdefiniowanych sieci bezprzewodowych (jeśli tor "
+"transmisji jest kompatybilny z transmisją multi-SSID). Ustawienia sieci "
+"takie jak szyfrowanie lub tryb operacji są zebrane w sekcji <em>Konfiguracja "
+"Interfejsu</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Pakiet <em>libiwinfo-lua</em> nie jest zainstalowany. Musisz go zainstalować "
+"aby WiFi prawidłowo zadziałało!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Prefiks IPv6 przypisany do dostawcy, zazwyczaj kończy się <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Dozwolone znaki to: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> "
+"oraz <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "Archiwum kopii zapasowej nie wygląda na prawidłowe."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"Nie można uzyskać dostępu do urządzenia w ciągu %d sekund po zastosowaniu "
+"oczekujących zmian, które spowodowały wycofanie konfiguracji ze względów "
+"bezpieczeństwa. Jeśli jednak uważasz, że zmiany konfiguracji są poprawne, "
+"kontynuuj, stosując je mimo to. Możesz też odrzucić to ostrzeżenie i "
+"edytować zmiany przed ponownym zastosowaniem lub odrzucić wszystkie "
+"oczekujące zmiany, aby zachować aktualnie działający stan konfiguracji."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Plik urządzenia - pamięci lub partycji (<abbr title=\"na przykład\">np.</"
+"abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"System plików, który został użyty do sformatowania nośnika (<abbr title=\"na "
+"przykład\">np.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</"
+"abbr></samp>)"
+
+# Przycisk nazywa się "Wykonaj", więc taki sam opis ma być w podpowiedzi.
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"Obraz flash został przesłany. Poniżej znajduje się suma kontrolna i rozmiar "
+"pliku, porównaj je z orginałem aby zapewnić integralność danych.<br /> "
+"Wciśnij \"Wykonaj\" aby kontynuować aktualizację."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Następujące zmiany zostały odrzucone"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Następujące zasady są obecnie aktywne w tym systemie."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "Podany klucz publiczny SSH został już dodany."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"Podany klucz publiczny SSH jest nieprawidłowy. Podaj odpowiedni publiczny "
+"RSA lub klucze ECDSA."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Podana sieć nie jest unikalna"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Sprzęt nie jest urządzeniem typu multi-SSID, więc bieżąca konfiguracja "
+"zostanie nadpisana nową jeśli będziesz kontynuować."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"Długość prefiksu IPv4 w bitach, pozostała część jest używana w adresach IPv6."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Długość prefiksu IPv6 w bitach"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "Lokalny adres IPv4, na którym tworzony jest tunel (opcjonalnie)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"Porty sieciowe na tym urządzeniu mogą być łączone w kilka sieci <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>, w których komputery mogą "
+"komunikować się ze sobą bezpośrednio. Sieci <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr> są często stosowane w celu oddzielenia różnych "
+"segmentów sieci. Często domyślnie jeden port typu Uplink jest wykorzystywany "
+"do połączenia z większą siecią, taką jak Internet, a inne porty dla sieci "
+"lokalnej."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Wybrany protokół potrzebuje przypisanego urządzenia"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "The submitted security token is invalid or already expired!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"System usuwa teraz partycję konfiguracji i zrestartuje się po zakończeniu."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"System wykonuje flashowanie.<br /> NIE WYŁĄCZAĆ URZĄDZENIA!<br /> Poczekaj "
+"kilka minut, zanim spróbujesz połączyć się ponownie. W zależności od "
+"ustawień może być konieczne odnowienie adresu Twojego komputera, aby dostać "
+"się do urządzenia."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "Hasło systemowe zostało pomyślnie zmienione."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Przesłany plik obrazu nie zawiera obsługiwanego formatu. Upewnij się, że "
+"wybrałeś odpowiedni format obrazu dla danej platformy."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Motyw"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Brak aktywnych dzierżaw."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "Brak zmian do zastosowania."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Brak oczekujących zmian do przywrócenia!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Brak oczekujących zmian!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Żadne urządzenie nie jest jeszcze przypisane. Proszę dołączyć urządzenie "
+"sieciowe na karcie \"Ustawienia sprzętowe\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Hasło nie zostało ustawione. Proszę skonfigurować hasło roota, aby "
+"zabezpieczyć interfejs WWW i włączyć SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Ten adres IPv4 przekaźnika"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+"Ten plik może zawierać linie takie jak 'server=/domain/1.2.3.4' lub "
+"'server=1.2.3.4' dla specyficznych dla domeny lub pełnych serwerów <abbr "
+"title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Jest to lista globalnych wzorców dopasowywania plików i katalogów "
+"uwzględnianych podczas przeprowadzania aktualizacji z użyciem \"sysupgrade"
+"\". Zmodyfikowane pliki w /etc/config/ i w niektórych innych ustawieniach są "
+"automatycznie zachowywane."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"To jest zawartość pliku /etc/rc.local. Wstaw tutaj własne komendy (przed "
+"'exit 0'), aby zostały wykonane pod koniec procesu rozruchu."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"To jest lokalny adres końcowy przypisany przez tunnel broker'a, zwykle "
+"kończący się z <code>...:2/64</code>"
+
+# w tłumaczeniu pojawiła się spacja po DHCP</abbr> co powoduje niepoprawne wyświetlanie się strony z lang PL
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"To jest jedyny serwer <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> w sieci lokalnej"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"To jest system crontab, w którym mogą być zdefiniowane zaplanowane zadania."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Zwykle jest to adres najbliższego PoP prowadzonego przez tunnel broker'a"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich "
+"status."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Ta sekcja nie zawiera jeszcze żadnych wartości"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Synchronizacja czasu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Synchronizacja czasu nie jest jeszcze skonfigurowana."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Strefa czasowa"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "Zaloguj się…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Aby przywrócić pliki konfiguracyjne, możesz przesłać tutaj wcześniej "
+"utworzoną kopię zapasową. Aby przywrócić ustawienia domyślne wciśnij "
+"\"Wykonaj reset\" (możliwe tylko w przypadku obrazu squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Ton"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Całkowicie dostępna"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Trasa routowania"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Ruch"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transfer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Prędkość transmisji"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Nadawanie"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Siła nadawania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena nadajnika"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Trigger"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Rodzaj Triggeru"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Numer identyfikacyjny tunelu"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interfejs tunelu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Moc nadawania"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Typ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Tylko UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Urządzenie USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "Porty USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "Nie można ustalić nazwy urządzenia"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "Nie można ustalić zewnętrznego adresu IP"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "Nie można określić interfejsu źródłowego"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Nie można wysłać"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "Nie można uzyskać ID klienta"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "Nie można rozpoznać nazwy AFTR hosta"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "Nie można rozpoznać nazwy peera"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Czas niedostępnośći (UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Nieznany błąd (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Niezarządzalny"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Odmontuj"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "Klucz beznazwy"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Niezapisane zmiany"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "Nieobsługiwany typ MAP"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Nieobsługiwany modem"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Nieobsługiwany typ protokołu."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Prześlij tutaj obraz zgodny z funkcją sysupgrade, aby zastąpić aktualnie "
+"działające opragramowanie. Zaznacz opcję \"Zachowaj ustawienia\", aby "
+"zachować bieżącą konfigurację (wymagany obraz zgodny z bieżącym "
+"opragramowaniem)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Załaduj archiwum..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Załaduj plik"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Czas pracy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Użyj <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Użyj bramy DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Użyj serwerów DNS rozgłaszanych przez peera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Użyj kodów kraju ISO/IEC 3166 alpha2"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Użyj MTU na interfejsie tunelu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Użyj TTL na interfejsie tunelu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Użyj jako systemu plików root (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Użyj flagi rozgłaszania"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Skorzystaj z wbudowanego zarządzania protokołem IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Użyj własne serwery DNS"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Użyj domyślnej bramy"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Użyj metryki bramy"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Użyj tabeli routingu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Użyj przycisku <em>Dodaj</em>, aby dodać nowy wpis dzierżawy. <em>Adres MAC</"
+"em> identyfikuje hosta, <em>Adres IPv4</em> określa, którego stałego adresu "
+"użyć, natomiast <em>Nazwa hosta</em> jest przypisana jako symboliczna nazwa "
+"do określonego hosta."
+
+# Przy liście zamontowanych systemów plików
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Użyte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Użyte gniazdo klucza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Certyfikat użytkownika (kodowany PEM)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Klucz użytkownika (kodowany PEM)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Nazwa użytkownika"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "Sieci VLAN na %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "Sieci VLAN na %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Serwer VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Port serwera VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Producent"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Klasa producenta do wysłania podczas żądania DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Zweryfikuj"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Wirtualny interfejs dynamiczny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Otwarty system WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Współdzielony klucz WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Hasło WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Tryb WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Hasło WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb klienta) "
+"lub hostapd (tryb AP lub ad-hoc)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Trwa wprowadzenie zmian..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Trwa wykonanie polecenia..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Oczekiwanie na zastosowanie konfiguracji… %ds"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Oczekiwanie na urządzenie..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Ostrzeżenie"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Ostrzeżenie: Istnieją niezapisane zmiany, które zostaną utracone po ponownym "
+"uruchomieniu urządzenia!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "Aktywność Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "Powiązanie klienta Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "Odbiór danych Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "Transmisja danych Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "Wi-Fi włączone (%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Szerokość"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Sieć bezprzewodowa"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adapter bezprzewodowy"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Sieć bezprzewodowa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Przegląd sieci bezprzewodowych"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Zabezpieczenia sieci bezprzewodowych"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Sieć bezprzewodowa jest wyłączona"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Sieć bezprzewodowa jest niepołączona"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Restart sieci bezprzewodowej..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Sieć bezprzewodowa jest wyłączona"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Sieć bezprzewodowa jest włączona"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Zapisz otrzymane żądania DNS do syslog'a"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Zapisz log systemowy do pliku"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Tutaj można włączyć lub wyłączyć zainstalowane skrypty. Zmiany zostaną "
+"zastosowane po ponownym uruchomieniu urządzenia.<br /><strong>Ostrzeżenie: "
+"Jeśli wyłączysz podstawowe skrypty typu \"network\", urządzenie może stać "
+"się nieosiągalne!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Musisz włączyć obsługę JavaScript w swojej przeglądarce, inaczej LuCI nie "
+"będzie działać poprawnie."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "Alogrytm kompresji ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "Strumienie kompresji ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "Ustawienia ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "Rozmiar ZRam"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "dowolny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "zmostkowany"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "utwórz:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "utwórz most na określonych interfejsach"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "wyłącz"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "wyłączony"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "wygasły"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"plik, w którym podano żądania <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr>, zostanie zachowany"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "przekaż"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "pełny-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "pół-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "ukryty"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "tryb hybrydowy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "jeżeli celem jest sieć"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "wejście"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "klucz od 8 do 63 znaków"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "klucz z 5 lub 13 znakami"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "minuty"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "mieszany WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nie"
+
+# skorzystałem z niemieckiego tłumaczenia
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "niepowiązane"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "nieobecny"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "wyłączone"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "włączone"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "otwarte"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "losowy"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "routowane"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "tryb serwera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "otagowane"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "jednostki czasu (TUs / 1.024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "nieznane"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "nielimitowane"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "nieokreślone"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "nieokreślone -lub- utwórz:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "nieotagowane"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "tak"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Wróć"
+
+#~ 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 ""
+#~ "Twój Internet Explorer jest za stary, aby poprawnie wyświetlić tę stronę "
+#~ "zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglądarki, "
+#~ "takiej jak Firefox, Opera czy Safari."
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+# nie ma słowa "autentykacji". Uwierzytelnianie!
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Tutaj wklej swoje klucze publiczne SSH (po jednym w linii), dla "
+#~ "uwierzytelniania SSH"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Pomyślnie zmieniono hasło!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Nieznany błąd, hasło nie zostało zmienione!"
+
+#~ msgid "Design"
+#~ msgstr "Motyw"
+
+#~ msgid "Available packages"
+#~ msgstr "Dostępne pakiety"
+
+#~ msgid "Bind only to specific interfaces rather than wildcard address."
+#~ msgstr ""
+#~ "Powiąż tylko ze specyficznymi interfejsami, a nie z adresami "
+#~ "wieloznacznymi."
+
+#~ msgid ""
+#~ "Build/distribution specific feed definitions. This file will NOT be "
+#~ "preserved in any sysupgrade."
+#~ msgstr ""
+#~ "Kompiluj/rozpowszechniaj określone definicje źródeł. Ten plik NIE "
+#~ "zostanie zachowany w procesie sysupgrade"
+
+#~ msgid ""
+#~ "Custom feed definitions, e.g. private feeds. This file can be preserved "
+#~ "in a sysupgrade."
+#~ msgstr ""
+#~ "Niestandardowe definicje plików danych, np. prywatne źródła. Ten plik "
+#~ "może być zachowany podczas sysupgrade. "
+
+#~ msgid "Custom feeds"
+#~ msgstr "Niestandardowe źródła"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Pokazuję tylko paczki zawierające"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "Dystrybucja źródeł"
+
+#~ msgid "Download and install package"
+#~ msgstr "Pobierz i zainstaluj pakiet"
+
+#~ msgid "Filter"
+#~ msgstr "Filtr"
+
+#~ msgid "Find package"
+#~ msgstr "Znajdź pakiet"
+
+#~ msgid "Free space"
+#~ msgstr "Wolna przestrzeń"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Ogólne opcje dla opkg"
+
+#~ msgid "Install"
+#~ msgstr "Instaluj"
+
+#~ msgid "Installed packages"
+#~ msgstr "Zainstalowane pakiety"
+
+#~ msgid "No package lists available"
+#~ msgstr "Lista pakietów nie jest dostępna"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Konfiguracja OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Lista pakietów jest starsza niż 24 godziny"
+
+#~ msgid "Package name"
+#~ msgstr "Nazwa pakietu"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Rozmiar (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Oprogramowanie"
+
+#~ msgid "Update lists"
+#~ msgstr "Aktualizuj listy"
+
+#~ msgid "Version"
+#~ msgstr "Wersja"
+
+#~ msgid "none"
+#~ msgstr "żaden"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Wyłącz konfigurację DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 oraz IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Tylko IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Tylko IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Czas ważności dzierżawy"
+
+#~ msgid "Multicast address"
+#~ msgstr "Adres Multicast`u"
+
+#~ msgid "Protocol family"
+#~ msgstr "Rodzina protokołów"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Brak łańcuchów w tej tablicy"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Pliki konfiguracyjne zostaną zachowane."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Par: %s / Grup: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Aktywuj tą sieć"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Kontroler bezprzewodowy Hermes 802.11b"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Interfejs jest wyłączany..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Połączono ponownie interfejs"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Wyłączono interfejs"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "Kontroler bezprzewodowy RaLink 802.11%s"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Naprawdę wyłączyć interfejs \"%s\"?\n"
+#~ "Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten "
+#~ "interfejs!"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Łączę ponownie interfejs"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Wyłącz tą sieć"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Zrestartowano sieć bezprzewodową"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Wyłączanie sieci bezprzewodowej"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Dzierżawy DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Dzierżawy DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Naprawdę usunąć ten interfejs? Usunięcie nie może zostać cofnięte!\n"
+#~ "Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez "
+#~ "ten interfejs!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Naprawdę wyłączyć tę sieć?\n"
+#~ "Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten "
+#~ "interfejs!"
+
+#~ msgid "Sort"
+#~ msgstr "Posortuj"
+
+#~ msgid "help"
+#~ msgstr "pomoc"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Status IPv4 WAN"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Status WAN IPv6"
diff --git a/package/luci/modules/luci-base/po/pt-br/base.po b/package/luci/modules/luci-base/po/pt-br/base.po
new file mode 100644 (file)
index 0000000..7a1702d
--- /dev/null
@@ -0,0 +1,6804 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:41+0200\n"
+"PO-Revision-Date: 2018-09-20 21:19-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 2.1.1\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f dB"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s está sem etiqueta em múltiplas VLANs!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(janela de %d minutos, intervalo de %d segundos)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponível)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(vazio)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(nenhuma interface conectada)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Campo Adicional --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Por favor, escolha --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- personalizado --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- casar por dispositivo --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- casar por rótulo --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+"-- casar por <abbr title=\"Universal Unique IDentifier/Identificador Único "
+"Universal\">UUID</abbr> --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- por favor, selecione --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Carga 1 Minuto:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Carga 15 Minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "Identificador hexadecimal de 4 caracteres"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Carga 5 Minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+"Identificador de 6 octetos como uma cadeia hexadecimal - sem dois pontos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r Fast Transition"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "Tempo de expiração máximo da consulta da Associação SA do 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+"Tempo de expiração de tentativa de consulta da Associação SA do 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "Proteção do Quadro de Gerenciamento do 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "Estouro de tempo máximo do 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "Estouro de tempo da nova tentativa do 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+"<abbr title=\"Identificador de Conjunto Básico de Serviços\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+"Porta de consulta <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+"Porta do servidor <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"O servidor <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr> irá "
+"consultar na ordem do arquivo resolvfile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"<abbr title=\"Identificador de Conjunto de Serviços Estendidos\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Endereço <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Roteador <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+"Máscara de rede <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"Endereço do <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr> "
+"Endereço ou rede (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Roteador <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+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)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nome do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Endereço <abbr title=\"Controle de Acesso ao Meio\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"Identificador Único do DHCP\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"Numero máximo de alocações <abbr title=\"Protocolo de Configuração Dinâmica "
+"de Equipamentos\">DHCP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"Tamanho máximo do pacote do <abbr title=\"Extension Mechanisms for Domain "
+"Name System\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "Número máximo de consultas concorrentes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Nota: você precisa reiniciar manualmente o serviço da cron se o arquivo "
+"crontab estava vazio antes da edição."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+"<abbr title=\"Assymetrical Digital Subscriber Line/Linha Digital Assimétrica "
+"para Assinante\">ADSL</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "<abbr title=\"Access Point Name\">APN</abbr>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+"Limite de retentativas do <abbr title=\"Address Resolution Protocol\">ARP</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr "ATM (Asynchronous Transfer Mode)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Ponte ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+"Identificador de Canal Virtual ATM (<abbr title=\"Virtual Channel Identifier"
+"\">VCI</abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+"Identificador de Caminho Virtual ATM (<abbr title=\"Virtual Path Identifier"
+"\">VPI</abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Pontes ATM expõem ethernet encapsuladas em conexões AAL5 como interfaces de "
+"rede virutais no Linux. Estas podem ser usadas em conjunto com o DHCP ou PPP "
+"para discar em um provedor de rede."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Número do dispositivo ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "Identificador de"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrador de Acesso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Ponto de Acceso (AP)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Ações"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Rotas <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr> ativas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Rotas <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr> ativas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Conexões Ativas"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Alocações DHCP ativas"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Alocações DHCPv6 ativas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Adicionar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Adiciona um sufixo de domínio local para equipamentos conhecidos"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Adiciona uma nova interface..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Arquivos adicionais de equipamentos conhecidos (hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Arquivo de servidores adicionais"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Endereço"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Endereço para acessar a ponte por retransmissão local"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administração"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Opções Avançadas"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+"Potência de Transmissão Agregada (<abbr title=\"Aggregate Transmit Power"
+"\">ACTATP</abbr>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Interface Adicional"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Interface adicional de \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Todos os Servidores"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Alocar endereços IP sequencialmente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permitir autenticação <abbr title=\"Shell Seguro\">SSH</abbr> por senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Permitir, em modo AP, a desconexão de estações baseada na baixa qualidade "
+"das confirmações (ACK)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Permitir todos, exceto os listados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Permitir taxas legadas do 802.11b"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Permitir somente os listados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permitir computador local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permitir que equipamentos remotos conectem à portas locais encaminhadas por "
+"SSH"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Permite autenticação do root com senha"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Permite que o usuário <em>root</em> se autentique utilizando senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Permite respostas que apontem para 127.0.0.0/8 de servidores externos, por "
+"exemplo, para os serviços RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Endereços IP autorizados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Sempre anuncie o roteador padrão"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Permitir o uso de canais 40Mhz mesmo se o canal secundário estiver "
+"sobreposto. Esta opção não está de acordo com IEEE 802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr "Anexo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr "Anexos A + L + M (todo)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr "Anexo A G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr "Anexo A G.992.2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr "Anexo A G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr "Anexo A G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr "Anexo B (todo)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr "Anexo B G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr "Anexo B G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr "Anexo B G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr "Anexo J (todo)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr "Anexo L G.992.3 POTS 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr "Anexo M (todo)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr "Anexo M G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr "Anexo M G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Domínios DNS anunciados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Servidores DNS anunciados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Identidade Anônima"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "Montagem Anônima"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "Espaço de Troca (swap) Anônimo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configuração da antena"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Qualquer zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Aplicar sem verificação"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "Pedido para aplicar falhou com o estado <code>%h</code>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Arquitetura"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+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"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Atribuir as interfaces..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Estações associadas"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "Associações"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Grupo de Autenticação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autenticação"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Tipo de Autenticação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritário"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorização Necessária"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Atualização Automática"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Automático"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+"Rede Doméstica Automática (<abbr title=\"Homenet Control Protocol\">HNCP</"
+"abbr>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+"Execute automaticamente a verificação do sistema de arquivos antes da "
+"montagem do dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Montagem Automática de Sistema de Arquivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Montagem Automática do Espaço de Troca (swap)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponível"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Média:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr "B43 + B43C"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr "B43 + B43C + V43"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr "BR / DMR / AFTR"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Voltar"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Voltar para Visão Geral"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Voltar para configuração"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Voltar para visão geral"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Voltar para os resultados da busca"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Cópia de Segurança"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Cópia de Segurança / Gravar Firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Lista de arquivos para a cópia de segurança"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Endereço especificado está incorreto!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Banda"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Intervalo do quadro de monitoramento (Beacon)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Abaixo estão os arquivos para a cópia de segurança. Ela consiste de arquivos "
+"de configuração alterados marcados pelo opkg, arquivos base essenciais e "
+"padrões para a cópia de segurança definidos pelo usuário."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "Interface Vinculada"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "Vincule o túnel a esta interface (opcional)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Taxa de bits"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Substituir Domínio NX Falsos"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Juntar interfaces em uma ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Número da ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Levantar na iniciação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Controlador Wireless Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 Wireless Controlador"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Buffered"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"Certificado da AC; se em branco, será salvo depois da primeira conexão."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Uso da CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "A chamada falhou"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Categoria"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Cuidado: As configurações serão apagadas"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Cuidado: A atualização do sistema será forçada"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Cadeia"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Alterações"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Alterações aplicadas."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "As mudanças foram revertidas."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Muda a senha do administrador para acessar este dispositivo"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"O canal %d não está disponível no domínio regulatório '%s' e foi ajustado "
+"automaticamente para %d."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Verificar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+"Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr "Marque esta opção para remover as redes existentes neste rádio."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Soma de verificação"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Escolha o bloco mtd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Escolha a zona do firewall que você quer definir para esta interface. "
+"Selecione <em>não especificado -ou- criar</em> para remover a interface da "
+"zona associada ou preencha o campo para criar uma nova zona associada a esta "
+"interface."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Escolha a rede (s) que deseja anexar a este interface wireless ou preencha o "
+"<em> criar </em> campo para definir uma nova rede."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Cifra"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Encapsulamento UDP da Cisco"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Clique em \"Gerar arquivo\" para baixar um arquivo tar com os arquivos de "
+"configuração atuais."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"Clique em \"Salvar o bloco mtd\" para baixar o arquivo do bloco mtd "
+"especificado. (NOTA: ESTE RECURSO É PARA PROFISSIONAIS!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Cliente"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+"Identificador do cliente enviando quando a requisição do DHCP é realizada"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Feche as conexões inativas após uma dada quantidade de segundos. Use 0 para "
+"manter as conexões"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Fechar a lista..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Comando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configuração Comum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Dificulta o ataque de reinstalação de chaves no lado do cliente ao "
+"desabilitar a retransmissão de quadros EAPOL-Key que são usados para "
+"instalar chaves. Esta solução de contorno pode causar problemas de "
+"compatibilidade e reduzir a robustez da negociação de chaves, especialmente "
+"em ambientes com muito tráfego."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuração"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "A configuração falhou"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Arquivos de configuração que serão mantidos"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "A configuração foi aplicada."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "A configuração foi revertida!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmação"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Conectar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Conectado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limite de conexão"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "A tentativa de conexão falhou"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Conexões"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"Não foi possível reestabelecer o acesso ao dispositivo depois de aplicar as "
+"mudanças na configuração. Pode ser necessário reconectar se você modificou "
+"configurações relacionadas a rede, como endereços IP ou credenciais de "
+"segurança da rede sem fio."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Código do País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Utilizando a seguinte interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Utilizando as seguintes interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Criar / Atribuir a uma zona de firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Criar Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Criar uma ponte juntando múltiplas interfaces"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Crítico"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Nível de Registro da Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interface Personalizada"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Prefixo IPv6 delegado personalizado"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Arquivos personalizados (certificados, scripts) podem permanecer no sistema. "
+"Para evitar isso, restaure antes as configurações inicias."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Se possível, personaliza o comportamento dos <abbr title=\"Diodo Emissor de "
+"Luz\">LED</abbr>s."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Servidor DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP e DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Cliente DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opções de DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "Cliente DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "Modo DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "Serviço DHCPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Encaminhamentos DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "Rótulo DNS / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr "DNSSEC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "Verificar DNSSEC sem assinatura"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "Tempo de expiração para ociosidade do DPD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "Endereço DS-Lite AFTR"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "Estado da DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "Modo de linha DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+"Intervalo <abbr title=\"Mensagem Indicativa de Envio de Tráfego/Delivery "
+"Traffic Indication Message\">DTIM</abbr>"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Taxa de Dados"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Depurar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Padrão %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Roteador Padrão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "O padrão é sem estado + com estado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Estado padrão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Define um nome para esta rede."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Define opções adicionais do DHCP. Por exemplo "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" que anuncia diferentes servidores "
+"DNS para os clientes."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Apagar"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Apagar esta rede"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Intervalo da Mensagem Indicativa de Envio de Tráfego"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descrição"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destino"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configuração do Dispositivo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "O dispositivo está reiniciando..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Dispositivo não alcançável!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+"O dispositivo está fora de alcance! Ainda aguardando pelo dispositivo..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnóstico"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Número de discagem"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Diretório"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Desabilitar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Desabilita <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"para esta interface."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Desabilitar Cifragem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Desabilitar esta rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Desabilitado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Desabilitado (padrão)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Desassociar quando tiver baixa confirmação de recebimento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+"Descartar respostas de servidores externos para redes privadas (RFC1918)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "A tentativa de desconexão falhou"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Dispensar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Otimização de Distância"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distância para o computador mais distante da rede (em metros)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversidade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 é um servidor combinado de <abbr title=\"Protocolo de Configuração "
+"Dinâmica de Hosts\">DHCP</abbr> e <abbr title=\"Sistema de Nomes de Domínios"
+"\">DNS</abbr> para firewalls <abbr title=\"Tradução de Endereço de Rede"
+"\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Não mantenha em cache para respostas negativas como, por exemplo, para os "
+"domínios inexistentes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Não encaminhe requisições que não podem ser respondidas por servidores de "
+"nomes públicos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Não encaminhe buscas por endereço reverso das redes local"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Requerer domínio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Lista branca de domínios"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Não Fragmentar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Não encaminhar consultas <abbr title=\"Sistema de Nomes de Domínios\">DNS</"
+"abbr> sem o nome completo do <abbr title=\"Sistema de Nomes de Domínios"
+"\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "Abaixo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Baixar a cópia de segurança"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Baixar o bloco mtd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+"Deslocamento <abbr title=\"Razão entre Sinal e Ruído/Signal to Noise Ratio"
+"\">SNR</abbr> do sinal recebido"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear oferece um acesso shell seguro à rede <abbr title=\"Shell Seguro"
+"\">(SSH)</abbr> e um servidor <abbr title=\"Cópia Segura\">SCP</abbr> "
+"integrado"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr "Duas Pilhas Leve (RFC6333)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr> "
+"Dinâmico"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Túnel dinâmico"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Aloca dinamicamente os endereços do DHCP para os clientes. Se desabilitado, "
+"somente os clientes com atribuições estáticas serão servidos."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "Comprimento dos bits EA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Método EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Editar"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+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."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Editar esta interface"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Editar esta rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Emergência"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Ativar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"Habilitar o monitoramento do <abbr title=\"Protocolo de Gerenciamento de "
+"Grupos da Internet/Internet Group Management Protocol\">IGMP</abbr> "
+"(Snooping)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Ativar a atualização de ponto final dinâmico HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Ativar a negociação de IPv6"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Ativar a negociação de IPv6 no enlace PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Ativar o encaminhamento de quadros jumbos (Jumbo Frames)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Ativar o cliente <abbr title=\"Network Time Protocol\">NTP</abbr>"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Habilitar DES Simples"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Ativar servidor TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Ativar funcionalidade de VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Habilite o botão WPS. requer WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+"Habilitar contramedidas contra o ataque de reinstalação de chave (KRACK)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Ativar o aprendizado e obsolescência"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Habilitar espelhamento dos pacotes entrantes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Habilitar espelhamento dos pacotes saintes"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Ativar esta montagem"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "Habilitar esta rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Ativar este espaço de troca (swap)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Ativar/Desativar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Ativado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+"Habilitar o monitoramento do <abbr title=\"Protocolo de Gerenciamento de "
+"Grupos da Internet/Internet Group Management Protocol\">IGMP</abbr> "
+"(Snooping) nesta ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Ativa o protocolo STP nesta ponte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Modo de encapsulamento"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Cifragem"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "Equipamento do ponto final"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "Porta do ponto final"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "Entre com valor personalizado"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "Entre com valores personalizados"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Apagando..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Erro"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Segundos com erro (ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Adaptador Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch Ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Excluir interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Expandir arquivos de equipamentos conhecidos (hosts)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Expira"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Tempo de expiração dos endereços atribuídos. Mínimo é 2 minutos (<code>2m</"
+"code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Externo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "Lista dos Detentor de Chave R0 Externa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "Lista dos Detentor de Chave R1 Externa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Servidor externo de registros do sistema (syslog)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Porta do servidor externo de registro do sistema (syslog)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Protocolo do servidor externo de registro do sistema (syslog)"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Opções adicionais do comando SSH"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+"<abbr title=\"Transição Rápida/Fast Transition\">FT</abbr> sobre  <abbr "
+"title=\"Sistema Distribuído/Distributed System\">DS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "<abbr title=\"Transição Rápida/Fast Transition\">FT</abbr> pelo ar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+"Protocolo de <abbr title=\"Transição Rápida/Fast Transition\">FT</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+"A confirmação das mudanças na configuração não foram confirmadas em %d "
+"segundos. Aguardando a reversão da configuração..."
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Arquivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nome do arquivo da imagem de boot anunciada para os clientes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Sistema de Arquivos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrar endereços privados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtrar consultas inúteis"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "A finalização falhou"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+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"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Procurar e conectar à rede"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Terminar"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "Marca do Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Configurações do Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Estado do Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Arquivo da Firmware"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versão do Firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Porta de origem fixa para saída de consultas DNS"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Gravar Firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Gravar imagem..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Gravar nova imagem do firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Operações na memória flash"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Gravando na flash..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forçar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "Force o modo 40MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forçar CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Forçar o DHCP nesta rede mesmo se outro servidor for detectado."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forçar TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forçar TKIP e CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Forçar o enlace"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Forçar a atualização"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Force o uso do NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "Chave eletrônica do formulário não casa"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Encaminhar tráfego DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+"Segundos a frente de correção de erros ( <abbr title=\"Forward Error "
+"Correction Seconds\">FECS</abbr>)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Encaminhar tráfego broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "Encaminhar o tráfego do parceiro da malha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Modo de encaminhamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Limiar de Fragmentação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Explosão de Quadros (Frame Bursting)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Livre"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"Mais informações sobre interfaces e parceiros WireGuard em <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Somente GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Roteador"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "O endereço do roteador padrão é inválido"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Acesso remoto a portas encaminhadas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Configurações Gerais"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Gerar Configuração"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+"Gerar a <abbr title=\"Chave mestre do emparelhamento/Pairwise Master Key"
+"\">PMK</abbr> localmente"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Gerar arquivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Generico 802.11%s Wireless Controlador"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "A senha de confirmação informada não casa. Senha não alterada!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Configurações Globais"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Opções de rede globais"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Ir para a configuração de senha..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Ir para a página de configuração pertinente"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Senha do Grupo"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Convidado"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Senha HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "Usuário do HE.net"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+"Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr>  "
+"(802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Suspender"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+"Erros de Código de Erro de Cabeçalho (<abbr title=\"Header Error Code\">HEC</"
+"abbr>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Aqui você pode configurar os aspectos básicos do seu equipamento, como o "
+"nome do equipamento ou o fuso horário."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"Ocultar <abbr title=\"Identificador de Conjunto de Serviços Estendidos"
+"\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Equipamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entradas de Equipamentos"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Tempo limite de expiração de equipamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"<abbr title=\"Endereço do Protocolo de Internet\">IP</abbr> do Equipamento "
+"ou Rede"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Conteúdo da etiqueta única do equipamento"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Nome do equipamento"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Nome do equipamento enviado quando requisitar DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Nome dos equipamentos"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Híbrido"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+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>"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "Endereços IP"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "Protocolo IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Endereço IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "O endereço IP é inválido"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "O endereço IP está ausente"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Firewall para IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "Enlace IPv4 Superior"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Endereço IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "Tamanho da atribuição IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Broadcast IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Roteador padrão IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Máscara de rede IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "Prefixo IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Tamanho do prefixo IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr "IPv4+IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Endereço IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4-in-IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Firewall para IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "Vizinhos IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Configurações IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+"Prefixo <abbr title=\"Unique Local Address/Endereço Local Único\">ULA</abbr> "
+"IPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "Enlace IPv6 Superior"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Endereço IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "Sugestão de atribuição IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "Tamanho da atribuição IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Roteador padrão do IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefixo IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Tamanho Prefixo IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "Prefixo roteável IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "Sufixo IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Endereço IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6-PD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-sobre-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-sobre-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identidade PEAP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Se marcado, a cifragem 1DES será habilitada"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Se marcado, a cifragem estará desabilitada"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Se especificado, monta o dispositivo pelo seu UUID ao invés de um nó de "
+"dispositivo fixo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Se especificado, monta o dispositivo pela etiqueta da partiçãoo ao invés de "
+"um nó de dispositivo fixo"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Se desmarcado, nenhuma rota padrão será configurada"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+"Se desmarcado, os endereços dos servidores DNS anunciados serão ignorados"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Se a sua memória física for insuficiente, os dados não utilizados poderão "
+"ser armazenados temporariamente em um dispositivo swap, resultando em uma "
+"maior quantidade de memória <abbr title=\"Memória de Acesso Aleatório\">RAM</"
+"abbr> utilizável. Esteja ciente de que a troca de dados (swap) é um processo "
+"muito lento, uma vez que o dispositivo swap não pode ser acessado com taxas "
+"de transferência tão altas com a memória <abbr title=\"Memória de Acesso "
+"Aleatório\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignorar <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorar interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorar arquivo de resolução de nomes (resolv.conf)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Imagem"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Entrada"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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."
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Tempo limite de inatividade"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Entrando:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Informação"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Falha na iniciação"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script de iniciação"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts de iniciação"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "Instale iputils-traceroute6 para rastrear rotas IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instalar pacote %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instalar extensões de protocolo..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "Dispositivo da interface %q foi migrada automaticamente de %q para &q."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configuração da Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Visão Geral da Interface"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "A interface está reconectando..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Nome da Interface"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "A interface não está presente ou não está conectada ainda."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Interno"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Erro Interno no Servidor"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Valor inválido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"O valor informado do ID da VLAN é inválido! Somente valores entre %d e %d "
+"são permitidos."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+"O valor informado do ID da VLAN é inválido! Somente valores únicos são "
+"permitidos"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Usuário e/ou senha inválida! Por favor, tente novamente."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Isolar Clientes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+"A imagem que está a tentar carregar aparenta nao caber na flash do "
+"equipamento. Por favor verifique o arquivo da imagem!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Conectar à Rede"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Conectar à Rede: Busca por Rede Sem Fio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Juntando-se à rede %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Manter configurações"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Registro do Kernel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versão do Kernel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Chave"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Chave #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Matar"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Servidor L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Limite de falha no eco do LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Intervalo do eco do LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Etiqueta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Idioma"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Idioma e Estilo"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Latência"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Folha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Tempo de concessão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Arquivo de atribuições"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Tempo restante da atribuição"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Deixe vazio para detectar automaticamente"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Deixe vazio para usar o endereço WAN atual"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "Escute somente nestas interfaces e na interface local (loopback)."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Atenuação de Linha (<abbr title=\"Line Attenuation\">LATN</abbr>)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Modo da Linha"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Estado da Linha"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Tempo de Atividade da Linha"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Enlace Ativo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Lista dos servidores <abbr title=\"Domain Name System\">DNS</abbr> para "
+"encaminhar as requisições"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"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."
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Lista de arquivos de chaves SSH para autenticação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+"Lista dos domínios para os quais será permitido respostas apontando para "
+"redes privadas (RFC1918)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+"Lista de servidores <abbr title=\"Domain Name System\">DNS</abbr> que "
+"fornecem resultados errados para consultas a domínios inexistentes (NX)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Interfaces de Escuta"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Porta de Escuta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Escuta apenas na interface especificada. Se não especificado, escuta em todas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Porta de escuta para a entrada das consultas DNS"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Carga"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Carga Média"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Carregando"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "O endereço IP local é inválido"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Endereço IP local para atribuir"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Endereço IPv4 local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Endereço IPv6 local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Somente Serviço Local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Iniciação Local"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Hora Local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domínio Local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Especificação do domínio local. Nomes que casam com este domínio nunca serão "
+"encaminhados e são resolvidos somente pelo DHCP ou pelo arquivos de "
+"equipamentos conhecidos (hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Sufixo do domínio local adicionado aos nomes no DHCP e nas entradas dos "
+"arquivo de equipamentos conhecidos (hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Servidor local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Localizar o nome do equipamento dependendo da subrede requisitante se "
+"mútliplos endereços IPs estiverem disponíveis"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localizar consultas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Travado no canal %s usado por: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Nível de detalhamento de saída dos registros"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Registar as consultas"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Registrando os eventos"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Entrar"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Sair"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+"Segundos de Perda de Sinal (<abbr title=\"Loss of Signal Seconds\">LOSS</"
+"abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Endereço MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtro de Endereço MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtro de MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Lista de MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4over6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "A regra MAC é inválida"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+"<abbr title=\"Maximum Transmission Unit/Unidade Máxima de Transmissão\">MTU</"
+"abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+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:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Manual"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+"Taxa de Dados Atingível Máxima (<abbr title=\"Maximum Attainable Data Rate"
+"\">ATTNDR</abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Número máximo permitido de alocações DHCP ativas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Número máximo permitido de consultas DNS concorrentes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Tempo máximo, em segundos, para esperar que o modem fique pronto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+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.)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Número máximo de endereços atribuídos."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memória"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Uso da memória (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "Identificador da Malha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Métrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "Porta de monitoramento do espelho"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "Porta de origem do espelho"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Extensão para o protocolo %q está ausente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "Domínio da Mobilidade"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Modelo"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Padrão do modem"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Dispositivo do Modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "A consulta das informações do modem falhou"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Estouro de tempo da iniciação do modem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Entrada de Montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Ponto de Montagem"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Pontos de Montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Pontos de Montagem - Entrada de Montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Pontos de Montagem - Entrada da Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Pontos de montagem definem em que ponto um dispositivo de armazenamento será "
+"anexado ao sistema de arquivos"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "Monte sistemas de arquivos não especificamente configurados"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Opções de montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Ponto de montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Montar espalho de troca (swap) não especificamente configurado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Sistemas de arquivos montados"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Mover para baixo"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Mover para cima"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "Modo NAT-T"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "Prefixo NAT64"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "Proxy NDP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "Domínio NT"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Candidatos a servidor NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nome"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nome da nova interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nome da nova rede"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navegação"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Máscara de rede"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Rede"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilitários de Rede"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Imagem de boot pela rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "O dispositivo de rede não está presente"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Rede sem interfaces."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Próximo »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Nenhum Servidor DHCP configurado para esta interface"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Sem NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nenhum arquivo encontrado"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Nenhuma informação disponível"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "Não casou com nenhum prefixo delegado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Nenhum cache negativo"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Nenhuma rede configurada neste dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Nenhum nome de rede foi especificado"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Nenhuma senha definida!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Sem regras nesta cadeia"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Ainda não existem resultados do escaneamento..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Nenhuma zona definida"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Ruído"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+"Margem de Ruído (<abbr title=\"Razão entre Sinal e Ruído/Signal to Noise "
+"Ratio\">SNR</abbr>)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Ruído:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+"Erros CRC Não Preemptivos<abbr title=\"Non Pre-emptive CRC errors\">CRC_P</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "Sem caracter curinga"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Nenhum"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Não Encontrado"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Não conectado"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Não conectado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Aviso: tamanho do nome da interface"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Aviso"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr "Número de entradas DNS em cache (máximo é 10000, 0 desabilita o cache)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "Senha Ofuscada do Grupo"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "Senha Ofuscada"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "Obter Endereço IPv6"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Atraso no estado de desligado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Nesta página pode configurar as interfaces de rede. Esta interface pode "
+"formar uma ponte juntando várias interfaces. Para isto, marque o campo "
+"\"Juntar interfaces em uma ponte\" e informar as várias interfaces de rede. "
+"Pode também usar a notação para <abbr title=\"Rede Local Virtual\">VLAN</"
+"abbr> <samp>INTERFACE.VLANNR</samp> (<abbr title=\"por exemplo\">ex.</abbr>: "
+"<samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Atraso no estado de conexões"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+"É necessário especificar ao menos um nome de equipamento ou endereço MAC!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Um ou mais campos contém valores inválidos!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "Um ou mais valores inválidos/obrigatórios na aba"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Um ou mais campos obrigatórios não tem valor!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Abrir lista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Frequência de Operação"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Opção alterada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Opção removida"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Opcional"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"Opcional. Marca 32 bits dos pacotes cifrados que estão saindo. Entre valores "
+"em hexadecimal, começando com <code>0x</code>."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Opcional. Valores permitidos: 'eui64', 'aleatório', ou valores fixos como "
+"'::1' ou '::1:2'. Quando o prefixo IPv6 (como 'a:b:c:d::') for recebido de "
+"um servidor, use este sufixo (como '::1') para formar o endereço IPv6 ('a:b:"
+"c:d::1') para esta interface."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"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."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "Opcional. Cria rotas para endereços IP Autorizados para este parceiro."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Opcional. Descrição do parceiro."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+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."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "Opcional. Unidade Máxima de Transmissão da interface do túnel."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "Opcional. Porta do parceiro."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+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."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr "Opcional. Porta UDP usada para pacotes saintes ou entrantes."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opções"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Outro:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Saída"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Saindo:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "Interface de Saída"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Sobrescrever o endereço MAC"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+"Sobrescrever o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de "
+"Transmissão\">MTU</abbr>"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Sobrescrever o TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Sobrescrever o TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Sobrescrever o nome da nova interface"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Sobrescrever o roteador padrão nas respostas do DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Sobrescrever a máscara de rede enviada aos clientes. Normalmente, ela é "
+"calculada a partir da máscara da subrede de onde o cliente solicitou o "
+"endereço."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Sobrescrever a tabela usada para as rotas internas"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Visão geral"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Dono"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Senha do PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Usuário do PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "Código PIN rejeitado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "PMK R1 Push"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Encapsulamento PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "Deslocamento PSID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "Comprimento dos bits PSID"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr "PTM/EFM (Modo de Transferência de Pacotes)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "O pacote libiwinfo é necessário!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pacotes"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Parte da zona %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Senha"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autenticação por senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Senha da Chave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Senha da Chave Privada interna"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Senha2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Caminho para o Certificado da AC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Caminho para o Certificado do Cliente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Caminho para a Chave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Caminho para o certificado AC interno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Caminho para o Certificado do Cliente interno"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Caminho para a Chave Privada interna"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Pico:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "Endereço IP do parceiro para atribuir"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "O endereço do parceiro está ausente"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Parceiros"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr "Sigilo Encaminhado Perfeito"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Reiniciar o sistema"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Restaurar as configuração iniciais"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "Manutenção da Conexão Persistente"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Taxa física:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Configurações Físicas"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pcts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Entre com o seu usuário e senha."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Política"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Porta"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Status da porta:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Modo de Gerenciamento de Energia"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+"Erros CRC Preemptivos<abbr title=\"Pre-emptive CRC errors\">CRCP_P</abbr>"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Preferir LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Preferir UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "Prefixo Delegado"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "Chave Compartilhada"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Assumir que o parceiro está morto depois de uma data quantidade de falhas de "
+"echo do LCP. Use 0 para ignorar as falhas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Evite escutar nestas Interfaces."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Impede a comunicação de cliente para cliente"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Chave Privada"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Proceder"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processos"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Perfil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Protocolo"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protocolo para a nova interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "O suporte ao protocolo não está instalado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Fornecer serviço <abbr title=\"Network Time Protocol\">NTP</abbr>"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Prover nova rede"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Ad-Hoc falso (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Chave Pública"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+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."
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "Celular QMI"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Qualidade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Consulte todos os servidores <abbr title=\\\"Sistema de Nomes de Domínios\\"
+"\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "Validade da Chave R0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "Detentor da Chave R1"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "Modo NAT-T (RFC3947)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Limiar RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Taxa de RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Porta de contabilidade do RADIUS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Segredo da contabilidade do RADIUS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Servidor da contabilidade do RADIUS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Porta de autenticação do RADIUS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Segredo da autenticação do RADIUS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Servidor da autenticação do RADIUS"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Bytes brutos codificados em hexadecimal. Deixe vazio a não ser que seu "
+"provedor requeira isso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Ler <code>/etc/ethers</code> para configurar o Servidor-<abbr title="
+"\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"Você realmente quer apagar esta interface? Esta operação não pode ser "
+"desfeita! Você pode perder acesso a este dispositivo se você estiver "
+"conectado por meio desta interface"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Realmente excluir esta interface Wireless? A exclusão não pode ser "
+"desfeita!\n"
+"Você poderá perder o acesso a este dispositivo se você estiver conectado "
+"através desta interface."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Realmente limpar todas as mudanças?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Realmente trocar o protocolo?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Conexões em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Gráficos em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Carga em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Tráfego em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Rede sem fio em Tempo Real"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Limite para Reassociação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Proteção contra \"Rebind\""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Reiniciando..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reinicia o sistema operacional do seu dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Receber"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena de Recepção"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Recomendado. Endereços IP da interface do WireGuard."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconectar esta interface"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referências"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Retransmissor"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Ponte por Retransmissão"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Encaminha o tráfego entre as redes"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Ponte por retransmissão"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Endereço IPv4 remoto"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Endereço IPv4 remoto ou FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Remover"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repetir busca"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Substituir entrada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Substituir a configuração da rede sem fio"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Solicita endereço IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Solicita prefixo IPv6 de tamanho"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Necessário"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+"Obrigatório para alguns provedores de internet, ex. Charter com DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Necessário. Chave Pública do parceiro codificada como Base64."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+"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."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Exige o suporte DNSSEC do servidor superior; verifica se as respostas não "
+"assinadas realmente vêm de domínios não assinados"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Limpar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reiniciar contadores"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Redefinir para os valores padrão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Arquivos de Resolv e Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Arquivo Resolv"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Reiniciar o firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "Reinicie a interface do rádio"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restauração"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restaurar cópia de segurança"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Relevar/esconder senha"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Reverter"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Reverter as mudanças"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+"O pedido para reverter as configurações falhou com o estado <code>%h</code>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Revertendo configurações..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Raiz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Diretório raiz para arquivos disponibilizados pelo TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Prepação da raiz (/)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "Roteie Andereços IP Autorizados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Tipo de rota"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Serviço de Anúncio de Roteador"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Senha do Roteador"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rotas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"As rotas especificam através de qual interface e roteador um certo destino "
+"podem ser alcançado."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+"Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Execute a verificação do sistema de arquivos"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Acesso SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "Endereço do servidor SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "Porta do servidor SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "Usuário do SSH"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Chaves SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Salvar"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Salvar & Aplicar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Salvar o bloco mtd"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Salvar o conteúdo do bloco mtd"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Procurar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "O pedido de escaneamento falhou"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tarefas Agendadas"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Seção adicionada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Seção removida"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Veja o manual (man) do comando \"mount\" para detalhes"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"Selecione 'Forçar a atualização' para gravar a imagem mesmo se a verificação "
+"do formato da imagem falhar. Use somente se você estiver confiante que a "
+"firmware está correta e é destinada para seu dispositivo!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Enviar requisições de eco do LCP no dado intervalo em segundos. Somente "
+"efetivo em conjunto com o limite de falhas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Isolar Clientes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Configurações do Servidor"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nome do Serviço"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tipo do Serviço"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Serviços"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Definir as propriedades da interface independentemente da portadora do "
+"enlace (Se definido, eventos de detecção da portadora não irão gerar eventos "
+"do hotplug)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "Configurar a Sincronização do Horário"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+"A configuração da <abbr title=\"Public Land Mobile Network\">PLNM</abbr> "
+"falhou"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "A configuração do modo de operação falhou"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Configurar Servidor DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+"Segundos com erro severos (<abbr title=\"Severely Errored Seconds\">SES</"
+"abbr>)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "Intervalo de guarda curto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Preâmbulo curto"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Mostra a lista atual de arquivos para a cópia de segurança"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Desligar esta interface"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Sinal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Atenuação do Sinal (<abbr title=\"Signal Attenuation\">SATN</abbr>)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Sinal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Tamanho"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Tamanho do cache de consultas DNS"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Pular"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Pular para o conteúdo"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Pular para a navegação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Intervalo de tempo"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "VLAN em Software"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Alguns campos estão inválidos e os valores não podem ser salvos!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Desculpe o objeto solicitado não foi encontrado."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Desculpe, o servidor encontrou um erro inesperado."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"Sinto muito, não existe suporte para o sysupgrade. Uma nova imagem de "
+"firmware deve ser gravada manualmente. Por favor, consulte a wiki para "
+"instruções específicas da instalação deste dispositivo."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Origem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Especifica o diretório que o dispositivo está conectado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Especifica a porta de escuta deste <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Especifica a quantidade máxima de requisições ARP falhadas antes de "
+"considerar que um equipamento está morto"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Especifica a quantidade máxima de segundos antes de considerar que um "
+"equipamento está morto"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Especifique um Tipo de Serviço (TOS)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+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)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+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)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Especifique a chave de cifragem secreta aqui."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Iniciar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Prioridade de iniciação"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Iniciando a aplicação da configuração..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Iniciando o escaneamento da rede sem fio..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Iniciação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Rotas Estáticas IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Rotas Estáticas IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Alocações Estáticas"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Rotas Estáticas"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Endereço Estático"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Alocações estáticas são usadas para definir um endereço IP fixo e nome "
+"simbólico para os clientes do DHCP. Elas também são necessárias para "
+"configurações não dinâmicas onde um computador com a alocação correspondente "
+"é provido."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Estado"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Parar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Ordem Exata"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Enviar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Suprimir registros (log)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "Suprimir registros (log) de operações rotineiras destes protocolos"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Espaço de Troca (swap)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Entrada do espaço de troca (Swap)"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Switch %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Switch %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "Máscara da porta do Switch"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "Switch VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Trocar o protocolo"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Sincronizar com o navegador"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Sincronizando..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistema"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Registro do Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Propriedades do Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Tamanho do buffer de registro do sistema"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Configurações do TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Raiz do servidor TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Taxa de TX"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabela"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Destino"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Rede de destino"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"A seção da <em>Configuração do Dispositivo</em> engloba as configurações "
+"físicas do rádio como canal, potência de transmissão ou seleção da antena. "
+"Estas configurações são compartilhadas entre todas as redes sem fio (se o "
+"hardware for capaz de utilizar múltiplas SSID). As configurações específicas "
+"de cada rede, como cifragem ou modo de operação estão agrupadas na "
+"<em>Configuração da Interface</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"O pacote <em>libiwinfo-lua</em> não está instalado. Você precisa instalar "
+"este componente para ter uma configuração da rede sem fio funcional!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+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!"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr "O endereço IPv4 ou o nome completo (FQDN) da ponta remota do túnel."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"O prefixo IPv6 atribuído pelo provedor, geralmente termina com<code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Os caracteres permitidos são: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> e <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+"O arquivo de recuperação não parece ser um arquivo válido no formato GZIP."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+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:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"O dispositivo não foi alcançado em %d segundos depois de aplicar as "
+"configurações pendentes. Por questões de segurança, as configurações foram "
+"revertidas. Se você acredita que as mudanças de configuração estão realmente "
+"corretas, aplique as configurações sem verificação. Alternativamente, você "
+"pode dispensar este aviso e editar as configurações antes de tentar aplicá-"
+"las novamente, ou reverter todas as configurações pendentes e manter o "
+"estado atual em uso."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+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 (ex: <code>/dev/"
+"sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"O sistema de arquivos que foi usado para formatar a unidade de armazenamento "
+"(<abbr title=\"por exemplo\">ex.</abbr> <samp><abbr title=\"Sistema de "
+"Arquivos ext3\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"A imagem do firmware foi enviada. Abaixo estão a soma de verificação "
+"(checksum) e o tamanho dom arquivo. Compare-os com o arquivo original para "
+"garantir a integridade dos dados. <br /> Clique em \"Proceder\" para iniciar "
+"o procedimetno de gravação."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "As seguintes alterações foram revertidas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "As seguintes regras estão atualmente ativas neste sistema."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "O nome de rede informado não é único"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Este equipamento não é capaz de utilizar SSID múltiplos e as configurações "
+"existentes serão substituídas se você proceder."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"O comprimento do prefixo IPv4 em bits, o restante é usado nos endereços IPv6."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "O comprimento do prefixo IPv6 em bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "O endereço IPv4 local sobre o qual o túnel será criado (opcional)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"As portas de rede neste dispositivo podem ser configuradas em diversas <abbr "
+"title=\"Virtual local Network\">VLAN</abbr>s nas quais computadores em uma "
+"mesma <abbr title=\"Virtual local Network\">VLAN</abbr> podem se comunicar "
+"diretamente. <abbr title=\"Virtual local Network\">VLAN</abbr>s são muitas "
+"vezes utilizadas para separar diferentes segmentos de rede. Em geral, existe "
+"uma porta para o enlace superior (uplink) e as demais portas são utilizadas "
+"para a rede local."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "O protocolo selecionado necessita estar associado a um dispositivo"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "A chave eletrônica enviada é inválida ou já expirou!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"O sistema está apagando agora a partição da configuração e irá reiniciar "
+"quando terminado."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"O sistema está gravando o firmware para a flash.<br /> NÃO DESLIGUE O "
+"EQUIPAMENTO!<br /> Espere alguns minutos até tentar reconectar. Dependendo "
+"da sua configuração, pode ser necessário renovar o endereço do seu "
+"computador para poder conectar novamente ao roteador."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"A imagem carregada não contém um formato suportado. Confirme que você "
+"escolheu uma imagem para a sua plataforma."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Não existem alocações ativas."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "Não existem mudanças para aplicar."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Não existem modificações pendentes para reverter!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Não existem modificações pendentes!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Ainda não existe um dispositivo associado. Por favor, associe um dispositivo "
+"de rede na aba \"Configurações Físicas\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Não existem uma senha definida para este roteador. Por favor, configure uma "
+"senha para o root para proteger a interface WEB e habilitar o SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Este endereço IPv4 do repassar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+"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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Esta é a lista dos padrões de expressão shell para casar com os arquivos e "
+"diretórios incluídos durante a atualização do sistema. Arquivos modificados "
+"em /etc/config/ e alguns outros arquivos de configuração são automaticamente "
+"preservados."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+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"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Este é o conteúdo do /etc/rc.local. Insira seus próprios comandos aqui "
+"(antes de 'exit 0') para executá-los no final do processo de boot."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Este é o endereço da ponta local designado pelo agente de túnel. normalmente "
+"ele termina com <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Este é o único <abbr title=\"Protocolo de Configuração Dinâmica de Hosts"
+"\">DHCP</abbr> na rede local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "Este é o nome do usuário em para se autenticar na sua conta"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+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"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Este é o sistema de agendamento de tarefas."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Este é normalmente o endereço do <abbr title=\"Point of Presence, Ponto de "
+"Presença\">PoP</abbr> mais próximo operado pelo agente de túnel"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Esta lista fornece uma visão geral sobre os processos em execução no sistema."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Esta página fornece informações sobre as conexões de rede ativas."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Esta seção ainda não contêm valores"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Sincronização de horário"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "A sincronização do horário ainda não está configurada."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Fuso Horário"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Para recuperar os arquivos de configuração, você pode enviar aqui uma cópia "
+"de segurança anterior. Para retornar o roteador para o seu estado inicial, "
+"clique em \"Restaurar as configurações iniciais\" (somente possível para "
+"imagens do tipo squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Tom"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total Disponível"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Tráfego"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transferências"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Taxa de Transmissão"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmitir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Potência de Transmissão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena de Transmissão"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Disparo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Modo de disparo"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Identificador do Túnel"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interface de Tunelamento"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Enlace do túnel"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Potência de transmissão"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tipo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "UMTS somente"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Dispositivo USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "Portas USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "Não foi possível determinar o nome do dispositivo"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "Não foi possível determinar o endereço IP externo"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "Não foi possível determinar a interface com a rede externa"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Não é possível a expedição"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "Não foi possível obter o identificador do cliente"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "Não foi possível resolver o nome do AFTR"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "Não foi possível resolver o nome do parceiro"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+"Segundos de indisponibilidade (<abbr title=\"Unavailable Seconds\">UAS</"
+"abbr>)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Erro desconhecido (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Não gerenciado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Desmontar"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Alterações Não Salvas"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+"Tipo de <abbr title=\"Mapeamento de Endereço e Porta/Mapping of Address and "
+"Port\">MAP</abbr> não suportado"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Modem não suportado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipo de protocolo não suportado."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "Acima"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+"Envia uma imagem compatível do sistema para substituir o firmware em "
+"execução. Marque \"Manter configurações\" para manter as configurações "
+"atuais (requer uma imagem compatível)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Enviar arquivo..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Arquivo Carregado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Tempo de atividade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Usar <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Use o roteador do DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Use os servidores DNS anunciados pelo parceiro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Usar códigos de países ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+"Use o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de Transmissão"
+"\">MTU</abbr> na interface do túnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Use TTL na interface do túnel"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "Use como uma sobreposição externa (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Usar como o sistema de arquivos raiz (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Use a marcação de broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Use o gerenciamento do IPv6 embarcado"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Use servidores DNS personalizados"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Use o roteador padrão"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Use a métrica do roteador"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Use a tabela de roteamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Use o botão <em>Adicionar</em> para adicionar uma nova entrada de "
+"atribuição. O endereço <em>MAC-Address</em> identifica o equipamento, o "
+"endereço <em>IPv4</em> especifica o endereço fixo para usar e o <em>nome do "
+"equipamento</em> é designado como nome simbólico (DNS) para o equipamento "
+"requisitante."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Usado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Posição da Chave Usada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+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."
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Certificado do usuário (codificado em formato PEM)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Chave do usuário (codificada em formato PEM)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Usuário"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs em %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs em %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "Endereço Local da VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "Porta Local da VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Porta do Servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "Resumo digital SHA1 do certificado do servidor VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (VPN do CISCO 3000 (e outros))"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Fabricante"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Classe do fabricante para enviar quando requisitar o DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verificar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Interface virtual dinâmica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP Sistema Aberto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP Chave Compartilhada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP Senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Modo WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA Senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"A cifragem WPA requer a instalação do wpa_supplicant (para modo cliente) ou "
+"do hostapd (para modo AP ou ad-hoc)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Esperando a aplicação das mudanças..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Esperando o término do comando..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Esperando que a configuração seja aplicada...%ds"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Esperando pelo dispositivo..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Atenção"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Largura"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "VPN WireGuard"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Rede sem fio"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Dispositivo de Rede sem Fio"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Rede sem Fio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Visão Geral da Rede sem Fio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Segurança da Rede sem Fio"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Rede sem fio está desabilitada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Rede sem fio está não conectada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "A rede sem fio está reiniciando..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "A rede sem fio está desabilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "A rede sem fio está habilitada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Escreva as requisições DNS para o servidor de registro (syslog)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Escrever registro do sistema (log) no arquivo"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Neste local, você pode ativar ou desativar os scripts de iniciação "
+"instalados. As mudanças serão aplicadas após a reiniciação do equipamento."
+"<br /><strong>Aviso: Se você desativar algum script de iniciação essencial "
+"como por exemplo \"rede/network\", o dispositivo poderá tornar-se "
+"inacessível!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "qualquer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "automático"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "em ponte"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "criar"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "criar:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "cria uma ponte sobre determinada(s) interface(s)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "desativar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "desabilitado"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "expirado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"arquivo onde as alocações <abbr title=\"Protocolo de Configuração Dinâmica "
+"de Hosts\">DHCP</abbr> são armazenadas"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "encaminhar"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "half-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "ocultar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "modo híbrido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "se o destino for uma rede"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "entrada"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+"arquivo local de <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "minutos"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "WPA/WPA2 em modo misto"
+
+# Is this yes/no or no like in no one?
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "não"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "sem link"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "não presente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "desligado"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "ligado"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "aberto"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "saída"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "sobreposição"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "aleatório"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "modo retransmissor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "roteado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "modo servidor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "somente com estado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "sem estado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "sem estado + com estado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "etiquetado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "unidades de tempo (TUs / 1.024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "desconhecido"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "ilimitado"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "não especificado"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "não especificado -ou- criar:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "não etiquetado"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "sim"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Voltar"
+
+#~ 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 ""
+#~ "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 "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "When using a PSK, the PMK can be generated locally without inter AP "
+#~ "communications"
+#~ msgstr ""
+#~ "Quando o PSK é usado, a <abbr title=\"Chave mestre do emparelhamento/"
+#~ "Pairwise Master Key\">PMK</abbr> pode ser gerada localmente sem "
+#~ "comunicação entre os pontos de acesso"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Aqui você pode colar as chaves públicas do SSH (uma por linha) para a "
+#~ "autenticação por chaves do SSH."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "A senha foi alterada com sucesso!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Erro Desconhecido, a senha não foi alterada!"
+
+#~ msgid "Design"
+#~ msgstr "Tema"
+
+#~ msgid "Available packages"
+#~ msgstr "Pacotes disponíveis"
+
+#~ msgid "Bind only to specific interfaces rather than wildcard address."
+#~ msgstr ""
+#~ "Vincule somente para as explicitamenteinterfaces ao invés do endereço "
+#~ "coringa."
+
+#~ 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 ""
+#~ "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 "Fontes de pacotes customizadas"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Mostre somente os pacotes contendo"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "Fontes de pacotes da distribuição"
+
+#~ msgid "Download and install package"
+#~ msgstr "Baixe e instale o pacote"
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Find package"
+#~ msgstr "Procurar pacote"
+
+#~ msgid "Free space"
+#~ msgstr "Espaço livre"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Opções gerais para o opkg"
+
+#~ msgid "Install"
+#~ msgstr "Instalar"
+
+#~ msgid "Installed packages"
+#~ msgstr "Pacotes instalados"
+
+#~ msgid "No package lists available"
+#~ msgstr "Nenhuma lista de pacotes disponível"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuração-OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "As listas de pacotes são mais antigas do que 24 horas"
+
+#~ msgid "Package name"
+#~ msgstr "Nome do Pacote"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Tamanho (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Update lists"
+#~ msgstr "Atualizar listas"
+
+#~ msgid "Version"
+#~ msgstr "Versão"
+
+#~ msgid "none"
+#~ msgstr "nenhum"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Desabilita a configuração do DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 e IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Somente IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Somente IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Tempo de validade da atribuição"
+
+#~ msgid "Multicast address"
+#~ msgstr "Endereço de Multicast"
+
+#~ msgid "Protocol family"
+#~ msgstr "Família do protocolo"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Nenhuma cadeira nesta tabela"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Os arquivos de configuração serão mantidos."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: Os arquivos de configuração serão apagados."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Par: %s / Grupo: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Ativar esta rede"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b Wireless Controlador"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "A interface está desligando..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interface reconectada"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interface desligada"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b Wireless Controlador"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s Wireless Controlador"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Realmente desligar esta interface\"%s\" ?\n"
+#~ "Você poderá perder o acesso a este dispositivo se você estiver conectado "
+#~ "através desta interface."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Reconectando interface"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Desligar esta rede"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "A rede sem fio reiniciou"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Rede sem fio desligada"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Alocações do DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Alocações DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Realmente excluir esta interface? A exclusão não pode ser desfeita!\n"
+#~ " Você poderá perder o acesso a este dispositivo se você estiver conectado "
+#~ "através desta interface."
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Realmente desligar esta rede\"%s\" ?\n"
+#~ "Você poderá perder o acesso a este dispositivo se você estiver conectado "
+#~ "através desta interface."
+
+#~ msgid "Sort"
+#~ msgstr "Ordenar"
+
+#~ msgid "help"
+#~ msgstr "ajuda"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Estado IPv4 da WAN"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Estado IPv6 da WAN"
diff --git a/package/luci/modules/luci-base/po/pt/base.po b/package/luci/modules/luci-base/po/pt/base.po
new file mode 100644 (file)
index 0000000..e4310b0
--- /dev/null
@@ -0,0 +1,6615 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-26 19:03+0200\n"
+"PO-Revision-Date: 2013-09-22 18:50+0200\n"
+"Last-Translator: Low <pedroloureiro1@sapo.pt>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(janela de %d minutos, intervalo de %d segundos)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponível)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(vazio)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(não existem interfaces ligadas)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Campo Adicional --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Por favor escolha --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- personalizado --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Carga de 1 Minuto:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Carga de 15 minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Carga 5 Minutos:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+"<abbr title=\"Identificador de Conjunto Básico de Serviços\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+"Porta de consulta de <abbr title=\"Servidor de Nomes de Domínio\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+"Porta do servidor<abbr title=\"Servidor de Nomes de Domínio\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"Os servidores de <abbr title=\"Servidor de Nomes de Domínio\">DNS</abbr> "
+"serão consultados pela ordem no ficheiro resolv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"<abbr title=\"Identificador de Conjunto de Serviços Estendidos\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Endereço <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "Gateway <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+"Máscara de rede <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>-Endereço ou Rede "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "Gateway <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Nome da <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "Endereço <abbr title=\"Controle de Acesso ao Meio\">MAC</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"Máximo\">Max.</abbr> de concessões<abbr title=\"Protocolo de "
+"Configuracao Dinamica de Hosts\">DHCP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"Tamanho <abbr title=\"Máximo\">Max.</abbr> do pacote <abbr title="
+"\"Mecanismos de Extensão para Sistemas de Nomes de Domínio\">EDNS0</abbr> "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"máximo\">Max.</abbr> consultas concorrentes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Limiar de tentativas ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Bridges ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "Identificador Canais Virtuais ATM (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "Identificador de Caminho Virtual ATM (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"As bridges ATM expõem o encapsulamento ethernet em ligações AAL5 como uma "
+"interface de Rede Virtual Linux que pode ser usada em conjugação com o DHCP "
+"ou PPP para marcar para a rede ISP."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Número de Dispositivo ATM"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrador de Acesso"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Access Point (AP)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Acções"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Rotas-<abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr> ativas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Rotas-<abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr> ativas"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Ligações Ativas"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Concessões DHCP Ativas"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Concessões DHCPv6 Ativas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Adicionar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Adicionar um sufixo de domínio local aos nomes servidos dos ficheiros de "
+"hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Adicionar uma nova interface..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Ficheiro Adicional de Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Endereço"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administração"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Definições Avançadas"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permitir autenticação <abbr title=\"Shell Seguro\">SSH</abbr> por senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Permitir todos, excepto os listados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Permitir somente os listados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permitir localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Permitir que hosts remotos se conectem às portas encaminhadas do SSH local"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Permitir o login como root só com password"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Permitir que o utilizador <em>root</em> faça login só com password"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Permitir respostas a montante na gama 127.0.0.1/8, p.e. para serviços RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configuração das Antenas"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Qualquer zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Atribuir interfaces..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Estações Associadas"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autenticação"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritário"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Autorização Requerida"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Actualização Automática"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponível"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Média:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Voltar"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Voltar à Visão Global"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Voltar à configuração"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Voltar à vista global"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Voltar aos resultados do scan"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Backup"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Backup / Flashar Firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Lista de ficheiros para backup"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Endereço mal especificado!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Abaixo está a lista de ficheiros para backup. Este consiste nos ficheiros de "
+"configuração alterados e marcados pelo opkg, ficheiros base essenciais e "
+"padrões de backup definidos pelo utilizador."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Taxa de bits"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Ativar brigde nas interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Número de unidade da bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Levantar no arranque"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Controlador Wireless Broadcom 802.11%s"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Controlador Wireless Broadcom BCM%04x 802.11"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Uso da CPU (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Cadeia"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Alterações"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Alterações aplicadas."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Altera a password de administrador para acesso ao dispositivo"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Verificar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Checksum"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Escolha a zona de firewall que pretende associar a esta interface. Escolha "
+"<em>não especificado</em> para remover a interface da zona associada ou "
+"coloque em branco o campo <em>criar</em> para definir a nova zona e ligar-"
+"lhe a interface."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Escolha a rede(s) à(s) qual(is) deseja ligar esta interface wireless ou "
+"preencha o campo <em>criar</em> para definir a nova rede."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Cifra"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Clique em \"Gerar arquivo\" para descarregar o ficheiro tar com os actuais "
+"ficheiros de configuração."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Cliente"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "ID de cliente a enviar para pedidos de DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Fechar ligação inativa após um dado tempo em segundos, usando 0 a ligação é "
+"persistente"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Fechar lista..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "A obter dados..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Comando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configuração comum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configuração"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmação"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Ligar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Ligado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limite de Ligações"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Ligações"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Código do País"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Abranger a seguinte interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Abranger as seguintes interfaces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Criar / Atribuir a uma zona de firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Criar interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Criar uma bridge entre múltiplas interfaces "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Critico"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Nível de Log do Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Interface Personalizada"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Customiza o comportamento dos <abbr title=\"Diodo Emissor de Luz\">LED</"
+"abbr>s, se possível."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Servidor DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP e DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Cliente DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Opções DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Encaminhamentos DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Depurar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Gateway predefinido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Estado predefinido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definir um nome para esta rede."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+"Definir opções adicionais de DHCP, por exemplo "
+"\"<code>6,192.168.2.1,192.168.2.2</code>\" informa os clientes de diferentes "
+"servidores DNS."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Apagar"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Apagar esta rede"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descrição"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destino"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configuração do Dispositivo"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnósticos"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Directório"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Desativar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Desativar <abbr title=\"Protocolo Configuração Dinâmica de Hosts\">DHCP</"
+"abbr> para esta interface."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Desativado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Descartar respostas RFC1918 a montante"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimização de Distância"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distância para o último host da rede em metros."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversidade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 é um servidor combinado de <abbr title=\"Protocolo de Configuração "
+"Dinâmica de Hosts\">DHCP</abbr> e <abbr title=\"Sistema de Nomes de Domínios"
+"\">DNS</abbr> para firewalls <abbr title=\"Tradução de Endereço de Rede"
+"\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+"Não colocar em cache as respostas negativas, p.e. para dominios inexistentes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Não encaminhar pedidos que não possam ser respondidos por servidor públicos "
+"de nomes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Não encaminhar lookups reversos para as redes locais"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Requerer domínio"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Lista Branca do Dominio"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Não encaminhar consultas <abbr title=\"Sistema de Nomes de Domínios\">DNS</"
+"abbr> sem o nome do <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Descarregar backup"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instância do Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear oferece um acesso shell seguro à rede <abbr title=\"Shell Seguro"
+"\">SSH</abbr> e um servidor <abbr title=\"Cópia Segura\">SCP</abbr> integrado"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"<abbr title=\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr> "
+"Dinâmico"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Túnel dinâmico"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Alocar dinamicamente endereços DHCP para clientes. Se desativado, só os "
+"clientes com reservas estáticas serão servidos."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Metodo-EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Editar"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Editar esta interface"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Editar esta rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Emergência"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Ativar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Ativar a atualização dinâmica de ponto final HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Ativar a negociação IPv6 no link PPP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Ativar a passagem de Jumbo Frames"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Ativar o cliente NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Ativar o servidor TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Ativar a funcionalidade VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Ativar aprendizagem e envelhecimento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Ativar este mount"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Ativar esta swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Ativar/Desativar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Ativado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Ativa o Spanning Tree nesta bridge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Modo de encapsulamento"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Encriptação"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "A apagar..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Erro"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Adaptador Ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch Ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Expandir hosts"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Expira"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"O tempo de caducidade dos endereços concessionados, minimo de 2 minutos "
+"(<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Servidor externo de logs de sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Porta do Servidor externo de logs de sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Ficheiro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Nome de ficheiro da imagem de boot a anunciar aos clientes"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Sistema de ficheiros"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrar endereços privados"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtro inútil"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Procurar e ligar rede"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Terminar"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Definições da Firewall"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Estado da Firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versão do Firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Porta fixa de origem para saída das consultas DNS"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Gravar Firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Flashar imagem..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Flashar nova imagem do firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "A programar...."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forçar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forçar CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Forçar DHCP nesta rede mesmo se outro servidor for detectado."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forçar TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forçar TKIP e CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Encaminhar tráfego DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Encaminhar trafego de broadcast"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Modo de encaminhamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Margem de Fragmentação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Livre"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Só GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Portas de gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Definições Gerais"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Configuração Geral"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Gerar arquivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Controlador Wireless Genérico 802.11%s"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+"A confirmação de password não corresponde, a password não foi alterada!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Ir para a configuração da password"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Ir para a página respectiva de configuração"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Password HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Suspender"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Aqui pode configurar os aspectos básicos do seu equipamento, como o nome do "
+"host ou o fuso horário."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"Ocultar <abbr title=\"Identificador de Conjunto de Serviços Estendidos"
+"\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Entradas de hosts"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+"<abbr title=\"Endereço do Protocolo de Internet\">IP</abbr> do host ou rede"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Hostname"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Hostname a enviar quando houver solicitação por DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Hostnames"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Endereço IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Firewall IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Endereço IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Broadcast IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Gateway IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Máscara IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Comprimento do prefixo IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Endereço-IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Firewall IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Endereço IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Gateway IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Prefixo IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Comprimento do prefixo IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "Endereço-IPv6"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-em-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-sobre-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-sobre-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identidade"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Se desmarcado, não é configurada uma rota pré-definida"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Se desmarcado, os endereços servidor DNS anunciados são ignorados "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Se a memória física for insuficiente, os dados poderão ser trocados "
+"temporariamente para um dispositivo swap, resultando em uma maior quantidade "
+"de memória utilizável <abbr title=\"Memória de Acesso Aleatório\">RAM</"
+"abbr>. Esteja ciente de que a troca de dados (swap) é um processo muito "
+"lento pois o dispositivo swap não pode ser acedido com um nível elevado de "
+"memória <abbr title=\"Memória de Acesso Aleatório\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignorar <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorar interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorar ficheiro resolv.conf"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Imagem"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Entrada"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Tempo de inatividade"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Entrada:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script de inicialização"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripts de Inicialização"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instalar pacote %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Instalar extensões do protocolo..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configuração da Interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Visão Geral da Interface"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "A interface está a religar..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Interface não presente ou ainda não ligada."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfaces"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Erro Interno do Servidor"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Valor inválido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"O ID de VLAN fornecido é inválido! Só os IDs entre %d e %d são permitidos."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Username inválido e/ou a password! Por favor, tente novamente."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"A imagem que está a tentar carregar aparenta não caber na flash do "
+"equipamento. Por favor verifique o ficheiro de imagem."
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Associar Rede"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Associar Rede: Procurar Redes Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Manter definições"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Registo do Kernel"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versão do Kernel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Chave"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Chave #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Matar"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Servidor L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Intervalo de echo LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Etiqueta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Idioma"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Língua e Tema"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Ficheiro de concessões"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Tempo de atribuição restante"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Deixar em branco para auto-detecção"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Deixar em branco para usar o endereço WAN actual"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Link Ativo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Lista de servidores <abbr title=\"Sistema Nomes de Domínio\">DNS</abbr> para "
+"onde encaminhar os pedidos"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Lista de dominios que permitem respostas RFC1918 para"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Escutar apenas na interface fornecida ou, se não especificada, em todas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Porta de escuta para entrada de consultas DNS"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Carga"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Carga Média"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "A carregar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Endereço IPv4 Local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Endereço IPv6 Local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Arranque Local"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Hora Local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domínio local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Especificação de dominio local. Os nomes que correspondam a este dominio "
+"nunca são encaminhados e resolvidos do DHCP ou do ficheiro de hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Sufixos de dominio local a juntar aos nomes DHCP e às entradas do ficheiro "
+"de hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Servidor local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Localizar consultas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Nível de output do log"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Registo das consultas"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Login"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Logout"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "Endereço-MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filtro de Endereço-MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Filtro-MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Lista-MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Número máximo permitido de concessões DHCP ativas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Número máximo permitido de consultas DNS permitidas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Número máximo de segundos a esperar pelo modem para ficar pronto"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Número máximo de endereços concessionados."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memória"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Uso de memória (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Métrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Falta a extensão de protocolo para o protocolo %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Modo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Dispositivo do modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Montar Entrada"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Ponto de Montagem"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Pontos de Montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Pontos de montagem definem em que ponto um dispositivo de memória será "
+"anexado ao sistema de arquivos"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Ponto de montagem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Sistemas de arquivos montados"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Subir"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Descer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Candidatos a servidor NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nome"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Nome da nova interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Nome da nova rede"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navegação"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Mascara de rede"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Rede"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Ferramentas de Rede"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Imagem de arranque via rede"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Rede sem interfaces."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Seguinte »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Sem Servidor DHCP configurado nesta interface"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Não foram encontrados ficheiros"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Sem informação disponível"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Sem cache negativa"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Nenhuma rede configurada no dispositivo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Nome de rede não especificado"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Sem password definida!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Sem regras nesta cadeia"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Sem zona atribuída"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Ruído"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Ruído:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Nenhum"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Não encontrado"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Não associado"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Não ligado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Reparo"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Atraso do Off-State"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Nesta página pode configurar as interfaces de rede. Pode ter várias "
+"interfaces do tipo bridge, assinalando o campo \"interfaces bridge\" e "
+"inserir os nomes de várias interfaces de rede separadas por espaços. Pode "
+"também usar a notação para <abbr title=\"Rede Local Virtual\">VLAN</abbr> "
+"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"por exemplo\">ex.</abbr>: "
+"<samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Atraso do On-State"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Um nome de host ou endereço MAC deve ser especificado!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Um ou mais campos contêm valores inválidos!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Um ou mais campos obrigatórios não têm valores!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Abrir lista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Opção alterada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Opção removida"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Opções"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Outro:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Saída"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Saída:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Visão Geral"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Dono"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Password PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Utilizador PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Encapsulamento PPPoA "
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtp"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "O pacote libiwinfo é necessário!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pacotes"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Parte da zona %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Senha"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autenticação por senha"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Senha da Chave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Directorio do Certificado CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Caminho para o Certificado de Cliente"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Caminho da Chave Privada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Pico:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Executar reinicialização"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Executar reset"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Definições Físicas"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkts."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Insira o seu username e password."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Política"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Porta"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Estado da porta:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Impede a comunicação cliente-a-cliente"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Proceder"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processos"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Protocolo"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocolo"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Protocolo da nova interface"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "O protocolo suportado não está instalado"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Qualidade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS Threshold"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Taxa RX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Porta-Conta-Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Segredo-Conta-Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Servidor-Conta-Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Porta-Autenticação-Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Segredo-Autenticação-Radius"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Servidor-Autenticação-Radius"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Ler <code>/etc/ethers</code> para configurar o Servidor-<abbr title="
+"\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr>"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Deseja mesmo apagar esta rede? A eliminação não poder desfeita!\n"
+"Pode perde a ligação ao dispositivo, caso esta ligado através desta rede."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Deseja mesmo limpar todas as alterações?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Deseja mesmo trocar o protocolo?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Ligações em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Gráficos em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Carga em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Tráfego em Tempo Real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Wireless em Tempo Real"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Religar protecção"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "A reiniciar..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reinicia o seu dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Receber"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena de Recepção"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconetar esta interface"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referências"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Endereço IPv4 remoto"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Remover"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repetir scan"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Substituir entrada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Substituir configuração wireless"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Limpar contadores"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Ficheiros Resolv e Hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Reiniciar"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Reiniciar Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restauração"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Restaurar backup"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Revelar/esconder password"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Reverter"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Password do Router"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rotas"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"As rotas especificam através de que interfaces ou gateways podem ser "
+"alcançados determinadas redes ou hosts."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+"Correr uma verificação do sistema de ficheiros antes de montar um dispositivo"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Correr uma verificação do sistema de ficheiros"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Acesso SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Chaves-SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Salvar"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Salvar & Aplicar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Procurar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Tarefas Agendadas"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Secção adicionada"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Secção removida"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Isolar Clientes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nome do Serviço"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tipo de Serviço"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Serviços"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Configurar Sincronização Horária"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Configurar Servidor DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Mostrar lista ficheiros para backup"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Desligar esta interface"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Sinal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Sinal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Tamanho"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Saltar"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Ir para o conteúdo"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Ir para a navegação"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Alguns campos são inválidos, não é possível gravar valores!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Lamento, o objecto que pediu não foi encontrado."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Lamento, o servidor encontrou um erro inesperado."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Origem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Especifica as portas de escuta desta instância <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Iniciar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Prioridade de inicialização"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Rotas Estáticas IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Rotas Estáticas IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Atribuições Estáticas"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Rotas Estáticas"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Endereço estático"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Parar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Ordem exacta"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Enviar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Switch"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Sincronizar com o browser"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "A sincronizar..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistema"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Registo do Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Propriedades do Sistema"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Definições TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Raíz do servidor TFTP"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabela"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Destino"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"O pacote <em>libiwinfo-lua</em> não está instalado. Precisa de instalar este "
+"pacote para que a configuração wireless funcione!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"O prefixo IPv6 atribuído ao provider, habitualmente termina com <code>::</"
+"code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+"Os caracteres permitidos são: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> e <code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+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 memória ou da partição (<abbr title=\"por exemplo"
+"\">ex.</abbr> <code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"O sistema que foi usado para formatar a memória (<abbr title=\"por exemplo"
+"\">ex.</abbr> <samp><abbr title=\"Sistema de Arquivos ext3\">ext3</abbr></"
+"samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+"A imagem foi carregada. Abaixo está o checksum e o tamanho dos ficheiros, "
+"compare com o ficheiro original para assegurar a integração de dados.<br /> "
+"Click em \"Proceder\" para iniciar o procedimento."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Foram recuperadas as seguintes alterações "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "As seguintes regras estão actualmente acivas neste sistema."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "O nome dado não é único"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"O hardware não é comporta multi-SSIDs a configuração será substituída se "
+"prosseguir."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"O tamanho do perfico IPv4 em bits, o restante é usado em endereços IPv6."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "O comprimento do prefixo IPv6 em bits"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+"As portas de rede neste dispositivo podem ser combinadas com várias <abbr "
+"title=\"Rede de Área Local Virtual\">VLAN</abbr>s onde os computadores podem "
+"comunicar directamente entre eles. <abbr title=\"Rede de Área Local Virtual"
+"\">VLAN</abbr>s são muito utilizadas para separar dois segmentos de rede "
+"diferentes. Muitas vezes existe por defeito uma porta de Uplink  para uma "
+"ligação para a rede acima como a internet ou outras portas de uma rede local."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "O protocolo escolhido precisa de um dispositivo atribuído."
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"O sistema está agora a limpar a partição de configuração e irá reiniciar-se "
+"quando terminar."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"O sistema está a carregar o firmware para a flash.<br /> NÃO DESLIGUE O "
+"EQUIPAMENTO!<br /> Espere alguns minutos até tentar uma ligação. Dependendo "
+"da sua configuração, ode ser necessário renovar o endereço do seu computador "
+"para poder ligar novamente ao router."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"A imagem carregada não contém um formato suportado. Confirme que escolhe uma "
+"imagem genérica para a sua plataforma."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Não há concessões ativas."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Não há alterações pendentes para reverter!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Não há alterações pendentes!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Ainda não há um dispositivo atribuído, por favor ligue um dispositivo de "
+"rede nas \"Definições Físicas\""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Não há uma password definida neste router. Por favor defina uma senha de "
+"root para proteger a interface web e ativar o SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Este é o conteúdo de /etc/rc.local. Insira os seus próprios comandos aqui "
+"(antes de 'exit 0') para executá-los no final do processo de arranque."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Este é o único <abbr title=\"Protocolo de Configuração Dinâmica de Hosts"
+"\">DHCP</abbr> na rede local"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Este é o sistema de agendamento de tarefas."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"Esta lista fornece uma visão geral sobre os processos em execução no sistema."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Esta página fornece informações sobre as ligações de rede ativas."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Esta secção ainda não contêm valores"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Sincronização Horária"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "A sincronização horária ainda não está configurada."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Fuso Horário"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Para restaurar os ficheiros de configuração, pode carregar aqui um ficheiro "
+"de backup gerado anteriormente. Para voltar as definições originais do "
+"firmware, clique \" Fazer reset\" (só possível com imagens squashfs)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total Disponível"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Tráfego"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transferências"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Taxa de Transmissão"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmitir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Potência de Transmissão"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena de Transmissão"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Trigger"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Modo de Trigger"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "ID do Túnel"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interface de Túnel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Potência de Tx"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tipo"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Só UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Dispositivo USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Não gerido"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Alterações não Guardadas"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipo de protocolo não suportado."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Carregar arquivo..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Ficheiro carregado"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Usar <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Usar a gateway do DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Usar os servidores DNS fornecidos pelo parceiro"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Usar servidores DNS personalizados"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Usar gateway pre-definida"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Usar tabela de roteamento"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Usado"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Utilizador"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANs em %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANs em %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Servidor VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verificar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Sistema Aberto WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Chave partilhada WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Palavra-Passe WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Modo WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Palavra-Passe WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"A encriptação-WPA necessita do wpa_supplicant (para modo cliente) ou do "
+"hostapd (para modo AP ou ah-hoc) esteja instalado."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "A aguardar que as mudanças sejam aplicadas..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "A aguardar que o comando termine..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Aviso"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Rede Wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adaptador Wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Rede Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Vista Global Wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Segurança Wireless"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Wireless desativada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Wireless não associada"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "A Wireless está a reiniciar..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Wireless está desativado."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "A rede wireless está ativada"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Escrever os pedidos de DNS para o syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Você pode ativar ou desativar os scripts de inicialização instalados aqui. "
+"As mudanças serão aplicadas após a reinicialização do equipamento.<br /"
+"><strong>Aviso: Se você desativar algum script de inicialização essencial "
+"como por exemplo \"rede/network\", o dispositivo poderá tornar-se "
+"inacessível!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará "
+"corretamente."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "qualquer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "automático"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "criar:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "cria uma bridge sobre determinada(s) interface(s)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "desativar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "expirou"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Ficheiro onde as atribuições <abbr title=\"Protocolo de Configuração "
+"Dinâmica de Hosts\">DHCP</abbr> são armazenadas"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "half-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "escondido"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "se o destino for uma rede"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "entrada"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+"Ficheiro local de <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "não"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "sem link"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "desligado"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "ligado"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "abrir"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "desconhecido"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "ilimitado"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "não especificado"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "sim"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Voltar"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr ""
+#~ "Aqui pode colar as chaves SSH (uma por linha) para a autenticação SSH por "
+#~ "chave pública."
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Password alterada com sucesso!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Erro Desconhecido, a password não foi alterada!"
+
+#~ msgid "Design"
+#~ msgstr "Tema"
+
+#~ msgid "Available packages"
+#~ msgstr "Pacotes disponíveis"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Mostrar somente pacotes contendo"
+
+#~ msgid "Download and install package"
+#~ msgstr "Descarregar e instalar pacote"
+
+#~ msgid "Filter"
+#~ msgstr "Filtro"
+
+#~ msgid "Find package"
+#~ msgstr "Procurar pacote"
+
+#~ msgid "Free space"
+#~ msgstr "Espaço livre"
+
+#~ msgid "Install"
+#~ msgstr "Instalar"
+
+#~ msgid "Installed packages"
+#~ msgstr "Instalar pacotes"
+
+#~ msgid "No package lists available"
+#~ msgstr "Não há listas de pacotes disponiveis"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuração-OPKG"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "As listas de pacotes têm mais de 24 horas"
+
+#~ msgid "Package name"
+#~ msgstr "Nome do pacote"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Update lists"
+#~ msgstr "Actualizar listas"
+
+#~ msgid "Version"
+#~ msgstr "Versão"
+
+#~ msgid "none"
+#~ msgstr "nenhum"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Desativar configuração de DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 e IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Só IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Só IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Tempo de validade da concessão"
+
+#~ msgid "Multicast address"
+#~ msgstr "Endereço de multicast"
+
+#~ msgid "Protocol family"
+#~ msgstr "Família do protocolo"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Tabela sem chains"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Os ficheiros de configuração serão mantidos."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: Os ficheiros de configuração serão apagados."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Emparelhada: %s / Grupo: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Ativar esta rede"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Controlador Wireless Hermes 802.11b"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "A interface está a desligar..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interface religada"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Desligar interface"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Controlador Wireless Prism2/2.5/3 802.11b"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless RaLink 802.11%s"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "Deseja mesmo desligar a interface \"%s\" ?\n"
+#~ "Pode perder o acesso ao dispositivo se estiver ligado através desta "
+#~ "interface."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "A reconectar interface"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Desligar esta rede"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Rede wireless reiniciada"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Desligar wireless"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Concessões DHCP"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "Concessões DHCPv6"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "Deseja mesmo apagar esta interface? A eliminação não poder desfeita!\n"
+#~ "Pode perde a ligação ao dispositivo, caso esta ligado através desta "
+#~ "interface."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "Deseja mesmo desligar esta rede?\n"
+#~ "Pode perder o acesso ao dispositivo se estiver ligado através desta rede."
+
+#~ msgid "Sort"
+#~ msgstr "Ordenar"
+
+#~ msgid "help"
+#~ msgstr "ajuda"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Estado WAN IPv4"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Estado WAN IPv6"
+
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
+
+#~ msgid "Applying changes"
+#~ msgstr "A aplicar as alterações"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configuração aplicada."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Salvar &#38; Aplicar"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "As seguintes alterações foram escritas"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Não há alterações pendentes para aplicar!"
+
+#~ msgid "Action"
+#~ msgstr "Acção"
+
+#~ msgid "Buttons"
+#~ msgstr "Botões"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo máximo de espera"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Tempo de retenção mínimo"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Caminho do executável que lida com o botão de eventos"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Esta página permite a configuração de botões para acções personalizadas."
+
+#~ msgid "Leasetime"
+#~ msgstr "Tempo de concessão"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "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."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Associar Rede: Definições"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "Porta %d"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Interface VLAN"
diff --git a/package/luci/modules/luci-base/po/ro/base.po b/package/luci/modules/luci-base/po/ro/base.po
new file mode 100644 (file)
index 0000000..87ca880
--- /dev/null
@@ -0,0 +1,6365 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-04-01 23:12+0200\n"
+"Last-Translator: xcentric <webcctvservice@gmail.com>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d fereastra minute, %d interval secunde)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s disponibil)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(gol)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(nici o interfata atasata)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Camp suplimentar --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Te rog sa alegi --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- particularizat --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Incarcarea in ultimul minut"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Incarcarea in ultimele 15 minute"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Incarcarea in ultimele 5 minute"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr>port de apelare"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> port server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System\">DNS</abbr> serverul va interoga in "
+"vederea procesarii fisierului"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "Adresa <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Poarta Acces "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "Masca de retea <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Addresa retea (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Poarta Acces"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Configurare"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Nume"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Addresa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> marime pachet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Max.</abbr> interogari simultane"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP prag reincercare"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "Punti ATM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM Indentificator Canal Virtual (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM Indentificator Cale Virtual(VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+"Puntile ATM expune reteaua intergrata în conexiunile AAL5 ca interfețe "
+"virtuale de rețea Linux care pot fi utilizate în asociere cu DHCP sau PPP "
+"pentru a forma în rețeaua furnizorului."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM numar echipament"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Concentrator de Access "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Punct de Acces"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Actiune"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Rute active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Rute active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Conexiuni active"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Adauga"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Adauga un sufix local numelor servite din fisierele de tip hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Adauga interfata noua.."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Fisiere de tip hosts aditionale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adresa"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adresa de acces punte locala repetor"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administrare"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Setari avansate"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Alerta"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Permite autentificarea prin parola a <abbr title=\"Secure Shell\">SSH</abbr> "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Permite toate cu exceptia celor listate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Permite doar cele listate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Permite localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "Permite statiilor externe sa se conecteze la porturile SSH locale"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Permite autentificarea contului root cu parola"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Permite contului <em>root</em> sa se autentifice cu parola"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Permite raspuns upstream in plaja 127.0.0.0/8, e.g. pentru serviciile RBL"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antena 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antena 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Configurarea Antenei"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Orice Zona"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Inregistreaza interfetele"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Statiile asociate"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autentificare"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Autoritare"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Necesita Autorizare"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Reimprospatare automata"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Disponibil"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Medie:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Inapoi"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Inapoi la sumar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Inapoi la Configurare"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Inapoi la vedere generala"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Inapoi la rezultatele scanarii"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Salveaza"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Salveaza / Scrie Firmware"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Salveaza lista fisiere"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Adresa specificata gresit !"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Bogus NX Domain Override"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Punte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Leaga interfetele"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Numarul unitatii in punte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Activeaza la pornire"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s Controller Fara Fir"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 Controller Fara Fir"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Incarcat"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Utilizarea procesorului (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Anuleaza"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Lant"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Modificari"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Modificari aplicate."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Schimba parola administratorului pentru accesarea dispozitivului"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Canal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Verificare"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Suma de verificare"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Alege zona paravanului care doresti sa o aloci acestei interfete. Selecteaza "
+"<em>nespecificat</em> pentru a sterge interfata sau golire <em>creaza</em> "
+"camp ce defineste o zona noua asociata interfetei."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Colectez datele.."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Comanda"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Configurarea obisnuita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Configurare"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Confirmare"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Conectare"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Conectat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Limita de conexiune"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Conexiuni"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Tara"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Codul de tara"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Creaza interfata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Critic"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Server DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP si DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Optiuni DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Stare implicita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Definiti un nume pentru aceasta retea."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Sterge"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Sterge aceasta retea"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Descriere"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Destinatie"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Dispozitiv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Configurarea dispozitivului"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Diagnosticuri"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Director"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Dezactiveaza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Dezactiveaza <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"pentru aceasta interfata."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Dezactivat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Optimizarea distantei"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Distanta catre cel mai departat membru din retea in metri."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Diversitate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domeniul necesar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Descarca backup"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Instanta dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Editeaza"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Editeaza aceasta interfata"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Editeaza aceasta retea"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Urgenta"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Activeaza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Activeaza <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Activeaza serverul TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Activeaza VLAN-urile"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Activeaza/Dezactiveaza"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Activat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Modul de incapsulare"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Criptare"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Stergere..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Eroare"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Adaptor de retea ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Switch-ul ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Expira"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Server de log-uri extern"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Portul serverului de log-uri extern"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fisier"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Sistem de fisiere"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtreaza privatele"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtreaza nefolositele"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Gaseste si alatura in retea"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Termina"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Setarile firewall-ului"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Status la firewall"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Versiunea de firmware"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Portul sursa pentru intrebarile DNS catre exterior"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Rescrie firmware"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Forteaza"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Forteaza CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+"Forteaza facilitatea DHCP in aceasta retea chiar daca alt server DHCP exista."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Forteaza TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Forteaza TKIP si CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Liber"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Doar GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Porturile gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Setari principale"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Configurare generala"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Confirmarea parolei nu se potriveste cu prima, parola neschimbata !"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Aici poti configura aspectele de baza ale dispozitivului cum ar fi numele "
+"sau fusul orar."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Ascunde <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Intrari de tip host"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Numele de host"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Nume de host"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Adresa IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Firewall IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Adresa IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "Adresa IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Firewall IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Adresa IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identitate"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Imagine"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Intrare:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Informatii"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Script de initializare"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Scripturi de initializare"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Instalati pachetul %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Interfata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Configurarea interfetei"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Prezentare interfata"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Interfata se reconecteaza.."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Interfata nu e prezenta sau nu este conectata inca."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Interfete"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Eroare interna de server"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Invalid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Utilizator si/sau parola invalide! Incearcati din nou."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria "
+"flash, verifica fisierul din nou!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Ai nevoie de JavaScript !"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Pastrati setarile"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Log-ul kernelului"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Versiunea de kernel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Opreste"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Eticheta"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Limba"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Limba si stilul interfetei"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Legenda:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Limita"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Incarcarea"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Incarcarea medie"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Incarcare"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Adresa IPv4 locala"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Adresa IPv6 locala"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Ora locala"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Domeniu local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Server local"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Autentificare"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Iesire"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Numarul maxim de intrebari DNS simultane"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Memorie"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Utilizarea memoriei (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrica"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Mod"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Nume"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Numele interfetei noi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Numele interfetei noi"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigare"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Netmask"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Retea"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Utilitare de retea"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Mai departe »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Nici un server DHCP configurat pentru aceasta interfata"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Nici un fisier gasit"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Nici o informatie disponibila"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Nici o retea configurata pe acest dispozitiv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Nici o parola setata !"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Zgomot"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Zgomot:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Nu a fost gasit"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Nu este asociat."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Nu este conectat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Notificare"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Unul sau mai multe campuri contin valori invalide !"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Unul sau mai multe campuri nu contin valori !"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Optiunea schimbata"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Optiunea eliminata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Optiuni"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Altele:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Iesire"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Prezentare generala"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Proprietar"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Incapsulare PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Pachetul libiwinfo este necesar !"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Pachete"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Parola"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Autentificarea cu parola"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Parola cheii private"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Calea catre certificatul CA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Calea catre cheia privata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Maxim:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Restarteaza"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Reseteaza"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Rata phy:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Setarile fizice"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Packete."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Introdu utilizatorul si parola."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Stare port:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Continua"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Procese"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Calitate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Citeste fisierul <code>/etc/ethers</code> pentru configurarea serverului "
+"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Conexiuni in timp real"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Grafice in timp real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Incarcarea in timp real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Traficul in timp real"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Rebooteaza"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Rebooteaza sistemul de operare al dispozitivului tau"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Antena receptorului"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Reconecteaza aceasta interfata"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referinte"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Elimina"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repeta scanarea"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Inlocuieste intrarea"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Inlocuieste configuratia wireless"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reseteaza counterii"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Fisierele de rezolvare si hosturi DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Fisierul de rezolvare"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Restart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Restarteaza firewallul"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Restaureaza"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Reface backup-ul"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Arata / ascunde parola"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Parola routerului"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rute"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Acces SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "Cheile SSH"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Salveaza"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Salveaza si aplica"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Operatiuni programate"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Sectiune adaugata"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sectiune eliminata"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Setarile serverului"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Nume serviciu"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Tip de serviciu"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Servicii"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "Configurare sincronizare timp"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Seteaza serverul DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Opreste aceasta interfata"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Semnal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Semnal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Marime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Sursa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Start"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Pornire"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Rute statice IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Rute statice IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Rute statice"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Stop"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Trimite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistem"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Log de sistem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Proprietati sistem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Setarile TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Tinta"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Termina"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Nu exista modificari in asteptare de anulat !"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Nu exista modificari in asteptare !"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Nu exista o parola pe acest router. Configureaza o parola la contul root "
+"pentru a proteja interfata web si porni SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Fusul orar"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Total disponibil"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Trafic"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Transfer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Rata de transmitere"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Puterea de transmitere"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Antena de transmitere"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Interfata de tunel"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Puterea TX"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Tip"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Doar UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "Dispozitiv USB"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Necunoscut"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Neadministrate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Modificari nesalvate"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Tipul de protocol neacceptat."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Fisier incarcat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Foloseste <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Foloseste codurile de tara ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Folosit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Slot de cheie folosit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Utilizator"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANuri pe %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Sistem deschis WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Sistem de cheie impartasita WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Parola WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Mod WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Parola WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Criptarea WPA necesita wpa_supplicant (pentru modul client) sau hostapd "
+"(pentru modul AP sau ad-hoc) instalate."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Avertizare"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Adaptorul wireless"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Retea wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Sumarul wireless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Securitate wireless"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Wireless-ul este dezactivat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Wireless-ul este ne-asociat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Wireless-ul se restarteaza.."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Reteaua wireless este dezactivata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Reteaua wireless este activata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Scrie cererile DNS primite in syslog"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "oricare"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "dezactiveaza"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "expirat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "ascuns"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "daca tinta este o retea"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nu"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "rutat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "etichetat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "necunoscut"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "nelimitat"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "nespecificat"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "neetichetat"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "da"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Inapoi"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Parola schimbata cu succes !"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Eroare necunoscuta, parola neschimbata !"
+
+#~ msgid "Available packages"
+#~ msgstr "Pachete disponibile"
+
+#~ msgid "Download and install package"
+#~ msgstr "Descarca si instaleaza pachetul"
+
+#~ msgid "Filter"
+#~ msgstr "Filtreaza"
+
+#~ msgid "Find package"
+#~ msgstr "Gaseste pachet"
+
+#~ msgid "Free space"
+#~ msgstr "Spatiu liber"
+
+#~ msgid "Install"
+#~ msgstr "Instalati"
+
+#~ msgid "Installed packages"
+#~ msgstr "Pachete instalate"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Configuratia-OPKG"
+
+#~ msgid "Package name"
+#~ msgstr "Numele pachetului"
+
+#~ msgid "Software"
+#~ msgstr "Software"
+
+#~ msgid "Version"
+#~ msgstr "Versiune"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "Dezactiveaza configuratia DNS"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 si IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Doar IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Doar IPv6"
+
+#~ msgid "Protocol family"
+#~ msgstr "Familia de protocol"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Fisierele de configurare vor fi pastrate."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Nota: fisierele de configurare vor fi sterse."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Activeaza aceasta retea"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Interfata se opreste.."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Interfata reconectata"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Interfata oprita"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Interfata se reconecteaza chiar acum"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Opreste aceasta retea"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Wireless-ul restartat"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Wireless-ul oprit"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "Conexiuni DHCP"
+
+#~ msgid "help"
+#~ msgstr "ajutor"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "Statusul IPv4 pe WAN"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "Statusul IPv6 pe WAN"
+
+#~ msgid "Apply"
+#~ msgstr "Aplica"
+
+#~ msgid "Applying changes"
+#~ msgstr "Se aplica modificarile"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configurarea aplicata."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Salveaza &#38; Aplica"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Nu exista modificari in asteptare de aplicat !"
+
+#~ msgid "Action"
+#~ msgstr "Actiune"
+
+#~ msgid "Buttons"
+#~ msgstr "Butoane"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Calea catre executabilul care se ocupa de evenimentul butonului"
+
+#~ 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"
+
+#~ msgid "CPU"
+#~ msgstr "Procesor"
+
+#~ msgid "Port %d"
+#~ msgstr "Port %d"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "Interfata VLAN"
diff --git a/package/luci/modules/luci-base/po/ru/base.po b/package/luci/modules/luci-base/po/ru/base.po
new file mode 100644 (file)
index 0000000..e413bcd
--- /dev/null
@@ -0,0 +1,6516 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: LuCI: base\n"
+"POT-Creation-Date: 2010-05-09 01:01+0300\n"
+"PO-Revision-Date: 2019-06-05 21:31+0300\n"
+"Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
+"Language-Team: http://cyber-place.ru\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f дБ"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr "%d бит"
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d неверных полей"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s не тегирован в множестве VLAN!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d минутное окно, %d секундный интервал)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s доступно)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(пусто)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(нет связанных интерфейсов)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Дополнительно --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Сделайте выбор --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- пользовательский --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- проверка по устройству --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- проверка по метке --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- проверка по uuid --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- сделайте выбор --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+"0 = не использовать порог RSSI, 1 = не изменять значение по умолчанию "
+"драйвера"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Загрузка за 1 минуту:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Загрузка за 15 минут:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "4-х значный шестнадцатеричный ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Загрузка за 5 минут:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr "6-октетный идентификатор в виде шестнадцатеричной строки без двоеточий"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r Быстрый Роуминг"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "802.11w Association SA Query максимальное время ожидания"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "802.11w время ожидания повтора Association SA Query"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "802.11w Management Frame Protection"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "802.11w максимальное время ожидания"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "802.11w время ожидания повтора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Идентификатор Набора Базовых Сервисов\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Система доменных имён\">DNS</abbr> порт запроса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Система доменных имен\">DNS</abbr> порт сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Система доменных имен\">DNS</abbr> сервера будут опрошены в "
+"порядке, определенном в resolvfile файле"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Расширенный идентификатор обслуживания\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-шлюз"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-маска сети"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-адрес или сеть (CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-шлюз"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-суффикс (hex)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr> индикации"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Имя <abbr title=\"Светодиод\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Управление доступом к носителю\">MAC</abbr>-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"Уникальный идентификатор DHCP\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд <abbr title="
+"\"Протокол динамической настройки узла\">DHCP</abbr> аренды"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"максимальный\">Макс.</abbr><abbr title=\"Extension Mechanisms "
+"for Domain Name System\">EDNS0</abbr> размер пакета"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+"<abbr title=\"максимальное\">Макс.</abbr> кол-во одновременных запросов"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br />Внимание: вы должны вручную перезапустить службу cron, если этот файл "
+"был пустым перед внесением ваших изменений."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr "Время сессии истекло, требуется повторная аутентификация."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Порог повтора ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr "ATM (режим асинхронной передачи)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM мосты"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM идентификатор виртуального канала (VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM идентификатор виртуального пути (VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 предоставляют собой инкапсулированные ethernet соединения в AAL5, "
+"как виртуальные сетевые интерфейсы Linux, которые могут использоваться "
+"совместно с DHCP или PPP для набора номера в сети провайдера."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM номер устройства"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "ATU-C идентификатор производителя"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Концентратор доступа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Точка доступа"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Действия"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Активные <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-маршруты"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Активные <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-маршруты"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Активные соединения"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Активные DHCP аренды"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Активные DHCPv6 аренды"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Добавить"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "Добавить IPv4 адрес..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "Добавить IPv6 адрес..."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "Добавить ключ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Добавить новый интерфейс..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Дополнительный hosts файл"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Дополнительные файлы серверов"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Адрес"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Адрес для доступа к локальному мосту-ретранслятору"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Управление"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "Дополнительные"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "Aggregate Transmit Power (ACTATP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Тревога"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Псевдоним"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Псевдоним интерфейса \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Все серверы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+"Выделять IP-адреса последовательно, начинать с меньшего доступного адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Выделять IP-адреса последовательно"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью "
+"пароля"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Разрешить режиму AP отключение абонентов на основании низкого уровня "
+"подтверждения (Acknowledge) успешности получения TCP-сегментов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Разрешить все, кроме перечисленных"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Разрешить использование стандарта 802.11b"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Разрешить только перечисленные"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Разрешить локальный хост"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Разрешить удаленным хостам подключаться к локальным перенаправленным портам "
+"SSH"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Root входит по паролю"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+"Разрешить пользователю <em>root</em> входить в систему с помощью пароля"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Разрешить ответы внешней сети в диапазоне 127.0.0.0/8, например, для RBL-"
+"сервисов"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Разрешенные IP-адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Объявлять всегда, как маршрутизатор по умолчанию"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "Всегда выключен (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "Всегда включен (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Всегда использовать каналы 40 МГц, даже если вторичный канал перекрывается. "
+"Использование этой опции не соответствует стандарту IEEE 802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr "Annex"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr "Annex A + L + M (all)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr "Annex A G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr "Annex A G.992.2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr "Annex A G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr "Annex A G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr "Annex B (all)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr "Annex B G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr "Annex B G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr "Annex B G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr "Annex J (all)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr "Annex L G.992.3 POTS 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr "Annex M (all)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr "Annex M G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr "Annex M G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"Объявить маршрутизатором по умолчанию, даже если общедоступный префикс "
+"недоступен."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Объявить DNS домены"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Объявить DNS сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Анонимная идентификация"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "Неизвестный раздел"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "Неизвестный swap"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Антенна 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Антенна 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Настройка антенн"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Любая зона"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Применить без проверки"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "Ошибка <code>%h</code> запроса на применение"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Архитектура"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+"Задайте часть данной длины, каждому публичному IPv6-префиксу этого интерфейса"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Назначить интерфейсы..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+"Назначьте префикс части, используя этот шестнадцатеричный ID вложенного "
+"исправления для этого интерфейса."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Подключенные клиенты"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "Ассоциации"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Группа аутентификации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Аутентификация"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Тип аутентификации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Основной"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Выполните аутентификацию"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Автообновление"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Автоматически"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "Автоматическая Homenet (HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+"Автоматическая проверка файловой системы раздела на ошибки, перед "
+"монтированием"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+"Автоматическое монтирование раздела, при подключении к системе во время её "
+"работы, без выключения питания и остановки системы (hotplug)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+"Автоматическое монтирование раздела подкачки при подключении к системе во "
+"время её работы без выключения питания и остановки системы (hotplug)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Hotplug раздела"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Hotplug раздела подкачки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Доступно"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Средняя:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr "B43 + B43C"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr "B43 + B43C + V43"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr "BR / DMR / AFTR"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Назад"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Назад к обзору"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Назад к настройкам"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Назад к обзору"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Назад к результатам поиска"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Резервное копирование"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Резервное копирование / Перепрошивка"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Список файлов для резервного копирования"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Указан неправильный адрес!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Диапазон"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Интервал рассылки пакетов Beacon"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Ниже приводится определённый список файлов для резервного копирования. Он "
+"состоит из измененных config файлов, отмеченных opkg, необходимых базовых "
+"файлов, а также шаблонов резервного копирования, определенных пользователем."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+"Привязывать динамически к интерфейсам, а не по шаблону адреса (рекомендуется "
+"по умолчанию для Linux)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "Открытый интерфейс"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "Открытый туннель для этого интерфейса (необязательно)."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Скорость"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Переопределение поддельного NX-домена"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Мост"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Объединить в мост"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Номер моста"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Запустить при загрузке"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Беспроводной 802.11%s контроллер Broadcom"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Беспроводной 802.11 контроллер Broadcom BCM%04x"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Буферизировано"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"CA сертификат; если отсутствует, будет сохранен после первого соединения."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Загрузка ЦП (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "Ошибка вызова"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Отменить"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Категория"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Внимание: файлы конфигурации будут удалены"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Внимание: выбрано принудительное обновление системы"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Цепочка"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "Изменить пароль"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Изменения"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Изменения приняты."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "Изменения были возвращены назад."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Изменить пароль администратора для доступа к устройству"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "Изменение пароля..."
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Канал"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"Канал %d не доступен в регуляторном домене %s и был автоматически изменен на "
+"%d."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Проверить"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Проверка файловых систем перед монтированием"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+"Проверьте эту опцию, чтобы удалить существующие сети беспроводного "
+"устройства."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Контрольная сумма"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Выберите MTD раздел"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите "
+"<em>'не определено'</em>, чтобы удалить этот интерфейс из зоны, или "
+"заполните поле <em>'создать'</em>, чтобы определить новую зону и прикрепить "
+"к ней этот интерфейс."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Выберите интерфейс или интерфейсы, которые вы хотите прикрепить к данной "
+"беспроводной сети или заполните поле <em>создать</em>, чтобы создать новый "
+"интерфейс."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Алгоритм шифрования"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Формирование пакетов данных Cisco UDP "
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Нажмите 'Создать архив', чтобы загрузить tar-архив текущих config файлов "
+"прошивки устройства, таким образом вы сохраните его настройки."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"Нажмите \"Сохранить MTD раздел\" для скачивания образа указанного MTD "
+"раздела (ВНИМАНИЕ: ДАННЫЙ ФУНКЦИОНАЛ ТОЛЬКО ДЛЯ ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Клиент"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "ID клиента при DHCP-запросе"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "Закрыть"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Завершать неактивное соединение после заданного интервала (сек.), "
+"используйте значение 0 для удержания неактивного соединения"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Закрыть список..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Команда"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "Комментарий"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Общие настройки"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Усложняет атаки на переустановку ключа на стороне клиента, отключая "
+"ретрансляцию фреймов EAPOL-Key, которые используются для установки ключей. "
+"Может вызвать проблемы совместимости и снижение надежности согласования "
+"нового ключа, при наличии большого трафика."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "Ошибка конфигурации"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Конфигурационные файлы будут сохранены"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "Конфигурация применена"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "Конфигурация возвращена назад!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Подтверждение пароля"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Соединить"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Подключен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Ограничение соединений"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "Ошибка попытки соединения"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Соединения"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"Не удалось восстановить доступ к устройству после применения конфигурации. "
+"Возможно вам придется подключиться заново, если вы изменили сетевые "
+"настройки, такие как IP-адрес или параметры доступа к беспроводной сети."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Страна"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Код страны"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Включить следующий интерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Включить следующие интерфейсы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Создать / назначить зону сетевого экрана"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Создать интерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Создать мост над несколькими интерфейсами"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Критическая ситуация"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Запись событий cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Пользовательский интерфейс"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Установленный пользователем IPv6-prefix"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Пользовательские файлы (сертификаты, скрипты) могут остаться в системе. "
+"Чтобы этого не произошло, выполните сначала сброс к заводским настройкам."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "Произвольный интервал мигания (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Настройка поведения светодиодной индикации <abbr title=\"Светодиод\">LED</"
+"abbr> устройства, если это возможно."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr "DAE-клиент"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr "DAE-порт"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr "DAE-секрет"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP-сервер"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP и DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP-клиент"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP настройки"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "DHCPv6 клиент"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "DHCPv6 режим"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "DHCPv6 сервис"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Перенаправление запросов DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "DNS-Label / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr "DNSSEC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "DNSSEC проверка без знака"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "DPD время простоя"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "DS-Lite AFTR-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "Состояние DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "DSL линейный режим"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr "Интервал DTIM"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Скорость передачи данных"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Отладка"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "По умолчанию %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "Маршрут по умолчанию"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Шлюз по умолчанию"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "Значение по умолчанию — 'stateless + stateful'"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Начальное состояние"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Укажите имя этой сети."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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-"
+"серверах."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Удалить"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "Удалить ключ"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Удалить эту сеть"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Интервал сообщений, регламентирующий доставку трафика"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Описание"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Направление"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Устройство"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Настройка устройства"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Перезагрузка..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Устройство недоступно!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Устройство недоступно! Ожидание устройства..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Диагностика"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Dial номер"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Папка"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Отключить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Отключить <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr> "
+"для этого интерфейса."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Отключить шифрование"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "Отключить отслеживание неактивности клиентов"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Отключить данную сеть"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Отключено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Отключено (по умолчанию)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Не ассоциировать при низком подтверждении"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Отбрасывать ответы внешней сети RFC1918"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "Отключить"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Ошибка попытки отключения"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Отклонить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Оптимизация расстояния"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Расстояние до самого удалённого сетевого узла в метрах."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Разновидность антенн"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 содержит в себе <abbr title=\"Протокол динамической настройки узла"
+"\">DHCP</abbr>-сервер и <abbr title=\"Служба доменных имён\">DNS</abbr>-"
+"прокси для сетевых экранов <abbr title=\"Преобразование сетевых адресов"
+"\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-"
+"серверами"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "Вы действительно хотите удалить следующий SSH-ключ?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Требуется домен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Белый список доменов"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Не фрагментировать"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы "
+"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "Вниз"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Загрузить резервную копию"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Скачать MTD раздел"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr "SNR offset внутренней сети"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Экземпляр Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr>-сервер со встроенным "
+"<abbr title=\"Secure Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr "Dual-Stack Lite (RFC6333)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Динамический <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Динамический туннель"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Динамически выделять DHCP-адреса клиентам. Если выключено, то будут "
+"обслужены только клиенты с постоянно арендованными адресами."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "EA-bits длина"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "Метод EAP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Изменить"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+"Изменить данные конфигурации raw выше, чтобы исправить любую ошибку и "
+"нажмите 'Сохранить', чтобы перезагрузить страницу."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Изменить этот интерфейс"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Редактировать эту сеть"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Чрезвычайная ситуация"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Включить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"Включить <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Включить <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Включить динамическое обновление оконечной точки HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Включить IPv6 negotiation"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Включить IPv6-согласование на PPP-соединении"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Пропускать Jumbo-кадры"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Включить NTP-клиент"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Включить Single DES"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Включить TFTP-сервер"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Включить поддержку VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Включить WPS при нажатии на кнопку, в режиме WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Включить защиту от атаки KRACK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Включить изучение и устаревание (learning/aging)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Включить отражение входящих пакетов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Включить отражение исходящих пакетов"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "Включите флаг DF (не Фрагментировать) инкапсулирующих пакетов."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Включить эту точку монтирования"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "Включить данную сеть"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Включить этот раздел подкачки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Включить/выключить"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Включено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Включает IGMP snooping на данном мосту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"Включить быстрый роуминг между точками доступа, принадлежащими к тому же "
+"домену мобильности"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Включает Spanning Tree Protocol на этом мосту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Режим инкапсуляции"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Шифрование"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "Конечная точка Хоста"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "Конечная точка Порта"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "Введите пользовательское значение"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "Введите пользовательские значения"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Стирание..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Ошибка"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Ошибочные секунды (ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet-адаптер"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet-коммутатор"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Исключите интерфейсы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Расширять имена узлов"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "Ожидаемое значение %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Истекает"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+"Время истечения срока аренды арендованных адресов, минимум 2 минуты "
+"(<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Внешний"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "Внешний R0 Key Holder List"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "Внешний R0 Key Holder List"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Внешний сервер системного журнала"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Порт внешнего сервера системного журнала"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Внешний протокол лог-сервера"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Дополнительные опции команды SSH"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr "FT над DS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "FT над the Air"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr "FT протокол"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+"Не удалось подтвердить применение в течении %d сек., ожидание отката..."
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Файл"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "Имя загрузочного образа, извещаемого клиентам"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Файловая система"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Фильтровать частные"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Фильтровать бесполезные"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "Ошибка финализации"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+"Найти все разделы (включая swap) и записать в конфигурационный файл "
+"информацию об обнаруженных разделах, т.е. выполнить команду 'block detect > /"
+"etc/config/fstab'"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Найти и присоединиться к сети"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Завершить"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Межсетевой экран"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "Метка межсетевого экрана"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Настройки межсетевого экрана"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Состояние межсетевого экрана"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Файл прошивки"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Версия прошивки"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Фиксированный порт для исходящих DNS-запросов"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Установить прошивку"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Установить..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Установить новый образ прошивки"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Операции с прошивкой"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Прошивка..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "Запись во флешпамять (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Назначить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "Принудительно использовать режим 40 МГц"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Назначить CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Назначить DHCP в этой сети, даже если найден другой сервер."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Назначить TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Назначить TKIP и CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Активировать соединение"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Принудительная прошивка"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Принудительно использовать NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "Несоответствие маркеров формы"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Перенаправлять трафик DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "Секунды прямой коррекции ошибок (FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Перенаправлять широковещательный траффик"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "Перенаправлять запросы трафика Mesh"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Режим перенаправления"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Порог фрагментации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Пакетная передача кадров"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Свободно"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в <a "
+"href=\"http://wireguard.com\">wireguard.com</a>."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "ГГц"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Только GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Шлюз"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "Неверный адрес шлюза"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Порты шлюза"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Основные настройки"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Основные настройки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Создать config"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "Создать PMK локально"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Создать архив"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Беспроводной 802.11%s контроллер"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Введённые пароли не совпадают, пароль не изменён!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Основные настройки"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Основные настройки сети"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Перейти к настройке пароля..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Перейти к странице настройки"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Групповой пароль"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Гость"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Пароль HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net логин"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "HT режим (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Перезапустить"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr "Ошибки контроля ошибок заголовка (HEC)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "Интервал heartbeat (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Здесь вы можете настроить основные параметры вашего устройства, такие как "
+"имя хоста или часовой пояс."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Скрыть <abbr title=\"Расширенный идентификатор сети\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "Скрыть пустые цепочки"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Хост"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Список хостов"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Время ожидания хоста"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "<abbr title=\"Адрес Интернет протокола\">IP</abbr>-адрес или сеть"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Содержимое Host-Uniq тега"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Имя хоста"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Имя хоста в DHCP-запросах"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Имена хостов"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Гибрид"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "IKE DH Group"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IP-адреса"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "IP-протокол"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP-адрес"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "Неверный IP-адрес"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "IP-адрес не указан"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Межсетевой экран IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "Основной IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4-адрес"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "IPv4 assignment length"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Широковещательный IPv4-адрес"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4-адрес шлюза"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Маска сети IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "Сеть IPv4 в формате адрес/маска подсети"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "IPv4 префикс"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Длина префикса IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-адрес"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4-в-IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Межсетевой экран IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "IPv6 соседи (neighbours)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Настройки IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 ULA-префикс"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "Основной IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6-адрес"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "IPv6 подсказка присвоения"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "IPv6 назначение длины"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6-адрес шлюза"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "Сеть IPv6 в формате адрес/маска подсети"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Префикс IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Длина префикса IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "IPv6 направление префикса"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "IPv6 суффикс"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-адрес"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6-PD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6 в IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6 через IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6 через IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Идентификация EAP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Если выбрано, то 1DES включено"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Если выбрано, то шифрование выключено"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Если выбрано, монтировать устройство используя его UUID, а не фиксированный "
+"файл устройства"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Если выбрано, монтировать устройство используя название его раздела, а не "
+"фиксированный файл устройства"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Если не выбрано, то маршрут по умолчанию не настраивается"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Если не выбрано, то извещаемые адреса DNS серверов игнорируются"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Если физической памяти не достаточно, то неиспользуемые данные могут быть "
+"временно перемещены в раздел подкачки, что в свою очередь приведет к "
+"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>. "
+"Однако, перемещение в файл — это достаточно долгий процесс, так как "
+"устройство, на котором располагается раздел подкачки, работает гораздо "
+"медленнее, чем <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Игнорировать <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Игнорировать интерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Игнорировать файл resolv"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Образ"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "В"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+"Для предотвращения несанкционированного доступа к системе ваш запрос "
+"заблокирован. Нажмите кнопку 'Продолжить' ниже, чтобы вернуться на "
+"предыдущую страницу."
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Промежуток времени бездействия"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Входящий:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Информация"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr "Информация"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Ошибка инициализации"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Скрипт инициализации"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Скрипты инициализации"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "Для поддержки IPv6, установите пакет iputils-traceroute6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Установить пакет %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Установить расширения протокола..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Интерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "Интерфейс %q устройство авт.перемещается из %q в %q."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Настройка сети"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Список интерфейсов"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Интерфейс переподключается..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Имя интерфейса"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Интерфейс не существует или пока не подключен."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Интерфейсы"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Внутренний"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Внутренняя ошибка сервера"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Неверно"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"Указан неверный VLAN ID! Доступны только идентификаторы в диапазоне от %d до "
+"%d."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "Указан неверный VLAN ID! Доступны только уникальные ID"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Неверный логин и/или пароль! Попробуйте снова."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Изолировать клиентов"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+"Оказалось, что вы пытаетесь прошить устройство прошивкой, которая по размеру "
+"не помещается в чип флэш-памяти, проверьте ваш файл прошивки!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Требуется JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Подключение к сети"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Найденные точки доступа Wi-Fi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Подключение к сети: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Сохранить настройки"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Журнал ядра"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Версия ядра"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Пароль (ключ)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Ключ №%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr "КиБ"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Принудительно завершить"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP-сервер"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Порог ошибок эхо-запросов LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Интервал эхо-запросов LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Метка"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Язык"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Язык и тема"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Задержка"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Лист"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Время аренды адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Файл аренд"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Оставшееся время аренды"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Оставьте поле пустым для автоопределения"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Оставьте пустым для использования текущего адреса WAN"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "События:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Предел"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr "Ограничение сервиса DNS, для подсетей интерфейса используещего DNS."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "Ограничьте прослушивание этих интерфейсов и замыкание на себя."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Затухание линии (LATN)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Режим линии"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Состояние Линии"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Время бесперебойной работы линии"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Подключение"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Список <abbr title=\"Domain Name System\">DNS</abbr>-серверов для "
+"перенаправления запросов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+"Список R0KHs в том же мобильном домене. <br />В формате: MAC-адрес,NAS-"
+"идентификатор,128-битный ключ как hex строка. <br />этот список используется "
+"для сопоставления R0KH-ID (NAS ID) с целевым MAC-адресом при запросе ключа "
+"PMK-R1 из R0KH , который использовался STA во время начальной ассоциации "
+"доменов Mobility."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+"Список R1KHs в том же домене мобильности. <br />Формат: MAC-адрес,R1KH-ID "
+"как 6 октетов с двоеточиями, 128-битный ключ, как шестнадцатеричная строка. "
+"<br />Этот список используется для сопоставления R1KH-ID с целевым MAC-"
+"адресом при отправке ключа PMK-R1 из R0KH. Это также список авторизованных "
+"R1KHs в MD, которые могут запросить PMK-R1 ключи."
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Список файлов ключей SSH для авторизации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Список доменов, для которых разрешены ответы RFC1918"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Список хостов, поставляющих поддельные результаты домена NX"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Интерфейс для входящих соединений"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Порт для входящих соединений"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Принимать подключения только на указанном интерфейсе или, если интерфейс не "
+"задан, на всех интерфейсах"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Порт для входящих DNS-запросов"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Загрузка"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Средняя загрузка"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Загрузка"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "Загрузка SSH ключей..."
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "Неверный локальный IP-адрес"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Присвоение локального IP-адреса"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Локальный IPv4-адрес"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Локальный IPv6-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Только локальный DNS"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Запуск пакетов и служб пользователя, при включении устройства"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Дата и время"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Локальный домен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Согласно требованиям, имена соответствующие этому домену, никогда не "
+"передаются. И разрешаются только из файла DHCP (/etc/config/dhcp) или файла "
+"хостов (/etc/hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Суффикс локального домена, который будет добавлен к DHCP-именам и записи "
+"файла хостов (/etc/hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Локальный сервер"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Локализировать имя хоста в зависимости от запрашиваемой подсети, если "
+"доступно несколько IP-адресов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Локализовывать запросы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Блокировать канал %s используемый: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Запись событий"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Запись запросов"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Настройка журнала"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Войти"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Выйти"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr "Потеря сигнала в секундах (LOSS)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Минимальный адрес аренды."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Фильтр MAC-адресов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-фильтр"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Список MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4over6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "Неверное MAP правило"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "МБ/с"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "МГц"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+"Прежде чем перенести корневую файловую систему на внешний носитель, "
+"используйте команды приведенные ниже:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Вручную"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "Max. Attainable Data Rate (ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "Максимально разрешенное значение интервала прослушивания клиента"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Максимальное количество активных арендованных DHCP-адресов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Максимально допустимое количество одновременных DNS-запросов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Максимально допустимый размер UDP пакетов EDNS.0"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Максимальное время ожидания готовности модема (секунды)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"Максимальная длина имени составляет 15 символов, включая префикс "
+"автоматического протокола/моста (br-, 6in4-, pppoe- etc.)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Максимальное количество арендованных адресов"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Мбит/с"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr "Средняя"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Оперативная память (RAM)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Использование памяти (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "Mesh ID"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Метрика"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "Зеркальный порт наблюдения"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "Зеркальный исходящий порт"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Отсутствует расширение протокола %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "Мобильный домен"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Режим"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Модель"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Настройки модема по умолчанию"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Модем"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "Ошибка запроса информации о модеме"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Время ожидания инициализации модема"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Монитор"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr "Слишком мало символов"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Настройка config файла fstab (/etc/config/fstab)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Точка монтирования"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Монтирование разделов"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Точки монтирования — Настройка раздела"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Точки монтирования — Настройка раздела подкачки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Точки монтирования определяют, куда в файловой системе будут смонтированы "
+"разделы запоминающего устройства"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "Монтирование несконфигурированного раздела"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Опции монтирования"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Точка монтирования"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Монтирование несконфигурированного раздела подкачки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Смонтированные разделы"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Переместить вниз"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Переместить вверх"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "NAT-T режим"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "NAT64 префикс"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "NDP-прокси"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "NT домен"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Список NTP-серверов"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Имя"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Имя нового интерфейса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Имя новой сети"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Навигация"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Маска сети"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Сеть"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Сетевые утилиты"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Образ системы для сетевой загрузки"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "Активность сетевого устройства (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "Нет сетевого устройства"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Сеть без интерфейсов."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Следующий »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "Нет"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "DHCP-сервер не настроен для этого интерфейса"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Без NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Файлы не найдены"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Нет доступной информации"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "Отсутствует соответствующая делегация префикса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Отключить кэш отрицательных ответов"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Не настроена сеть на устройстве"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Не задано имя сети"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Пароль не установлен!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "Нет публичных ключей"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Нет правил в данной цепочке"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Результаты сканирования пока недоступны..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Зона не присвоена"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Шум"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Соотношение сигнал/шум (SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Шум:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "Non Pre-emtive CRC errors (CRC_P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "Не использовать wildcard"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Ничего"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Нормально"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Не найдено"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Не связанный"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Не подключено"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr "Не запускается при загрузке"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Внимание: длина имени интерфейса"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Заметка"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "DNS-запрос"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"Количество кэшированных DNS записей (максимум — 10000, 0 — отключить "
+"кэширование)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "Количество параллельных потоков используемых для компрессии"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "Obfuscated Group Password"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "Obfuscated Password"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "Получение IPv6-адреса"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Задержка выключенного состояния"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"На этой странице вы можете настроить сетевые интерфейсы. Вы можете "
+"объединить несколько интерфейсов в мост, выбрав опцию 'Объединить в мост' и "
+"введя список интерфейсов, разделенных пробелами. Вы также можете "
+"использовать <abbr title=\"Виртуальные локальные сети\">VLAN</abbr>-"
+"обозначения вида <samp>ИНТЕРФЕЙС.НОМЕРVLAN</samp> (<abbr title=\"например"
+"\">напр.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Задержка включенного состояния"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Должен быть указан либо MAC-адрес, либо имя хоста!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Одно или несколько полей содержат недопустимые значения!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "Одно или несколько недопустимых / обязательных значений на странице"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Одно или несколько обязательных полей не заполнены!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Открыть список..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Настройка частоты"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Опция изменена"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Опция удалена"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Необязательно"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"Необязательно. 32-разрядная метка для исходящих зашифрованных пакетов. "
+"Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное "
+"значение например '::1' или '::1:2'. Когда IPv6 префикс такой как — ('a:b:c:"
+"d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:c:"
+"d::1') для этого интерфейса."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+"Необязательно. Base64-шифрованный общий ключ. Добавляет дополнительный слой "
+"криптографии с симметричным ключом для пост-квантового сопротивления."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+"Необязательно. Создавать маршруты для разрешенных IP адресов для этого узла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Необязательно. Описание узла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+"Необязательно. Запрашивающий хост. Имена разрешаются до появления интерфейса."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "Необязательно. Максимальная единица передачи туннельного интерфейса."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "Необязательно. Порт узла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+"Необязательно. Кол-во секунд между сохранением сообщений. По умолчанию равно "
+"'0' (отключено). Рекомендуемое значение, если это устройство находится за "
+"NAT 25."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+"Необязательно. Udp-порт, используемый для исходящих и входящих пакетов."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Опции"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Другие:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Вне"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Исходящий:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "Исходящий интерфейс"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Назначить MAC-адрес"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Назначить MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Отвергать TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Отвергать TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Назначить имя интерфейса по умолчанию"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Назначить шлюз в ответах DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Переопределите сетевую маску, отправленную клиентам. Обычно это вычислено от "
+"подсети, которая подана."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "Назначить таблицу внутренних маршрутов"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Обзор"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Пользователь"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Пароль PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Имя пользователя PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "PIN код отвергнут"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "PMK R1 Push"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Инкапсуляция PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "PSID смещение"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "PSID длина в битах"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr "PTM/EFM (Packet Transfer Mode)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Требуется пакет libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Пакеты"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Часть зоны %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Пароль"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "С помощью пароля"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Пароль к Приватному ключу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Пароль к внутреннему Приватному ключу"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr "Сложность пароля"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Пароль2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "Перетащите файл SSH ключа или вставьте содержимое..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Путь к CA-сертификату"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Путь к Client-сертификату"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Путь к Приватному ключу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Путь к внутренним CA-сертификатам"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Путь к внутренним Client-сертификатам"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Путь к внутреннему Приватному ключу"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Пиковая:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "Запрос IP адреса назначения"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Отсутствует адрес пира"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Пиры"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr "Perfect Forward Secrecy"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Выполнить перезагрузку"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Выполнить сброс"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "Постоянно держать включенным"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Скорость:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Настройки канала"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Пинг-запрос"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Пакетов"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Введите логин и пароль."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Политика"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr "Интервал автообновления"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr "Интервал автоматического обновления состояния страниц в секундах"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Порт"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Состояние порта:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Режим управления питанием"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "Pre-emtive CRC errors (CRCP_P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Предпочитать LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Предпочитать UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "Делегированный префикс"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "Предварительный ключ"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Предполагать, что узел недоступен после указанного количества ошибок "
+"получения эхо-пакета LCP, введите '0' для игнорирования ошибок"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Запретить прослушивание этих интерфейсов."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Не позволяет клиентам обмениваться друг с другом информацией"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Приватный ключ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Продолжить"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Процессы"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Профиль"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Прот."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Протокол"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Протокол нового интерфейса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Поддержка протокола не установлена"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Включить NTP-сервер"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Предоставлять новую сеть"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Псевдо Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Публичный ключ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"Публичные SSH ключи позволяют выполнять беспарольный SSH вход с большим "
+"уровнем безопасности по сравнению с использованием входа по паролю. Чтобы "
+"загрузить новый публичный SSH ключ, вставьте строку публичного OpenSSH ключа "
+"или перетащите <code>.pub</code> файл в поле ввода ключа."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+"Публичный префикс, направляемый на это устройство для распространения среди "
+"клиентов."
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "QMI сотовый"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Качество"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Опрашивать все имеющиеся внешние <abbr title=\"Domain Name System\">DNS</"
+"abbr>-серверы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "R0 Key время жизни"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "R1 Key Holder"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "RFC3947 NAT-T режим"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr "Порог RSSI для присоединения"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Порог RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "Получение (RX)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Скорость получения"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Порт Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Секрет Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Сервер Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Порт Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Секрет Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Сервер Radius-Authentication"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Строка в шестнадцатеричном коде. Оставьте пустой, если ваш провайдер не "
+"требует этого"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Читать <code>/etc/ethers</code> для настройки <abbr title=\"Протокол "
+"динамической настройки узла\">DHCP</abbr>-сервера"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"Действительно удалить этот интерфейс? Удаление не может быть отменено! Вы "
+"можете потерять доступ к этому устройству, если вы подключены через данный "
+"интерфейс"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Действительно удалить эту беспроводную сеть? Удаление не может быть отменено!"
+"\\nВы можете потерять доступ к этому устройству, если вы подключены через "
+"эту сеть."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Действительно сбросить все изменения?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Вы действительно хотите изменить протокол?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Соединения в реальном времени"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Графики в реальном времени"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Загрузка в реальном времени"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Трафик в реальном времени"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Беспроводная сеть в реальном времени"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Срок Реассоциации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Защита от DNS Rebinding"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Перезагрузка"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Перезагрузка..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr ""
+"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Приём"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Приёмная антенна"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Рекомендуемый. IP адреса интерфейса WireGuard."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Переподключить этот интерфейс"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Ссылки"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Ретранслятор"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Мост-Ретранслятор"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Ретранслятор между сетями"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Мост-ретранслятор"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Удалённый IPv4-адрес"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Удалённый IPv4-адрес или FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Удалить"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Повторить поиск"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Заменить запись"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Заменить настройку беспроводного соединения"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Запрос IPv6 адреса"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Запрос IPv6 префикс длины"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Требовать"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+"Требуется для некоторых Интернет провайдеров, например использующих DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "Требовать Приватный ключ в кодировке Base64 для этого интерфейса."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Требовать Публичный ключ узла в кодировке Base64."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+"Требовать IP-адреса и префиксы, которые разрешено использовать этому "
+"одноранговому узлу внутри туннеля. Обычно туннельные IP-адреса однорангового "
+"узла и сети одноранговых маршрутов через туннель."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"Требуется 'полная' версия wpad/hostapd и поддержка со стороны WiFi драйвера  "
+"в  <br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Требуется поддержка внешней сетью DNSSEC; убедитесь, что ответы "
+"неподписанного домена действительно поступают от неподписанных доменов"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Сбросить"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Сбросить счётчики"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Сбросить на значения по умолчанию"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Файлы resolv и hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Файл resolv"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Перезапустить"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Перезапустить межсетевой экран"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "Перезапустить радио-интерфейс"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Восстановление"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Восстановить резервную копию"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Показать/скрыть пароль"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Вернуть"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Вернуть изменения"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "Ошибка <code>%h</code> отмены конфигурации"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Отмена конфигурации..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Корень"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Корневая директория для файлов сервера, вроде TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Подготовка корневой директории"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "Маршрут разрешенный для IP адресов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Тип маршрута"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Доступные режимы работы"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Пароль маршрутизатора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Маршруты"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Маршрутизация служит для определения через, какой интерфейс и шлюз можно "
+"достичь определенного хоста или сети."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "Правило"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Проверять файловую систему перед монтированием раздела"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Проверить"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "Доступ по SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "Адрес сервера SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "Порт сервера SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "SSH логин"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-ключи"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr "Разделы подкачки (swap)"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Сохранить"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Сохранить и применить"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Сохранить MTD раздел"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Сохранить содержимое MTD раздела"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "Сохранение ключей..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Поиск"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "Ошибка запроса на сканирование"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Запланированные задания"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Строки добавлены"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Строки удалены"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"Выберите 'Принудительная прошивка' для проишвки образа даже если проверка "
+"формата завершается с ошибкой. Используйте эту опцию только если уверены, "
+"что файл образа корректный и предназначен именно для данного устройства!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно "
+"только в сочетании с порогом ошибок"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Разделять клиентов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Настройки сервера"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Имя службы"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Тип службы"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Сервисы"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "Сессия истекла"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "Установить VPN в качестве маршрута по умолчанию"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Автоматически активировать соединение, при подключении в разъем кабеля."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "Настройка синхронизации времени"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "Ошибка установки PLMN"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "Ошибка установки режима работы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Настроить сервер DHCP"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr "Секунды с большим числом ошибок (SES)."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "Short GI"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Короткая преамбула"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Показать текущий список файлов резервной копии"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "Показать пустые цепочки"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Выключить этот интерфейс"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Сигнал"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Затухание сигнала (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Сигнал:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Размер"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Размер кэша DNS запроса"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "Размер ZRam в мегабайтах"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Пропустить"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Перейти к содержимому"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Перейти к навигации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Время слота"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "Программное обеспечение VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Извините, запрошенный объект не был найден."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Извините, сервер столкнулся с неожиданной ошибкой."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"К сожалению, автоматическое обновление не поддерживается, новая прошивка "
+"должна быть установлена вручную. Обратитесь к wiki для получения конкретных "
+"инструкций для вашего устройства."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Источник"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Папка, к которой монтируется раздел устройства"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Порт данного процесса <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Максимальное количество неудачных запросов ARP, после которого узлы "
+"считаются отключенными"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Максимальное количество секунд, после которого узлы считаются отключёнными"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Укажите TOS (Тип обслуживания)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+"Укажите значение TTL (Время Жизни) для инкапсуляции пакетов, по умолчанию "
+"(64)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+"Укажите MTU (Максимальный Объем Данных), отличный от стандартного (1280 "
+"байт)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Укажите закрытый ключ."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Старт"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Приоритет"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Применение конфигурации..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Начато сканирование беспроводных сетей..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Загрузка"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Статические маршруты IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Статические маршруты IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Постоянные аренды"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Статические маршруты"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Статический адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Постоянная аренда используется для присвоения фиксированных IP-адресов и "
+"имён DHCP-клиентам. Постоянная аренда также необходима для статических "
+"интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "Максимально допустимое время бездействия клиента"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Состояние"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Остановить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Строгий порядок"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr "Сильная"
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Применить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Подавить логирование"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "Подавить логирование стандартной работы этих протоколов"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Раздел подкачки (swap)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Настройка config файла fstab (/etc/config/fstab)"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Коммутатор"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Коммутатор %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Коммутатор %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+"Коммутатор %q имеет неизвестную топологию — настройки VLAN не могут быть "
+"точными."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "Изменить маску порта"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "Изменить VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Изменить протокол"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "Переключить в формат CIDR"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "Активность порта коммутатора (%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr "Синхронизировать с NTP-сервером"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Синхронизировать с браузером"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Синхронизация..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Система"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Системный журнал"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Свойства системы"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Размер системного журнала"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Настройки TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP сервер root"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "Передача (TX)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Cкорость передачи"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Таблица"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Назначение"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Сеть назначения"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Завершить"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Вкладка меню <em>'Настройка устройства'</em> содержит физические настройки "
+"радиооборудования, такие как канал, мощность передачи или выбор антенны, "
+"которые совместно используются всеми настроенными беспроводными сетями (если "
+"радиооборудование поддерживает несколько SSID). Параметры сети, такие как "
+"шифрование или режим работы, смотрите на вкладке <em>'Настройка сети'</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Пакет <em>libiwinfo-lua</em> не установлен. Для включения настроек "
+"беспроводных сетей, вам необходимо установить этот компонент!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+"HE.net конфигурация обновления конечной точки изменена, теперь вы должны "
+"использовать простое имя пользователя вместо ID пользователя!"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr "IPv4-адрес или полное доменное имя удаленного конца туннеля."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Назначенный провайдеру префикс IPv6, обычно заканчивается на <code>::</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "Архив резервной копии не является правильным gzip файлом."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr "Не удалось загрузить config файл из-за следующей ошибки:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"Устройство недоступно в течение %d секунд после применения изменений. Это "
+"привело к откату конфигурации из соображений безопасности. Если вы считаете, "
+"что конфигурация верна, выполните настройку без проверки. Кроме того, вы "
+"можете отклонить это предупреждение и отредактировать изменения перед "
+"попыткой применить конфигурацию снова или откатить все изменения, чтобы "
+"сохранить рабочее состояние конфигурации."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Устройство или раздел (<abbr title=\"например\">напр.</abbr> <code>/dev/"
+"sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Файловая система (<abbr title=\"например\">напр.</abbr> <samp><abbr title="
+"\"Third Extended Filesystem\">ext3</abbr></samp>)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 /> Нажмите 'Продолжить', чтобы "
+"начать процедуру обновления прошивки."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Следующие настройки были отвергнуты"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "На данном устройстве активны следующие правила."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "Указанный публичный SSH ключ уже добавлен."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"Указанный публичный SSH ключ неверный. Укажите правильный RSA или ECDSA ключ."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Заданное имя сети не является уникальным"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Аппаратное обеспечение не поддерживает Multi-SSID, и существующие настройки "
+"будут изаменены, если вы продолжите."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+"Длина префикса IPv4 в битах, оставшееся будет использоваться в IPv6-адресах."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Длина префикса IPv6 в битах"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "Локальный адрес IPv4, по которому создается туннель (необязательно)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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="
+"\"Virtual Local Area Network\">VLAN</abbr>ов, в которых компьютеры могут "
+"связываться напрямую между собой. <abbr title=\"Виртуальные локальные сети"
+"\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
+"сегментов. Обычно по умолчанию используется один порт для подключения к "
+"внешней сети, например к Интернету и другие порты предназначенные для "
+"внутренней — локальной сети."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Для выбранного протокола необходимо задать устройство"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "Представленный маркер безопасности недействителен или уже истек!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr "Идёт удаление настроек раздела с последующей перезагрузкой системы."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Сейчас система перепрошивается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /"
+"> Подождите несколько минут, прежде чем попытаться соединиться. Возможно, "
+"потребуется обновить адрес компьютера, чтобы снова подключиться к "
+"устройству, в зависимости от настроек."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "Пароль администратора успешно изменен."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Загруженный файл прошивки не поддерживается. Проверьте, что вы загрузили "
+"подходящую прошивку для чипа вашего устройства."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Тема"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Нет активных арендованных адресов."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "Нет изменений для применения."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Нет изменений, которые можно отменить!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Нет изменений, которые можно применить!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Устройство не назначено. Назначьте сетевое устройство на странице 'Настройки "
+"канала'"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+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."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "IPv4-адрес ретранслятора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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' fordomain-specific или полный список внешней сети <abbr "
+"title=\"Domain Name System\">DNS</abbr> servers."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Настройка данного config файла, позволит пользователю создать резервную "
+"копию своих настроек. Копируются config файлы из папки /etc/config и "
+"некоторые другие. При перепрошивке устройства sysupgrade-совместимым "
+"образом, вы сможете воспользоваться резервной копией своих настроек."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+"Это либо \"Update Key\", настроенный для туннеля, либо пароль учетной "
+"записи, если ключ обновления не был настроен"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Cодержимое config файла /etc/rc.local. Вы можете добавить свои команды "
+"(перед 'exit 0'), чтобы выполнить их во время загрузки устройства."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Это локальный адрес, назначенный туннельным брокером, обычно заканчивается "
+"на <code>...:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Это единственный <abbr title=\"Протокол динамической настройки узла\">DHCP</"
+"abbr>-сервер в локальной сети"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "Это просто имя пользователя, для входа в учетную запись"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+"Это префикс, направлен вам брокером туннелей для использования клиентами"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Содержимое файла /etc/crontabs/root (задания crontab). Здесь вы можете "
+"запланировать ваши задания."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr "Это адрес ближайшей точки присутствия туннельного брокера"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "Страница содержит работающие процессы и их состояние."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Страница содержит список всех активных на данный момент сетевых соединений."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Здесь не содержатся необходимые значения"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Синхронизация времени"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Синхронизация времени ещё не настроена."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "Интервал регенерации ключей GTK"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Часовой пояс"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "Аутентификация..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Чтобы восстановить config файлы, ваши настройки прошивки устройства, вы "
+"можете загрузить ранее созданный вами архив здесь. Для сброса настроек "
+"прошивки к исходному состоянию нажмите 'Выполнить сброс' (возможно только "
+"для squashfs-образов)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Тон"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Всего доступно"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Трассировка"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Трафик"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Передача"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Скорость передачи"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Передача"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Мощность передатчика"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Передающая антенна"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Назначить"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Режим работы"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Идентификатор туннеля"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Интерфейс туннеля"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Ссылка на туннель"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Мощность передатчика"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Тип"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Только UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB устройство"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB порты"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "Невозможно определить имя устройства"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "Невозможно определить внешний IP-адрес"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "Невозможно определить основной интерфейс"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Невозможно обработать запрос для"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "Невозможно получить идентификатор клиента"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "Не удалось разрешить AFTR имя хоста"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "Не удалось разрешить имя хоста пира"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Секунды неготовности (UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Неизвестная ошибка (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Неуправляемый"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Отмонтировать"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "Ключ без имени"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Непринятые изменения"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "Неподдерживаемый тип MAP"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Неподдерживаемый модем"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Неподдерживаемый тип протокола."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "Вверх"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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-совместимый образ, чтобы заменить текущую прошивку "
+"устройства. Поставьте галочку 'Сохранить настройки', чтобы сохранить текущие "
+"config файлы — ваши настройки устройства (требуется совместимый образ "
+"прошивки)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Загрузка архива..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Загруженный файл"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Время работы"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Использовать <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Использовать шлюз DHCP"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Использовать объявляемые узлом DNS сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Использовать коды стран ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Использовать MTU на интерфейсе туннеля"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Использовать TTL на интерфейсе туннеля"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "Использовать как внешний overlay (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Использовать как корень (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Использовать широковещательный флаг"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Использовать встроенный IPv6-менеджмент"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Использовать собственные DNS сервера"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Использовать шлюз по умолчанию"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Использовать метрику шлюза"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Использовать таблицу маршрутизации"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Нажмите кнопку <em>'Добавить'</em>, чтобы добавить новую запись аренды. "
+"<em>'MAC-адрес'</em> идентифицирует хост, <em>'IPv4-адрес'</em> указывает "
+"фиксированный адрес, а <em>'Имя хоста'</em> присваивается в качестве "
+"символьного имени для запрашивающего хоста. Необязательно <em>'Время аренды "
+"адреса'</em> может быть использовано для того, чтобы установить "
+"индивидуальное время аренды, например 12h, 3d или бесконечное."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Использовано"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Используемый слот ключа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+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."
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Сертификат пользователя (PEM encoded)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Ключ пользователя (PEM encoded)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Имя пользователя"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLANы на %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLANы на %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "Локальный адрес VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "Локальный порт VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "Сервер VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Порт VPN сервера"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "Сертификат SHA1 hash VPN сервера"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (CISCO 3000 (and others) VPN)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Производитель (Vendor)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+"Класс производителя (Vendor class), который отправлять при DHCP-запросах"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Проверить"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Виртуальный динамический винтерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Открытая система WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Общий ключ WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Пароль WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Режим WMM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Пароль WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"Необходимо установить wpa_supplicant (режим клиента) или hostapd (режим "
+"точки доступа или ad-hoc) для поддержки шифрования WPA."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Ожидание применения изменений..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Ожидание завершения выполнения команды..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Ожидание применения конфигурации... %d сек"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Ожидание подключения устройства..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Внимание"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Предупреждение: Есть не сохраненные изменения, которые будут потеряны при "
+"перезагрузке!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr "Слабая"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"При использовании PSK, PMK может генерироваться автоматически. Если "
+"включено, опции ключей R0/R1, расположенные ниже, не применяются. Для "
+"использования опций ключей R0/R1 отключите данную опцию."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "Активность Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "Ассоциация Wi-Fi клиента (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "Приём данных Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "Передача данных Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "Wi-Fi включен (%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Ширина"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Wi-Fi"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Беспроводной адаптер"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Беспроводная сеть"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Список беспроводных сетей"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Безопасность беспроводной сети"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Беспроводная сеть отключена"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Беспроводная сеть не связана"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Беспроводная сеть перезапускается..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Беспроводная сеть отключена"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Беспроводная сеть включена"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Записывать полученные DNS-запросы в системный журнал"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Записывать системные события в файл"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "Да"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Здесь вы можете включить или выключить установленные скрипты инициализации. "
+"Изменения вступят в силу после перезагрузки устройства. <strong>Внимание: "
+"если вы выключите один из основных скриптов инициализации (например "
+"'network'), ваше устройство может оказаться недоступным!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Вам необходимо включить JavaScript в вашем браузере для корректной работы "
+"LuCI."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "Алгоритм компрессии ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "Потоки компрессии ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "Настройки ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "Размер ZRam"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "любой"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "авто"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "соед. мостом"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "создать"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "создать:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "Создаёт мост для выбранных сетевых интерфейсов"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "дБ"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "дБм"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "отключить"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "отключено"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "истекло"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Файл, где хранятся арендованные <abbr title=\"Протокол динамической "
+"настройки узла\">DHCP</abbr>-адреса"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "перенаправить"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "полный дуплекс"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "полудуплекс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "значение в шестнадцатеричном представлении"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "скрытый"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "гибридный режим"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "если сеть"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "ввод"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "кБ/с"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "кбит/с"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "ключ длиной от 8 до 63 символов"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "ключ длиной 5 или 13 символов"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "Локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "минут(ы)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "смешанный WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "нет"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "нет соединения"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "не пустое значение"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "не существует"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "выключено"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "включено"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "открыть"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "вывод"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "overlay"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "положительное десятичное число"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "положительное целое число"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "случайно"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "режим передачи"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "маршрутизируемый"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "секунды"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "режим сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "stateful-only"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "stateless"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "stateless + stateful"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "с тегом"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "единицы измерения времени (TUs / 1.024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "уникальное значение"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "неизвестный"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "неограниченный"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "не определено"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "не определено -или- создать:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "без тега"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "верный IP-адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "верный IP-адрес или префикс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "верная IPv4 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "верный IPv4 адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "верный IPv4 адрес или сеть"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "верный IPv4 адрес:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "верная IPv4 сеть"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "верная IPv4 или IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "верное значение IPv4 префикса (0-32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "верная IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "верный IPv6 адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "верный IPv6 адрес или префикс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "верный IPv6 идентификатор хоста"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "верная IPv6 ctnm"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "верное значение IPv6 префикса (0-128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "верный MAC адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "верный UCI идентификатор"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "верный UCI идентификатор, имя хоста или IP-адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "верный адрес:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "верная дата (ГГГГ-ММ-ДД)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "верное десятичное число"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "верное шестнадцатеричное значение WEP ключа"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "верное шестнадцатеричное значение WPA ключа"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "верное имя хоста:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "верное имя хоста"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "верное имя хоста или IP-адрес"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "верное целое число"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "верная сеть в формате адрес/маска подсети"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr "верный символ номера телефона (0-9, \"*\", \"#\", \"!\" or \".\")"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "верный порт или диапазон портов (порт1-порт2)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "верное значение порта"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "верное время (ЧЧ:ММ:СС)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "значение длиной от %d до %d символов"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "значение в диапазоне от %f до %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "значение больше или равное %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "значение меньше или равное %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr "значение длиной %d или менее символов"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "значение длиной %d или более символов"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "да"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Назад"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "одно из:\n"
+#~ "- %s"
+
+#~ 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 слишком стар, чтобы отобразить эту страницу "
+#~ "правильно. Обновите его до версии 7 или используйте другой браузер, "
+#~ "например Firefox, Opera или Safari."
+
+#~ msgid "kB"
+#~ msgstr "кБ"
diff --git a/package/luci/modules/luci-base/po/sk/base.po b/package/luci/modules/luci-base/po/sk/base.po
new file mode 100644 (file)
index 0000000..37c1e66
--- /dev/null
@@ -0,0 +1,6165 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr ""
diff --git a/package/luci/modules/luci-base/po/sv/base.po b/package/luci/modules/luci-base/po/sv/base.po
new file mode 100644 (file)
index 0000000..8192b58
--- /dev/null
@@ -0,0 +1,6326 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-04-28 09:22+0200\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
+"Language-Team: none\n"
+"Language: sv\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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s är inte taggad i flera VLAN!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d minut-fönster, %d sekundintervall)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s tillgängligt)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(tomt)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(inga gränssnitt har bifogats)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Ytterligare fält --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Vänligen välj --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- anpassad --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- matcha enligt enhet --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- matcha enligt märke --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- matcha enligt uuid --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Belastning senaste minuten:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Belastning senaste 15 minutrarna:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Belastning senaste 5 minutrarna:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r Snabb förvandling"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr>server-port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-adress"
+
+# I don't think "Gateway" is commonly translated.
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-nätmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-adress eller nätverk "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Lysdiod\">LED</abbr>-konfiguration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Notera att: du måste starta om cron-tjänsten om crontab-filen var tom "
+"innan den ändrades."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM-bryggor"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Accesspunkt"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Åtgärder"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-rutter"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-rutter"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktiva anslutningar"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktiva DHCP-kontrakt"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktiva DHCPv6-kontrakt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Lägg till"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Lägg till ett nytt gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Ytterligare värdfiler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Ytterligare server-filer"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adress"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Adress för att komma åt lokal reläbrygga"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Administration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Avancerade inställningar"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Varning"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+"Allokera IP-adresser sekventiellt med start från den lägsta möjliga adressen"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Allokera IP sekventiellt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Tillåt alla utom listade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Tillåt enbart listade"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Tillåt localhost"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Tillåt fjärrstyrda värdar att ansluta via SSH till lokalt vidarebefordrade "
+"portar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Tillåt root-inloggningar med lösenord"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Tillåt <em>root</em>-användaren att logga in med lösenord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Tillåtna IP-adresser"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Aviserade DNS-domäner"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Aviserade DNS-servrar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Anonym identitet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "Anonym montering"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "Anonym Swap"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Antenn 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Antenn 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Konfiguration av antenn"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Någon zon"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Tilldela gränssnitten..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Associerade stationer"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Autentiseringsgrupp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Autentisering"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Typ av autentisering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Auktoritiv"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Tillstånd krävs"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Uppdatera automatiskt"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "Automatiskt hemnet (HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "Kolla efter fel i filsystemet automatiskt innan det monteras"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Monstera filsystem automatiskt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Montera Swap automatiskt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Tillgänglig"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Snitt:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr "B43 + B43C"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr "B43 + B43C + V43"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr "BR / DMR / AFTR"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Bakåt"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Backa till Överblick"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Backa till konfiguration"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Backa till överblick"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Backa till skanningsresultat"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Säkerhetskopiera"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Säkerhetskopiera / Flasha inre mjukvara"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Säkerhetskopiera fillista"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Fel adress angiven!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Band"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "Bind gränssnitt"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bithastighet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Brygga"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Brygga gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s Trådlös kontroller"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 Trådlös kontroller"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Buffrad"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"CA-certifikat; om tom så kommer den att sparas efter första anslutningen."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU-användning (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Kategori"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Kedja"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Ändringar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Tillämpade ändringar"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Ändrar administratörens lösenord för att få tillgång till enheten"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Kontrollera"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Kontrollera filsystemen innan de monteras"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+"Bocka för det här alternativet för att ta bort befintliga nätverk från den "
+"här radion."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Checksumma"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Chiffer"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Klient"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Klient-ID att skicka vid DHCP-förfrågning"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Stäng ner lista..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Kommando"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Vanlig konfiguration"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Bekräftelse"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Anslut"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Ansluten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Anslutningsgräns"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Anslutningar"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Land"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Landskod"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Skapa gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Skapa en brygga över flera gränssnitt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritisk"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Loggnivå för Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Anpassat gränssnitt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP-server"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP och DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP-klient"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP-alternativ"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "DHCPv6-klient"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "DHCPv6-läge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "DHCPv6-tjänst"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "DSL-status"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Datahastighet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Avlusa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Standard %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Standard gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Ange ett namn för det här nätverket."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Radera"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Ta bort det här nätverket"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Beskrivning"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Plats"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Enhet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Enhetskonfiguration"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Enheten startar om..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Enheten kan inte nås"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Slå nummer"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Mapp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Inaktivera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Inaktivera <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"för det här gränssnittet."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Inaktivera kryptering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Inaktiverad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Inaktiverad (standard)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Avståndsoptimering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Avstånd till nätverksmledlemmen längst bort i metrar."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Mångfald"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Cachea inte negativa svar, t.ex för icke-existerade domäner"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Vidarebefordra inte förfrågningar som inte kan ta emot svar från publika "
+"namnservrar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domän krävs"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "Vitlista för domäner"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Fragmentera inte"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Vidarebefordra inte <abbr title=\"Domain Name System\">DNS</abbr>-"
+"förfrågningar utan <abbr title=\"Domain Name System\">DNS</abbr>-namn"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Ladda ner säkerhetskopia"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear-instans"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Dynamisk tunnel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-metod"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Redigera"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Redigera det här gränssnittet"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Redigera det här nätverket"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Nödsituation"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Aktivera"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Aktivera NTP-klient"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Aktivera TFTP-server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Aktivera VLAN-funktionalitet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Aktivera WPS-tryckknapp, kräver WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Kräver ominstallation av nyckel (KRACK) motåtgärder"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Aktivera den här monteringen"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Aktivera den här swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Aktivera/Inaktivera"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Kryptering"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Raderar..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Fel"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet-adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Inkludera inte dessa gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Expandera värdar"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Löper ut"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Externt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Extra alternativ för SSH-kommandot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Filsystem"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filtrera privata"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Filtrera icke-användbara"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Hitta och anslut till nätverk"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Avsluta"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Brandvägg"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Inställningar för brandvägg"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Status för brandvägg"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Version för inre mjukvara"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Skriver..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Tvinga"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Tvinga CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Tvinga DHCP på det här nätverket även om en annan server är upptäckt."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Tvinga TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Tvinga TKIP och CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Tvinga länk"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Tvinga användning av NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Vidarebefordra DHCP-trafik"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Vidarebefordringsläge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Fritt"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Endast GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Gateway"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Gateway-portar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Generella inställningar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Generera konfig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Generera arkiv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Angiven lösenordsbekräftelse matchade inte, lösenordet ändrades inte!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Globala inställningar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Globala nätverksalternativ"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Gå till lösenordskonfiguration..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Gå till relevant konfigurationssida"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Grupplösenord"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Gäst"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net-lösenord"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net-användarnamn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "HT-läge (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Lägg på"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Göm <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Värd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> eller Nätverk"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Värdnamn"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Värdnamn att skicka vid DHCP-förfrågningar"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Värdnamn"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Hybrid"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IP-adresser"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP-adress"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4-brandvägg"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4-adress"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4-gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4-nätmask"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-Adress"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4-i-IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6-brandvägg"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "IPV6-grannar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6-inställningar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6-adress"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6-gateway"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-adress"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-i-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-över-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-över-IPv4 (6till4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Identitet"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ignorera <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ignorera gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ignorera resolv-fil"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Bild"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "I"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Ankommande"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Info"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Initskript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Initskripten"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "Installera iputils-traceroute6 för IPv6-traceroute"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Installera paketet %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Installera protokoll-förlängningar..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Konfiguration av gränssnitt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Överblick av gränssnitt"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Gränssnittet återansluter..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Gränssnittets namn"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Gränssnittet är inte närvarande eller är inte anslutet än."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Gränssnitten"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Interna"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Internt server-fel"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Ogiltig"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Ogiltigt användarnamn och/eller lösenord! Vänligen försök igen."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Isolera klienter"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "JavaScript krävs!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Anslut till nätverk"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Anslut till nätverk: Trådlös skanning"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Ansluter till nätverk: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Behåll inställningar"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernel-logg"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Kernel-version"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Nyckel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Nyckel #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Döda"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP-server"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Märke"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Språk"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Språk och Stil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Latens"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Löv"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Kontraktstid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Kontraktsfil"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Återstående kontraktstid"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Lämna tom för att upptäcka automatiskt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Lämna tom för att använda den nuvarande WAN-adressen"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Begränsa"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Länk På"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Lista över SSH-nyckelfiler för auth"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Lyssningsportar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Lyssna endast på det angivna gränssnittet eller, om o-specificerat på alla"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Lyssningsportar för ankommande DNS-förfrågningar"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Belastning"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Snitt-belastning"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Laddar"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Lokal IPv4-adress"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Lokal IPv6-adress"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Enbart lokal tjänst"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Lokal uppstart"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Lokal tid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Lokal domän"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Lokal server"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Lokalisera förfrågningar"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Låst till kanalen %s som används av: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Logga in"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Logga ut"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-adress"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Filter för MAC-adress"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-filter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-lista"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4över6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Manuell"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Minne"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Minnesanvändning (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metrisk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Läge"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Modell"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Modem-enhet"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Övervaka"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Monteringspunkt"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Monteringspunkter"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Monteringsalternativ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Monteringspunkt"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Monterade filsystem"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Flytta ner"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Flytta upp"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS-ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "NAT-T-läge"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "NT-domän"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTP-serverkandidater"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Namn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Namn på det nya gränssnittet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Namnet på det nya nätverket"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Navigering"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Nätmask"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Nätverk"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Nätverksverktyg"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Uppstartsbild för nätverket"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Nätverk utan gränssnitt"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Nästa »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Ingen NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Inga filer hittades"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Ingen information tillgänglig"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Ingen negativ cache"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "Det finns inget nätverk inställt på den här enheten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Inget nätverksnamn angavs"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Inget lösenord inställt!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Inga regler i den här kedjan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Buller"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Buller:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Ingen"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Normal"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Hittades inte"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Inte associerad"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Inte ansluten"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Notera: längden på gränssnittets namn"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Avisering"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "En utav värdnamn eller MAC-adress måste anges!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "En eller fler fält innehåller ogiltiga värden!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "En eller fler fält som krävs har inget värde!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Öppna lista..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Alternativet ändrades"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Alternativet togs bort"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Valfri"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Alternativ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Andra:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Ut"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Utgående"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Överblick"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Ägare"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP-lösenord"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP-användarnamn"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN-kod"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Paketet libiwinfo krävs!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Paket"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Del av zon %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Lösenord"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Lösenordsautentisering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Den privata nyckelns lösenord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Lösenordet för den inre privata nyckeln"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Lösenord2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Genväg till CA-certifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Genväg till klient-certifikat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Genväg till privat nyckel"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Genväg till det inre CA-certifikatet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Genväg till det inre klient-certifikatet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Genväg till den inre privata nyckeln"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Utför omstart"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Utför återställning"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Fysiska inställningar"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "Pkt."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Vänligen ange ditt användarnamn och lösenord."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Port"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Port-status:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Föredra LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Föredra UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Förhindra lyssning på dessa gränssnitt."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Förhindrar kommunikation klient-till-klient"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Privat nyckel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Fortsätt"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processer"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Profil"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Det nya gränssnittets protokoll"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Stöd för protokoll är inte installerat"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Publik nyckel"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "QMI-telefoni"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Kvalité"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RT"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "RX-hastighet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Läs <code>/etc/ethers</code> för att ställa in <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-servern"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Verkligen återställa alla ändringar?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Verkligen byta protokoll?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Anslutningar i realtid"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Realtidsgrafer"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Trafik i realtid"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Trådlöst i realtid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Starta om"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Startar om..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Startar om din enhets operativsystem"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Ta emot"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Mottagningsantenn"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Rekommenderad. WireGuard-gränssnittets IP-adress"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Återanslut det här gränssnittet"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Referens"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Relä"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Relä-brygga"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Relä mellan nätverk"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Relä-brygga"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Ta bort"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Repetera skanning"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Ersätt trådlös konfiguration"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Krävs!"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Återställ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Återställ räknare"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Återställ till standard"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Resolv och Värd-filer"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Resolv-fil"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Starta om"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Starta om brandvägg"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Återställ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Återställ säkerhetskopian"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Visa/göm lösenord"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Återgå"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Root-mappen för filer som skickas via TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Root-förberedelse"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Typ av rutt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Router-lösenord"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Rutter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Kör en filsystemskontroll innan enheten monteras"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Kör filsystemskontrollen"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH-åtkomst"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "SSH-serverns adress"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "SSH-serverns port"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "Användarnamn för SSH"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-nycklar"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Spara"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Spara och Verkställ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Skanna"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Schemalagda uppgifter"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Sektionen lades till"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Sektionen togs bort"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Separera klienter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Inställningar för server"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Namn på tjänst"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Typ av tjänst"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Tjänster"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "Ställ in Tidssynkronisering"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Ställ in DHCP-server"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Stäng ner det här gränssnittet"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Signal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Signal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Storlek"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Hoppa över"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Hoppa över till innehåll"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Hoppa över till navigering"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Några fält är ogiltiga, kan inte spara värden!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "Tyvärr, objektet som du frågade efter kunde inte hittas."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "Tyvärr, servern stötte på ett oväntat fel."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Källa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Anger lyssningsporten för den här <em>Dropbear</em>-instansen"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Ange en TaT (Typ av Tjänst)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Ange den hemliga krypteringsnyckeln här."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Statiska IPv4-rutter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Statiska IPv6-rutter"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Statiska rutter"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Statiska adresser"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Status"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Strikt sortering"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Skicka in"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Byt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Byt %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Byt %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "Byt VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Byt protokoll"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Synkronisera med webbläsare"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Synkroniserar..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "System"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Systemlogg"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Systemets egenskaper"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Inställningar för TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Root för TFTP-server"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "TX-hastighet"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Tabell"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Mål"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Målnätverk"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Det angivna nätverksnamnet är inte unikt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Det finns inga aktiva kontrakt."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Det finns inga pendlande ändringar att återkalla"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Det finns inga pendlande ändringar!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Det finns inget lösenord inställt på den här routern. Vänligen ställ in ett "
+"root-lösenord för att skydda webbgränssnittet och för att aktivera SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Synkronisering av tid"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Synkronisering av tid är inte inställd än."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Tidszon"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"För att återställa konfigurationsfiler så kan du ladda upp ett tidigare "
+"genererat säkerhetskopierings arkiv här."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Ton"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Totalt tillgängligt"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Trafik"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Överför"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Överföringshastighet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Överför"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Tunnel-ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Tunnelgränssnitt"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Tunnel-länk"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Typ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Endast UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB-enhet"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB-portar"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Det går inte att skicka"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Otillgängliga Sekunder (UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Okänd"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Avmontera"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Osparade ändringar"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Protokolltypen stöds inte."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Ladda upp arkiv..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Laddade upp fil"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Upptid"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Använd <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Använd DHCP-gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Använd som root-filsystem (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Använd anpassade DNS-servrar"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Använd standard-gateway"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Användarcertifikat (PEM-krypterad)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Användarnyckel (PEM-krypterad)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Användarnamn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "Lokal adress för VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "Lokal port för VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN-server"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Port för VPN-server"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Tillverkare"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Verkställ"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Öppet System WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP-lösenordsfras"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM-läge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA-lösenordsfras"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Väntar på att ändringarna ska tillämpas..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Väntar på att kommandot ska avsluta..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Väntar på enheten..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Varning"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Bredd"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Trådlöst"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Trådlös adapter"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Trådlöst nätverk"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Trådlös överblick"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Trådlös säkerhet"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Trådlöst är avstängt"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Trådlöst är inte associerat"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Trådlöst startar om..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Trådlöst nätverk är avstängt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Trådlöst nätverk är aktiverat"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Skriv mottagna DNS-förfrågningar till syslogg"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Skriv systemlogg till fil"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Du måste aktivera JavaScript i din webbläsare, annars kommer inte LuCi att "
+"fungera korrekt."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "något"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "auto"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "bryggad"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "skapa:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "skapar en brygga över angivna gränssnitt(en)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "stäng ner"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "avstängd"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "vidarebefordra"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "full-duplex"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "halv-duplex"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "gömd"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "hybrid-läge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "om målet är ett nätverk"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "inmatning"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "lokal <abbr title=\"Domain Name System\">DNS</abbr>-fil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "minuter"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "nej"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "ingen länk"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "inte tillgängligt"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "av"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "på"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "öppen"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "relä-läge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "server-läge"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "taggad"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "okänd"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "obegränsat"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "ospecifierat"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "ospecifierat -eller- skapa:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "otaggat"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "ja"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Bakåt"
+
+#~ 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 ""
+#~ "Din Internet Explorer är för gammal för att visa den här sidan korrekt. "
+#~ "Vänligen uppgradera den till minst version 7 eller använd en annan "
+#~ "webbläsare till exempel Firefox, Opera eller Safari."
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "Ändring av lösenordet lyckades!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "Okänt fel, lösenordet ändrades inte!"
+
+#~ msgid "Available packages"
+#~ msgstr "Tillgängliga paket"
+
+#~ msgid "Custom feeds"
+#~ msgstr "Anpassade flöden"
+
+#~ msgid "Download and install package"
+#~ msgstr "Ladda ner och installera paket"
+
+#~ msgid "Filter"
+#~ msgstr "Filtrera"
+
+#~ msgid "Find package"
+#~ msgstr "Hitta paket"
+
+#~ msgid "Free space"
+#~ msgstr "Fritt utrymme"
+
+#~ msgid "General options for opkg"
+#~ msgstr "Generella alternativ för opkg"
+
+#~ msgid "Install"
+#~ msgstr "Installera"
+
+#~ msgid "Installed packages"
+#~ msgstr "Installerade paket"
+
+#~ msgid "No package lists available"
+#~ msgstr "Ingen paketlista tillgänglig"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "Paket-listor är äldre än 24 timmar"
+
+#~ msgid "Package name"
+#~ msgstr "Paketnamn"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Storlek (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Mjukvara"
+
+#~ msgid "Update lists"
+#~ msgstr "Uppdatera listor"
+
+#~ msgid "Version"
+#~ msgstr "Version"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 och IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "Endast IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "Endast IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "Giltighetstid för kontrakt"
+
+#~ msgid "Protocol family"
+#~ msgstr "Protokoll-familj"
+
+#~ msgid "No chains in this table"
+#~ msgstr "Inga kedjor i den här tabellen"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "Konfigurationsfiler kommer att behållas."
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "Notera: Konfigurationsfiler kommer att raderas."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairvis: %s / Grupp: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "Aktivera det här nätverket"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "Gränssnittet stänger ner..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "Gränssnittet återanslöt"
+
+#~ msgid "Interface shut down"
+#~ msgstr "Gränssnittet stängdes ner"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "Återansluter gränssnittet"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "Stäng ner det här nätverket"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "Trådlöst startade om"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "Trådlöst stängde ner"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP-kontrakt"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6-kontrakt"
+
+#~ msgid "Sort"
+#~ msgstr "Sortera"
+
+#~ msgid "help"
+#~ msgstr "hjälp"
diff --git a/package/luci/modules/luci-base/po/templates/base.pot b/package/luci/modules/luci-base/po/templates/base.pot
new file mode 100644 (file)
index 0000000..570badd
--- /dev/null
@@ -0,0 +1,6157 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr ""
diff --git a/package/luci/modules/luci-base/po/tr/base.po b/package/luci/modules/luci-base/po/tr/base.po
new file mode 100644 (file)
index 0000000..f93879c
--- /dev/null
@@ -0,0 +1,6241 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-09-13 22:59+0300\n"
+"Last-Translator: Yusuf Soyipek <yusuf@soyipek.com>\n"
+"Language-Team: none\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.1.1\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d dakika gösteriliyor, %d saniye aralıklı)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s uygun)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(boş)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(arayüz eklenmedi)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Ek Alan--"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Lütfen seçiniz --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- özel --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- cihaza göre eşleştir --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- etikete göre eşleştir --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- uuid'e göre eşleştir --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- lütfen seçin --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1 Dakikalık Yük:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15 Dakikalık Yük:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "4 karakterli HEX ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5 Dakikalık Yük:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\\\"Temel Servis Ayar Tanımlayıcısı\\\"> BSSID </abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Alan Adı Sistemi\">DNS</abbr> port sorgula"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Alan Adı Sistemi\">DNS</abbr> sunucu port"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protokolü Sürüm 4\">IPv4</abbr>-Adres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protokolü Sürüm 4\">IPv4</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protokolü Sürüm 4\">IPv4</abbr>-Netmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protokolü Sürüm 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protokolü Sürüm 6\">IPv6</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Ayarları"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Adı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">Maks.</abbr> <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> leases"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">Maks.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> paket boyutu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">Maks.</abbr> eşzamanlı sorgu"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP yenileme aralığı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM Köprüleri"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Erişim Noktası"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Eylemler"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr ""
+"Aktif <abbr title=\"İnternet Protokolü Sürüm 4\">IPv4</abbr>-Yönlendiriciler"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr ""
+"Aktif <abbr title=\"İnternet Protokolü Sürüm 4\">IPv6</abbr>-Yönlendiriciler"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Aktif Bağlantılar"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Aktif DHCP Kiraları"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Aktif DHCPv6 Kiraları"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Ekle"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Yeni arabirim ekle..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Ek Hosts dosyaları"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Ek sunucular dosyası"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Adres"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Gelişmiş Ayarlar"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Uyarı"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+# "Secure Shell" için ne kullanılabilinir bir fikrim yok.
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"<abbr title=\"Secure Shell\">SSH</abbr> parola kimlik doğrulamasına izin ver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Listelenenlerin haricindekilere izin ver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Yanlızca listelenenlere izin ver"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "1. Anten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "2. Anten"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Anten Yapılandırması"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Mimari"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Arabirim ata..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "İlişkili istasyonlar"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Kimlik Doğrulama"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Kimlik doğrulama türü"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Yetkilendirme"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Yetkilendirme Gerekli"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Otomatik Yenileme"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Otomatik"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Kullanılabilir"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Ortalama:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Geri"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Genel Bakışa dön"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Yapılandırmaya dön"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Genel Bakışa dön"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Tarama sonuçlarına dön"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Yedekleme"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Yedek/Firmware Yazma"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Bit hızı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Köprü"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Köprü arabirimleri"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Tamponlu"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU kullanımı (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Vazgeç"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Kategori"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Zincir"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Değişiklikler"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kanal"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Mevcut yapılandırma dosyalarının yeni bir arşivini indirmek için \"Arşiv "
+"Oluştur\"'u tıklayın."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Onayla"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Bağlan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Bağlandı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Bağlantı limiti"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Bağlantılar"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Ülke"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Ülke Kodu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Arabirim Oluştur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Kritik"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Özel Arabirim"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Varsayılan"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Default ağ geçidi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Varsayılan durum"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Bu ağ için bir ad tanımlayın."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Sil"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Bu ağı sil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Açıklama"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Hedef"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Cihaz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Cihaz Yapılandırması"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Cihaz yeniden başlatılıyor..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Cihaz ulaşılamaz!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Cihaz ulaşılamaz! Hala cihazı bekliyorum..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Tanı"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Arama numarası"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Dizin"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Pasif"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Bu arabirim için <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>'yi devre dışı bırakın."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Şifrelemeyi Devre Dışı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Ağ devre dışı"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Devre dışı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Devre dışı (varsayılan)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Bağlantı kesme girişimi başarısız oldu"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Reddet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Mesafe Optimizasyonu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Süre Bitişi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Firmware Versiyon"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Firmware Güncelle"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Dosyayı yaz..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Yeni firmware dosyasını yaz"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Boş"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Ağ Geçidi"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Arşiv oluştur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-Adres"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-Adres"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Çekirdek Versiyonu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Kalan kira süresi"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Ortalama Yük"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Yerel Zaman"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Oturum Aç"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Oturumu Kapat"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-Adres"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Bellek"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Ağ Maskesi"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Ağ"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Parazit"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Genel Bakış"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protokol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Sıfırla"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Sayaçları Sıfırla"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Varsayılanlara dön"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Tekrar başlat"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Geri Yükleme"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Yedeklemeyi geri yükle"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Dönmek"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Değişiklikleri geri al"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Kök"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Yönlendirme Tipi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Yönlendirici Parolası"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Yönlendirmeler"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Cihazı bağlamadan önce bir dosya sistemi kontrolü yapın"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Dosya sistemi kontrolünü çalıştır"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH Erişimi"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "SSH sunucu adresi"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "SSH sunucu portu"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "SSH kullanıcı adı"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Kaydet"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Kaydet & Uygula"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Tara"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Zamanlanmış Görevler"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Bölüm eklendi"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Bölüm kaldırıldı"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Servisler"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Sinyal"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Sinyal Zayıflama (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Sinyal:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Boyut"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Atla"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Kaynak"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Başlat"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Durum"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Durdur"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Gönder"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Sistem"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Tema"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Toplam Mevcut"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Yüklenen Dosya"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Çalışma Zamanı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Özel DNS sunucularını kullan"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Varsayılan ağ geçidini kullan"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Ağ geçidi metriğini kullan"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Yönlendirme tablosunu kullan"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Kullanılmış"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Kullanıcı adı"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Satıcı"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Kontrol"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Uyarı"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Genişlik"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Kablosuz"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"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."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "herhangi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "otomatik"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "köprülü"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "oluşturma:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "etkin değil"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "devre dışı"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "sona ermiş"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "ileri"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "tam çift yönlü"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "yarı çift yönlü"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "gizli"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "hibrit mod"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "eğer hedef ağsa"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "giriş"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "yerel <abbr title=\"Domain Name System\">DNS</abbr> dosyası"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "dakika"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "hayır"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "bağlantı yok"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "mevcut değil"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "kapalı"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "açık"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "açık"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "bindirilmiş"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "rastgele"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "anahtarlama modu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "yönlendirildi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "sunucu modu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "durumsuz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "durumsuz + durumlu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "etiketlendi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "sınırsız"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "tanımsız"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "tanımsız -veya- oluşturun:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "etiketsiz"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "evet"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Geri"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid "Design"
+#~ msgstr "Tasarım"
+
+#~ msgid "Available packages"
+#~ msgstr "Kullanılabilir Paketler"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "Yalnızca içeren paketler görüntüleniyor"
+
+#~ msgid "Free space"
+#~ msgstr "Boş alan"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "Boyut (.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "Yazılım"
+
+#~ msgid "Version"
+#~ msgstr "Versiyon"
+
+#~ msgid "none"
+#~ msgstr "hiçbiri"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "DNS kurulumunu devre dışı"
+
+#~ msgid "Activate this network"
+#~ msgstr "Bu ağı etkinleştir"
+
+#~ msgid "Sort"
+#~ msgstr "Sıralama"
+
+#~ msgid "help"
+#~ msgstr "yardım"
+
+#~ msgid "Apply"
+#~ msgstr "Uygula"
+
+#~ msgid "Applying changes"
+#~ msgstr "Değişiklikleri uygula"
+
+#~ msgid "Action"
+#~ msgstr "Eylem"
+
+#~ 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/package/luci/modules/luci-base/po/uk/base.po b/package/luci/modules/luci-base/po/uk/base.po
new file mode 100644 (file)
index 0000000..2c6c672
--- /dev/null
@@ -0,0 +1,6549 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2019-02-07 18:35+0200\n"
+"Last-Translator: Yurii <yuripet@gmail.com>\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f дБ"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr "%d біт"
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d неприпустимі поля"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s є непозначеним у декількох VLAN!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(вікно - %d хв, інтервал - %d с)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(доступно %s)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(пусто)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(нема приєднаних інтерфейсів)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- Додаткові поля --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- Оберіть --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- нетипово --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- відповідно пристрою --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- відповідно мітці --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- відповідно UUID --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- виберіть --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+"0 = не використовувати поріг RSSI, 1 = не змінюваим типові значення драйвера"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "Навантаження за 1 хвилину:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "Навантаження за 15 хвилин:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "4-симв. шістнадцятковий ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "Навантаження за 5 хвилин:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+"6-октетний ідентифікатор у вигляді шістнадцяткового рядка – без двокрапок"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "Швидкий перехід 802.11r"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "Максимальний тайм-аут запиту асоціації 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "Тайм-аут повторювання запиту асоціації 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "Захист кадрів управління 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "Максимальний тайм-аут 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "Тайм-аут повторювання 802.11w"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr ""
+"<abbr title=\"Basic Service Set Identifier — ідентифікатор основної служби "
+"послуг\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+"Порт <abbr title=\"Domain Name System — система доменних імен\">DNS</abbr>-"
+"запиту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+"Порт <abbr title=\"Domain Name System — система доменних імен\">DNS</abbr>-"
+"сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"<abbr title=\"Domain Name System — система доменних імен\">DNS</abbr>-"
+"сервери буде опитано в порядку, визначеному файлом <em>resolvfile</em>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"<abbr title=\"Extended Service Set Identifier — ідентифікатор розширеної "
+"служби послуг\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Інтернет-протокол версії 4\">IPv4</abbr>-адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Інтернет-протокол версії 4\">IPv4</abbr>-шлюз"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Інтернет-протокол версії 4\">IPv4</abbr>-маска"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Інтернет-протокол версії 6\">IPv6</abbr>-адреса або мережа "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Інтернет-протокол версії 6\">IPv6</abbr>-шлюз"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr "<abbr title=\"Інтернет-протокол версії 6\">IPv6</abbr>-суфікс (hex)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr ""
+"Налаштування <abbr title=\"Light Emitting Diode — світлодіод\">LED</abbr>"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "Назва <abbr title=\"Light Emitting Diode — світлодіод\">LED</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr ""
+"<abbr title=\"Media Access Control — управління доступом до носія\">MAC</"
+"abbr>-адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"Унікальний ідентифікатор DHCP\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"Максимум\">Макс.</abbr> оренд <abbr title=\"Dynamic Host "
+"Configuration Protocol — протокол динамічної конфігурації вузла\">DHCP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"Максимальний\">Макс.</abbr> розмір пакета <abbr title="
+"\"Extension Mechanisms for Domain Name System — Механізми розширень для "
+"доменної системи імен\">EDNS0</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"Максимум\">Макс.</abbr> одночасних запитів"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>Примітка: якщо перед редагуванням, файл crontab був порожній, вам "
+"потрібно вручну перезапустити служби cron."
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+"Оскільки сеанс автентифікації закінчився, потрібен новий вхід у систему."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+"<abbr title=\"Access Point Name — символічна назва точки доступу\">APN</abbr>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "Поріг повторювання ARP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+"<abbr title=\"Asynchronous Transfer Mode — асинхронний режим передавання"
+"\">ATM</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM-мости"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+"Ідентифікатор віртуального каналу ATM (<abbr title=\"Virtual Channel "
+"Identifier\">VCI</abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+"Ідентифікатор віртуального шляху ATM (<abbr title=\"Virtual Path Identifier"
+"\">VPI</abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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-мости виставляють інкапсульований Ethernet у з’єднаннях AAL5 як "
+"віртуальні мережеві інтерфейси Linux, котрі можуть використовуватися в "
+"поєднанні з DHCP або PPP для підключення до мережі провайдера."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "Номер ATM-пристрою"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "Ідентифікатор постачальника системи ATU-C"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "Концентратор доступу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Точка доступу"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Дії"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "<abbr title=\"Інтернет-протокол версії 4\">IPv4</abbr>-маршрути"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "<abbr title=\"Інтернет-протокол версії 6\">IPv6</abbr>-маршрути"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "Активні підключення"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "Активні оренди DHCP"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "Активні оренди DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Додати"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "Додати адресу IPv4…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "Додати адресу IPv6…"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "Додати ключ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "Додавати суфікс локального домену до імен, отриманих із файлів hosts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "Додати новий інтерфейс..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "Додаткові файли hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "Додаткові файли servers"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "Адреса"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "Адреса для доступу до мосту локального ретранслятора"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Адміністрування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "Додатково"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "Додаткові параметри"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "Сумарна потужність передавання"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "Тривога"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "Інтерфейс псевдоніма"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "Псевдонім \"%s\""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "Усі сервери"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr "Виділяти IP-адреси послідовно, починаючи з найнижчої доступної адреси"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "Виділяти IP послідовно"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr ""
+"Дозволити <abbr title=\"Secure Shell — безпечна оболонка\">SSH</abbr>-"
+"перевірку пароля"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+"Дозволити режиму AP відключення абонентів на підставі низького рівня <abbr "
+"title=\"Підтвердження (Acknowledge) успішності отримання TCP-сегменту\">ACK</"
+"abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Дозволити всі, крім зазначених"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "Дозволити застарілі швидкості 802.11b"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Дозволити тільки зазначені"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "Дозволити локальний вузол"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+"Дозволити віддаленим вузлам підключення до локальних переспрямованих портів "
+"SSH"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "Дозволити root-вхід із паролем"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "Дозволити користувачеві <em>root</em> вхід у систему з паролем"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+"Дозволити висхідні відповіді від клієнта на сервер у діапазоні 127.0.0.0/8, "
+"наприклад, для RBL-послуг"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "Дозволено IP-адреси"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "Завжди оголошувати типовим маршрутизатором"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "Завжди вимкнено (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "Завжди ввімкнено (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Завжди використовувати канали 40 МГц, навіть якщо вторинний канал "
+"перекривається. Використання цієї опції не відповідає стандарту IEEE "
+"802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+"Оголошувати типовим маршрутизатором, навіть якщо немає доступного публічного "
+"префікса."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "Оголошено DNS-домени"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "Оголошено DNS-сервери"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "Анонімне посвідчення"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "Анонімне монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "Анонімний своп"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "Антена 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "Антена 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "Конфигурація антени"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "Будь-яка зона"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "Все одно застосувати"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "Сталася помилка запиту на застосування зі статусом <code>%h</code>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "Архітектура"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+"Призначати частину заданої довжини до кожного публічного IPv6-префікса цього "
+"інтерфейсу"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "Призначення інтерфейсів..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+"Призначати для цього інтерфейсу частину префікса, використовуючи цей "
+"шістнадцятковий ID субпрефікса."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "Приєднано станції"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "З’єднань"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "Група автентифікації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Автентифікація"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "Тип автентифікації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Надійний"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Потрібна авторизація"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "Автоматичне оновлення"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "Автоматично"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "Автоматично Homenet (HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+"Автоматично перевіряти файлову систему на наявність помилок перед монтуванням"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "Автоматично монтувати файлові системи при оперативниму підключенні"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "Автоматично монтувати своп при оперативниму підключенні"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "Автомонтування ФС"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "Автомонтування своп"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Доступно"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "Середнє значення:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "Назад"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "Повернутися до переліку"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "Повернутися до конфігурації"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "Повернутися до переліку"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "Повернутися до результатів сканування"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "Резервне копіювання"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "Рез. копіювання / Перепрош."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "Список файлів резервних копій"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "Вказано неправильну адресу!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "Діапазон"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Інтервал маяка"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"Нижче наведено визначений список файлів для резервного копіювання. Він "
+"складається із позначених opkg змінених файлів конфігурації, невідокремних "
+"базових файлів, та файлів за користувацькими шаблонами резервного копіювання."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+"Прив’язувати динамічно до інтерфейсів, а не за шаблоном адреси (типово для "
+"linux, рекомендовано)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "Прив’язка інтерфейсу"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "Прив’язка тунелю до цього інтерфейсу (за бажання)."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "Швидкість передавання даних"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "Відкидати підробки NX-домену"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "Міст"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Об’єднати інтерфейси в міст"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "Номер моста"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "Піднімати при завантаженні"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Бездротовий 802.11%s контролер Broadcom"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Бездротовий 802.11 контролер Broadcom BCM%04x"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "Буферизовано"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+"Сертифікат CA; якщо порожньо, його буде збережено після першого підключення."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "Завантаження ЦП, %"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "Не вдалося здійснити виклик"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "Категорія"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "Увага: файли конфігурації буде видалено."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "Увага: систему буде оновлено примусово"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "Ланцюжок"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "Змінити пароль для входу"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Зміни"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Зміни застосовано."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "Зміни було скасовано."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "Зміна пароля адміністратора для доступу до пристрою"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "Зміна пароля…"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Канал"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"Канал %d не доступний у %s регуляторному домені й був автоматично "
+"скоригований на %d."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "Перевірити"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "Перевірити файлову систему перед монтуванням"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr "Позначте цей параметр, щоб видалити існуючі мережі з цього радіо."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Контрольна сума"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "Виберіть mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"Оберіть зону брандмауера, яку ви хочете призначити на цей інтерфейс. "
+"Виберіть <em>не визначено</em>, щоб видалити інтерфейс з відповідних зон, "
+"або заповніть поле <em>створити</em>, щоб визначити нову зону і прикріпити "
+"до неї інтерфейс."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"Оберіть мережі, які ви хочете прикріпити до цього бездротового інтерфейсу "
+"або заповніть поле <em>створити</em>, щоб визначити нову мережу."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "Шифр"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Інкапсуляція UDP Cisco"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+"Натисніть кнопку \"Створити архів\", щоб завантажити tar-архів поточних "
+"файлів конфігурації."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"Натисніть \"Зберегти mtdblock\", щоб завантажити вказаний файл mtdblock. "
+"(ПРИМІТКА: ЦЕ ФУНКЦІЯ ДЛЯ ПРОФЕСІОНАЛІВ!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Клієнт"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "Ідентифікатор клієнта для відправки при запиті DHCP"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "Закрити"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+"Закривати неактивні з’єднання після певного інтервалу часу (секунди). Для "
+"утримання неактивних з’єднань використовуйте 0"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "Згорнути список..."
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "Збирання даних..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Команда"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "Примітка"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "Загальна конфігурація"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Ускладнює атаки перевстановлення ключа на стороні клієнта, відключаючи "
+"ретрансляцію кадрів EAPOL-Key, що використовуються для встановлення ключів. "
+"Може викликати проблеми сумісності та зниження стійкості узгодження ключа, "
+"особливо в середовищах з великою завантаженістю трафіку."
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Конфігурація"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "Помилка налаштування"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "Конфігураційні файли буде збережено"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "Конфігурацію застосовано."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "Конфігурацію було відкочено!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Підтвердження"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "Підключити"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "Підключено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Гранична кількість підключень"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "Невдала спроба підключення"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "Підключення"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"Після застосування змін конфігурації не вдалося відновити доступ до "
+"пристрою. Вам, можливо, знадобитися повторне підключення, якщо ви змінили "
+"налаштування мережі, такі як IP-адреса або облікові дані безпеки бездротової "
+"мережі."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "Країна"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Код країни"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "Покривати такий інтерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "Покривати такі інтерфейси"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Створити / Визначити зону брандмауера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "Створити інтерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "Створити міст через кілька інтерфейсів"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "Критичний"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Рівень виведення інформації Cron"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "Інтерфейс користувача"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "Користувацький делегований префікс IPv6"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"Користувацькі файли (сертифікати, скрипти) можуть залишитися в системі. Щоб "
+"запобігти цьому, спочатку виконайте відновлення мікропрограми до її "
+"початкового стану."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "Користувацький інтервал спалаху (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Налаштування поведінки <abbr title=\"Light Emitting Diode — світлодіод"
+"\">LED</abbr>, якщо це можливо."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr "Клієнт DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr "Порт DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr "Секрет DAE"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "Сервер DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP та DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "Клієнт DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Параметри DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "Клієнт DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "Режим DHCPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "Служба DHCPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "Переспрямовування<br />запитів DNS"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "DNS-мітка / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "Перевірка непідписаного DNSSEC"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "Тайм-аут простою DPD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "AFTR-адреса DS-Lite"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "Стан DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "Режим лінії DSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+"Інтервал <abbr title=\"Delivery Traffic Indication Message — Повідомлення "
+"індикації доправлення трафіку\">DTIM</abbr>"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "Швидк. передавання"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "Зневаджування"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "Типово %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "Типовий маршрут"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "Типовий шлюз"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "Типовим є БЕЗ та ЗІ збереженням стану"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "Типовий стан"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "Визначення імені для цієї мережі."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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-"
+"сервери для клієнтів."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Видалити"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "Видалити ключ"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "Видалити цю мережу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "Інтервал повідомлень індикації доправлення трафіку"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Опис"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Призначення"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Пристрій"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "Конфігурація пристрою"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "Пристрій перезавантажується..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "Пристрій недосяжний!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "Пристрій недосяжний! Досі чекаємо на пристрій..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "Діагностика"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "Набір номера"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "Каталог"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "Вимкнути"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"Вимкнути <abbr title=\"Dynamic Host Configuration Protocol — протокол "
+"динамічної конфігурації вузла\">DHCP</abbr> для цього інтерфейсу."
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "Вимкнути шифрування"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "Вимкнути опитування неактивності"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "Вимкнути цю мережу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "Вимкнено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "Вимкнено (типово)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "Роз'єднувати за низького підтвердження"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "Відкидати висхідні RFC1918-відповіді"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "Від’єднати"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "Спроба від’єднання не вдалася"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "Відхилити"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Оптимізація за відстанню"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Відстань до найвіддаленішого вузла мережі в метрах."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Різновидність"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 являє собою комбінований <abbr title=\"Dynamic Host Configuration "
+"Protocol — протокол динамічної конфігурації вузла\">DHCP</abbr>-сервер і "
+"<abbr title=\"Domain Name System — система доменних імен\">DNS</abbr>-проксі "
+"для брандмауерів <abbr title=\"Network Address Translation — перетворення "
+"(трансляція) мережевих адрес\">NAT</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "Не кешувати негативні відповіді, наприклад, за неіснуючих доменів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+"Не переспрямовувати запити, які не може бути оброблено відкритими серверами "
+"імен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+"Не переспрямовувати зворотні <abbr title=\"Domain Name System — система "
+"доменних імен\">DNS</abbr>-запити для локальних мереж"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "Справді видалити такий SSH ключ?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Потрібен домен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "\"Білий список\" доменів"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "Не фрагментувати"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Не переспрямовувати <abbr title=\"Domain Name System — система доменних імен"
+"\">DNS</abbr>-запити без <abbr title=\"Domain Name System — система доменних "
+"імен\">DNS</abbr>-імені"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "Вниз"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "Завантажити резервну копію"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "Завантажити mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr "Низхідний зсув SNR"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Реалізація Dropbear"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell — безпечна оболонка\">SSH</abbr>-"
+"сервер із вбудованим <abbr title=\"Secure Copy\">SCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Динамічний <abbr title=\"Dynamic Host Configuration Protocol — протокол "
+"динамічної конфігурації вузла\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "Динамічний тунель"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"Динамічне виділення DHCP-адрес для клієнтів. Якщо вимкнути, будуть "
+"обслуговуватися тільки клієнти, які мають статичні оренди."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "Довжина EA-бітів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-Метод"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Редагувати"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+"Щоб виправити якусь помилку, відредагуйте вихідні дані конфігурації вище і "
+"натисніть \"Зберегти\", щоб перезавантажити сторінку."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "Редагувати цей інтерфейс"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "Редагувати цю мережу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "Аварійний"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "Увімкнути"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"Увімкнути відстеження <abbr title=\"Internet Group Management Protocol"
+"\">IGMP</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Увімкнути <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "Увімкнути динамічне оновлення кінцевої точки HE.net"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "Увімкнути узгодження IPv6"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "Увімкнути узгодження IPv6 для PPP-з’єднань"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "Пропускати Jumbo-фрейми"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "Увімкнути клієнта NTP"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "Увімкнути Single DES"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "Увімкнути TFTP-сервер"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "Увімкнути підтримку VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Увімкнути кнопку WPS, потребує WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Увімкнути протидію<br />перевстановленню ключів (KRACK)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "Увімкнути learning та aging"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "Увімкнути віддзеркалення вхідних пакетів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "Увімкнути віддзеркалення вихідних пакетів"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "Увімкнути прапорець DF (Don't Fragment) для інкапсульованих пакетів."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "Увімкнути це монтування"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "Увімкнути цю мережу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "Увімкнути цей своп"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Увімкнено/Вимкнено"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "Увімкнено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Вмикає відстеження IGMP на цьому мосту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+"Вмикає швидкий роумінг між точками доступу, що належать до одного і того ж "
+"домену мобільності"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr ""
+"Вмикає <abbr title=\"Spanning Tree Protocol\">STP</abbr> на цьому мосту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "Режим інкапсуляції"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Шифрування"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "Хост кінцевої точки"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "Порт кінцевої точки"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "Введіть власне значення"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "Введіть власні значення"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "Видалення..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Помилка"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "Секунд з помилками (<abbr title=\"Errored seconds\">ES</abbr>)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Ethernet-адаптер"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Ethernet-комутатор"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "Виключити інтерфейси"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "Розширення вузлів"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "Очікування %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "Збігає за"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "Термін оренди адрес, мінімум 2 хвилини (<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "Зовнішнє"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "Зовнішній список власників ключів R0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "Зовнішній список власників ключів R1"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "Зовнішній сервер системного журналу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "Порт зовнішнього сервера системного журналу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "Протокол зовнішнього сервера системного журналу"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "Додаткові параметри команд SSH"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr "FT через DS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "FT через повітря"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr "Протокол FT"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr "Не вдалося підтвердити застосування на протязі %d с, очікуємо відкату…"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "Файл"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "І’мя завантажувального образу, що оголошується клієнтам"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Файлова система"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Фільтрувати приватні"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Фільтрувати непридатні"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "Завершення не вдалося"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+"Знайти всі файлові системи та свопи, які наразі підключено і замінити "
+"конфігурацію типовою на підставі того, що було виявлено"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "Знайти мережу й приєднатися"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "Готово"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Брандмауер"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "Позначка брандмауера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "Налаштування брандмауера"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "Стан брандмауера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "Файл мікропрограми"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "Версія мікропрограми"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "Фіксований порт для вихідних DNS-запитів"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Прошиваємо мікропрограму"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "Прошити образ..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "Прошити новий образ мікропрограми"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "Операції прошивання"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "Перепрошиваємо..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "Доступ до запису флеш-пам’яті (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Примусово"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "Примусово застосовувати режим '40MHz'"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "Примусово CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "Примусово DHCP у цій мережі, навіть якщо виявлено інший сервер."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "Примусово TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Примусово TKIP та CCMP (AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "Примусове з’єднання"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "Примусове оновлення"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "Примусово використовувати NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "Неузгодженість маркера форми"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "Переспрямовувати DHCP-трафік"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "Секунди прямого коригування помилок (FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "Переспрямовувати широкомовний трафік"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "Переспрямовувати одноранговий трафік"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "Режим переспрямовування"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Поріг фрагментації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Frame Bursting"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "Вільно"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"Більш детальна інформація про інтерфейси та вузли WireGuard на <a href="
+"\"http://wireguard.com\">wireguard.com</a>."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "ГГц"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "Тільки GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "Шлюз"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "Неприпустима адреса шлюзу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "Порти шлюзу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "Загальні параметри"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "Загальні налаштування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "Cтворити конфігурацію"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "Генерувати PMK локально"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "Cтворити архів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "Бездротовий 802.11%s контролер"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "Оскільки пароль і підтвердження не співпадають, то пароль не змінено!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "Загальні параметри"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "Глобальні параметри мережі"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "Перейти до конфігурації пароля..."
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Перейти до відповідної сторінки конфігурації"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "Пароль групи"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "Гість"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "Пароль HE.net"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "Ім’я користувача HE.net"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "Режим HT (802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Призупинити"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+"Помилки коду помилок заголовка (<abbr title=\"Header Error Control\">HEC</"
+"abbr>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "Інтервал пульсації (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Тут ви можете налаштувати основні параметри вигляду вашого пристрою, такі як "
+"назва (ім’я) вузла або часовий пояс."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr ""
+"Приховати <abbr title=\"Extended Service Set Identifier — ідентифікатор "
+"розширеної служби послуг\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "Приховати порожні ланцюжки"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "Вузол"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Записи вузлів"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "Тайм-аут вузла"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "<abbr title=\"Internet Protocol Address\">IP</abbr> вузла або мережа"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Зміст тегу Host-Uniq"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Назва (ім’я) вузла"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "Ім’я вузла для надсилання при запиті DHCP"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Імена вузлів"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "Гібрид"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "Група IKE DH"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IP-адреси"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "IP-протокол"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP-адреса"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "Неприпустима IP-адреса"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "Відсутня IP-адреса"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "Брандмауер IPv4"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "Висхідне з’єднання IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "Адреса IPv4"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "Довжина присвоювання IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "Широкомовний IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "Шлюз IPv4"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "Маска мережі IPv4"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "Мережа IPv4 у позначенні адреси / мережевої маски"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "Префікс IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "Довжина префікса IPv4"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr "IPv4+IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-адреса"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4 у IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "Брандмауер IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "Сусіди IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "Налаштування IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+"<abbr title=\"Unique Local Address — унікальна локальна адреса\">ULA</abbr>-"
+"префікс IPv6"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "Висхідне з’єднання IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "Адреса IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "Натяк призначення IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "Довжина призначення IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "Шлюз IPv6"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "Мережа IPv6 у позначенні адреси / мережевої маски"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "Префікс IPv6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "Довжина префікса IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "Надісланий префікс IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "Суфікс IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-адреса"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6 у IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6 через IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6 через IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Посвідчення"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "Якщо позначено, 1DES увімкнено"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "Якщо позначено, шифрування вимкнено"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+"Якщо обрано, монтувати пристрій за його UUID замість фіксованого вузла "
+"пристрою"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+"Якщо обрано, монтувати пристрій за міткою його розділу замість фіксованого "
+"вузла пристрою"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "Якщо не позначено, типовий маршрут не налаштовано"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "Якщо не позначено, оголошувані адреси DNS-серверів ігноруються"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Якщо фізичної пам’яті недостатньо, невикористовувані дані можуть тимчасово "
+"витіснятися на своп-пристрій, у результаті чого збільшується кількість "
+"корисної оперативної пам’яті (<abbr title=\"Random Access Memory\">RAM</"
+"abbr>). Майте на увазі, що свопінг даних є дуже повільним процесом, оскільки "
+"своп-пристрої не можуть бути доступні з такою високою швидкістю, як <abbr "
+"title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Ігнорувати<code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Ігнорувати интерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Ігнорувати файли resolv"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "Образ"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Вх."
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+"Щоб запобігти несанкціонованому доступу до системи, ваш запит було "
+"заблоковано. Натисніть \"Продовжити »\" нижче, щоб повернутися до "
+"попередньої сторінки."
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "Тайм-аут бездіяльності"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "Вхідний:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "Інформація"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "Помилка ініціалізації"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Скрипт ініціалізації"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Скрипти ініціалізації"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "Інсталюйте iputils-traceroute6 для трасування IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "Інсталяція пакета %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "Інсталяція розширень протоколу..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Інтерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "Пристрій інтерфейсу %q автоматичного мігрував із %q на %q."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "Конфігурація інтерфейсу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "Огляд інтерфейсів"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "Перепідключення інтерфейсу..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "Ім’я інтерфейсу"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "Інтерфейс відсутній або його ще не підключено."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Інтерфейси"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "Внутрішній"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "Внутрішня помилка сервера"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Неприпустимо"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+"Задано неприпустимий VLAN ID! Доступні тільки ідентифікатори в межах між %d "
+"і %d."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+"Задано неприпустимий VLAN ID! Доступні тільки унікальні ідентифікатори."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Неприпустиме ім’я користувача та/або пароль! Спробуйте ще раз."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "Ізолювати клієнтів"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 ""
+"Схоже, що ви намагаєтеся прошити образ, який не вміщається до флеш-пам’яті! "
+"Перевірте файл образу!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "Потрібен JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "Підключення до мережі"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "Підключення до мережі: Сканування бездротових мереж"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "Приєднання до мережі: %q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "Зберегти налаштування"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Журнал ядра"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "Версія ядра"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Ключ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "Ключ #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Знищити"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "Сервер L2TP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "Поріг помилок ехо-запитів LCP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "Інтервал ехо-запитів LCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "Мітка"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Мова"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "Мова та стиль"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "Затримка"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "Лист"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "Час оренди"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Файл оренд"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Час оренди, що лишився"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "Залиште поле порожнім для автовизначення"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "Залиште порожнім, щоб використовувати поточну адресу WAN"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "Легенда:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Межа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+"Обмежувати службу DNS інтерфейсами підмереж, на яких ми обслуговуємо DNS."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+"Обмежитися прослуховуванням цих інтерфейсів і повернутися до початку циклу."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "Затухання лінії"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "Режим лінії"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "Стан лінії"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "Час безперервної роботи лінії"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Зв’язок встановлено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"Список <abbr title=\"Domain Name System\">DNS</abbr>-серверів для "
+"переспрямовування запитів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+"Список власників ключів R0 у тому ж домені мобільності. <br />Формат: MAC-"
+"адреса,NAS-ідентифікатор,128-бітний ключ у вигляді шістнадцяткового рядка. "
+"<br />Цей список використовується для відображення <abbr title="
+"\"ідентифікатор власника ключа R0\">R0KH-ID</abbr> (NAS-ідентифікатор) на "
+"MAC-адреси призначення при запиті ключа PMK-R1 від <abbr title=\"власник "
+"ключа R0\">R0KH</abbr>, як станції, що була використана під час початкової "
+"асоціації домену мобільності."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+"Список власників ключів R1 у тому ж домені мобільності. <br />Формат: MAC-"
+"адреса,<abbr title=\"ідентифікатор власника ключа R1\">R1KH-ID</abbr> у "
+"формі 6 октетів з двокрапками,128-бітний ключ у вигляді шістнадцяткового "
+"рядка. <br />Цей список використовується для відображення <abbr title="
+"\"ідентифікатор власника ключа R1\">R1KH-ID</abbr> на MAC-адреси призначення "
+"при передаванні ключа PMK-R1 від <abbr title=\"власник ключа R0\">R0KH</"
+"abbr>. Це також список авторизованих <abbr title=\"власник ключа R1\">R1KH</"
+"abbr> у формі <abbr title=\"Message Digest — дайджест повідомлення\">MD</"
+"abbr>, які можуть запитувати ключі PMK-R1."
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "Список файлів SSH-ключів для авторизації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "Список доменів, для яких дозволено RFC1918-відповіді"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "Список доменів, які підтримують результати підробки NX-доменів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "Інтерфейси прослуховування"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "Порти прослуховування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+"Прослуховувати тільки на цьому інтерфейсі, або на всіх (якщо <em>не "
+"визначено</em>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "Порт прослуховування для вхідних DNS-запитів"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Навантаження"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "Середнє навантаження"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "Завантаження"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "Завантаження SSH-ключів…"
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "Неприпустима локальна ІР-адреса"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "Локальна IP-адреса для призначення"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "Локальна адреса IPv4"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "Локальна адреса IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "Тільки локальна служба"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "Локальний запуск"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Місцевий час"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "Локальний домен"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+"Специфікація локального домену. Імена, які зіставлено цьому домену, ніколи "
+"не пересилаються і вирізняються тільки з файлу DHCP (/etc/config/dhcp) або "
+"файлу hosts (/etc/hosts)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+"Суфікс локального домену додається до DHCP-імен вузлів та записів з файлу "
+"hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "Локальний сервер"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+"Локалізувати ім’я хоста залежно від запитуючої підмережі, якщо доступно "
+"кілька IP-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Локалізувати запити"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "Заблоковано до каналу %s, який використовує: %s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "Рівень виведення інформаціі до журналу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Журнал запитів"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "Журналювання"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Увійти"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Вийти"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+"Втрата сигналу в секундах (<abbr title=\"Loss of Signal Seconds\">LOSS</"
+"abbr>)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "Найнижча орендована адреса."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Фільтр MAC-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-фільтр"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-список"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "Неприпустиме правило MAP"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MБ/с"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr " МГц"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+"Переконайтеся, що ви клонуєте кореневу файлову систему, використовуючи такі "
+"команди:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "Вручну"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "Макс. досяжна швидкість передачі даних (ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "Максимальний дозволений інтервал прослуховування"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "Максимально допустима кількість активних оренд DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "Максимально допустима кількість одночасних DNS-запитів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "Максимально допустимий розмір UDP-пакетів EDNS.0"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "Максимальний час очікування готовності модему (секунд)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"Максимальна довжина імені становить 15 символів, включаючи префікс "
+"автоматичного протоколу/мосту (br-, 6in4-, pppoe та ін.)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "Максимальна кількість орендованих адрес."
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Мбіт/с"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Пам’ять"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Використання пам’яті, %"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "Mesh Id"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Метрика"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "Дзеркало порту диспетчера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "Дзеркало вихідного порту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "Відсутні розширення для протоколу %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "Домен мобільності"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Режим"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "Модель"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "Типові налаштування модема"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Модем"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "Помилка запиту інформації про модем"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "Тайм-аут ініціалізації модему"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Диспетчер"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "Вхід монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Точка монтування"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Точки монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "Точки монтування – Записи монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "Точки монтування – Вхід свопу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Точки монтування визначають, до якої точки пристрою пам’яті буде прикріплено "
+"файлову систему"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "Монтувати не конкретно налаштовані файлові системи"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "Опції монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "Точка монтування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "Монтувати не конкретно налаштований своп"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Змонтовано файлові системи"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "Вниз"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "Вгору"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "Ідентифікатор NAS"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "Режим NAT-T"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "Префікс NAT64"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "NDP-проксі"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "Домен NT"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "Кандидати для синхронізації сервера NTP"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Ім’я"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "Ім’я нового інтерфейсу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "Назва (ім’я) нової мережі"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Навігація"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "Маска мережі"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "Мережа"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "Мережеві утиліти"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "Образ для мережевого завантаження"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "Активність мережевого пристрою (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "Мережевий пристрій відсутній"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "Мережа без інтерфейсів."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "Наступний »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "№"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "Немає DHCP-сервера, налаштованого для цього інтерфейсу"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "Немає NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "Файли не знайдено"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "Інформація відсутня"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "Делегування відповідних префіксів відсутнє"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "Ніяких негативних кешувань"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "На цьому пристрої немає налаштованої мережі"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "Ім’я мережі не визначено"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "Пароль не встановлено!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "Відкритих ключів поки що немає."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "У цьму ланцюжку нема правил."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "Результати сканування наразі недоступні…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "Зону не призначено"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "Шум"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "Співвідношення сигнал/шум"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "Шум:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "Не запобіжні помилки CRC (CRC_P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "Без шаблону заміни"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "Жоден"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "Нормальний"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "Не знайдено"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "Не пов’язаний"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "Не підключено"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "Примітка: довжина імені інтерфейсу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "Попередження"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "DNS-запит"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr "Кількість кешованих записів DNS (макс. - 10000, 0 - без кешування)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "Кількість паралельних потоків, що використовуються для стиснення"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "Обфусований груповий пароль"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "Обфусований пароль"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "Отримати IPv6-адресу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "Затримка Off-State"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"На цій сторінці ви можете налаштувати мережеві інтерфейси. Ви можете "
+"об’єднати кілька інтерфейсів мостом, відзначивши поле \"Об’єднати інтерфейси "
+"в міст\" та ввівши імена кількох мережевих інтерфейсів, розділені пробілами. "
+"Також ви можете використовувати <abbr title=\"Virtual Local Area Network — "
+"віртуальна локальна комп’ютерна мережа\">VLAN</abbr>-позначення "
+"<samp>ІНТЕРФЕЙС.НОМЕР_VLAN</samp> (наприклад, <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "Затримка On-State"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "Має бути зазначено одне з двох – ім’я вузла або МАС-адреса!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "Одне або декілька полів містять неприпустимі значення!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "Одне або декілька неприпустимих/обов’язкових значень на вкладці"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "Одне або декілька обов’язкових полів не мають значень!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "Відкрити список..."
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "Робоча частота"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "Опція змінена"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "Опція видалена"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "Необов’язково"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"Необов’язково. 32-бітна мітка для вихідних зашифрованих пакетів. Введіть "
+"значення в шістнадцятковому форматі, починаючи з <code>0x</code>."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Необов’язково. Припустимі значення: 'eui64', 'random' чи фіксоване значення, "
+"наприклад '::1' або '::1:2'. Якщо префікс IPv6 (наприклад, 'a:b:c:d::') "
+"отримано від сервера делегування, для формування IPv6-адреси інтерфейсу  "
+"(наприклад, 'a:b:c:d::1') використовуйте суфікс ('::1')."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+"Необов’язково. Заздалегідь установлений Base64-кодований спільний ключ. "
+"Додавання додатково рівня шифрування із симетричним ключем для пост-"
+"квантової стійкості."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "Необов’язково. Створити для цього вузла маршрути для дозволених IP."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "Необов’язково. Опис вузла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr "Необов’язково. Хост вузла. Імена буде виділено до підняття інтерфейсу."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+"Необов’язково. Максимальний блок передаваних даних тунельного інтерфейсу."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "Необов’язково. Порт вузла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+"Необов’язково. Час (сек.) між перевірками активності повідомлень. Типове "
+"значення - 0 (вимкнено). Рекомендоване значення для цього пристрою за NAT - "
+"25."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+"Необов’язково. UDP-порт, який використовується для вихідних та вхідних "
+"пакетів."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Опції"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "Інше:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Вих."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "Вихідний:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "Вихідний інтерфейс"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "Перевизначити MAC-адресу"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "Перевизначити MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "Перевизначити TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "Перевизначити TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "Перевизначення типового імені інтерфейсу"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "Перевизначення шлюзу у відповідях DHCP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+"Перевизначення мережевої маски, яка надсилається клієнтам. Зазвичай вона "
+"обчислюється від підмережі, що обслуговується."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+"Перевизначення таблиці, що використовужться для внутрішніх спрямовувань"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Огляд"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Власник"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "Пароль PAP/CHAP"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "Ім’я користувача PAP/CHAP"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "<abbr title=\"Process Identifier — Ідентифікатор процесу\">PID</abbr>"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+"<abbr title=\"Personal Identification Number — Персональний ідентифікаційний "
+"номер\">>PIN</abbr>"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "PIN-код відхилено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "Проштовхуваня PMK R1"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "Інкапсуляція PPPoA"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "Зсув PSID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "Довжина PSID у бітах"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "Потрібен пакет libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Пакети"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "Частина зони %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Пароль"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Автентифікація за паролем"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Пароль закритого ключа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "Пароль внутрішнього закритого ключа"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "Пароль2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "Вставте або перетягніть файл SSH-ключа…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Шлях до центру сертифікції"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "Шлях до сертифікату клієнта"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Шлях до закритого ключа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "Шлях до внутрішнього CA-сертифікату"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "Шлях до внутрішнього сертифікату клієнта"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "Шлях до внутрішнього закритого ключа"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "Пік:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "Запит IP-адреси призначення"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Відсутня адреса вузла"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Вузли"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr "Perfect Forward Secrecy"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Виконати перезавантаження"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "Виконати відновлення"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "Завжди тримати ввімкненим"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "Фізична швидкість:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Фізичні параметри"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ехо-запит"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "пакетів"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Введіть ім’я користувача і пароль."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Політика"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr "Інтервал опитування"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr "Інтервал опитування для запитів стану (секунди)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Порт"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "Стан порту:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "Режим керування живленням"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "Попереджувати помилки CRC (CRCP_P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "Переважно LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "Переважно UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "Делеговано префікс"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "Заздалегідь установлений спільний ключ"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+"Вважати вузол недоступним після визначеної кількості невдач отримання ехо-"
+"пакета LCP, використовуйте 0, щоб ігнорувати невдачі"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "Перешкоджати прослуховуванню цих інтерфейсів."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Перешкоджати спілкуванню клієнт-клієнт"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "Приватний ключ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Продовжити"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Процеси"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "Профіль"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Прот."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Протокол"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "Протокол нового інтерфейсу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "Підтримка протоколу не інстальована"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "Забезпечувати сервер NTP"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "Укажіть нову мережу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Псевдо Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "Відкритий ключ"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"Відкриті ключі дозволяють безпарольний SSH-вхід з більш високою безпекою "
+"порівняно з використанням простих паролів. Щоб завантажити до пристрою новий "
+"ключ, вставте сумісний із OpenSSH відкритий ключ або перетягніть файл <code>."
+"pub</code> у поле введення."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr "Публічний префікс надісланий на цей пристрій для поширення клієнтам."
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "Стільниковий QMI"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "Якість"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"Запит усіх наявних висхідних <abbr title=\"Domain Name System — система "
+"доменних імен\">DNS</abbr>-серверів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "Тривалість життя ключа R0"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "Власник ключа R1"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "Режим RFC3947 NAT-T"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr "Поріг RSSI для приєднання"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "Поріг RTS/CTS"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "Одержано"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "Швидкість приймання"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Порт Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Секрет Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Сервер Radius-Accounting"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Порт Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Секрет Radius-Authentication"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Сервер Radius-Authentication"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+"Сирі шістнадцяткові байти. Залиште порожнім, якщо ваш інтернет-провайдер не "
+"вимагає цього."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+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>-сервера"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"Дійсно видалити цей інтерфейс? Скасувати видалення неможливо! Ви можете "
+"втратити доступ до цього пристрою, якщо вас підключено через цей інтерфейс."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"Дійсно видалити цю бездротову мережу? Скасувати видалення неможливо! Ви "
+"можете втратити доступ до цього пристрою, якщо вас підключено через цю "
+"мережу."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "Дійсно скинути всі зміни?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "Дійсно змінити протокол?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "Підключення у реальному часі"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "Графіки у реальному часі"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "Навантаження у реальному часі"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "Трафік у реальному часі"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "Бездротові мережі у реальному часі"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "Кінцевий термін реассоціації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "Захист від переприв’язки"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Перезавантаження"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "Перезавантаження..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Перезавантажити операційну систему вашого пристрою"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Приймання"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Антена приймача"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "Рекомендовано. IP-адреси інтерфейсу WireGuard."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "Перепідключити цей інтерфейс"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Посилання"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "Ретранслятор"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "Міст-ретранслятор"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "Міжмережевий ретранслятор"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "Міст-ретранслятор"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "Віддалена адреса IPv4"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "Віддалена адреса IPv4 або FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Видалити"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "Повторити сканування"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "Замінити запис"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "Замінити конфігурацію бездротової мережі"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "Запит IPv6-адреси"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "Запит довжини IPv6-префіксу"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "Вимагається"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "Вимагається для деяких провайдерів, наприклад, Charter із DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "Вимагається. Base64-кодований закритий ключ для цього інтерфейсу."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Вимагається. Base64-кодований відкритий ключ вузла."
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+"Вимагається. IP-адреси та префікси, які цьому вузлу дозволено "
+"використовувати всередині тунелю. Зазвичай тунельні IP-адреси вузла та "
+"мережі маршрутів вузла через тунель."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"Потребує \"повної\" версії wpad/hostapd та підтримки драйвером WiFi <br /"
+">(станом на січень 2019 року: ath9k, ath10k, mwlwifi та mt76)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+"Потребує підтримки висхідною мережею DNSSEC; переконайтеся, що відповіді "
+"непідписаного домену дійсно походять із непідписаних доменів"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Скинути"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Скинути лічильники"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "Відновити початковий стан"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "Файли resolv і hosts"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "Файл resolv"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "Перезавантажити"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Перезавантажити брандмауер"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "Перезавантажити радіоінтерфейс"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "Відновлення"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Відновити з резервної копії"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "Показати/приховати пароль"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Скасувати"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "Скасувати зміни"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "Помилка запиту на скасування зі статусом <code>%h</code>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "Відкат конфігурації…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Корінь"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "Кореневий каталог для файлів TFTP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "Підготовка Root"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "Маршрутизація дозволених IP-адрес"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "Тип маршруту"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "Служба оголошень маршрутизатора"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "Пароль маршрутизатора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Маршрути"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Маршрути визначають через який інтерфейс і шлюз можна досягнути певного "
+"вузла або мережі."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "Правило"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "Виконати перевірку файлової системи перед монтуванням пристрою"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "Виконати перевірку файлової системи"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH-доступ"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "Адреса сервера SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "Порт сервера SSH"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "Ім’я користувача SSH"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-ключі"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Зберегти"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Зберегти і застосувати"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "Зберегти mtdblock"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "Зберегти вміст mtdblock"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "Збереження ключів…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Сканувати"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "Помилка запиту на сканування"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Заплановані завдання"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "Секцію додано"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "Секцію видалено"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "Подробиці дивись на сторінці керівництва \"mount\"."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"Щоб прошити образ, навіть якщо не вдається виконати перевірку його формату, "
+"виберіть \"Примусове оновлення\". Використовуйте тільки якщо ви впевнені, що "
+"мікропрограма є правильною і призначена для вашого пристрою!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+"Надсилати ехо-пакети LCP зі вказаним інтервалом (секунди), ефективно тільки "
+"в поєднанні з порогом помилок"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Розділяти клієнтів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "Налаштування сервера"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "Назва (ім’я) сервісу"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "Тип сервісу"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Сервіси"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "Час сеансу минув"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "Встановити VPN типовим маршрутом"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Властивості інтерфейсу встановлюються незалежно від каналу зв’язку (якщо "
+"позначено, обробник автовизначення не викликається при змінах)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "Налаштування синхронізації часу"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "Не вдалося налаштувати PLMN"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "Не вдалося налаштувати режим роботи"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "Налаштування DHCP-сервера"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+"Секунди з великою кількістю помилок помилок (<abbr title=\"Severely Errored "
+"Seconds\">SES</abbr>)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "Short GI"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Коротка преамбула"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "Показати поточний список файлів резервного копіювання"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "Показати порожні ланцюжки"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "Вимкнути цей інтерфейс"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "Сигнал"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "Затухання сигналу (SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "Сигнал:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Розмір"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "Розмір кешу запитів DNS"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "Розмір пристрою ZRam у мегабайтах"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "Пропустити"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Перейти до вмісту"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Перейти до навігації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "Час слота"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "Програмово реалізований VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "Деякі поля є неприпустимими, неможливо зберегти значення!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "На жаль, об’єкт, який ви просили, не знайдено."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "На жаль, на сервері сталася неочікувана помилка."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"На жаль, оновлення системи не підтримується. Новий образ мікропрограми слід "
+"прошити вручну. Зверніться до Wiki за інструкцією з інсталяції для "
+"конкретного пристрою."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Джерело"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "Визначає каталог, до якого приєднаний пристрій"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "Визначає порт прослуховування цієї реалізації <em>Dropbear</em>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+"Визначає максимальну кількість невдалих ARP-запитів до вузлів, після якого "
+"вважається, що вузли \"мертві\""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+"Визначає максимальний час (секунди), після якого вважається, що вузли "
+"\"мертві\""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "Вкажіть TOS (Type of Service — тип послуги)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+"Вкажіть TTL (Time to Live — час життя) для пакета інкапсуляції, відмінний "
+"від типового (64)."
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+"Вкажіть MTU (Maximum Transmission Unit — максимальний блок передавання), "
+"відмінний від типового (1280 байт)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "Вкажіть тут секретний ключ шифрування."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Запустити"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Стартовий пріоритет"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "Розпочато застосування конфігурації…"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "Розпочато сканування бездротових мереж..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "Запуск"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Статичні маршрути IPv4"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Статичні маршрути IPv6"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Статичні оренди"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Статичні маршрути"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "Статична адреса"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"Статичні оренди використовуються для призначення фіксованих IP-адрес і "
+"символічних імен вузлів DHCP-клієнтам. Вони також необхідні для статичних "
+"конфігурацій інтерфейсів, коли обслуговуються тільки вузли з відповідною "
+"орендою."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "Обмеження бездіяльності станції"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Стан"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "Зупинити"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Строгий порядок"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Надіслати"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "Блокувати журналювання"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "Блокувати ведення журналу звичайної роботи цих протоколів"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Своп"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Вхід своп"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "Комутатор"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "Комутатор %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "Комутатор %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+"Комутатор %q має невідому топологію – параметри VLAN можуть бути "
+"неправильними."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "Маска портів комутатора"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "VLAN комутатора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "Протокол комутатора"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "Перейти до позначення списку CIDR"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "Активність порту комутатора (%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "Синхронізувати з браузером"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "Синхронізація..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Система"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "Системний журнал"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "Властивості системи"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "Розмір буфера системного журналу"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "Налаштування TFTP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "Корінь TFTP-сервера"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "Передано"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "Швидкість передавання"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Таблиця"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Ціль"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "Цільова мережа"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Завершити"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"Розділ <em>Конфігурація пристрою</em> охоплює фізичні параметри апаратних "
+"радіо-засобів, такі, як канал, потужність передавача або вибір антени, які є "
+"спільними для всіх визначених бездротових мереж (якщо апаратні радіо-засоби "
+"здатні підтримувати кілька SSID). Параметри окремих мереж, такі, як "
+"шифрування або режим роботи, згруповано в розділі <em>Конфігурація "
+"інтерфейсу</em>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"Пакет <em>libiwinfo-lua</em> не інстальований. Щоб мати можливість "
+"налаштувати безпровідні мережі, слід інсталювати цей компонент!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+"Конфігурацію оновлення кінцевої точки HE.net змінено, тепер потрібно "
+"використовувати звичайне ім’я користувача замість ідентифікатора користувача!"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr "Адреса IPv4 або повне доменне ім’я віддаленого кінця тунелю."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+"Призначений провайдером IPv6-префікс, зазвичай закінчується на <code>::</"
+"code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "Архів резервної копії не є правильним файлом gzip."
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr "Файл конфігурації не вдалося завантажити через таку помилку:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"Пристрій недосяжний протягом %d секунд після застосування очікуючих змін, що "
+"призвело до відкочування конфигурації з міркувань безпеки. Проте, якщо ви "
+"впевнені, що зміни конфігурації є правильними, все одно продовжіть "
+"застосування. Крім того, ви можете відхилити це попередження та "
+"відредагувати зміни, перш ніж намагатись застосувати їх знову, або ж "
+"скасувати всі очікуючі зміни, щоб зберегти поточну робочу конфігурацію."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+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>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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=\"Third Extended Filesystem\">ext3</abbr></"
+"samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 /> "
+"Натисніть \"Продовжити\", щоб розпочати процедуру прошивання."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Наведені нижче зміни було скасовано"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "Наразі в цій системі активні такі правила."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "Наданий відкритий SSH-ключ вже було додано."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+"Наданий відкритий SSH-ключ є недійсним. Надавайте належні відкриті ключі RSA "
+"або ECDSA."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "Задане мережеве ім’я не є унікальним"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+"Обладнання не підтримує мульти-SSID і, якщо ви продовжите, існуючу "
+"конфігурацію буде замінено."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr "Довжина IPv4-префікса в бітах, решта використовується в IPv6-адресах."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "Довжина IPv6-префікса в бітах"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "Локальна адреса IPv4, за якою створюється тунель (необов'язково)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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="
+"\"Virtual Local Area Network — віртуальна локальна комп’ютерна мережа"
+"\">VLAN</abbr>, у яких комп’ютери можуть напряму спілкуватися один з одним. "
+"<abbr title=\"Virtual Local Area Network — віртуальна локальна комп’ютерна "
+"мережа\">VLAN</abbr> часто використовуються для розділення мережі на окремі "
+"сегменти. Зазвичай один виcхідний порт використовується для з’єднання з "
+"більшою мережею, такою наприклад, як Інтернет, а інші порти — для локальної "
+"мережі."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "Обраний протокол потребує призначених пристроїв"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "Поданий маркер безпеки недійсний або вже збіг!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+"Зараз система видаляє розділ конфігурації і коли закінчить, "
+"перезавантажиться."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Система перепрошивається.<br /> <strong>НЕ ВИМИКАЙТЕ ЖИВЛЕННЯ ПРИСТРОЮ!</"
+"strong><br /> Зачекайте кілька хвилин перед тим, як пробувати знову "
+"під’єднатися. Залежно від налаштувань, можливо, треба буде оновити адресу "
+"вашого комп’ютера, щоб знову отримати доступ до пристрою."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "Системний пароль успішно змінено."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Завантажений файл образу не містить підтримуваний формат. Переконайтеся, що "
+"ви вибираєте універсальний формат образу для вашої платформи."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Тема"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "Активних оренд немає."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "Немає жодних змін до застосування."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "Немає жодних очікуючих змін до скасування!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "Немає жодних очікуючих змін!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+"Немає жодного призначеного пристрою. Призначте мережевий пристрій у вкладці "
+"\"Фізичні параметри\"."
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+"Цей маршрутизатор не має пароля. Встановіть пароль, щоб захистити веб-"
+"інтерфейс і увімкнути SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "Це IPv4-адреса ретранслятора"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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="
+"\"Domain Name System\">DNS</abbr>-серверів."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"Це список шаблонів для відбору файлів і каталогів, які мають увійти до "
+"резервної копії. Змінені файли у <code>/etc/config/</code> та деякі інші "
+"зберігаються автоматично."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+"Це або \"Update Key\", сконфігурований для тунелю, або пароль облікового "
+"запису, якщо ключ оновлення не налаштовано"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+"Це вміст файлу <code>/etc/rc.local</code>. Вставте тут ваші власні команди "
+"(перед 'exit 0'), щоб виконати їх у кінці процесу завантаження."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+"Це локальна адреса кінцевої точки, яку присвоєно тунельним брокером, вона "
+"зазвичай закінчується на <code>…:2/64</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Тільки для <abbr title=\"Dynamic Host Configuration Protocol — протокол "
+"динамічної конфігурації вузла\">DHCP</abbr> у локальній мережі"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "Це звичайне ім’я користувача для входу до облікового запису"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+"Це префікс, що надсилається до вас тунельним брокером для використання "
+"клієнтами"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr ""
+"Це системна таблиця Cron (crontab), у якій можна визначити заплановані "
+"завдання."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+"Зазвичай, це адреса найближчої точки присутності, що управляється тунельним "
+"брокером"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "У цьому списку наведено працюючі наразі системні процеси та їх стан."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "Ця сторінка надає огляд поточних активних мережевих підключень."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Ця секція поки що не містить значень"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "Синхронізація часу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "Синхронізацію часу не налаштовано."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "Інтервал часу для зміни ключа GTK"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Часовий пояс"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "Для входу…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"Щоб відновити файли конфігурації, ви можете відвантажити раніше створений "
+"архів резервної копії. Для відновлення мікропрограми до її початкового стану "
+"натисніть кнопку \"Виконати відновлення\" (можливо тільки з образами "
+"SquashFS)."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Тоновий"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "Усього доступно"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Трасування"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "Трафік"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Передано"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Швидкість передавання"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Передавання"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Потужність передавача"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Антена передавача"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "Тригер"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "Режим запуску"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "Ідентифікатор тунелю"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "Інтерфейс тунелю"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "Посилання тунелю"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "Потужність передавача"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Тип"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "Тільки UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB-пристрій"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB-порт"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "Не вдається визначити ім’я пристрою"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "Не вдається визначити зовнішню ІР-адресу"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "Не вдається визначити висхідний інтерфейс"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "Не вдається опрацювати запит"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "Не вдається отримати ідентифікатор клієнта"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "Не вдається розрізнити ім’я хоста AFTR"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "Не вдається розрізнити ім’я хоста вузла"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "Недоступні секунди (<abbr title=\"Unavailable Seconds\">UAS</abbr>)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "Невідомо"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "Невідома помилка (%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "Некерований"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "Демонтувати"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "Безіменний ключ"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Незбережені зміни"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "Непідтримуваний тип MAP"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "Непідтримуваний модем"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "Непідтримуваний тип протоколу."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "Вгору"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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-сумісний образ, щоб замінити поточну мікропрограму. "
+"Для збереження поточної конфігурації встановіть прапорець \"Зберегти "
+"налаштування\" (потрібен сумісний образ мікропрограми)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "Відвантажити архів..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Відвантажений файл"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Час безперервної роботи"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Використовувати <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "Використовувати DHCP-шлюз"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "Використовувати DNS-сервери, оголошувані вузлом"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "Використовуйте коди країн згідно ISO/IEC 3166 alpha2."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "Використовувати на тунельному інтерфейсі MTU"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "Використовувати на тунельному інтерфейсі TTL"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "Використовувати як зовнішній оверлей (/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "Використовувати як кореневу файлову систему (/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "Використовувати прапорець широкомовності"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "Використовувати вбудоване керування IPv6"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "Використовувати особливі DNS-сервери"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "Використовувати типовий шлюз"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "Використовувати метрику шлюзу"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "Використовувати таблицю маршрутизації"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"Використовуйте кнопку <em>Додати</em>, щоб додати новий запис оренди. "
+"<em>MAC-адреса</em> ідентифікує вузол, <em>IPv4-адреса</em> визначає "
+"фіксовану адресу, яка буде використовуватися, а <em>Назва (ім’я) вузла</em> "
+"призначає символічне ім’я вузла."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Використано"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "Використовується слот ключа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+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 <abbr title="
+"\"ідентифікатор власника ключа R0\">R0KH-ID</abbr>. Не потрібно за "
+"звичайного WPA(2)-PSK."
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "Сертифікат користувача (PEM-кодований)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "Ключ користувача (PEM-кодований)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Ім’я користувача"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLAN на %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLAN на %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "Локальна адреса VPN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "Локальний порт VPN"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN-сервер"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "Порт VPN-сервера"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "SHA1-геш сертифіката VPN-сервера"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC (CISCO 3000 (та інш.) VPN)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Постачальник"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "Клас постачальника для відправки при запиті DHCP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "Перевірте"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "Віртуальний динамічний інтерфейс"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "Відкрита система WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "Спільний ключ WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "Парольна фраза WEP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "Режим <abbr title=\"Wi-Fi Multimedia\">WMM</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "Парольна фраза WPA"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-шифрування потребує інсталяції <em>wpa_supplicant</em> (для режиму "
+"клієнта) або <em>hostapd</em> (для Точки доступу та режиму ad-hoc)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "Очікуємо, доки зміни наберуть чинності..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "Очікуємо завершення виконання команди..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "Очікування застосування конфігурації… %d c"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "Очікуємо пристрій..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "Застереження"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Застереження: Є незбережені зміни, які буде втрачено при перезавантаженні!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"При використанні PSK, PMK може генеруватися автоматично. Якщо ввімкнено, "
+"параметри ключів R0/R1 нижче не застосовуються. Щоб використовувати "
+"параметри ключів R0 та R1, вимкніть цю функцію."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "Активність Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "Асоціація клієнтів Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "Приймання даних Wi-Fi (%s"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "Передавання даних Wi-Fi (%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "Wi-Fi увімкнено (%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "Ширина"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "Бездротові мережі"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Бездротовий адаптер"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "Бездротова мережа"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "Огляд бездротових мереж"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "Безпека бездротової мережі"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "Бездротову мережу вимкнено"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "Бездротову мережу не пов’язано"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "Бездротова мережа перезапускається..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "Бездротову мережу вимкнено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "Бездротову мережу ввімкнено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "Записувати отримані DNS-запити до системного журналу"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "Записувати cистемний журнал до файлу"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "Так"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+"Вам слід увімкнути JavaScript у вашому браузері, або LuCI не буде працювати "
+"належним чином."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "Алгоритм стиснення ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "Потоки стиснення ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "Налаштування ZRam"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "Розмір ZRam"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "будь-який"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "авто"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "зв’язано"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "створити"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "створити:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "Створити міст через зазначені інтерфейси"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "дБ"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "дБм"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "вимкнено"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "вимкнено"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "минув"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Файл, де зберігаються видані <abbr title=\"Dynamic Host Configuration "
+"Protocol — протокол динамічної конфігурації вузла\">DHCP</abbr>-оренди"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "переспрямувати"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "повний дуплекс"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "напівдуплекс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "шістнадцяткове кодоване значення"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "прихований"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "гібридний режим"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "якщо ціль — мережа"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "вхід"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "КБ/с"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "Кбіт/с"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "ключ від 8 до 63 символів"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "ключ із 5 або 13 символів"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr ""
+"Локальний <abbr title=\"Domain Name System — система доменних імен\">DNS</"
+"abbr>-файл"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "хв."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "змішаний WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "ні"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "нема з’єднання"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "непусте значення"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "не присутній"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "вимкнено"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "увімкнено"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "відкрита"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "вихід"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "оверлей"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "додатне десяткове значення"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "додатне ціле значення"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "випадковий"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "режим реле"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "спрямовано"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "с"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "режим сервера"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "тільки ЗІ збереженням стану"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "БЕЗ збереження стану"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "БЕЗ та ЗІ збереженням стану"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "позначено"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "одиниці часу (TUs / 1.024 ms) [1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "унікальне значення"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "невідомий"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "необмежений"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "не визначено"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "не визначено -або- створити:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "не позначено"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "дійсна IP-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "дійсна IP-адреса або префікс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "дійсна IPv4 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "дійсна IPv4-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "дійсна IPv4-адреса або мережа"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "дійсна IPv4-адреса:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "дійсна IPv4-мережа"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "дійсна IPv4 або IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "дійсне значення IPv4-префіксу (0-32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "дійсна IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "дійсна IPv6-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "дійсна IPv6-адреса або префікс"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "дійсний IPv6-ідентифікатор хоста"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "дійсна IPv6-мережа"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "дійсне значення IPv6-префіксу (0-128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "дійсна MAC-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "дійсний UCI-ідентифікатор"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "дійсний UCI-ідентифікатор, ім’я хоста або IP-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "дійсна адреса:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "дійсна дата (РРРР-ММ-ДД)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "дійсне десяткове значення"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "дійсний шістнадцятковий ключ WEP"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "дійсний шістнадцятковий ключ WPA"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "дійсне ім’я хоста:порт"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "дійсне ім’я хоста"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "дійсне ім’я хоста або IP-адреса"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "дійсне ціле значення"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "дійсна мережа в записі адреса/маска мережі"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr "дійсний символ номера телефону (0-9, \"*\", \"#\", \"!\" or \".\")"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "дійсний порт або діапазон портів (порт1-порт2)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "дійсне значення порту"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "дійсний час (ГГ:ХХ:СС)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "значення від %d до %d символів"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "значення від %f до %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "значення, що більше або дорівнює %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "значення, що менше або дорівнює %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr "значення з принаймні %d символів"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "значення з не більше %d символів"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "так"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« Назад"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "одне з:\n"
+#~ " - %s"
+
+#~ 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 занадто старий, щоб правильно відобразити цю "
+#~ "сторінку. Поновіть його, принаймні, до версії 7 або скористайтесь іншим "
+#~ "браузером, таким як Firefox, Opera або Safari."
+
+#~ msgid "kB"
+#~ msgstr "КБ"
diff --git a/package/luci/modules/luci-base/po/vi/base.po b/package/luci/modules/luci-base/po/vi/base.po
new file mode 100644 (file)
index 0000000..62b7a66
--- /dev/null
@@ -0,0 +1,6328 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-16 06:59+0200\n"
+"PO-Revision-Date: 2009-08-14 12:23+0200\n"
+"Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+#, fuzzy
+msgid "(%s available)"
+msgstr "(%s available)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "---Mục bổ sung---"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "--Hãy chọn--"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "--tùy chỉnh--"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Dịch vụ căn bản đặt Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Mở rộng dịch vụ đặt Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "Điểm truy cập"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "Hành động"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "kết nối đang hoạt động"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "Thêm vào"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "Quản trị"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "Cho phép <abbr title=\"Secure Shell\">SSH</abbr> xác thực mật mã"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "Cho phép tất cả trừ danh sách liệt kê"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "Chỉ cho phép danh sách liệt kê"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "Xác thực"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "Authoritative"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "Yêu cầu ủy quyền"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "Sẵn có"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "Giao diện cầu nối"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU usage (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "Bỏ qua"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "chuỗi"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "Thay đổi"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "Thay đổi đã áp dụng"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "Kênh"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "Checksum"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr "Giao diện này chưa thuộc về bất kỳ firewall zone nào."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "Lệnh"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "Cấu hình"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "Xác nhận"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "Giới hạn kết nối"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "Mã quốc gia"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "Tạo/ gán firewall-zone"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"Tùy chỉnh chế độ của thiết bị <abbr title=\"Light Emitting Diode\">LED</"
+"abbr>s nếu có thể."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "Tùy chọn DHCP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 ""
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "Xóa"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "Mô tả"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "Điểm đến"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "Công cụ"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "Khoảng cách tối ưu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "Khoảng cách tới thành viên xa nhất trong mạng lưới tính bằng mét"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "Tính đa dạng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 là một phối hợp  <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"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "Domain yêu cầu"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"Don&amp;#39;t chuyển tiếp <abbr title=\"Hệ thống tên miền\">DNS</abbr>-Yêu "
+"cầu không cần <abbr title=\"Hệ thống tên miền\">DNS</abbr>-Tên"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+msgid ""
+"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
+"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
+msgstr ""
+"Dropbear cung cấp <abbr title=\"Secure Shell\">SSH</abbr> mạng lưới shell "
+"truy cập và một <abbr title=\"Secure Copy\">SCP</abbr> server tích hợp"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr ""
+"Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP-Method"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "Chỉnh sửa"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "Kích hoạt <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "Cho kích hoạt/ Vô hiệu hóa"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "Kích hoạt Spanning Tree Protocol trên cầu nối này"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "Encryption"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "Lỗi"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "Bộ tương hợp ethernet"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "Bộ chuyển đảo ethernet"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "Tập tin hệ thống"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "Filter private"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "Lọc không hữu dụng"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "Firewall"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "Phần cứng flash"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "Force"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "Ngưỡng cửa Phân đoạn"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "Khung nổ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "Đi tới trang cấu hình thích hợp"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "Hang Up"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr ""
+"Ở đây bạn có thể cấu hình những đặc tính cơ bản của thiết bị như tên máy chủ "
+"hoặc múi giờ."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "Giấu <abbr title=\"Chế độ mở rộng đặt Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "Host entries"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "Tên host"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "Tên host"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "Địa chỉ IP"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "Nhận dạng"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"Nếu bộ nhớ vật lý không đủ dữ liệu không dùng có thể được swap tạm thời đến "
+"một thiết bị swap để tạo ra nhiều khoảng trống hơn trong <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Hãy nhận biết rằng swapping dữ liệu là "
+"một quá trình rất chậm vì một thiết bị swap không thể được truy cập với  "
+"datarates cao hơn của <abbr title=\"Random Access Memory\">RAM</abbr>."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "Lờ đi <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "Lờ đi giao diện"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "Lờ đi tập tin resolve"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "Trong"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "Initscript"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "Initscripts"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "Giao diện "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "Giao diện "
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "Giá trị nhập vào không hợp lí"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "Tên và mật mã không đúng. Xin thử lại "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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 ""
+"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!"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "Kernel Log"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "Phím "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "Kill"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "Ngôn ngữ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "Leasefile"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "Leasetime còn lại"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "Giới hạn "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "Link On"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "Tải "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "Giờ địa phương"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "Tra vấn địa phương"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "Bản ghi tra vấn"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "Đăng nhập "
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "Thoát ra"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "Lọc địa chỉ MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "Lọc MAC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "Danh sách MAC"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "Bộ nhớ"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "Memory usage (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "Metric"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "Chế độ"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "Thiết bị modem"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "Monitor"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "Lắp điểm"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "Lắp điểm"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr ""
+"Số điểm lắp xác định tại một điểm mà ở đó bộ nhớ sẽ được gắn vào hệ thống "
+"tập tin"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "Lắp tập tin hệ thống"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "Tên"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "Sự điều hướng"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "mạng lưới "
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "Không có quy luật trong chuỗi này"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"Trên trang này bạn có thể định cấu hình giao diện network. Bạn có thể bắt "
+"cầu nhiều giao diện bằng cách đánh dấu &amp;quot;bridge interfaces&amp;quot; "
+"field và nhập tên vào của nhiều giao diện network phân tách bởi những khoảng "
+"trống. Bạn có thể cũng dùng <abbr title=\"Virtual Local Area Network\">VLAN</"
+"abbr> notation <samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e."
+"g.</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "Lựa chọn "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "Ra khỏi"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "Nhìn chung"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "Owner"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA Encapsulation"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "Gói tin"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "Mật mã"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "Xác thực mật mã"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "Mật mã của private key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "Đường dẫn tới CA-Certificate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "Đường dẫn tới private key"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "Tiến hành reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "Cài đặt căn bản"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "Nhập tên và mật mã"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "Chính sách"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "Cửa "
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "Ngăn chặn giao tiếp giữa client-và-client"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "Proceed"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "Processes"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "Prot."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "Protocol"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "Pseudo Ad-Hoc (ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS Threshold"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "RX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+msgid ""
+"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+msgstr ""
+"Đọc <code>/etc/ethers</code> để định cấu hình <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-Server"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "Reboot"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "Reboots hệ điều hành của công cụ"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "Receive"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "Máy thu Antenna"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "Tham chiếu"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "Loại bỏ"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "thay đổi nội dung"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "Reset"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "Reset bộ đếm"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "Khởi động lại Firewall"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "Phục hồi backup"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "Revert"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr ""
+"Routes chỉ định trên giao diện và cổng một host nhất định hay network được "
+"tiếp cận."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "Lưu"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "Lưu & áp dụng "
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "Scan"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "Scheduled Tasks"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "Cô lập đối tượng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "Dịch vụ "
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "Dung lượng "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr ""
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "Nhảy tới nội dung"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "Chuyển đến mục định hướng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "Nguồn"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "Bắt đầu "
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "Bắt đầu ưu tiên"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "Static IPv4 Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "Static IPv6 Routes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "Thống kê leases"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "Static Routes"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "Tình trạng"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "Yêu cầu nghiêm ngặt"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "Trình "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "chuyển đổi"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "Hệ thống"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "System Log"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "TX"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "Bảng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "Đích"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "Terminate"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code>"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"Tập tin công cụ của bộ nhớ hoặc phân vùng (<abbr title=\"Ví dụ\">e.g.</abbr> "
+"<code>/dev/sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"Filesystem mà được dùng để format memory (<abbr title=\"for example\">e.g.</"
+"abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "Những thay đối sau đây đã được để trở về tình trạng cũ. "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Hệ thống bây giờ đang flashing.<br /> DO NOT POWER OFF THE DEVICE!<br /> Chờ "
+"một vài phút cho tới khi kết nối lại. Có thể cần phải làm mới địa chỉ của "
+"máy tính để tiếp cận thiết bị một lần nữa, phụ thuộc vào cài đặt của bạn. "
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"Tập tin đang tải hình ảnh không bao gồm một hổ trợ format. Bảo đảm rằng bạn "
+"chọn một image format tổng quát cho platform."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "Thiết kế"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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 ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"Đây là <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> duy "
+"nhất trong mạng địa phương. "
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "Đây là system crontab mà scheduled tasks có thể bị định nghĩa."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr ""
+"List này đưa ra một tầm nhìn tổng quát về xử lý hệ thống đang chạy và tình "
+"trạng của chúng."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr ""
+"Trang này cung cấp một tổng quan về đang hoạt động kết nối mạng hiện tại."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "Phần này chưa có giá trị nào"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "Múi giờ "
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "Chuyển giao"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "Truyền tải rate"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "Transmit"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "Truyền tải năng lượng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "Máy phát Antenna"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "Loại "
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "Thay đổi không lưu"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "Tập tin đã tải lên"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "Uptime"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "Dùng <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "Đã sử dụng"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "Tên người dùng "
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM Mode"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "Bộ tương hợp không dây"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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 ""
+"Bạn có thể bật hoặc tắt cài đặt init script tại đây. Thay đổi này sẽ được áp "
+"dụng sau khi một thiết bị khởi động lại.<br /><strong>Cảnh báo: Nếu bạn vô "
+"hiệu hoá init script thiết yếu như &amp;quot;network&amp;quot;, công cụ của "
+"bạn chó thể trở nên không truy cập được</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "tự động"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "tạo một cầu nối trên một giao diện được chỉ định"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "Vô hiệu hóa"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"Tập tin được cho <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases sẽ được lưu trữ"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "Nếu mục tiêu là một network"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "Tập tin <abbr title=\"Domain Name System\">DNS</abbr> địa phương"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr ""
+
+#~ msgid "Design"
+#~ msgstr "Thiết kế"
+
+#~ msgid "Download and install package"
+#~ msgstr "Tải và cài đặt gói"
+
+#~ msgid "Filter"
+#~ msgstr "Lọc"
+
+#~ msgid "Find package"
+#~ msgstr "Tìm gói"
+
+#~ msgid "Install"
+#~ msgstr "Cài đặt "
+
+#~ msgid "OK"
+#~ msgstr "OK "
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "Cấu hình OPKG-"
+
+#~ msgid "Package name"
+#~ msgstr "Tên gói"
+
+#~ msgid "Software"
+#~ msgstr "Phần mềm"
+
+#~ msgid "Version"
+#~ msgstr "Phiên bản"
+
+#~ msgid "none"
+#~ msgstr "không "
+
+#~ msgid "No chains in this table"
+#~ msgstr "Không có chuỗi trong bảng này"
+
+#~ msgid "Backup / Restore"
+#~ msgstr "Backup/ Restore"
+
+#~ msgid "Apply"
+#~ msgstr "Áp dụng"
+
+#~ msgid "Applying changes"
+#~ msgstr "Tiến hành thay đổi"
+
+#~ msgid "Action"
+#~ msgstr "Action"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Mức cao nhất"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Mức thấp nhất"
+
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "thống kê"
+
+#~ 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/package/luci/modules/luci-base/po/zh-cn/base.po b/package/luci/modules/luci-base/po/zh-cn/base.po
new file mode 100644 (file)
index 0000000..c7a9e14
--- /dev/null
@@ -0,0 +1,6518 @@
+#
+# Zheng Qian <sotux82@gmail.com>, 2019.
+# Yangfl <mmyangfl@gmail.com>, 2018, 2019.
+#
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2019-05-17 09:18+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr "%.1f dB"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr "%d Bit"
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr "%d 个无效字段"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s 在多个 VLAN 中均未标记!"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(最近 %d 分钟信息,每 %d 秒刷新)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s 可用)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(空)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(没有接口连接)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- 更多选项 --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- 请选择 --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- 自定义 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr "-- 根据设备匹配 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr "-- 根据标签匹配 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr "-- 根据 UUID 匹配 --"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- 请选择 --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr "0 = 不使用 RSSI 阈值,1 = 驱动默认值"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1 分钟负载:"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15 分钟负载:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr "4 字符的十六进制 ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr "464XLAT (CLAT)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5 分钟负载:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr "十六进制表示的 6 字节标识符,无冒号分隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr "802.11r 快速切换"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr "802.11w 关联 SA 查询最大超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr "802.11w 关联 SA 查询重试超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr "802.11w 管理帧保护"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr "802.11w 最大超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr "802.11w 重试超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 查询端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 服务器端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr ""
+"按照“解析文件”里的顺序查询 <abbr title=\"Domain Name System\">DNS</abbr> 服务"
+"器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 网关"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 子网掩码"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 地址或网段(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 网关"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 后缀(十六进制)"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 配置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名称"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr> 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"最大 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> 租约数量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"最大 <abbr title=\"Extension Mechanisms for Domain Name System\">EDNS0</"
+"abbr> 数据包大小"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "最大并发查询数"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"<br/>注意:如果 crontab 文件在编辑前为空,则需要手动重新启动 cron 服务。"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr "由于身份验证会话已过期,需要重新登录。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr "A43C + J43 + A43 + V43"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr "ADSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr "ANSI T1.413"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP 重试阈值"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr "ATM(异步传输模式)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM 桥接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM 虚拟通道标识(VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM 虚拟路径标识(VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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 来拨号"
+"连接到网络运营商。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM 设备号码"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr "ATU-C 系统供应商 ID"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "接入集中器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "接入点 AP"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "动作"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "活动的 <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 路由"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "活动的 <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 路由"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "活动连接"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "已分配的 DHCP 租约"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "已分配的 DHCPv6 租约"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "点对点 Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "添加"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr "添加 IPv4 地址…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr "添加 IPv6 地址…"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr "添加密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "添加本地域名后缀到 HOSTS 文件中的域名"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "添加新接口…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "额外的 HOSTS 文件"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "额外的 SERVERS 文件"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "地址"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "接入本地中继桥的地址"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "管理权"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "高级"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "高级设置"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr "总发射功率(ACTATP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "警戒"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr "接口别名"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr "\"%s\" 的别名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "所有服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr "从最低可用地址开始顺序分配 IP 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr "顺序分配 IP"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr "允许 AP 模式时在 low ACK 的情况下断开无线终端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "仅允许列表外"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "允许传统的 802.11b 速率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "仅允许列表内"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "允许本机"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "允许远程主机连接到本地 SSH 转发端口"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "允许 root 用户凭密码登录"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "允许 <em>root</em> 用户凭密码登录"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr "允许 127.0.0.0/8 回环范围内的上行响应,例如:RBL 服务"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr "允许的 IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr "总是通告默认路由"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr "总是关闭(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr "总是开启(%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"即使辅助信道重叠,也始终使用 40MHz 信道。使用此选项不符合 IEEE 802.11n-2009!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr "Annex"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr "Annex A + L + M(全部)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr "Annex A G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr "Annex A G.992.2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr "Annex A G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr "Annex A G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr "Annex B(全部)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr "Annex B G.992.1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr "Annex B G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr "Annex B G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr "Annex J(全部)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr "Annex L G.992.3 POTS 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr "Annex M(全部)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr "Annex M G.992.3"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr "Annex M G.992.5"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr "即使没有可用的公网前缀,也仍通告自己为默认路由。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr "通告的 DNS 域名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr "通告的 DNS 服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr "匿名身份"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "自动挂载未配置的磁盘分区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "自动挂载未配置的 Swap 分区"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "天线 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "天线 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "天线配置"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "任意区域"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr "强制应用"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "应用请求失败,状态 <code>%h</code>"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "架构"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr "将每个公共 IPv6 前缀的给定长度部分分配给此接口"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "分配接口…"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr "将此十六进制子 ID 前缀分配给此接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "已连接站点"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "关联数"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr "认证组"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "认证"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr "认证类型"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "唯一授权"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "需要授权"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "自动刷新"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr "自动"
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr "自动家庭网络(HNCP)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "在挂载前自动检查文件系统错误"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "通过 hotplug 自动挂载磁盘"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "通过 hotplug 自动挂载 swap 分区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "自动挂载磁盘"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "自动挂载 Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "可用"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "平均:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr "B43 + B43C"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr "B43 + B43C + V43"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr "BR / DMR / AFTR"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "返回"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "返回至概况"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "返回至配置"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "返回至概况"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "返回至扫描结果"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "备份"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "备份/升级"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "文件备份列表"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "指定了错误的地址!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr "频宽"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr "Beacon 间隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"下面是待备份的文件清单。包含了更改的配置文件、必要的基础文件和用户自定义的需"
+"备份文件。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr "动态绑定到接口而不是通配符地址(推荐为 linux 默认值)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr "绑定接口"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr "将隧道绑定到此接口(可选)。"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "传输速率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "忽略虚假空域名解析"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "桥接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "桥接接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "桥接号"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "开机自动运行"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s 无线控制器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 无线控制器"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "已缓冲"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU 使用率(%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr "调用失败"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "取消"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr "分类"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr "注意:配置文件将被删除"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr "注意:将强制进行系统升级"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "链"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr "更改登录密码"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "更改数"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "更改已应用。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "更改已恢复。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "更改访问设备的管理员密码"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr "正在更改密码…"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "信道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr "信道 %d 在 %s 监管区域内不可用并已自动调整到 %d。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "检查"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "在挂载前检查文件系统"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr "选中此选项以从无线中删除现有网络。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "校验值"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr "选择 mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"为此接口分配所属的防火墙区域,选择“不指定”可将该接口移出已关联的区域,或者填"
+"写“创建”栏来创建一个新的区域,并将当前接口与之建立关联。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr "选择指派到此无线接口的网络,或者填写“创建”栏来新建网络。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "算法"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr "Cisco UDP 封装"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr "点击“生成备份”下载当前配置文件的 tar 存档。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+"单击“保存 mtdblock”以下载指定的 mtdblock 文件。(注意:此功能适用于专业人"
+"士!)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "客户端 Client"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "请求 DHCP 时发送的客户端 ID"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr "关闭"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr "在给定时间(秒)后关闭非活动链接,0 为保持连接"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "关闭列表…"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "正在收集数据…"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "命令"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr "备注"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "一般配置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"通过禁用用于安装密钥的 EAPOL-Key 帧的重新传输,来增加客户端密钥重安装攻击的复"
+"杂度。此解决方法可能会导致互操作性问题,并降低密钥协商的可靠性,特别是在流量"
+"负载较重的环境中。"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "配置"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr "配置失败"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr "将保留配置文件"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "配置已应用。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "配置已回滚!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "确认密码"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "连接"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "已连接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "连接数限制"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr "尝试连接失败"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "连接"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+"应用配置更改后,无法重新获得对设备的访问权限。如果您更改了网络相关设置如 IP "
+"地址或无线安全证书,则可能需要重新连接。"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "国家"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "国家代码"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "包括以下接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "包括以下接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "创建/分配防火墙区域"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "创建新接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "在多个接口上创建桥接"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "致命错误"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron 日志级别"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "自定义接口"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr "自定义分配的 IPv6 前缀"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"自定义文件(证书、脚本)会保留在系统上。若无需保留,请先执行恢复出厂设置。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr "自定义闪烁间隔(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr "自定义此设备的 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr "DAE 客户端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr "DAE 端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr "DAE 加密"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP 服务器"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP/DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP 客户端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP 选项"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr "DHCPv6 客户端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr "DHCPv6 模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr "DHCPv6 服务"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "DNS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS 转发"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr "DNS-Label / FQDN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr "DNSSEC"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr "DNSSEC 检查未签名"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr "DPD 空闲超时"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr "DS-Lite AFTR 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr "DSL"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr "DSL 状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr "DSL 线路模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr "DTIM 间隔"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DUID"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr "数据速率"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "调试"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "默认 %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr "默认路由"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "默认网关"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr "默认是无状态的 + 有状态的"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "默认状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "为网络定义名称。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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 服务器给客户端。"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "删除"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr "删除密钥"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "删除此网络"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr "发送流量指示消息间隔"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "描述"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "目标地址"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "设备"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "设备配置"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "设备正在重启…"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "无法连接到设备"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "无法连接到设备!仍旧等待设备…"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "网络诊断"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr "拨号号码"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "目录"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "禁用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+"不在此接口提供 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> 服务。"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr "禁用加密"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr "禁用不活动轮询"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr "禁用此网络"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "已禁用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr "已禁用(默认)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr "在低 Ack 应答时断开连接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "丢弃 RFC1918 上行响应数据"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr "断开连接"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr "尝试断开连接失败"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "解除"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "距离优化"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "最远网络用户的距离(米)。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "差异"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 为 <abbr title=\"Network Address Translation\">NAT</abbr> 防火墙提供"
+"了一个集成的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"服务器和 <abbr title=\"Domain Name System\">DNS</abbr> 转发器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "不缓存无用的回应, 比如:不存在的域名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr "不转发公共域名服务器无法回应的请求"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "不转发本地网络的反向查询"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr "您真的要删除以下 SSH 密钥吗?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "忽略空域名解析"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "域名白名单"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr "禁止分片"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr "下移"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "下载备份"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr "下载 mtdblock"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr "下游 SNR 偏移"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear 实例"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> 访问和 <abbr title="
+"\"Secure Copy\">SCP</abbr> 服务"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr "轻型双栈(RFC6333)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "动态 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "动态隧道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr ""
+"为所有客户端提供 DHCP 服务。如果禁用,将只对具有静态租约的客户提供服务。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr "EA-位长"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP 类型"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "编辑"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "编辑此接口"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "编辑此网络"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "紧急"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "启用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"启用 <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> 嗅探"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "启用 HE.net 动态终端更新"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr "启用 IPv6 协商"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "在 PPP 链路上启用 IPv6 协商"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "启用巨型帧透传"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "启用 NTP 客户端"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr "启用单个 DES"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "启用 TFTP 服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "启用 VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "启用密钥重新安装(KRACK)对策"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "启用智能交换学习"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr "启用流入数据包镜像"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr "启用流出数据包镜像"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr "启用后报文的 DF(禁止分片)标志。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "启用此挂载点"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr "启用此网络"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "启用此 swap 分区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "启用/禁用"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "已启用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr "在此桥接上启用 IGMP 窥探"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr "启用属于同一移动域的接入点之间的快速漫游"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "在此桥接上启用生成树协议"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "封装模式"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "加密"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr "端点主机"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr "端点端口"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr "输入自定义值"
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr "输入自定义值"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "擦除中…"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "错误"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr "错误秒数(ES)"
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "以太网适配器"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "以太网交换机"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr "排除接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "扩展 HOSTS 文件中的主机后缀"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr "期望 %s"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "到期时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "租用地址的到期时间,最短 2 分钟(<code>2m</code>)。"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr "外部"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr "外部 <abbr title=\"R0 Key Holder\">R0KH</abbr> 列表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr "外部 <abbr title=\"R1 Key Holder\">R1KH</abbr> 列表"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "外部系统日志服务器地址"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "外部系统日志服务器端口"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "外部系统日志服务器协议"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr "额外的 SSH 命令选项"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr "FT over DS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr "FT over the Air"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr "FT 协议"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr "在 %d 秒内确认应用失败,等待回滚…"
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "文件"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "向客户端通告的启动镜像文件名"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "文件系统"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "过滤本地包"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "过滤无用包"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr "最终确认失败"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr "查找当前系统上的所有分区和 swap 设备,并根据查找结果生成并替换现有配置"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "搜索并加入网络"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "完成"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "防火墙"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr "防火墙标识"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "防火墙设置"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "防火墙状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr "固件文件"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "固件版本"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "指定的 DNS 查询源端口"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "刷新固件"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "刷写固件…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "刷写新的固件"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "刷新操作"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "正在刷写…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr "闪存写访问(%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "强制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "强制 40MHz 模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "强制 CCMP(AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "即使检测到另一台服务器,也要强制使用此网络上的 DHCP。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "强制 TKIP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "强制 TKIP 和 CCMP(AES)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr "强制链路"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr "强制升级"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr "强制使用 NAT-T"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr "表单令牌不匹配"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "转发 DHCP 数据包"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr "前向纠错秒数(FECS)"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "转发广播数据包"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr "转发 mesh 节点数据包"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "转发模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "分片阈值"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "帧突发"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "空闲数"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+"有关 WireGuard 接口和 Peer 的更多信息:<a href=\"http://wireguard.com"
+"\">wireguard.com</a>。"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "仅 GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "网关"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr "网关地址无效"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "网关端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "基本设置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "基本设置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "生成配置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr "本地生成 PMK"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "生成备份"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "通用 802.11%s 无线控制器"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "由于密码验证不匹配,密码没有更改!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr "全局设置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "全局网络选项"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "跳转到密码配置页…"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "跳转到相关的配置页面"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr "组密码"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr "访客"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr "HE.net 密码"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net 用户名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr "HT 模式(802.11n)"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr "挂起"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr "请求头错误代码错误(HEC)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr "心跳间隔(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr "此处配置设备的基础信息,如主机名称或时区。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "隐藏 <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr "隐藏空链"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr "主机"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "主机目录"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "主机到期超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "主机 <abbr title=\"Internet Protocol Address\">IP</abbr> 或网络"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr "Host-Uniq 标签内容"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "主机名"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "请求 DHCP 时发送的主机名"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "主机名"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr "混合"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr "IKE DH 组"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr "IP 地址"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr "IP 协议"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP 地址"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "IP 地址无效"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "IP 地址缺失"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4 防火墙"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr "IPv4 上游"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4 地址"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr "分配 IPv4 长度"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4 广播"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4 网关"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4 子网掩码"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr "地址/网络掩码表示法中的 IPv4 网络"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr "IPv4 地址前缀"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "IPv4 地址前缀长度"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr "IPv4+IPv6"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4 地址"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr "IPv4-in-IPv4 (RFC2003)"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6 防火墙"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr "IPv6 网上邻居"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6 设置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr "IPv6 ULA 前缀"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr "IPv6 上游"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6 地址"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr "IPv6 分配提示"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr "IPv6 分配长度"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6 网关"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr "地址/网络掩码表示法中的 IPv6 网络"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6 地址前缀"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "IPv6 地址前缀长度"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr "IPv6 路由前缀"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr "IPv6 后缀"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6 地址"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr "IPv6-PD"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6-in-IPv4 (RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6-over-IPv4 (6rd)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6-over-IPv4 (6to4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "鉴权"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr "如果选中,则启用1DES。"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr "如果选中,则禁用加密"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr "如果指定,则通过 UUID 而不是固定的设备文件来挂载设备"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr "如果指定,则通过分区卷标而不是固定的设备文件来挂载设备"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "留空则不配置默认路由"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "留空则忽略所通告的 DNS 服务器地址"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"如果物理内存不足,闲置数据可自动移到 swap 区暂存,以增加可用的 <abbr title="
+"\"Random Access Memory\">RAM</abbr>。请注意:swap 区的数据处理会非常慢,因为 "
+"swap 设备无法像 <abbr title=\"Random Access Memory\">RAM</abbr> 这样的高速率"
+"访问。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "忽略 <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "忽略此接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "忽略解析文件"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "固件文件"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "入口"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+"为了防止未经授权访问系统,您的请求已被阻止。点击下面的 “继续 »” 来返回上一"
+"页。"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "活动超时"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "入站:"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "信息"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr "信息"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr "初始化失败"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "启动脚本"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "启动脚本"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr "安装 iputils-traceroute6 以进行 IPv6 路由追踪"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "安装软件包 %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "安装扩展协议…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "接口设备 %q 从 %q 自动迁移到了 %q。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "接口配置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "接口总览"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "正在重新连接接口…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "接口名称"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "接口不存在或未连接。"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "接口"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr "内部"
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "内部服务器错误"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "无效"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "无效的 VLAN ID!只有 %d 和 %d 之间的 ID 有效。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "无效的 VLAN ID!只允许唯一的 ID"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "无效的用户名和/或密码!请重试。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "隔离客户端"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+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 "您尝试刷写的固件与本路由器不兼容,请重新验证固件文件。"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "需要 JavaScript!"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "加入网络"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "加入网络:搜索无线"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr "加入网络:%q"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "保留配置"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "内核日志"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "内核版本"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "密码"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "密码 #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr "KiB"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr "强制关闭"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP 服务器"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP 响应故障阈值"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP 响应间隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "卷标"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "语言"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "语言和界面"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr "延迟"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr "叶节点"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "租期"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "租约文件"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "剩余租期"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "留空则自动探测"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "留空则使用当前 WAN 地址"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "图例:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "客户数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr "仅在网卡所属的子网中提供 DNS 服务。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr "仅监听这些接口和环回接口。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr "线路衰减(LATN)"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr "线路模式"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr "线路状态"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr "线路运行时间"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "活动链接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr ""
+"将请求转发到的 <abbr title=\"Domain Name System\">DNS</abbr> 服务器列表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"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 地址。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"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 的列表。"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr "用于认证的 SSH 密钥文件列表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "允许 RFC1918 响应的域名列表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "允许虚假空域名响应的服务器列表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr "监听接口"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr "监听端口"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr "仅监听指定的接口,未指定则监听全部"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "入站 DNS 查询端口"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "负载"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "平均负载"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "加载中"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr "正在加载 SSH 密钥…"
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr "本地 IP 地址无效"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr "要分配的本地 IP 地址"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "本地 IPv4 地址"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "本地 IPv6 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr "仅本地服务"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "本地启动脚本"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "本地时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "本地域名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr "本地域名规则。与此域匹配的名称从不转发,仅从 DHCP 或 HOSTS 文件解析"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr "本地域名后缀将添加到 DHCP 和 HOSTS 文件条目"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "本地服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr "如果有多个 IP 可用,则根据请求来源的子网来本地化主机名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "本地化查询"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr "信道道已被锁定为 %s,因为该信道被 %s 使用"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "日志记录等级"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "记录查询日志"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "日志"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "登录"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "退出"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr "信号丢失秒数(LOSS)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "网络地址的起始分配基址。"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr "MAC"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC 地址过滤"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC 过滤"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC 列表"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr "MAP / LW4over6"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr "MAP 规则无效"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr "MD5"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr "确保使用以下命令来复制根文件系统:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr "手动"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr "最大可达数据速率(ATTNDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr "允许的最大监听间隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "允许的最大 DHCP 租用数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "允许的最大并发 DNS 查询数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "允许的最大 EDNS.0 UDP 数据包大小"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "调制解调器就绪的最大等待时间(秒)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+"名称的最大长度为 15 个字符,包含根据协议类型,网桥自动添加上的名字前缀(br-、"
+"6in4-、pppoe- 等)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "最大地址分配数量。"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr "中等"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "内存"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "内存使用率(%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr "Mesh ID"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "跃点数"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr "数据包镜像监听端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr "数据包镜像源端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "缺少协议 %q 的协议扩展"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr "移动域"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "模式"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "主机型号"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr "调制解调器默认"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "调制解调器设备"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr "调制解调器信息查询失败"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "调制解调器初始化超时"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "监听"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr "需要更多字符"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "挂载项目"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "挂载点"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "挂载点"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "挂载点 - 存储区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "挂载点 - 交换区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr "配置存储设备挂载到文件系统中的位置和参数"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "自动挂载未专门配置挂载点的分区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "挂载选项"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "挂载点"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "自动挂载未专门配置的 swap 分区"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "已挂载的文件系统"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "下移"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "上移"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr "NAS ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr "NAT-T 模式"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr "NAT64 前缀"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr "NCM"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr "NDP 代理"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr "NT 域"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "候选 NTP 服务器"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "名称"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "新接口的名称"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "新网络的名称"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "导航"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "子网掩码"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "网络"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "网络工具"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "网络启动镜像"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr "网络设备活动(%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr "网络设备不存在"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "无接口的网络。"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "前进 »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr "无"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "本接口未配置 DHCP 服务器"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr "无 NAT-T"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "未找到文件"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "无可用信息"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr "无匹配的前缀委托"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "禁用无效信息缓存"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "本设备未配置网络"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "未指定网络名"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "未设置密码!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr "当前还没有公钥。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "本链没有规则"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr "还没有可用的扫描结果…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "未指定区域"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "噪声"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr "噪声容限(SNR)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "噪声:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr "非抢占 CRC 错误(CRC_P)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr "非全部地址"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "无"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "正常"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "未找到"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "未关联"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "未连接"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr "开机时不启动"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr "注意:接口名称长度"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "注意"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr "缓存的 DNS 条目数量(最大 10000,0 表示不缓存)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr "用于压缩的并行线程数"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr "混淆组密码"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr "混淆密码"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr "获取 IPv6 地址"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "关闭时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"在此页面,您可以配置网络接口。您可以勾选“桥接接口”,并输入由空格分隔的多个网"
+"络接口的名称来桥接多个接口。接口名称中可以使用 <abbr title=\"Virtual Local "
+"Area Network\">VLAN</abbr> 记号 <samp>INTERFACE.VLANNR</samp>(例如:"
+"<samp>eth0.1</samp>)。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "通电时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "请指定主机名或MAC地址!"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "一个或多个选项值有误!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr "选项卡上存在一个或多个无效/必需值"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "一个或多个必选项值为空!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "打开列表…"
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "工作频率"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "选项已更改"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "选项已移除"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr "可选"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+"可选,传出加密数据包的 32 位标记。请输入十六进制值,以 <code>0x</code> 开头。"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"可选,允许的值:“eui64”、“random”和其他固定值(例如:“::1”或“::1:2”)。当从授"
+"权服务器获取到 IPv6 前缀(如“a:b:c:d::”),使用后缀(如 “::1”)合成 IPv6 地址"
+"(“a:b:c:d::1”)分配给此接口。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr "可选,Base64 编码的预共享密钥。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "可选,为此 Peer 创建允许 IP 的路由。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr "可选,Peer 的描述。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr "可选,Peer 的主机。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr "可选,隧道接口的最大传输单元。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr "可选,Peer 的端口。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+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。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr "可选,用于传出和传入数据包的 UDP 端口。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "选项"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "其余:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "出口"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "出站:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr "网络出口"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "重设 MAC 地址"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "重设 MTU"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr "重设 TOS"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr "重设 TTL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr "重设默认接口名称"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "重设 DHCP 响应网关"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr "重设发送到客户端的子网掩码。"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "重设内部路由表"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "总览"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "用户名"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP 密码"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP 用户名"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr "PIN 码被拒绝"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr "R1 推送 PMK"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA 封包"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr "PPPoSSH"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr "PSID 偏移"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr "PSID-位长"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr "PTM/EFM(分组传输模式)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "需要 libiwinfo 软件包!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "数据包"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "区域 %q"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "密码"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "密码验证"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "私有密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr "内部私钥的密码"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr "密码强度"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr "密码 2"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr "粘贴或拖动 SSH 密钥文件……"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "CA 证书路径"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "客户端证书路径"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "私钥路径"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr "内部 CA 证书的路径"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr "内部客户端证书的路径"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr "内部私钥的路径"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "峰值:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr "要分配的 Peer IP 地址"
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr "Peer 地址缺失"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr "Peers"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr "完全正向保密"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "执行重启"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "执行重置"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr "持续 Keep-Alive"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "物理速率:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "物理设置"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "数据包"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "请输入用户名和密码。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "策略"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr "轮询间隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr "状态查询的轮询间隔,以秒为单位"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "端口"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "端口状态:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr "电源管理模式"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr "抢占式 CRC 错误(CRCP_P)"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr "首选 LTE"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr "首选 UMTS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr "分发前缀"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr "预共享密钥"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr "在指定数量的 LCP 响应故障后假定链路已断开,0 为忽略故障"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr "不监听这些接口。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "禁止客户端间通信"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr "私钥"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "执行"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "系统进程"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr "配置文件"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "协议"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "协议"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "新接口的协议"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "未安装协议支持"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "作为 NTP 服务器提供服务"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "添加新网络"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "伪装 Ad-Hoc(ahdemo)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr "公钥"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+"与使用普通密码相比,公钥允许无密码 SSH 登录具有更高的安全性。要将新密钥上传到"
+"设备,请粘贴 OpenSSH 兼容的公钥行或将 <code>.pub</code> 文件拖到输入字段中。"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr "分配到此设备的公共前缀,用以分发到客户端。"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr "QMI 蜂窝"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "质量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+"查询所有可用的上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr "R0 密钥生存期"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr "R1 密钥持有者"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr "RFC3947 NAT-T 模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr "RSSI 加入阈值"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS 阈值"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "接收"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "接收速率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radius 计费端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radius 计费密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radius 计费服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius 认证端口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius 认证密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius 认证服务器"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr "原始 16 进制编码的字节。除非您的 ISP 要求,否则请留空"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+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> 服务器"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+"确定要删除此接口?删除操作无法撤消!若您删除此接口,可能导致无法再访问此设备"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"确定要删除此无线网络?删除操作无法撤销!若您删除此无线网络,可能导致无法再访"
+"问此设备。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "确定要放弃所有更改?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "确定要切换协议?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "实时连接"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "实时信息"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "实时负载"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "实时流量"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "实时无线"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr "重关联截止时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "重绑定保护"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "重启"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "正在重启…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "重启您设备上的系统"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "接收"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "接收天线"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr "推荐,WireGuard 接口的 IP 地址。"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "重连此接口"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "引用"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "中继"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "中继桥"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "网络间中继"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "中继桥"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "远程 IPv4 地址"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr "远程 IPv4 地址或 FQDN"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "移除"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "重新扫描"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "重置条目"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "重置无线配置"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr "请求 IPv6 地址"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr "请求指定长度的 IPv6 前缀"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr "必须"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "某些 ISP 需要,例如:同轴线网络 DOCSIS 3"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr "必须,此接口的 Base64 编码私钥。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr "必须,Peer 的 Base64 编码公钥。"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 地址"
+"和通过隧道的路由网络。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+"需要完整版本的 wpad/hostapd,并且 WiFi 驱动支持<br />(截止 2019.01,已知支持"
+"此特性的驱动有 ath9k、ath10k、mwlwifi 和 mt76)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr "需要上级支持 DNSSEC,验证未签名的响应确实是来自未签名的域名"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "复位"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "复位计数器"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "恢复到出厂设置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "HOSTS 和解析文件"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "解析文件"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "重启"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "重启防火墙"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr "重启无线接口"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "恢复"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "恢复配置"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "显示/隐藏 密码"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "恢复"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr "恢复更改"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "恢复请求失败,状态 <code>%h</code>"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "正在恢复配置…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "Root"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "TFTP 服务器的根目录"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr "根目录准备"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr "路由允许的 IP"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr "路由类型"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr "路由通告服务"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "主机密码"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "路由表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr "路由表描述了数据包的可达路径。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr "规则"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "挂载设备前运行文件系统检查"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "文件系统检查"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr "SHA256"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr "SNR"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH 访问"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr "SSH 服务器地址"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr "SSH 服务器端口"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr "SSH 用户名"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH 密钥"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr "交换分区"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "保存"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "保存并应用"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr "保存 mtdblock"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr "保存 mtdblock 内容"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr "正在保存密钥…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "扫描"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr "扫描请求失败"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "计划任务"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "添加的节点"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "移除的节点"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "详参“mount”联机帮助"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+"即使映像文件检查失败,也“强制升级”以烧录映像。仅在您确定固件正确且适用于您的"
+"设备时使用!"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr "定时发送 LCP 响应(秒),仅在结合了故障阈值时有效"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "隔离客户端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "服务器设置"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "服务名"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "服务类型"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "服务"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr "会话已过期"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr "将 VPN 设置为默认路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"不管接口的链路状态如何,总是用应用设置(如果勾选,链路状态变更将不再触发 "
+"hotplug 事件处理)。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+msgid "Set up Time Synchronization"
+msgstr "设置时间同步"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr "设置 PLMN 失败"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr "设置操作模式失败"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "配置 DHCP 服务器"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr "严重误码秒(SES)"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr "Short GI"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr "Short Preamble"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "显示当前备份文件列表"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr "显示空链"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "关闭此接口"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "信号"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr "信号衰减(SATN)"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "信号:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "大小"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "DNS 查询缓存的大小"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr "ZRam 设备的大小(以兆字节为单位)"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "跳过"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "跳到内容"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "跳转到导航"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "时隙"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr "软件 VLAN"
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "一些项目的值无效,无法保存!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "对不起,请求的目标未找到。"
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "对不起,服务器遇到未知错误。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"抱歉,您的设备暂不支持 sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此"
+"设备的固件更新说明。"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "源地址"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "指定设备的挂载目录"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "指定此 <em>Dropbear</em> 实例的监听端口"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr "判定主机已下线的最少 ARP 请求失败数"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr "判断主机已下线的超时时间(秒)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr "指定 TOS(服务类型)。"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr "为封装数据包设置 TTL(生存时间),缺省值:64"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr "设置 MTU(最大传输单位),缺省值:1280 bytes"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "在此指定密钥。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "开始"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "启动优先级"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "开始应用配置…"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "正在启动无线扫描…"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "启动项"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "静态 IPv4 路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "静态 IPv6 路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "静态地址分配"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "静态路由"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "静态地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"静态租约用于给 DHCP 客户端分配固定的 IP 地址和主机标识。只有指定的主机才能连"
+"接,并且接口须为非动态配置。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr "非活动站点限制"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "状态"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "关闭"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "严谨查序"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr "强"
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "提交"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr "不记录日志"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr "不记录这些协议的常规操作日志。"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr "Swap"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Swap 节点"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "交换机"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "交换机 %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "交换机 %q(%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr "交换机端口掩码"
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr "交换机 VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "切换协议"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr "切换到 CIDR 列表记法"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr "交换口活动(%s)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr "与 NTP 服务器同步"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "同步浏览器时间"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "正在同步…"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "系统"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "系统日志"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "系统属性"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "系统日志缓冲区大小"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP 设置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP 服务器根目录"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "发送"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "发送速率"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "对象"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr "目标网络"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr "关闭"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"“设备配置”区域可配置无线的硬件参数,比如:信道、发射功率或发射天线,如果此无"
+"线硬件支持多 SSID,则全部 SSID 共用此设备配置。“接口配置”区域则可配置接口各自"
+"参数,如工作模式、加密方式等。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr "软件包 <em>libiwinfo-lua</em> 未安装,必须安装此组件以配置无线!"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr "HE.net 客户端更新设置已经被改变,您现在必须使用用户名代替用户 ID!"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr "远程隧道端的 IPv4 地址或完整域名。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr "运营商特定的 IPv6 前缀,通常以 <code>::</code> 为结尾"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr "备份存档似乎不是有效的 gzip 文件。"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr "由于以下错误,配置文件无法被加载:"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+"在应用挂起的更改后 %d 秒内无法连接到此设备,出于安全原因导致配置回滚。如果您"
+"认为配置的更改是正确的,请执行强制应用。或者您可以在再次尝试应用之前解除此警"
+"告并编辑配置,或者恢复所有挂起的更改以保持当前正在工作的配置状态。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+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>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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=\"Third Extended "
+"Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 />点击下面的“继续”开始刷写,刷新"
+"过程中切勿断电!"
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "以下更改已恢复"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "以下规则当前在系统中处于活动状态。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr "已添加给定的 SSH 公钥。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr "给定的 SSH 公钥无效。请提供适当的公共 RSA 或 ECDSA 密钥。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "给定的网络名重复"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替换。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr "IPv4 前缀长度(位),其余的用在 IPv6 地址。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "IPv6 前缀长度(位)"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr "所创建隧道的本地 IPv4 地址(可选)。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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=\"Virtual Local Area Network\">VLAN</abbr>,"
+"并支持电脑间的直接通讯。<abbr title=\"Virtual Local Area Network\">VLAN</"
+"abbr> 也常用于分割不同网段。默认通常是一条上行端口连接 ISP,其余端口为本地子"
+"网。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "所选的协议需要分配设备"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr "提交的安全令牌无效或已过期!"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr "系统正在擦除配置分区,完成后会自动重启。"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"正在刷写系统…<br />切勿关闭电源! DO NOT POWER OFF THE DEVICE!<br />等待数分"
+"钟后即可尝试重新连接到路由。您可能需要更改计算机的 IP 地址以重新连接。"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr "系统密码已更改成功。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr "不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "主题"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "没有已分配的租约。"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "没有待应用的更改。"
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "没有挂起的更改可恢复!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "没有挂起的更改!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr "尚未分配设备,请在“物理设置”选项卡中选择网络设备"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+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。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "中继的 IPv4 地址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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=\"Domain Name System\">DNS</abbr> 服务器。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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/ 内更改过的文件以及"
+"部分其他配置会被自动保存。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者账户密码必须填写。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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”之前即可随系统启动运行。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr "隧道代理分配的本地终端地址,通常以 <code>...:2/64</code> 结尾"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"这是本地网络中唯一的 <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr> 服务器"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr "登录账户时填写的用户名"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr "这是隧道代理分配给您的路由前缀,供客户端使用"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "自定义系统 crontab 中的计划任务。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr "这通常是隧道代理所管理的最近的 PoP 的地址"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "系统中正在运行的进程概况和它们的状态信息。"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "活跃的网络连接概况。"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "尚无任何配置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "时间同步"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "尚未配置时间同步。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr "重新加密 GTK 的时间间隔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "时区"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr "去登录…"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"上传备份存档以恢复配置。要将固件恢复到初始状态,请单击“执行重置”(仅 "
+"squashfs 格式的固件有效)。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr "Tone"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "可用数"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "Traceroute"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "流量"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "传输"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "传送速率"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "传送"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "无线电功率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "传送天线"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "触发器"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "触发模式"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "隧道 ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "隧道接口"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr "隧道链接"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "传输功率"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "类型"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "仅 UMTS(WCDMA)"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB 设备"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr "USB 接口"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr "无法确认设备名称"
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr "无法确认外部 IP 地址"
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr "无法确认上游接口"
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "无法调度"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr "无法获取客户端 ID"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr "无法解析 AFTR 主机名"
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr "无法解析 Pear 主机名"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr "不可用秒数(UAS)"
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "未知"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr "未知错误(%s)"
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "不配置协议"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr "卸载分区"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr "未命名的密钥"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "未保存的配置"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr "不支持的 MAP 类型"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr "不支持的调制解调器"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "不支持的协议类型"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr "上移"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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 格式的固件映像文件以替换当前运行的固件。勾选“保留配置”以"
+"使更新后的系统仍然使用当前的系统配置(新的固件需要和当前固件兼容)。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "上传备份…"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "上传的文件"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "运行时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "使用 <code>/etc/ethers</code> 配置"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "使用 DHCP 网关"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "使用对端通告的 DNS 服务器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "参考 ISO/IEC 3166 alpha2 国家代码。"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "隧道接口的 MTU"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "隧道接口的 TTL"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr "作为外部 overlay 使用(/overlay)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr "作为根文件系统使用(/)"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "使用广播标签"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "使用内置的 IPv6 管理"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "使用自定义的 DNS 服务器"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "使用默认网关"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "使用网关跃点"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "使用路由表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"使用“添加”按钮来增加新的租约条目。“IPv4 地址”和“主机名”字段的值将被固定分配"
+"给“MAC 地址”字段标识的主机,“租期”是一个可选字段,可为每个主机单独设定 DHCP "
+"租期的时长,例如:12h、3d、infinite,分别表示 12 小时、3 天、永久。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "已用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "启用密码组"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+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 不需"
+"要。"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr "用户证书(PEM)"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr "用户密钥(PEM)"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "用户名"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr "VDSL"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "%q 上的 VLAN"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "%q(%s)上的 VLAN"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr "VPN 本地地址"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr "VPN 本地端口"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN 服务器"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr "VPN 服务器端口"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr "VPN 服务器证书的 SHA1 哈希值"
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr "VPNC(CISCO 3000 和其他 VPN)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr "Vendor"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "请求 DHCP 时发送的 Vendor Class 选项"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "验证"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr "虚拟动态接口"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP 开放式系统"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP 共享密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP 密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "WMM 模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA 密钥"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+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 模式)。"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "正在应用更改…"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "等待命令执行完成…"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "等待应用配置… %d 秒"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "等待设备…"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "警告"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "警告:一些未保存的配置将在重启后丢失!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr "弱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+"使用 PSK 时,可以自动生成 PMK,因此以下 R0/R1 密钥选项不生效。若要使用 R0 和 "
+"R1 密钥则禁用此选项。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr "Wi-Fi 活动(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr "Wi-Fi 客户端关联(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr "Wi-Fi 数据接收(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr "Wi-Fi 数据传输(%s)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr "Wi-Fi 开启(%s)"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr "频宽"
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr "WireGuard VPN"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "无线"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "无线适配器"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "无线网络"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "无线概况"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "无线安全"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "无线未开启"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "无线未关联"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "无线重启中…"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "无线网络已禁用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "无线网络已启用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "将收到的 DNS 请求写入系统日志"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "将系统日志写入文件"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr "是"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "必须开启浏览器的 JavaScript 支持,否则 LuCI 无法正常工作。"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr "ZRam 压缩算法"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr "ZRam 压缩流"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr "ZRam 设置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr "ZRam 大小"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "任意"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "自动"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "桥接的"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr "创建"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "创建:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "为指定接口创建桥接"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "禁用"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "已禁用"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "过期时间"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"用于存放已分配的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> 租约的文件"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "转发"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "全双工"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "半双工"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr "十六进制编码值"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "隐藏"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr "混合模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "如果对象是一个网络"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "输入"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr "密钥在 8 到 63 个字符之间"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr "密钥为 5 或 13 个字符"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "本地 <abbr title=\"Domain Name System\">DNS</abbr> 解析文件"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr "分钟"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr "混合 WPA/WPA2"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "否"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "未连接"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr "非空值"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr "不存在"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "关"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "开"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "开放式"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr "输出"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr "覆盖"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr "正十进制值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr "正整数值"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr "随机"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr "中继模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "已路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr "秒"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr "服务器模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr "有状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr "无状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr "无状态 + 有状态"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "已标记"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr "时间单位(TUs / 1.024ms)[1000-65535]"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr "唯一值"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "未知"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "无限制"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "未指定"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "不指定或新建:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "未标记"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr "有效 IP 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr "有效 IP 地址或前缀"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr "有效 IPv4 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr "有效 IPv4 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr "有效 IPv4 地址或网络"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr "有效 IPv4 address:port"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr "有效 IPv4 网络"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr "有效 IPv4 或 IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr "有效 IPv4 前缀值(0-32)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr "有效 IPv6 CIDR"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr "有效 IPv6 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr "有效 IPv6 地址或前缀"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr "有效 IPv6 主机 ID"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr "有效 IPv6 网络"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr "有效 IPv6 前缀值(0-128)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr "有效 MAC 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr "有效 UCI 识别"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr "有效 UCI 标识符,主机名或 IP 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr "有效 address:port"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr "有效日期(YYYY-MM-DD)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr "有效十进制值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr "有效十六进制 WEP 密钥"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr "有效十六进制 WPA 密钥"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr "有效 host:port"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr "有效主机名"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr "有效主机名或 IP 地址"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr "有效整数值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr "地址/网络掩码表示法中的有效网络"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr "有效电话号码(0-9、“*”、“#”、“!”或“.”)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr "有效端口或端口范围(port1-port2)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr "有效端口值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr "有效时间(HH:MM:SS)"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr "%d 和 %d 字符之间的值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr "%f 和 %f 之间的值"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr "值大于或等于 %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr "值小于或等于 %f"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr "值至少为 %d 个字符"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr "值至多为 %d 个字符"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "是"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« 后退"
+
+#~ msgid ""
+#~ "one of:\n"
+#~ " - %s"
+#~ msgstr ""
+#~ "其一:\n"
+#~ " - %s"
+
+#~ 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 ""
+#~ "您的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他"
+#~ "浏览器,如 Firefox、Opera、Safari。"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "When using a PSK, the PMK can be generated locally without inter AP "
+#~ "communications"
+#~ msgstr "当使用 PSK 时,PMK 可以在没有 AP 间通信的情况下在本地生成"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr "请在此处粘贴 SSH 公钥,每行一个,用于 SSH 公钥认证。"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "密码更改成功!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "未知错误,密码未更改!"
+
+#~ msgid "Design"
+#~ msgstr "主题"
+
+#~ msgid "Available packages"
+#~ msgstr "可用软件包"
+
+#~ msgid "Bind only to specific interfaces rather than wildcard address."
+#~ msgstr "仅绑定到特定接口,而不是全部地址。"
+
+#~ msgid ""
+#~ "Build/distribution specific feed definitions. This file will NOT be "
+#~ "preserved in any sysupgrade."
+#~ msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。"
+
+#~ msgid ""
+#~ "Custom feed definitions, e.g. private feeds. This file can be preserved "
+#~ "in a sysupgrade."
+#~ msgstr "自定义软件源地址,例如:私有的软件源。此文件在系统升级时将被保留。"
+
+#~ msgid "Custom feeds"
+#~ msgstr "自定义软件源"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "只显示有内容的软件包"
+
+#~ msgid "Distribution feeds"
+#~ msgstr "发行版软件源"
+
+#~ msgid "Download and install package"
+#~ msgstr "下载并安装软件包"
+
+#~ msgid "Filter"
+#~ msgstr "过滤器"
+
+#~ msgid "Find package"
+#~ msgstr "查找软件包"
+
+#~ msgid "Free space"
+#~ msgstr "空闲空间"
+
+#~ msgid "General options for opkg"
+#~ msgstr "OPKG 基础配置"
+
+#~ msgid "Install"
+#~ msgstr "安装"
+
+#~ msgid "Installed packages"
+#~ msgstr "已安装软件包"
+
+#~ msgid "No package lists available"
+#~ msgstr "无可用软件列表"
+
+#~ msgid "OK"
+#~ msgstr "确认"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG 配置"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "软件包列表已超过 24 小时未更新"
+
+#~ msgid "Package name"
+#~ msgstr "软件包名称"
+
+#~ msgid "Please update package lists first"
+#~ msgstr "请先更新软件包列表"
+
+#~ msgid "Size (.ipk)"
+#~ msgstr "大小(.ipk)"
+
+#~ msgid "Software"
+#~ msgstr "软件包"
+
+#~ msgid "Update lists"
+#~ msgstr "刷新列表"
+
+#~ msgid "Version"
+#~ msgstr "版本"
+
+#~ msgid "none"
+#~ msgstr "无"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "停用 DNS 设定"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4 和 IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "仅 IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "仅 IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "有效租期"
+
+#~ msgid "Multicast address"
+#~ msgstr "多播地址"
+
+#~ msgid "Protocol family"
+#~ msgstr "协议族"
+
+#~ msgid "No chains in this table"
+#~ msgstr "本表中没有链"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "配置文件将被保留。"
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "注意:配置文件将被删除。"
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "激活此网络"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b 无线控制器"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "正在关闭接口..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "接口已重新连接"
+
+#~ msgid "Interface shut down"
+#~ msgstr "接口已关闭"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b 无线控制器"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s 无线控制器"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "确定要关闭接口 \"%s\"?\\n如果您正在使用此接口连接路由器,关闭此网络可能导"
+#~ "致连接断开!"
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "重连接口中..."
+
+#~ msgid "Shutdown this network"
+#~ msgstr "关闭此网络"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "无线已重启"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "无线已关闭"
+
+#~ msgid "Device unreachableX"
+#~ msgstr "无法连接到设备!"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP 分配"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6 分配"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "确定要删除此接口?删除操作无法撤销!\\n删除此接口,可能导致无法再访问路由"
+#~ "器!"
+
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "确定要关闭此网络?\\n如果您正在使用此接口连接路由器,关闭此网络可能导致连"
+#~ "接断开!"
+
+#~ msgid "Sort"
+#~ msgstr "排序"
+
+#~ msgid "help"
+#~ msgstr "帮助"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4 WAN 状态"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6 WAN 状态"
diff --git a/package/luci/modules/luci-base/po/zh-tw/base.po b/package/luci/modules/luci-base/po/zh-tw/base.po
new file mode 100644 (file)
index 0000000..581cbdd
--- /dev/null
@@ -0,0 +1,6540 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2014-05-21 10:34+0200\n"
+"Last-Translator: omnistack <omnistack@gmail.com>\n"
+"Language-Team: none\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
+msgid "%.1f dB"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:109
+msgid "%d Bit"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/luci.js:307
+msgid "%d invalid field(s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:281
+msgid "%s is untagged in multiple VLANs!"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:160
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:133
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:128
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:168
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:169
+msgid "(%d minute window, %d second interval)"
+msgstr "(%d 分鐘資訊,每 %d 秒更新)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:35
+msgid "(%s available)"
+msgstr "(%s 可用)"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:38
+#: modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm:41
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:88
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:91
+msgid "(empty)"
+msgstr "(空白)"
+
+#: modules/luci-base/luasrc/view/cbi/network_netinfo.htm:23
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:58
+msgid "(no interfaces attached)"
+msgstr "(未連接界面)"
+
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:48
+msgid "-- Additional Field --"
+msgstr "-- 更多選項 --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:840
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:849
+#: modules/luci-base/luasrc/view/cbi/header.htm:5
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36
+msgid "-- Please choose --"
+msgstr "-- 請選擇 --"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:865
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025
+#: modules/luci-base/luasrc/view/cbi/header.htm:6
+msgid "-- custom --"
+msgstr "-- 自訂 --"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89
+msgid "-- match by device --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73
+msgid "-- match by label --"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59
+msgid "-- match by uuid --"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:24
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23
+msgid "-- please select --"
+msgstr "-- 請選擇 --"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
+msgid "0 = not using RSSI threshold, 1 = do not change driver default"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
+msgid "1 Minute Load:"
+msgstr "1分鐘負載"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:272
+msgid "15 Minute Load:"
+msgstr "15分鐘負載"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:924
+msgid "4-character hexadecimal ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:18
+msgid "464XLAT (CLAT)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:262
+msgid "5 Minute Load:"
+msgstr "5分鐘負載"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:960
+msgid "6-octet identifier as a hex string - no colons"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:891
+msgid "802.11r Fast Transition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1157
+msgid "802.11w Association SA Query maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1166
+msgid "802.11w Association SA Query retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1133
+msgid "802.11w Management Frame Protection"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1156
+msgid "802.11w maximum timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1165
+msgid "802.11w retry timeout"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:399
+msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:182
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 查詢通訊埠"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:173
+msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 伺服器通訊埠"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:122
+msgid ""
+"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
+"order of the resolvfile"
+msgstr "將會按照指定的順序查詢<abbr title=\"Domain Name System\">DNS</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:388
+msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:306
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:45
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-位置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:30
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:75
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-閘道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:506
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-遮罩"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+msgid ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
+"(CIDR)"
+msgstr ""
+"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-位置或網路(CIDR)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:72
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
+msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-閘道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:325
+msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:35
+msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
+msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:297
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:46
+msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
+msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-位置"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:312
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:191
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> leases"
+msgstr ""
+"<abbr title=\"maximal\">最大</abbr> <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> 分配數量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:201
+msgid ""
+"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> packet size"
+msgstr ""
+"<abbr title=\"maximal\">最大</abbr> <abbr title=\"Extension Mechanisms for "
+"Domain Name System\">EDNS0</abbr> 封包大小"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:211
+msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
+msgstr "<abbr title=\"maximal\">最大</abbr>同時查詢數量"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:10
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr "注意: 如果這個檔案在編輯之前是空的,您將需要重新啟動cron服務"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:39
+msgid "A new login is required since the authentication session expired."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:114
+msgid "A43C + J43 + A43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:115
+msgid "A43C + J43 + A43 + V43"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:127
+msgid "ADSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:103
+msgid "ANSI T1.413"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:33
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:47
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:23
+msgid "APN"
+msgstr "APN"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:56
+msgid "ARP retry threshold"
+msgstr "ARP重試門檻"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:122
+msgid "ATM (Asynchronous Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:144
+msgid "ATM Bridges"
+msgstr "ATM橋接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:178
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:21
+msgid "ATM Virtual Channel Identifier (VCI)"
+msgstr "ATM虛擬通道識別(VCI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:179
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:26
+msgid "ATM Virtual Path Identifier (VPI)"
+msgstr "ATM虛擬路徑識別(VPI)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:145
+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來撥"
+"號連接到網際網路。"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:184
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:16
+msgid "ATM device number"
+msgstr "ATM裝置號碼"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:119
+msgid "ATU-C System Vendor ID"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:19
+msgid "Access Concentrator"
+msgstr "接入集線器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+msgid "Access Point"
+msgstr "存取點 (AP)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
+msgid "Actions"
+msgstr "動作"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69
+msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
+msgstr "啟用 <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-路由"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97
+msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
+msgstr "啟用 <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-路由"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15
+msgid "Active Connections"
+msgstr "啟用連線"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:68
+msgid "Active DHCP Leases"
+msgstr "已分配的DHCP租用"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:89
+msgid "Active DHCPv6 Leases"
+msgstr "已分配的DHCPv6租用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:370
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:12
+msgid "Ad-Hoc"
+msgstr "Ad-Hoc"
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:25
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:189
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:197
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:39
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:47
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:54
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Add"
+msgstr "增加"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:60
+msgid "Add IPv4 address…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:129
+msgid "Add IPv6 address…"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:143
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:149
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:38
+msgid "Add key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:109
+msgid "Add local domain suffix to names served from hosts files"
+msgstr "添加本地網域微碼到HOSTS檔案"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:50
+msgid "Add new interface..."
+msgstr "增加新界面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:60
+msgid "Additional Hosts files"
+msgstr "額外的HOST檔案"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:116
+msgid "Additional servers file"
+msgstr "額外的伺服器設定檔"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:55
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:81
+msgid "Address"
+msgstr "位置"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:12
+msgid "Address to access local relay bridge"
+msgstr "存取本地中繼橋接位置"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:29
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:14
+msgid "Administration"
+msgstr "管理"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:25
+msgid "Advanced"
+msgstr "進階"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:22
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:189
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:463
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:176
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:143
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:364
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:50
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:34
+msgid "Advanced Settings"
+msgstr "進階設定"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:110
+msgid "Aggregate Transmit Power(ACTATP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:100
+msgid "Alert"
+msgstr "警示"
+
+#: modules/luci-base/luasrc/model/network.lua:1416
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:78
+msgid "Alias Interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:66
+msgid "Alias of \"%s\""
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:126
+msgid "All Servers"
+msgstr "查詢所有伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:69
+msgid ""
+"Allocate IP addresses sequentially, starting from the lowest available "
+"address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:68
+msgid "Allocate IP sequentially"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:30
+msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
+msgstr "允許 <abbr title=\"Secure Shell\">SSH</abbr> 密碼驗證"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:545
+msgid "Allow AP mode to disconnect STAs based on low ACK condition"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:589
+msgid "Allow all except listed"
+msgstr "僅允許列表外"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:236
+msgid "Allow legacy 802.11b rates"
+msgstr "允許舊型 802.11b 頻率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:461
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:588
+msgid "Allow listed only"
+msgstr "僅允許列表內"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:156
+msgid "Allow localhost"
+msgstr "允許本機"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:47
+msgid "Allow remote hosts to connect to local SSH forwarded ports"
+msgstr "允許遠端主機連接到本機SSH轉送通訊埠"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:38
+msgid "Allow root logins with password"
+msgstr "允許root登入"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:39
+msgid "Allow the <em>root</em> user to login with password"
+msgstr "允許 <em>root</em> 使用者登入"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:157
+msgid ""
+"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
+msgstr "允許127.0.0.0/8範圍內的上游回應,例如:RBL服務"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:135
+msgid "Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:549
+msgid "Always announce default router"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:50
+msgid "Always off (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:48
+msgid "Always on (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:259
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:102
+msgid "Annex"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:96
+msgid "Annex A + L + M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:104
+msgid "Annex A G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:105
+msgid "Annex A G.992.2"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:106
+msgid "Annex A G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:107
+msgid "Annex A G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:97
+msgid "Annex B (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:100
+msgid "Annex B G.992.1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:101
+msgid "Annex B G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:102
+msgid "Annex B G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:98
+msgid "Annex J (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:108
+msgid "Annex L G.992.3 POTS 1"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:99
+msgid "Annex M (all)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:109
+msgid "Annex M G.992.3"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:110
+msgid "Annex M G.992.5"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:550
+msgid "Announce as default router even if no public prefix is available."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:555
+msgid "Announced DNS domains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:554
+msgid "Announced DNS servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1093
+msgid "Anonymous Identity"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Anonymous Mount"
+msgstr "自動掛載檔案系統"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Anonymous Swap"
+msgstr "自動掛載swap分區"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:322
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:329
+msgid "Antenna 1"
+msgstr "天線 1"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:323
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:330
+msgid "Antenna 2"
+msgstr "天線 2"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:246
+msgid "Antenna Configuration"
+msgstr "天線設定"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:60
+msgid "Any zone"
+msgstr "任意區域"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:48
+msgid "Apply anyway"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:145
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
+msgid "Architecture"
+msgstr "架構"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:118
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:19
+msgid ""
+"Assign a part of given length of every public IPv6-prefix to this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:127
+msgid "Assign interfaces..."
+msgstr "分配界面..."
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:124
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:24
+msgid ""
+"Assign prefix parts using this hexadecimal subprefix ID for this interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:148
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:22
+msgid "Associated Stations"
+msgstr "已連接裝置"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:161
+msgid "Associations"
+msgstr "已連接裝置"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:39
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:37
+msgid "Auth Group"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1027
+msgid "Authentication"
+msgstr "認證"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:35
+msgid "Authentication Type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:30
+msgid "Authoritative"
+msgstr "授權"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:17
+msgid "Authorization Required"
+msgstr "請先登入"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:223
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:266
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:269
+msgid "Auto Refresh"
+msgstr "自動更新"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:53
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:7
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:17
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:63
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:36
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:42
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:36
+msgid "Automatic"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua:7
+msgid "Automatic Homenet (HNCP)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Automatically check filesystem for errors before mounting"
+msgstr "在掛載前先檢查檔案系統中是否含有錯誤"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automatically mount filesystems on hotplug"
+msgstr "在連接裝置後自動掛載檔案系統"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automatically mount swap on hotplug"
+msgstr "在連接裝置後自動掛載swap分區"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61
+msgid "Automount Filesystem"
+msgstr "自動掛載檔案系統"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57
+msgid "Automount Swap"
+msgstr "自動掛載swap分區"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102
+msgid "Available"
+msgstr "可用"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:290
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:300
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:326
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:255
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:265
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:275
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:333
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:343
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:362
+msgid "Average:"
+msgstr "平均:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:116
+msgid "B43 + B43C"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:117
+msgid "B43 + B43C + V43"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:18
+msgid "BR / DMR / AFTR"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:159
+msgid "BSSID"
+msgstr "BSSID"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:29
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:28
+msgid "Back"
+msgstr "返回"
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:48
+msgid "Back to Overview"
+msgstr "返回至總覽"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48
+msgid "Back to configuration"
+msgstr "返回至設定"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:48
+msgid "Back to overview"
+msgstr "返回至總覽"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:20
+msgid "Back to scan results"
+msgstr "返回至掃描結果"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:17
+msgid "Backup"
+msgstr "備份"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:38
+msgid "Backup / Flash Firmware"
+msgstr "備份/升級韌體"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12
+msgid "Backup file list"
+msgstr "備份檔列表"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:51
+msgid "Bad address specified!"
+msgstr "指定了錯誤的位置!"
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:158
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:288
+msgid "Band"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:261
+msgid "Beacon Interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46
+msgid ""
+"Below is the determined list of files to backup. It consists of changed "
+"configuration files marked by opkg, essential base files and the user "
+"defined backup patterns."
+msgstr ""
+"下面是待備份的檔案清單。包含了更改的設定檔案、必要的基本檔案和使用者自訂的備"
+"份檔案"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:253
+msgid ""
+"Bind dynamically to interfaces rather than wildcard address (recommended as "
+"linux default)"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind interface"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16
+msgid "Bind the tunnel to this interface (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+msgid "Bitrate"
+msgstr "傳輸速率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:129
+msgid "Bogus NX Domain Override"
+msgstr "忽略NX網域解析"
+
+#: modules/luci-base/luasrc/model/network.lua:1420
+msgid "Bridge"
+msgstr "橋接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "Bridge interfaces"
+msgstr "橋接介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:185
+msgid "Bridge unit number"
+msgstr "橋接單位號碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250
+msgid "Bring up on boot"
+msgstr "開機自動執行"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35
+msgid "Broadcom 802.11%s Wireless Controller"
+msgstr "Broadcom 802.11%s 無線控制器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:45
+msgid "Broadcom BCM%04x 802.11 Wireless Controller"
+msgstr "Broadcom BCM%04x 802.11 無線控制器"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:18
+msgid "Buffered"
+msgstr "已緩衝"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:75
+msgid "CA certificate; if empty it will be saved after the first connection."
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:13
+msgid "CPU usage (%)"
+msgstr "CPU 使用率 (%)"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:53
+msgid "Call failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:14
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:52
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:176
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:60
+msgid "Cancel"
+msgstr "取消"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:6
+msgid "Category"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:44
+msgid "Caution: Configuration files will be erased"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:48
+msgid "Caution: System upgrade will be forced"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:234
+msgid "Chain"
+msgstr "鏈"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:9
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:14
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:24
+msgid "Change login password"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:12
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+msgid "Changes"
+msgstr "待修改"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:42
+msgid "Changes applied."
+msgstr "修改已套用"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:156
+msgid "Changes have been reverted."
+msgstr "設定值已還原."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:30
+msgid "Changes the administrator password for accessing the device"
+msgstr "修改管理員密碼"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:10
+msgid "Changing password…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:162
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:174
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "Channel"
+msgstr "頻道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:119
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:229
+msgid "Check"
+msgstr "檢查"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:65
+msgid "Check filesystems before mount"
+msgstr "在掛載前先檢查檔案系統"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:47
+msgid "Check this option to delete the existing networks from this radio."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:27
+msgid "Checksum"
+msgstr "效驗碼"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:70
+msgid "Choose mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:358
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:87
+msgid ""
+"Choose the firewall zone you want to assign to this interface. Select "
+"<em>unspecified</em> to remove the interface from the associated zone or "
+"fill out the <em>create</em> field to define a new zone and attach the "
+"interface to it."
+msgstr ""
+"選擇您要指定給這介面的防火牆區. 撿選<em>unspecified</em>以便從指定區域除這個"
+"介面或者填寫<em>create</em>欄以便定義附加這個介面到一個新的區域上."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:403
+msgid ""
+"Choose the network(s) you want to attach to this wireless interface or fill "
+"out the <em>create</em> field to define a new network."
+msgstr ""
+"選擇您要附加到無線網路介面的多個網路或者填寫<em>create</em> 以便定義一個新的"
+"網路."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:614
+msgid "Cipher"
+msgstr "加密方式"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:61
+msgid "Cisco UDP encapsulation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:18
+msgid ""
+"Click \"Generate archive\" to download a tar archive of the current "
+"configuration files."
+msgstr "按下\"壓縮檔製作\"就能下載目前設定檔的tar格式的壓縮."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:65
+msgid ""
+"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
+"FEATURE IS FOR PROFESSIONALS! )"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:369
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+msgid "Client"
+msgstr "用戶端"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:55
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:52
+msgid "Client ID to send when requesting DHCP"
+msgstr "當要求DHCP時要傳送的用戶識別碼ID"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:145
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:151
+msgid "Close"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:146
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:127
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:98
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:119
+msgid ""
+"Close inactive connection after the given amount of seconds, use 0 to "
+"persist connection"
+msgstr "幾秒後關閉閒置的連線, 打0代表永遠連線"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49
+msgid "Close list..."
+msgstr "關閉清單"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:77
+#: modules/luci-base/luasrc/view/lease_status.htm:98
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:118
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:24
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm:6
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:40
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:367
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:11
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:68
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:49
+msgid "Collecting data..."
+msgstr "收集資料中..."
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:12
+msgid "Command"
+msgstr "指令"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64
+msgid "Comment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:185
+msgid "Common Configuration"
+msgstr "一般設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1176
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:11
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:16
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:13
+msgid "Configuration"
+msgstr "設定"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:63
+msgid "Configuration failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:42
+msgid "Configuration files will be kept"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:85
+msgid "Configuration has been applied."
+msgstr "設定值已套用"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:43
+msgid "Configuration has been rolled back!"
+msgstr "設定值已復原"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:43
+msgid "Confirmation"
+msgstr "再確認"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Connect"
+msgstr "連線"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:64
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:88
+msgid "Connected"
+msgstr "已連線"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:338
+msgid "Connection Limit"
+msgstr "連線限制"
+
+#: modules/luci-base/luasrc/model/network.lua:27
+msgid "Connection attempt failed"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:32
+msgid "Connections"
+msgstr "連線數"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:65
+msgid ""
+"Could not regain access to the device after applying the configuration "
+"changes. You might need to reconnect if you modified network related "
+"settings such as the IP address or wireless security credentials."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:50
+msgid "Country"
+msgstr "國別"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:337
+msgid "Country Code"
+msgstr "國別碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:36
+msgid "Cover the following interface"
+msgstr "覆蓋下列介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:43
+msgid "Cover the following interfaces"
+msgstr "覆蓋下列這些介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:357
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:86
+msgid "Create / Assign firewall-zone"
+msgstr "建立/指定防火牆作用區"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:9
+msgid "Create Interface"
+msgstr "建立介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:33
+msgid "Create a bridge over multiple interfaces"
+msgstr "在多個介面上建立橋接"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:99
+msgid "Critical"
+msgstr "緊急"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:103
+msgid "Cron Log Level"
+msgstr "Cron日誌等級"
+
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:51
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:82
+#: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:83
+msgid "Custom Interface"
+msgstr "自訂介面"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:40
+msgid "Custom delegated IPv6-prefix"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:53
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr "已修改的檔案(如憑證和腳本)可能會殘留在系統中.如果要避免這項問題,您可以先行重設裝置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:52
+msgid "Custom flash intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:4
+msgid ""
+"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
+"\">LED</abbr>s if possible."
+msgstr ""
+"如果可以的話,自訂這個設備的 <abbr title=\"Light Emitting Diode\">LED</"
+"abbr>s ."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:799
+msgid "DAE-Client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "DAE-Port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:815
+msgid "DAE-Secret"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:448
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:459
+msgid "DHCP Server"
+msgstr "DHCP伺服器"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:107
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:9
+msgid "DHCP and DNS"
+msgstr "DHCP 和 DNS"
+
+#: modules/luci-base/luasrc/model/network.lua:968
+msgid "DHCP client"
+msgstr "DHCP用戶端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:513
+msgid "DHCP-Options"
+msgstr "DHCP選項"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua:7
+msgid "DHCPv6 client"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:540
+msgid "DHCPv6-Mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:529
+msgid "DHCPv6-Service"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:58
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:59
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:60
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:61
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:62
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:83
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:84
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:85
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:86
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:87
+msgid "DNS"
+msgstr "網域名稱伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:140
+msgid "DNS forwardings"
+msgstr "DNS封包轉發"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:30
+msgid "DNS-Label / FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:90
+msgid "DNSSEC"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:94
+msgid "DNSSEC check unsigned"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:73
+msgid "DPD Idle Timeout"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:14
+msgid "DS-Lite AFTR address"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:92
+#: modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm:14
+msgid "DSL"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:97
+msgid "DSL Status"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:125
+msgid "DSL line mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "DTIM Interval"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:94
+msgid "DUID"
+msgstr "DHCP獨立式別碼DUID "
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:104
+msgid "Data Rate"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:94
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:105
+msgid "Debug"
+msgstr "除錯"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:807
+msgid "Default %d"
+msgstr "預設 %d"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:82
+msgid "Default Route"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:81
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:32
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:67
+msgid "Default gateway"
+msgstr "預設閘道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:541
+msgid "Default is stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:40
+msgid "Default state"
+msgstr "預設狀態"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:503
+msgid "Define a name for this network."
+msgstr "自訂這個網路名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:514
+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伺服器到客戶端."
+
+#: modules/luci-base/luasrc/view/cbi/nsection.htm:11
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:162
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:16
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:41
+msgid "Delete"
+msgstr "刪除"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:172
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:178
+msgid "Delete key"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Delete this network"
+msgstr "刪除這個網路"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:519
+msgid "Delivery Traffic Indication Message Interval"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:102
+msgid "Description"
+msgstr "描述"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:62
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:361
+msgid "Destination"
+msgstr "目的地"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:43
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:13
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:52
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:77
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:154
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:253
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:86
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:40
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:88
+msgid "Device"
+msgstr "設備"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:138
+msgid "Device Configuration"
+msgstr "設定設備"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:23
+msgid "Device is rebooting..."
+msgstr "設備重新啟動中..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:64
+msgid "Device unreachable!"
+msgstr "無法連線到設備!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:49
+msgid "Device unreachable! Still waiting for device..."
+msgstr "無法連線到設備! 正在持續等待設備回應..."
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:123
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:61
+msgid "Diagnostics"
+msgstr "診斷"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45
+msgid "Dial number"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99
+msgid "Directory"
+msgstr "目錄"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:131
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable"
+msgstr "關閉"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:472
+msgid ""
+"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
+"this interface."
+msgstr ""
+" 對這介面關閉 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:64
+msgid "Disable Encryption"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:530
+msgid "Disable Inactivity Polling"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:39
+msgid "Disable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:43
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:54
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:64
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:43
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:37
+msgid "Disabled"
+msgstr "關閉"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1139
+msgid "Disabled (default)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:544
+msgid "Disassociate On Low Acknowledgement"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:150
+msgid "Discard upstream RFC1918 responses"
+msgstr "丟棄上游RFC1918 虛擬IP網路的回應"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:114
+msgid "Disconnect"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:64
+msgid "Disconnection attempt failed"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:46
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:17
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:28
+msgid "Dismiss"
+msgstr "忽略"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:240
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:334
+msgid "Distance Optimization"
+msgstr "最佳化距離"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:241
+msgid "Distance to farthest network member in meters."
+msgstr "到最遠的網路距離以米表示."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:347
+msgid "Diversity"
+msgstr "差異"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:10
+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 是組合<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-伺服器 和 <abbr title=\"Domain Name System\">DNS</abbr>-轉發給 <abbr "
+"title=\"Network Address Translation\">NAT</abbr> 防火牆用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:113
+msgid "Do not cache negative replies, e.g. for not existing domains"
+msgstr "不快取拒絕的回應,例如.不存在的網域"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:79
+msgid "Do not forward requests that cannot be answered by public name servers"
+msgstr "對不被公用名稱伺服器回應的請求不轉發"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:74
+msgid "Do not forward reverse lookups for local networks"
+msgstr "對本地網域不轉發反解析鎖定"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
+msgid "Do you really want to delete the following SSH key?"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:25
+msgid "Domain required"
+msgstr "網域必要的"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:163
+msgid "Domain whitelist"
+msgstr "網域白名單"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Don't Fragment"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:26
+msgid ""
+"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
+"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
+msgstr ""
+"若沒 <abbr title=\"Domain Name System\">DNS</abbr>-名稱的話,不要轉發 <abbr "
+"title=\"Domain Name System\">DNS</abbr>-請求"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Down"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:23
+msgid "Download backup"
+msgstr "下載備份檔"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:87
+msgid "Download mtdblock"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:130
+msgid "Downstream SNR offset"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
+msgid "Dropbear Instance"
+msgstr "Dropbear SSH例子"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:6
+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=\"Secure Shell\">SSH</abbr> 網路shell命令存取和一個"
+"整合的 <abbr title=\"Secure Copy\">SCP</abbr> 伺服器"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:14
+msgid "Dual-Stack Lite (RFC6333)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:493
+msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "動態 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:40
+msgid "Dynamic tunnel"
+msgstr "動態隧道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:494
+msgid ""
+"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
+"having static leases will be served."
+msgstr "幫用戶端動態發配DHCP位址. 假如關閉的話,僅有有靜態位址的用戶端能被服務"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:53
+msgid "EA-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:990
+msgid "EAP-Method"
+msgstr "EAP協定驗證方式"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:154
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:160
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit"
+msgstr "編輯"
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:13
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:38
+msgid "Edit this interface"
+msgstr "修改這個介面"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:42
+msgid "Edit this network"
+msgstr "修改這個網路"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:101
+msgid "Emergency"
+msgstr "緊急"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:127
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable"
+msgstr "啟用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:276
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:271
+msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+msgstr "啟用 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:41
+msgid "Enable HE.net dynamic endpoint update"
+msgstr "啟用HE.net服務代管動態更新"
+
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:43
+msgid "Enable IPv6 negotiation"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:23
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:35
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:41
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:35
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:37
+msgid "Enable IPv6 negotiation on the PPP link"
+msgstr "啟用PPP連結上的IPv6交涉"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:143
+msgid "Enable Jumbo Frame passthrough"
+msgstr "啟用超大訊框透穿"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:238
+msgid "Enable NTP client"
+msgstr "啟用NTP同步功能"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:69
+msgid "Enable Single DES"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:226
+msgid "Enable TFTP server"
+msgstr "啟用TFTP伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:134
+msgid "Enable VLAN functionality"
+msgstr "啟用VLAN功能"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1194
+msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "啟用 WPS 按鈕, 這需要 WPA(2)-PSK"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1175
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "啟用金鑰重新安裝攻擊 (KRACK) 因應對策"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:138
+msgid "Enable learning and aging"
+msgstr "啟用智慧學習功能"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:150
+msgid "Enable mirroring of incoming packets"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:151
+msgid "Enable mirroring of outgoing packets"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34
+msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53
+msgid "Enable this mount"
+msgstr "啟用掛載點"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:36
+msgid "Enable this network"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37
+msgid "Enable this swap"
+msgstr "啟用swap功能"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36
+msgid "Enable/Disable"
+msgstr "啟用/關閉"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:152
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:251
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:40
+msgid "Enabled"
+msgstr "啟用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:892
+msgid ""
+"Enables fast roaming among access points that belong to the same Mobility "
+"Domain"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
+msgid "Enables the Spanning Tree Protocol on this bridge"
+msgstr "在橋接器上啟用802.1d Spanning Tree協定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180
+msgid "Encapsulation mode"
+msgstr "封裝模式"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:603
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:33
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:160
+msgid "Encryption"
+msgstr "加密"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:155
+msgid "Endpoint Host"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:165
+msgid "Endpoint Port"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:47
+msgid "Enter custom value"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/dropdown.htm:46
+msgid "Enter custom values"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:273
+msgid "Erasing..."
+msgstr "刪除中..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:106
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:107
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:108
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:109
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:110
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:98
+msgid "Error"
+msgstr "錯誤"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:112
+msgid "Errored seconds (ES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1432
+msgid "Ethernet Adapter"
+msgstr "乙太網路卡"
+
+#: modules/luci-base/luasrc/model/network.lua:1422
+msgid "Ethernet Switch"
+msgstr "乙太交換器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:263
+msgid "Exclude interfaces"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:108
+msgid "Expand hosts"
+msgstr "延伸主機"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:278
+msgid "Expecting %s"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:63
+msgid "Expires"
+msgstr "過期"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:488
+#, fuzzy
+msgid ""
+"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
+msgstr "釋放位址的過期週期,最少兩分鐘 (<code>2m</code>)."
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:8
+msgid "External"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:971
+msgid "External R0 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:980
+msgid "External R1 Key Holder List"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:75
+msgid "External system log server"
+msgstr "外部系統日誌伺服器"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:80
+msgid "External system log server port"
+msgstr "外部系統日誌伺服器埠號"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:85
+msgid "External system log server protocol"
+msgstr "外部系統日誌伺服器通訊協定"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:18
+msgid "Extra SSH command options"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:940
+msgid "FT over DS"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:941
+msgid "FT over the Air"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:938
+msgid "FT protocol"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:38
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/filebrowser.htm:106
+msgid "File"
+msgstr "檔案"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:239
+msgid "Filename of the boot image advertised to clients"
+msgstr "開機影像檔通知給用戶端"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:98
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:199
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:126
+msgid "Filesystem"
+msgstr "檔案系統"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:73
+msgid "Filter private"
+msgstr "私人過濾器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:78
+msgid "Filter useless"
+msgstr "無用過濾器"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:65
+msgid "Finalizing failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid ""
+"Find all currently attached filesystems and swap and replace configuration "
+"with defaults based on what was detected"
+msgstr "尋找所有目前已連接裝置中的檔案系統及swap分區,並覆蓋目前的設定"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Find and join network"
+msgstr "搜尋並加入網路"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:9
+msgid "Finish"
+msgstr "完成"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:10
+msgid "Firewall"
+msgstr "防火牆"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:77
+msgid "Firewall Mark"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:193
+msgid "Firewall Settings"
+msgstr "防火牆設定"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:44
+msgid "Firewall Status"
+msgstr "防火牆狀況"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:137
+msgid "Firmware File"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:20
+msgid "Firmware Version"
+msgstr "防火牆版本"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:183
+msgid "Fixed source port for outbound DNS queries"
+msgstr "外發DNS請求的固定埠號"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Flash Firmware"
+msgstr "韌體更新"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:127
+msgid "Flash image..."
+msgstr "更新映像檔中..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:99
+msgid "Flash new firmware image"
+msgstr "更新新版韌體映像檔"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:9
+msgid "Flash operations"
+msgstr "執行更新"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:194
+msgid "Flashing..."
+msgstr "更新中..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:58
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:60
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:62
+msgid "Flashmemory write access (%s)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:498
+msgid "Force"
+msgstr "強制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:258
+msgid "Force 40MHz mode"
+msgstr "強制使用 40MHz 模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:622
+msgid "Force CCMP (AES)"
+msgstr "強制使用CCMP (AES)加密"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:499
+msgid "Force DHCP on this network even if another server is detected."
+msgstr "在網路上即使偵測到其它伺服器也強制採用DHCP的設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:623
+msgid "Force TKIP"
+msgstr "強制使用TKIP加密"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:624
+msgid "Force TKIP and CCMP (AES)"
+msgstr "強制使用TKIP+CCMP (AES)加密"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:257
+msgid "Force link"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:113
+msgid "Force upgrade"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:60
+msgid "Force use of NAT-T"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:8
+msgid "Form token mismatch"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:34
+msgid "Forward DHCP traffic"
+msgstr "轉發DHCP流量"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:111
+msgid "Forward Error Correction Seconds (FECS)"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:28
+msgid "Forward broadcast traffic"
+msgstr "轉發廣播流量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:375
+msgid "Forward mesh peer traffic"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:186
+msgid "Forwarding mode"
+msgstr "轉發模式"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:255
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:596
+msgid "Fragmentation Threshold"
+msgstr "分片閥值"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:332
+msgid "Frame Bursting"
+msgstr "訊框爆速"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:17
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:28
+msgid "Free"
+msgstr "空閒"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:91
+msgid ""
+"Further information about WireGuard interfaces and peers at <a href=\"http://"
+"wireguard.com\">wireguard.com</a>."
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:45
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:169
+msgid "GHz"
+msgstr "GHz"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:29
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:36
+msgid "GPRS only"
+msgstr "僅用GPRS"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:57
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:82
+msgid "Gateway"
+msgstr "閘道"
+
+#: modules/luci-base/luasrc/model/network.lua:29
+msgid "Gateway address is invalid"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:46
+msgid "Gateway ports"
+msgstr "閘道埠號"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:49
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:33
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:22
+msgid "General Settings"
+msgstr "一般設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:188
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:462
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:175
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:141
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:361
+msgid "General Setup"
+msgstr "一般設置"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:41
+msgid "Generate Config"
+msgstr "生成設定檔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:945
+msgid "Generate PMK locally"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:25
+msgid "Generate archive"
+msgstr "製作壓縮檔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:63
+msgid "Generic 802.11%s Wireless Controller"
+msgstr "通用 802.11%s 無線控制器"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:26
+msgid "Given password confirmation did not match, password not changed!"
+msgstr "鍵入的密碼不吻合,密碼將不變更"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:37
+msgid "Global Settings"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:194
+msgid "Global network options"
+msgstr "全域網路設定"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:198
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:235
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:262
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:309
+msgid "Go to password configuration..."
+msgstr "前往密碼設定頁"
+
+#: modules/luci-base/luasrc/view/cbi/full_valueheader.htm:4
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:58
+msgid "Go to relevant configuration page"
+msgstr "到相應設定頁"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:38
+msgid "Group Password"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:11
+msgid "Guest"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:73
+msgid "HE.net password"
+msgstr " HE.net密碼"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:60
+msgid "HE.net username"
+msgstr "HE.net使用者名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:310
+msgid "HT mode (802.11n)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:16
+msgid "Hang Up"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:116
+msgid "Header Error Code Errors (HEC)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:56
+msgid "Heartbeat intervall (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+msgid ""
+"Here you can configure the basic aspects of your device like its hostname or "
+"the timezone."
+msgstr "在這裡設置基本設定值,如主機名稱或者時區...等"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:499
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:556
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:579
+msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+msgstr "隱藏 <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:61
+msgid "Hide empty chains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:92
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:110
+msgid "Host"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:10
+msgid "Host entries"
+msgstr "主機項目"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:48
+msgid "Host expiry timeout"
+msgstr "過期主機"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
+msgstr "主機-<abbr title=\"Internet Protocol Address\">IP</abbr> 或網路"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:118
+msgid "Host-Uniq tag content"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:71
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:283
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:17
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:36
+msgid "Hostname"
+msgstr "主機名稱"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:12
+msgid "Hostname to send when requesting DHCP"
+msgstr "當請求DHCP服務時傳送的主機名稱"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:112
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:8
+msgid "Hostnames"
+msgstr "主機名稱"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:13
+msgid "Hybrid"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:45
+msgid "IKE DH Group"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:41
+msgid "IP Addresses"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:40
+msgid "IP Protocol"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua:19
+msgid "IP address"
+msgstr "IP位址"
+
+#: modules/luci-base/luasrc/model/network.lua:28
+msgid "IP address in invalid"
+msgstr "IP位址不正確"
+
+#: modules/luci-base/luasrc/model/network.lua:31
+msgid "IP address is missing"
+msgstr "缺少IP位址"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:18
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:19
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:20
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:22
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:89
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:90
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:91
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:92
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:93
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:73
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:88
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:42
+msgid "IPv4"
+msgstr "IPv4版"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:49
+msgid "IPv4 Firewall"
+msgstr "IPv4防火牆"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:48
+msgid "IPv4 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:57
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:84
+msgid "IPv4 address"
+msgstr "IPv4位址"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:26
+msgid "IPv4 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:104
+msgid "IPv4 broadcast"
+msgstr "IPv4廣播"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:100
+msgid "IPv4 gateway"
+msgstr "IPv4閘道"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:92
+msgid "IPv4 netmask"
+msgstr "IPv4網路遮罩"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:355
+msgid "IPv4 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:25
+msgid "IPv4 prefix"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:42
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:30
+msgid "IPv4 prefix length"
+msgstr "IPv4前綴長度"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:43
+msgid "IPv4+IPv6"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:72
+msgid "IPv4-Address"
+msgstr "IPv4-位址"
+
+#: protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua:9
+msgid "IPv4-in-IPv4 (RFC2003)"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:23
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:25
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:26
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:27
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:28
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:29
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:30
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:31
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:32
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:94
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:95
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:96
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:97
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:98
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:99
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:100
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:101
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:102
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:103
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:74
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:89
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:44
+msgid "IPv6"
+msgstr "IPv6版"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:52
+msgid "IPv6 Firewall"
+msgstr "IPv6防火牆"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:128
+msgid "IPv6 Neighbours"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:464
+msgid "IPv6 Settings"
+msgstr "IPv6 設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:195
+msgid "IPv6 ULA-Prefix"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:73
+msgid "IPv6 Upstream"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:127
+msgid "IPv6 address"
+msgstr "IPv6位址"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:123
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:23
+msgid "IPv6 assignment hint"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:117
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:18
+msgid "IPv6 assignment length"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:133
+msgid "IPv6 gateway"
+msgstr "IPv6閘道"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:360
+msgid "IPv6 network in address/netmask notation"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:37
+msgid "IPv6 prefix"
+msgstr "IPv6字首"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:34
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:45
+msgid "IPv6 prefix length"
+msgstr "IPv6字首長度"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:138
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:33
+msgid "IPv6 routed prefix"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:143
+msgid "IPv6 suffix"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:93
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:132
+msgid "IPv6-Address"
+msgstr "IPv6-位址"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:33
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:104
+msgid "IPv6-PD"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:13
+msgid "IPv6-in-IPv4 (RFC4213)"
+msgstr "IPv6包覆在IPv4內(RFC4213)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:17
+msgid "IPv6-over-IPv4 (6rd)"
+msgstr "IPv6凌駕IPv4外(第6版)"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua:15
+msgid "IPv6-over-IPv4 (6to4)"
+msgstr "IPv6凌駕IPv4外(6轉4)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1075
+msgid "Identity"
+msgstr "特性"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70
+msgid "If checked, 1DES is enabled"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65
+msgid "If checked, encryption is disabled"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:57
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:48
+msgid ""
+"If specified, mount the device by its UUID instead of a fixed device node"
+msgstr "假若指定的話, 掛載設備的UUID獨立設備識別碼取代固定的設備節點"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:71
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:51
+msgid ""
+"If specified, mount the device by the partition label instead of a fixed "
+"device node"
+msgstr "假若指定的話, 掛載設備的分割標籤取代固定的設備節點"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:27
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:71
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:82
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:52
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:17
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:29
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:68
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:81
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:32
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:45
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:24
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:44
+msgid "If unchecked, no default route is configured"
+msgstr "如果沒打勾點選, 將不會設置預設路由"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:34
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:86
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:35
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:47
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:60
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:39
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:59
+msgid "If unchecked, the advertised DNS server addresses are ignored"
+msgstr "如果沒打勾點選, 公告的DNS伺服器位址將被忽視"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid ""
+"If your physical memory is insufficient unused data can be temporarily "
+"swapped to a swap-device resulting in a higher amount of usable <abbr title="
+"\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very "
+"slow process as the swap-device cannot be accessed with the high datarates "
+"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
+msgstr ""
+"如果您的物理內存不足時,未使用的數據可以是暫時交換到導致更高的交換設備量的可用"
+"<abbr title=\"Random Access Memory\">RAM</abbr>內.請注意,交換數據是一個非常"
+"緩慢的過程,作為交換裝置不能用高數據速率訪問該<abbr title=\"Random Access "
+"Memory\">RAM</縮寫>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:57
+msgid "Ignore <code>/etc/hosts</code>"
+msgstr "不使用 <code>/etc/hosts</code>"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:471
+msgid "Ignore interface"
+msgstr "被忽視的介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:46
+msgid "Ignore resolve file"
+msgstr "不使用解析檔"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:124
+msgid "Image"
+msgstr "映像檔"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:59
+msgid "In"
+msgstr "輸入"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:13
+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 ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:145
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:124
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:126
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:97
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:118
+msgid "Inactivity timeout"
+msgstr "閒置過期"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:287
+msgid "Inbound:"
+msgstr "輸入"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:95
+msgid "Info"
+msgstr "訊息"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Information"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:67
+msgid "Initialization failure"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:33
+msgid "Initscript"
+msgstr "初始化腳本"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+msgid "Initscripts"
+msgstr "初始化腳本"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:98
+msgid "Install iputils-traceroute6 for IPv6 traceroute"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:223
+msgid "Install package %q"
+msgstr "安裝軟體包 %q"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:120
+msgid "Install protocol extensions..."
+msgstr "安裝延伸協定中..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:284
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:342
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:65
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:47
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:134
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:14
+msgid "Interface"
+msgstr "介面"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:35
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:356
+msgid "Interface Configuration"
+msgstr "介面設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:51
+msgid "Interface Overview"
+msgstr "介面預覽"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:3
+msgid "Interface is reconnecting..."
+msgstr "介面重連"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Interface name"
+msgstr "界面名稱"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:131
+msgid "Interface not present or not connected yet."
+msgstr "介面尚未出現或者還沒連上"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:88
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:11
+msgid "Interfaces"
+msgstr "介面"
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:9
+msgid "Internal"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error500.htm:8
+msgid "Internal Server Error"
+msgstr "內部伺服器發生錯誤"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:192
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:42
+msgid "Invalid"
+msgstr "無效"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:311
+msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
+msgstr "輸入的VLAN ID無效僅有介於 %d 和 %d的被允許"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:307
+msgid "Invalid VLAN ID given! Only unique IDs are allowed"
+msgstr "輸入的是不正確的VLAN ID!僅允許獨一無二的IDs"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:12
+msgid "Invalid username and/or password! Please try again."
+msgstr "不正確的用戶名稱和/或者密碼!請再試一次."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:508
+msgid "Isolate Clients"
+msgstr "隔離用戶端"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:18
+#, 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記憶體的映像檔,請檢查確認這個映像檔"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:205
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:242
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:252
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:316
+msgid "JavaScript required!"
+msgstr "需要Java腳本"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52
+msgid "Join Network"
+msgstr "加入網路"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22
+msgid "Join Network: Wireless Scan"
+msgstr "加入網路:無線網路掃描"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19
+msgid "Joining Network: %q"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:106
+msgid "Keep settings"
+msgstr "保留設定值"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:16
+#: modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm:8
+msgid "Kernel Log"
+msgstr "核心日誌"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:24
+msgid "Kernel Version"
+msgstr "核心版本"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:823
+msgid "Key"
+msgstr "密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:851
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:852
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:853
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:854
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:870
+msgid "Key #%d"
+msgstr "鑰匙  #%d"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "KiB"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:28
+msgid "Kill"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:21
+msgid "L2TP"
+msgstr "L2TP"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:10
+msgid "L2TP Server"
+msgstr "L2TP伺服器"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:100
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:80
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:74
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:53
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:73
+msgid "LCP echo failure threshold"
+msgstr "LCP協定呼叫失敗次數門檻"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:118
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:95
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:89
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:68
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:91
+msgid "LCP echo interval"
+msgstr "LCP協定呼叫間隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:181
+msgid "LLC"
+msgstr "LLC邏輯鏈結控制層"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:70
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:50
+msgid "Label"
+msgstr "標籤"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:137
+msgid "Language"
+msgstr "語言"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:24
+msgid "Language and Style"
+msgstr "語言與主題"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:106
+msgid "Latency"
+msgstr ""
+
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:10
+msgid "Leaf"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:309
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:487
+msgid "Lease time"
+msgstr "租賃時間長度"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:41
+msgid "Leasefile"
+msgstr "租賃檔案"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:74
+#: modules/luci-base/luasrc/view/lease_status.htm:95
+msgid "Leasetime remaining"
+msgstr "租賃保留時間"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:20
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:27
+msgid "Leave empty to autodetect"
+msgstr "保持空白以便自動偵測"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:21
+msgid "Leave empty to use the current WAN address"
+msgstr "保持空白以便採用現今的寬頻位址"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:8
+msgid "Legend:"
+msgstr "圖例:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:481
+msgid "Limit"
+msgstr "限制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247
+msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259
+msgid "Limit listening to these interfaces, and loopback."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:107
+msgid "Line Attenuation (LATN)"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:100
+msgid "Line Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:99
+msgid "Line State"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:101
+msgid "Line Uptime"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:118
+msgid "Link On"
+msgstr "鏈接"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:141
+msgid ""
+"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
+"requests to"
+msgstr "列出 <abbr title=\"Domain Name System\">DNS</abbr> 伺服器以便轉發請求"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:972
+msgid ""
+"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
+"Identifier,128-bit key as hex string. <br />This list is used to map R0KH-ID "
+"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key "
+"from the R0KH that the STA used during the Initial Mobility Domain "
+"Association."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:981
+msgid ""
+"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
+"as 6 octets with colons,128-bit key as hex string. <br />This list is used "
+"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the "
+"R0KH. This is also the list of authorized R1KHs in the MD that can request "
+"PMK-R1 keys."
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:21
+msgid "List of SSH key files for auth"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:164
+msgid "List of domains to allow RFC1918 responses for"
+msgstr "列出允許RFC1918文件虛擬IP回應的網域"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:130
+msgid "List of hosts that supply bogus NX domain results"
+msgstr "列出供應偽裝NX網域成果的主機群"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:258
+msgid "Listen Interfaces"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
+msgid "Listen Port"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
+msgid "Listen only on the given interface or, if unspecified, on all"
+msgstr "只許在給予的介面上聆聽, 如果未指定, 全都允許"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:174
+msgid "Listening port for inbound DNS queries"
+msgstr "進入的DNS請求聆聽埠"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:21
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:221
+msgid "Load"
+msgstr "掛載"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:27
+msgid "Load Average"
+msgstr "平均掛載"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:33
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:45
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:22
+msgid "Loading"
+msgstr "讀取中"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:35
+msgid "Loading SSH keys…"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:30
+msgid "Local IP address is invalid"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:25
+msgid "Local IP address to assign"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:10
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:11
+msgid "Local IPv4 address"
+msgstr "本地IPv4位址"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:20
+msgid "Local IPv6 address"
+msgstr "本地IPv6位址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:246
+msgid "Local Service Only"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:77
+msgid "Local Startup"
+msgstr "本地啟動"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:32
+msgid "Local Time"
+msgstr "本地時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:104
+msgid "Local domain"
+msgstr "本地網域"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:101
+#, fuzzy
+msgid ""
+"Local domain specification. Names matching this domain are never forwarded "
+"and are resolved from DHCP or hosts files only"
+msgstr "本地網域格式. 僅限符合從未從DHCP或hosts檔轉發和解析的網域"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:105
+msgid "Local domain suffix appended to DHCP names and hosts file entries"
+msgstr "本地網域後綴附加倒DHCP名稱和hosts檔項目"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:100
+msgid "Local server"
+msgstr "本地伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:84
+msgid ""
+"Localise hostname depending on the requesting subnet if multiple IPs are "
+"available"
+msgstr "若有多個IP可用, 本地化主機名稱端看請求的子網路而言."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:83
+msgid "Localise queries"
+msgstr "本地化網路請求"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:175
+msgid "Locked to channel %s used by: %s"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:93
+msgid "Log output level"
+msgstr "日誌輸出等級"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:137
+msgid "Log queries"
+msgstr "日誌查詢"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:23
+msgid "Logging"
+msgstr "系統日誌"
+
+#: modules/luci-base/luasrc/view/sysauth.htm:38
+msgid "Login"
+msgstr "登入"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:92
+msgid "Logout"
+msgstr "登出"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:114
+msgid "Loss of Signal Seconds (LOSS)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:476
+msgid "Lowest leased address as offset from the network address."
+msgstr "最低的釋放位址從這網路位址的偏移計算"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:15
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:86
+msgid "MAC"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/lease_status.htm:73
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:109
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:53
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:78
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:133
+msgid "MAC-Address"
+msgstr "MAC-位址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:457
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:586
+msgid "MAC-Address Filter"
+msgstr "MAC-位址過濾"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:142
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:363
+msgid "MAC-Filter"
+msgstr "MAC-過濾"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:464
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:590
+msgid "MAC-List"
+msgstr "MAC-清單"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:16
+msgid "MAP / LW4over6"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:62
+msgid "MAP rule is invalid"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:70
+msgid "MB/s"
+msgstr "MB/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:28
+msgid "MD5"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+msgid "MHz"
+msgstr "MHz"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:82
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:29
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:66
+msgid "MTU"
+msgstr "最大傳輸單位MTU"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:121
+msgid ""
+"Make sure to clone the root filesystem using something like the commands "
+"below:"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:55
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:26
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:38
+msgid "Manual"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105
+msgid "Max. Attainable Data Rate (ATTNDR)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:539
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193
+msgid "Maximum allowed number of active DHCP leases"
+msgstr "允許啟用DHCP釋放的最大數量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212
+msgid "Maximum allowed number of concurrent DNS queries"
+msgstr "允許同時齊發的DNS請求的最大數量"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:203
+msgid "Maximum allowed size of EDNS.0 UDP packets"
+msgstr "允許EDNS.0 協定的UDP封包最大數量"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:63
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:73
+msgid "Maximum amount of seconds to wait for the modem to become ready"
+msgstr "等待數據機待命的最大秒數"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:27
+msgid ""
+"Maximum length of the name is 15 characters including the automatic protocol/"
+"bridge prefix (br-, 6in4-, pppoe- etc.)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:482
+msgid "Maximum number of leased addresses."
+msgstr "釋放出的位址群最大數量"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:21
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:49
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:170
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:79
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:284
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+msgid "Medium"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
+msgid "Memory"
+msgstr "記憶體"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14
+msgid "Memory usage (%)"
+msgstr "記憶體使用 (%)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:372
+msgid "Mesh Id"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:34
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:76
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:104
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:54
+msgid "Metric"
+msgstr "公測單位"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:154
+msgid "Mirror monitor port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:153
+msgid "Mirror source port"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:408
+msgid "Missing protocol extension for proto %q"
+msgstr "協定  %q 漏失的延伸協定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:923
+msgid "Mobility Domain"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:154
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:41
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:74
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:366
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:31
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:158
+msgid "Mode"
+msgstr "模式"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:18
+msgid "Model"
+msgstr "型號"
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:31
+msgid "Modem default"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:11
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:19
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:11
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:10
+msgid "Modem device"
+msgstr "數據機設備"
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:66
+msgid "Modem information query failed"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:62
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:72
+msgid "Modem init timeout"
+msgstr "數據機初始化終結時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:452
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:554
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:577
+msgid "Monitor"
+msgstr "監視"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+msgid "More Characters"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
+msgid "Mount Entry"
+msgstr "掛載項目"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:100
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:190
+msgid "Mount Point"
+msgstr "掛載點"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:28
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:36
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid "Mount Points"
+msgstr "掛載設定"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:35
+msgid "Mount Points - Mount Entry"
+msgstr "掛載各點 - 掛載項目"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20
+msgid "Mount Points - Swap Entry"
+msgstr "掛載各點 - 交換項目"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137
+msgid ""
+"Mount Points define at which point a memory device will be attached to the "
+"filesystem"
+msgstr "掛載各點定義所指定到記憶體設備將會被附載到檔案系統上"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:53
+msgid "Mount filesystems not specifically configured"
+msgstr "自動掛載沒有預先設定的檔案系統"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:147
+msgid "Mount options"
+msgstr "掛載選項"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:102
+msgid "Mount point"
+msgstr "掛載點"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49
+msgid "Mount swap not specifically configured"
+msgstr "自動掛載沒有預先設定的swap分區"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96
+msgid "Mounted file systems"
+msgstr "已掛載檔案系統"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:152
+msgid "Move down"
+msgstr "往下移"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Move up"
+msgstr "往上移"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912
+msgid "NAS ID"
+msgstr " 網路附存伺服器ID"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:57
+msgid "NAT-T Mode"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:9
+msgid "NAT64 Prefix"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:26
+msgid "NCM"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:535
+msgid "NDP-Proxy"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:43
+msgid "NT Domain"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:261
+msgid "NTP server candidates"
+msgstr "NTP伺服器備選"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:27
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:502
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:32
+msgid "Name"
+msgstr "名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:17
+msgid "Name of the new interface"
+msgstr "新介面的名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:76
+msgid "Name of the new network"
+msgstr "新網路的名稱"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:217
+msgid "Navigation"
+msgstr "導覽"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:56
+msgid "Netmask"
+msgstr "網路遮罩"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:62
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:108
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:402
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:358
+#: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:73
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:101
+msgid "Network"
+msgstr "網路"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:64
+msgid "Network Utilities"
+msgstr "網路多項工具"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:238
+msgid "Network boot image"
+msgstr "網路開機映像檔"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:54
+msgid "Network device activity (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:33
+msgid "Network device is not present"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:126
+msgid "Network without interfaces."
+msgstr "尚無任何介面的網路."
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:11
+msgid "Next »"
+msgstr "下一個 »"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:84
+msgid "No"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:453
+msgid "No DHCP Server configured for this interface"
+msgstr "在這個介面尚無DHCP伺服器"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:59
+msgid "No NAT-T"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82
+msgid "No files found"
+msgstr "尚未發現任何檔案"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:100
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:174
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:174
+msgid "No information available"
+msgstr "尚無可運用資訊"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:63
+msgid "No matching prefix delegation"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:112
+msgid "No negative cache"
+msgstr "拒絕無效網域的快取"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:53
+msgid "No network configured on this device"
+msgstr "尚無網路設定在這個介面上"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:65
+msgid "No network name specified"
+msgstr "尚未指定網路名稱"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:195
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:232
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:259
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:304
+msgid "No password set!"
+msgstr "尚未設定密碼!"
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:116
+msgid "No public keys present yet."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:83
+msgid "No rules in this chain."
+msgstr "尚無規則在這個鏈接上"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+msgid "No scan results available yet..."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "No zone assigned"
+msgstr "尚未指定區碼"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+msgid "Noise"
+msgstr "雜訊比"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:109
+msgid "Noise Margin (SNR)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:340
+msgid "Noise:"
+msgstr "雜訊比:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:117
+msgid "Non Pre-emtive CRC errors (CRC_P)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252
+msgid "Non-wildcard"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76
+msgid "None"
+msgstr "無"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:106
+msgid "Normal"
+msgstr "正常"
+
+#: modules/luci-base/luasrc/view/error404.htm:8
+msgid "Not Found"
+msgstr "尚未發現"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:27
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm:5
+msgid "Not associated"
+msgstr "尚未關聯"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+msgid "Not connected"
+msgstr "尚未連線"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
+msgid "Not started on boot"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
+msgid "Note: interface name length"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:96
+msgid "Notice"
+msgstr "通知"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:104
+msgid "Nslookup"
+msgstr "DNS偵錯Nslookup"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:220
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr "快取DNS項目數量(最大值為10000,輸入0代表不快取)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:40
+msgid "Obfuscated Group Password"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:35
+msgid "Obfuscated Password"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:40
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:34
+msgid "Obtain IPv6-Address"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:84
+msgid "Off-State Delay"
+msgstr "熄滅狀態間隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:16
+msgid ""
+"On this page you can configure the network interfaces. You can bridge "
+"several interfaces by ticking the \"bridge interfaces\" field and enter the "
+"names of several network interfaces separated by spaces. You can also use "
+"<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 ""
+"在這個頁面您可以設定網路介面. 只要點下這個\"介面群橋接\"而且打入數個以空格分"
+"開網路介面的名稱就可以橋接數個介面群. 您也可以使用<abbr title=\"Virtual "
+"Local Area Network\">VLAN</abbr> 符號<samp>INTERFACE.VLANNR</samp> (<abbr "
+"title=\"for example\">例.如</abbr>: <samp>eth0.1</samp>)."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:81
+msgid "On-State Delay"
+msgstr "點亮狀態間隔"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:338
+msgid "One of hostname or mac address must be specified!"
+msgstr "主機名稱或mac位址任選一個被指定"
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
+msgid "One or more fields contain invalid values!"
+msgstr "有一個以上的欄位包含無效數值!"
+
+#: modules/luci-base/luasrc/view/cbi/map.htm:31
+msgid "One or more invalid/required values on tab"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/nullsection.htm:19
+#: modules/luci-base/luasrc/view/cbi/ucisection.htm:24
+msgid "One or more required fields have no value!"
+msgstr "有一個以上的欄位缺乏任何數值!"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19
+msgid "Open list..."
+msgstr "開啟清單"
+
+#: protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua:9
+msgid "OpenConnect (CISCO AnyConnect)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:178
+msgid "Operating frequency"
+msgstr "操作頻率"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:12
+msgid "Option changed"
+msgstr "選項已變更"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:13
+msgid "Option removed"
+msgstr "選項已移除"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1140
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:55
+msgid "Optional"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:78
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:144
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:123
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:148
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:103
+msgid "Optional. Description of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:156
+msgid ""
+"Optional. Host of peer. Names are resolved prior to bringing up the "
+"interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:67
+msgid "Optional. Maximum Transmission Unit of tunnel interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:166
+msgid "Optional. Port of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:175
+msgid ""
+"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
+"Recommended value if this device is behind a NAT is 25."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:31
+msgid "Optional. UDP port used for outgoing and incoming packets."
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:212
+msgid "Options"
+msgstr "選項"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:343
+msgid "Other:"
+msgstr "其它:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:60
+msgid "Out"
+msgstr "出"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:297
+msgid "Outbound:"
+msgstr "外連:"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:26
+msgid "Output Interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:63
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:155
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:33
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:54
+msgid "Override MAC address"
+msgstr "覆蓋MAC位址"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:66
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:158
+#: protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua:35
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:56
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:88
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:125
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:131
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:133
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:104
+msgid "Override MTU"
+msgstr "覆蓋MTU數值"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Override TOS"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid "Override TTL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:513
+msgid "Override default interface name"
+msgstr ""
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:41
+msgid "Override the gateway in DHCP responses"
+msgstr "在DHCP回應中覆蓋閘道"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:507
+msgid ""
+"Override the netmask sent to clients. Normally it is calculated from the "
+"subnet that is served."
+msgstr "覆蓋傳送到客戶端的子網路遮罩. 正常來說它會計算來自於已存在的子網路."
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:65
+msgid "Override the table used for internal routes"
+msgstr "覆蓋之前內部使用的路由表"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:8
+msgid "Overview"
+msgstr "預覽"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:11
+msgid "Owner"
+msgstr "持有者"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:42
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:56
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:17
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:28
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:34
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:18
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:32
+msgid "PAP/CHAP password"
+msgstr "PAP/CHAP驗證密碼"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:39
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:14
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:25
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:11
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:15
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:29
+msgid "PAP/CHAP username"
+msgstr "PAP/CHAP驗證用戶名"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:10
+msgid "PID"
+msgstr "PID碼"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:36
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:50
+#: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:26
+msgid "PIN"
+msgstr "PIN碼"
+
+#: modules/luci-base/luasrc/model/network.lua:39
+msgid "PIN code rejected"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:966
+msgid "PMK R1 Push"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:13
+msgid "PPP"
+msgstr "PPP協定"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:11
+msgid "PPPoA Encapsulation"
+msgstr "PPPoA配置"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:19
+msgid "PPPoATM"
+msgstr "PPPoATM"
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:17
+msgid "PPPoE"
+msgstr "PPPoE"
+
+#: protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua:9
+msgid "PPPoSSH"
+msgstr ""
+
+#: protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua:15
+msgid "PPtP"
+msgstr "PPtP點對點VPN虛擬私人隧道協定"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:59
+msgid "PSID offset"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:56
+msgid "PSID-bits length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:123
+msgid "PTM/EFM (Packet Transfer Mode)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:78
+msgid "Package libiwinfo required!"
+msgstr "軟體包必需有libiwinfo!"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Packets"
+msgstr "封包"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:7
+msgid "Part of zone %q"
+msgstr "區域 %q 的部分 "
+
+#: modules/luci-base/luasrc/view/sysauth.htm:29
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1111
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:35
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:42
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:33
+msgid "Password"
+msgstr "密碼"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:29
+msgid "Password authentication"
+msgstr "密碼驗證"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1019
+msgid "Password of Private Key"
+msgstr "私人金鑰密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1067
+msgid "Password of inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Password strength"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
+msgid "Password2"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:37
+msgid "Paste or drag SSH key file…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1000
+msgid "Path to CA-Certificate"
+msgstr "CA-證書的路徑"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1007
+msgid "Path to Client-Certificate"
+msgstr "用戶端-證書的路徑"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1013
+msgid "Path to Private Key"
+msgstr "私人金鑰的路徑"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1049
+msgid "Path to inner CA-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1055
+msgid "Path to inner Client-Certificate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1061
+msgid "Path to inner Private Key"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:293
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:303
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:329
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:339
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:349
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:258
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:268
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:278
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:336
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:346
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:365
+msgid "Peak:"
+msgstr "峰值:"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:28
+msgid "Peer IP address to assign"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:32
+msgid "Peer address is missing"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:90
+msgid "Peers"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50
+msgid "Perfect Forward Secrecy"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19
+msgid "Perform reboot"
+msgstr "重新開機"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Perform reset"
+msgstr "執行重置"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:174
+msgid "Persistent Keep Alive"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:359
+msgid "Phy Rate:"
+msgstr "傳輸率:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:190
+msgid "Physical Settings"
+msgstr "實體設置"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:77
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:79
+msgid "Ping"
+msgstr "Ping"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:55
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:170
+msgid "Pkts."
+msgstr "封包數."
+
+#: modules/luci-base/luasrc/view/sysauth.htm:19
+msgid "Please enter your username and password."
+msgstr "請輸入您的用戶名稱和密碼"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+msgid "Policy"
+msgstr "策略"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:178
+msgid "Polling interval"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:179
+msgid "Polling interval for status queries in seconds"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:22
+msgid "Port"
+msgstr "埠"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:18
+msgid "Port status:"
+msgstr "埠狀態:"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:120
+msgid "Power Management Mode"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:118
+msgid "Pre-emtive CRC errors (CRCP_P)"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:32
+msgid "Prefer LTE"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:33
+msgid "Prefer UMTS"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:80
+msgid "Prefix Delegated"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:122
+msgid "Preshared Key"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:81
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:75
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:54
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:74
+msgid ""
+"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
+"ignore failures"
+msgstr "假若在給于多次的 LCP 呼叫失敗後終點將死, 使用0忽略失敗"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:264
+msgid "Prevent listening on these interfaces."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:509
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:562
+msgid "Prevents client-to-client communication"
+msgstr "防止用戶端對用戶端的通訊"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:18
+msgid "Private Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:61
+msgid "Proceed"
+msgstr "前進"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:17
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid "Processes"
+msgstr "執行緒"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:103
+msgid "Profile"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:58
+msgid "Prot."
+msgstr "協定."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:84
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:216
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:54
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:79
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:359
+msgid "Protocol"
+msgstr "協定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:31
+msgid "Protocol of the new interface"
+msgstr "新介面的協定家族"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:222
+msgid "Protocol support is not installed"
+msgstr "支援的協定尚未安裝"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:257
+msgid "Provide NTP server"
+msgstr "啟用NTP伺服器"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:16
+msgid "Provide new network"
+msgstr "提供新網路"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:451
+msgid "Pseudo Ad-Hoc (ahdemo)"
+msgstr "偽裝Ad-Hoc (ahdemo模式)"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:112
+msgid "Public Key"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:30
+msgid ""
+"Public keys allow for the passwordless SSH logins with a higher security "
+"compared to the use of plain passwords. In order to upload a new key to the "
+"device, paste an OpenSSH compatible public key line or drag a <code>.pub</"
+"code> file into the input field."
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:139
+msgid "Public prefix routed to this device for distribution to clients."
+msgstr ""
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:9
+msgid "QMI Cellular"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Quality"
+msgstr "品質"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:127
+msgid ""
+"Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> "
+"servers"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "R0 Key Lifetime"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:959
+msgid "R1 Key Holder"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:58
+msgid "RFC3947 NAT-T mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
+msgid "RSSI threshold for joining"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
+msgid "RTS/CTS Threshold"
+msgstr "RTS/CTS門檻"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:16
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:36
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:87
+msgid "RX"
+msgstr "接收"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "RX Rate"
+msgstr "接收速率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:783
+msgid "Radius-Accounting-Port"
+msgstr "Radius-驗証帳號-埠"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:791
+msgid "Radius-Accounting-Secret"
+msgstr "Radius-合法帳號-密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:775
+msgid "Radius-Accounting-Server"
+msgstr "Radius-合法帳號-伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:759
+msgid "Radius-Authentication-Port"
+msgstr "Radius-驗証-埠"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:767
+msgid "Radius-Authentication-Secret"
+msgstr "Radius-驗証-密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:751
+msgid "Radius-Authentication-Server"
+msgstr "Radius-驗証-伺服器"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:119
+msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:37
+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>-伺服器"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:8
+msgid ""
+"Really delete this interface? The deletion cannot be undone! You might lose "
+"access to this device if you are connected via this interface"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2
+msgid ""
+"Really delete this wireless network? The deletion cannot be undone! You "
+"might lose access to this device if you are connected via this network."
+msgstr ""
+"真的要刪除這個無線網路?無法復原的刪除!\n"
+"假如您是透過這個網路連線您可能會無法存取這個設備."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:40
+msgid "Really reset all changes?"
+msgstr "確定要回復原廠設定?"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:237
+msgid "Really switch protocol?"
+msgstr "確定要更換協定?"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:310
+msgid "Realtime Connections"
+msgstr "即時連線"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:19
+msgid "Realtime Graphs"
+msgstr "即時圖表"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/load.htm:244
+msgid "Realtime Load"
+msgstr "即時負載"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:273
+msgid "Realtime Traffic"
+msgstr "即時流量"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:316
+msgid "Realtime Wireless"
+msgstr "即時無線網路"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:931
+msgid "Reassociation Deadline"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:149
+msgid "Rebind protection"
+msgstr "重新綁護"
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:48
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:9
+msgid "Reboot"
+msgstr "重開機"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:9
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "Rebooting..."
+msgstr "重新啟動中..."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:11
+msgid "Reboots the operating system of your device"
+msgstr "重啟您設備的作業系統"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:120
+msgid "Receive"
+msgstr "接收"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:325
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:350
+msgid "Receiver Antenna"
+msgstr "接收天線"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:42
+msgid "Recommended. IP addresses of the WireGuard interface."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:32
+msgid "Reconnect this interface"
+msgstr "重新連接這個介面"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:48
+msgid "References"
+msgstr "引用"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:153
+msgid "Relay"
+msgstr "延遲"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:157
+msgid "Relay Bridge"
+msgstr "橋接延遲"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:17
+msgid "Relay between networks"
+msgstr "網路間的延遲"
+
+#: protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua:12
+msgid "Relay bridge"
+msgstr "橋接延遲"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:18
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:18
+msgid "Remote IPv4 address"
+msgstr "遠端IPv4位址"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid "Remote IPv4 address or FQDN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:45
+msgid "Remove"
+msgstr "移除"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:53
+msgid "Repeat scan"
+msgstr "再次掃描"
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:11
+msgid "Replace entry"
+msgstr "替代項目"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:51
+msgid "Replace wireless configuration"
+msgstr "替代性無線設定"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:8
+msgid "Request IPv6-address"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:16
+msgid "Request IPv6-prefix of length"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1141
+msgid "Required"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20
+msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
+msgstr "對特定的ISP需要,例如.DOCSIS 3 加速有線電視寬頻網路"
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19
+msgid "Required. Base64-encoded private key for this interface."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:113
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:136
+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 ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
+msgid ""
+"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
+"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:95
+msgid ""
+"Requires upstream supports DNSSEC; verify unsigned domain responses really "
+"come from unsigned domains"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:30
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:66
+#: modules/luci-base/luasrc/view/sysauth.htm:39
+msgid "Reset"
+msgstr "重置"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:62
+msgid "Reset Counters"
+msgstr "重置計數器"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:38
+msgid "Reset to defaults"
+msgstr "回復預設值"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:20
+msgid "Resolv and Hosts Files"
+msgstr "解析和Hosts檔案"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:49
+msgid "Resolve file"
+msgstr "解析檔"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:28
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:67
+msgid "Restart"
+msgstr "重啟"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/iptables.htm:63
+msgid "Restart Firewall"
+msgstr "重啟防火牆"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:14
+msgid "Restart radio interface"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:31
+msgid "Restore"
+msgstr "還原"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:47
+msgid "Restore backup"
+msgstr "還原之前備份設定"
+
+#: modules/luci-base/luasrc/view/cbi/value.htm:24
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:38
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:46
+msgid "Reveal/hide password"
+msgstr "明示/隱藏 密碼"
+
+#: modules/luci-base/luasrc/controller/admin/uci.lua:13
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:41
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:16
+msgid "Revert"
+msgstr "回溯"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:47
+msgid "Revert changes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:166
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:152
+msgid "Reverting configuration…"
+msgstr "正在還原設定值..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:217
+msgid "Root"
+msgstr "根"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:230
+msgid "Root directory for files served via TFTP"
+msgstr "透過TFTP存取根目錄檔案"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:109
+msgid "Root preparation"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:147
+msgid "Route Allowed IPs"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:46
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:88
+msgid "Route type"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:523
+msgid "Router Advertisement-Service"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:15
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:27
+msgid "Router Password"
+msgstr "路由器密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:8
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:14
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:37
+msgid "Routes"
+msgstr "路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:9
+msgid ""
+"Routes specify over which interface and gateway a certain host or network "
+"can be reached."
+msgstr "路由器指定介面導出到特定主機或者能夠到達的網路."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:240
+msgid "Rule"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:155
+msgid "Run a filesystem check before mounting the device"
+msgstr "掛載這個設備前先跑系統檢查"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:154
+msgid "Run filesystem check"
+msgstr "執行系統檢查"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
+msgid "SHA256"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+msgid "SNR"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:5
+msgid "SSH Access"
+msgstr "SSH存取"
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:10
+msgid "SSH server address"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:13
+msgid "SSH server port"
+msgstr ""
+
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:8
+msgid "SSH username"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:20
+#: modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm:27
+msgid "SSH-Keys"
+msgstr "SSH-金鑰"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:42
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:73
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:29
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:157
+msgid "SSID"
+msgstr "基地台服務設定識別碼SSID"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236
+msgid "SWAP"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:17
+#: modules/luci-base/luasrc/view/cbi/footer.htm:26
+#: modules/luci-base/luasrc/view/cbi/header.htm:17
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:54
+msgid "Save"
+msgstr "保存"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:36
+#: modules/luci-base/luasrc/view/cbi/footer.htm:22
+msgid "Save & Apply"
+msgstr "保存並啟用"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:89
+msgid "Save mtdblock"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:64
+msgid "Save mtdblock contents"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:120
+msgid "Saving keys…"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:15
+msgid "Scan"
+msgstr "掃描"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:109
+msgid "Scan request failed"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:8
+msgid "Scheduled Tasks"
+msgstr "排程任務"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:10
+msgid "Section added"
+msgstr "新增的區段"
+
+#: modules/luci-base/luasrc/view/admin_uci/changelog.htm:11
+msgid "Section removed"
+msgstr "區段移除"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:148
+msgid "See \"mount\" manpage for details"
+msgstr "查看\"mount\"主頁獲取進階資訊"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:119
+msgid ""
+"Select 'Force upgrade' to flash the image even if the image format check "
+"fails. Use only if you are sure that the firmware is correct and meant for "
+"your device!"
+msgstr ""
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:119
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:96
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:90
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:69
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:92
+msgid ""
+"Send LCP echo requests at the given interval in seconds, only effective in "
+"conjunction with failure threshold"
+msgstr "傳送LCP呼叫請求在這個給予的秒數間隔內, 僅影響關聯到失敗門檻"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:561
+msgid "Separate Clients"
+msgstr "分隔用戶端"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:15
+msgid "Server Settings"
+msgstr "伺服器設定值"
+
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:26
+msgid "Service Name"
+msgstr "服務名稱"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:25
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:30
+msgid "Service Type"
+msgstr "服務型態"
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:55
+msgid "Services"
+msgstr "各服務"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:37
+msgid "Session expired"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:83
+msgid "Set VPN as Default Route"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:258
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:229
+#, fuzzy
+msgid "Set up Time Synchronization"
+msgstr "安裝校時同步"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:55
+msgid "Setting PLMN failed"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:68
+msgid "Setting operation mode failed"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:454
+msgid "Setup DHCP Server"
+msgstr "安裝DHCP伺服器"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:113
+msgid "Severely Errored Seconds (SES)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:31
+msgid "Short GI"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:516
+msgid "Short Preamble"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18
+msgid "Show current backup file list"
+msgstr "顯示現今的備份檔清單"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:99
+msgid "Show empty chains"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+msgid "Shutdown this interface"
+msgstr "關閉這個介面"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:111
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:28
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:156
+msgid "Signal"
+msgstr "信號"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:108
+msgid "Signal Attenuation (SATN)"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:330
+msgid "Signal:"
+msgstr "信號:"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:30
+msgid "Size"
+msgstr "大小"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:219
+msgid "Size of DNS query cache"
+msgstr "DNS請求快取大小"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/footer.htm:18
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:57
+msgid "Skip"
+msgstr "跳過"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:213
+msgid "Skip to content"
+msgstr "跳到內容"
+
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:212
+msgid "Skip to navigation"
+msgstr "跳到導覽"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:335
+msgid "Slot time"
+msgstr "插槽時間"
+
+#: modules/luci-base/luasrc/model/network.lua:1427
+msgid "Software VLAN"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/header.htm:2
+msgid "Some fields are invalid, cannot save values!"
+msgstr "有些欄位失效, 無法儲存數值!"
+
+#: modules/luci-base/luasrc/view/error404.htm:9
+msgid "Sorry, the object you requested was not found."
+msgstr "抱歉, 您請求的這物件尚無發現."
+
+#: modules/luci-base/luasrc/view/error500.htm:9
+msgid "Sorry, the server encountered an unexpected error."
+msgstr "抱歉, 伺服器遭遇非預期的錯誤."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:133
+msgid ""
+"Sorry, there is no sysupgrade support present; a new firmware image must be "
+"flashed manually. Please refer to the wiki for device specific install "
+"instructions."
+msgstr ""
+"抱歉, 沒有sysupgrade支援出現, 新版韌體映像檔必須手動更新. 請回歸wiki找尋特定"
+"設備安裝指引."
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:61
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:360
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:103
+msgid "Source"
+msgstr "來源"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
+msgid "Specifies the directory the device is attached to"
+msgstr "指定這個設備被附掛到那個目錄"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:23
+msgid "Specifies the listening port of this <em>Dropbear</em> instance"
+msgstr "指定這個 <em>Dropbear</em>的監聽埠"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:57
+msgid ""
+"Specifies the maximum amount of failed ARP requests until hosts are presumed "
+"to be dead"
+msgstr "指定失敗ARP可請求的最大數量直到駭客主機死亡為止"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:49
+msgid ""
+"Specifies the maximum amount of seconds after which hosts are presumed to be "
+"dead"
+msgstr "指定可請求的最大秒數直到駭客主機死亡為止"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:30
+msgid "Specify a TOS (Type of Service)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:25
+msgid ""
+"Specify a TTL (Time to Live) for the encapsulating packet other than the "
+"default (64)."
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:20
+msgid ""
+"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
+"bytes)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:60
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:69
+msgid "Specify the secret encryption key here."
+msgstr "指定加密金鑰在此."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:475
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:61
+msgid "Start"
+msgstr "啟用"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:32
+msgid "Start priority"
+msgstr "啟用優先權順序"
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:125
+msgid "Starting configuration apply…"
+msgstr "開始套用設定值..."
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:105
+msgid "Starting wireless scan..."
+msgstr "開始無線掃描..."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:24
+msgid "Startup"
+msgstr "開機自動執行"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12
+msgid "Static IPv4 Routes"
+msgstr "靜態IPv4路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59
+msgid "Static IPv6 Routes"
+msgstr "靜態IPv6路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269
+msgid "Static Leases"
+msgstr "靜態租約"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:118
+msgid "Static Routes"
+msgstr "靜態路由"
+
+#: modules/luci-base/luasrc/model/network.lua:966
+msgid "Static address"
+msgstr "靜態位址"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:270
+msgid ""
+"Static leases are used to assign fixed IP addresses and symbolic hostnames "
+"to DHCP clients. They are also required for non-dynamic interface "
+"configurations where only hosts with a corresponding lease are served."
+msgstr ""
+"靜態租約是用來指定固定的IP位址和表示的主機名稱給予DHCP用戶端. 它們也需要非動"
+"態介面設定值以便獲取相應租約的主機服務."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "Station inactivity limit"
+msgstr ""
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:40
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:197
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:145
+#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:129
+msgid "Status"
+msgstr "狀態"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm:35
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:71
+msgid "Stop"
+msgstr "停止"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:121
+msgid "Strict order"
+msgstr "嚴謹順序"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
+msgid "Strong"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
+msgid "Submit"
+msgstr "提交"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:63
+msgid "Suppress logging"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:64
+msgid "Suppress logging of the routine operation of these protocols"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24
+msgid "Swap"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29
+msgid "Swap Entry"
+msgstr "Swap交換頁項目"
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:23
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid "Switch"
+msgstr "交換器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:129
+msgid "Switch %q"
+msgstr "交換器 %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:128
+msgid "Switch %q (%s)"
+msgstr "交換器 %q (%s)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:66
+msgid ""
+"Switch %q has an unknown topology - the VLAN settings might not be accurate."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:185
+msgid "Switch Port Mask"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:1425
+msgid "Switch VLAN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:238
+msgid "Switch protocol"
+msgstr "切換協定"
+
+#: modules/luci-base/luasrc/view/cbi/ipaddr.htm:26
+msgid "Switch to CIDR list notation"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:64
+msgid "Switchport activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:53
+msgid "Sync with NTP-Server"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:25
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:50
+msgid "Sync with browser"
+msgstr "與瀏覽器同步時間"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm:18
+msgid "Synchronizing..."
+msgstr "同步中..."
+
+#: modules/luci-base/luasrc/controller/admin/index.lua:47
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:14
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:10
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:14
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:39
+msgid "System"
+msgstr "系統"
+
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:15
+#: modules/luci-mod-status/luasrc/view/admin_status/syslog.htm:8
+msgid "System Log"
+msgstr "系統日誌"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:18
+msgid "System Properties"
+msgstr "系統屬性"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:70
+msgid "System log buffer size"
+msgstr "系統日誌緩衝大小"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:333
+msgid "TCP:"
+msgstr "TCP:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:21
+msgid "TFTP Settings"
+msgstr "TFTP設定"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:229
+msgid "TFTP server root"
+msgstr "TFTP 伺服器根"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:17
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:37
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:88
+msgid "TX"
+msgstr "傳送"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:112
+msgid "TX Rate"
+msgstr "傳送速度"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:8
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:77
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:105
+msgid "Table"
+msgstr "表格"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:21
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:68
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:57
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:102
+msgid "Target"
+msgstr "目標"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:77
+msgid "Target network"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:22
+msgid "Terminate"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:27
+#, fuzzy
+msgid ""
+"The <em>Device Configuration</em> section covers physical settings of the "
+"radio hardware such as channel, transmit power or antenna selection which "
+"are shared among all defined wireless networks (if the radio hardware is "
+"multi-SSID capable). Per network settings like encryption or operation mode "
+"are grouped in the <em>Interface Configuration</em>."
+msgstr ""
+"這個<em>Device Configuration</em>欄位會覆蓋無線射頻硬體的物理設定值,如通道、"
+"傳送功率或者天線分享道所有定義的無線網路(假如這個無線射頻硬體是多工-SSID能力"
+"的). 每個網路設定像加密或操作模式是被分群在<em>Interface Configuration</em>"
+"中."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:79
+msgid ""
+"The <em>libiwinfo-lua</em> package is not installed. You must install this "
+"component for working wireless configuration!"
+msgstr ""
+"這 <em>libiwinfo-lua</em> 軟體包尚未安裝. 您必須安裝這個元件以便無線網路設定"
+"有作用."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:66
+msgid ""
+"The HE.net endpoint update configuration changed, you must now use the plain "
+"username instead of the user ID!"
+msgstr ""
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:8
+msgid ""
+"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:27
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:38
+msgid ""
+"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
+msgstr "指定到這供應商的IPv6字首, 通常用 <code>::</code>結尾"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:18
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:77
+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> and "
+"<code>_</code>"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:59
+msgid "The backup archive does not appear to be a valid gzip file."
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/error.htm:6
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:44
+msgid ""
+"The device could not be reached within %d seconds after applying the pending "
+"changes, which caused the configuration to be rolled back for safety "
+"reasons. If you believe that the configuration changes are correct "
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:87
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:41
+msgid ""
+"The device file of the memory or partition (<abbr title=\"for example\">e.g."
+"</abbr> <code>/dev/sda1</code>)"
+msgstr ""
+"記憶體的設備檔或者分割區 (<abbr title=\"for example\">e.g.</abbr> <code>/dev/"
+"sda1</code>)"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:127
+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 ""
+"這檔案系統適用來格式化記憶體(<abbr title=\"for example\">例.如.</abbr> "
+"<samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></samp>)"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:11
+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 />按下面的\"繼續\"便可以開始更新程序."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:19
+msgid "The following changes have been reverted"
+msgstr "接下來的修改已經被回復"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:38
+msgid "The following rules are currently active on this system."
+msgstr "以下的規則現正作用在系統中."
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:144
+msgid "The given SSH public key has already been added."
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:150
+msgid ""
+"The given SSH public key is invalid. Please supply proper public RSA or "
+"ECDSA keys."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:67
+msgid "The given network name is not unique"
+msgstr "輸入的網路名稱非唯一"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:52
+#, fuzzy
+msgid ""
+"The hardware is not multi-SSID capable and the existing configuration will "
+"be replaced if you proceed."
+msgstr "如果您繼續的話.這硬體並非多SSID工能並且已存的設定將會被覆蓋."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:43
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:31
+msgid ""
+"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
+"addresses."
+msgstr "這IPv4開頭以位元計的長度, 剩餘部分將會延用在IPv6位址中."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:46
+msgid "The length of the IPv6 prefix in bits"
+msgstr "這IPv6開頭以位元計的長度"
+
+#: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:12
+msgid "The local IPv4 address over which the tunnel is created (optional)."
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5
+msgid ""
+"The network ports on this device can be combined to several <abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
+"communicate directly with each other. <abbr title=\"Virtual Local Area "
+"Network\">VLAN</abbr>s are often used to separate different network "
+"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=\"Virtual Local Area Network"
+"\">VLAN</abbr>群, 以便在內的電腦可以直接跟別人互通. <abbr title=\"Virtual "
+"Local Area Network\">VLAN</abbr>群經常用來分割網路區段. 預設經常會有一個上傳"
+"埠來連接到下一個大型網路類似Intenet而其它埠則用來本地區網使用."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:77
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:395
+msgid "The selected protocol needs a device assigned"
+msgstr "選到的協定需要指定到設備上"
+
+#: modules/luci-base/luasrc/view/csrftoken.htm:11
+msgid "The submitted security token is invalid or already expired!"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:274
+msgid ""
+"The system is erasing the configuration partition now and will reboot itself "
+"when finished."
+msgstr "系統正在刪除設定分割並且當完成時將自行重開."
+
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:195
+#, 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 "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"系統正在刷機中.<br /> 請勿關閉設備!<br />  請等待數分鐘直到您重新連線. 可能需"
+"要更新您電腦的位址以便再次連接設備, 端看您的設定. "
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:15
+msgid "The system password has been successfully changed."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:118
+msgid ""
+"The uploaded image file does not contain a supported format. Make sure that "
+"you choose the generic image format for your platform."
+msgstr ""
+"以上傳的映像檔不包含支援格式. 請確認您選擇的是針對您的平台採用的通用映像檔."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:157
+msgid "Theme"
+msgstr "主題"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:29
+#: modules/luci-base/luasrc/view/lease_status.htm:61
+msgid "There are no active leases."
+msgstr "租賃尚未啟動."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:135
+msgid "There are no changes to apply."
+msgstr "無任何設定待套用."
+
+#: modules/luci-base/luasrc/view/admin_uci/revert.htm:22
+msgid "There are no pending changes to revert!"
+msgstr "尚無暫存的修改等待復原!"
+
+#: modules/luci-base/luasrc/view/admin_uci/changes.htm:21
+msgid "There are no pending changes!"
+msgstr "無暫存的修改!"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
+msgid ""
+"There is no device assigned yet, please attach a network device in the "
+"\"Physical Settings\" tab"
+msgstr "尚未指定設備, 請接上一個網路設備在這\"實體設置\"標籤內"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:196
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:233
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:260
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:307
+msgid ""
+"There is no password set on this router. Please configure a root password to "
+"protect the web interface and enable SSH."
+msgstr "路由器尚未設密碼. 請設定root密碼以便保護web介面及啟用SSH."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19
+msgid "This IPv4 address of the relay"
+msgstr "IPv4位址的轉驛"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:117
+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 ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
+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 ""
+"這是shell通用模式清單用來在系統更新時匹配包括的檔案和目錄. 在/etc/config/ 修"
+"改檔案和特定其它設定檔將會被自動保留."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:74
+msgid ""
+"This is either the \"Update Key\" configured for the tunnel or the account "
+"password if no update key has been configured"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:78
+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' 前面)以便在開機流程"
+"結尾執行它們."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:27
+msgid ""
+"This is the local endpoint address assigned by the tunnel broker, it usually "
+"ends with <code>...:2/64</code>"
+msgstr "這是由通道代理人指定的本地終端位址, 通常用 <code>...:2/64</code>結尾."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:31
+msgid ""
+"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr> in the local network"
+msgstr ""
+"在本地網路中 這是唯一的 <abbr title=\"Dynamic Host Configuration Protocol"
+"\">DHCP</abbr>"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:61
+msgid "This is the plain username for logging into the account"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:34
+msgid ""
+"This is the prefix routed to you by the tunnel broker for use by clients"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua:9
+msgid "This is the system crontab in which scheduled tasks can be defined."
+msgstr "這是系統預設的例行性工作排程."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:19
+msgid ""
+"This is usually the address of the nearest PoP operated by the tunnel broker"
+msgstr "這是由通道代理人操作的近端PoP通用位址"
+
+#: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:5
+msgid ""
+"This list gives an overview over currently running system processes and "
+"their status."
+msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽."
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312
+msgid "This page gives an overview over currently active network connections."
+msgstr "這一頁提供目前正在活動中網路連線的預覽."
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:172
+#: modules/luci-base/luasrc/view/cbi/tsection.htm:32
+msgid "This section contains no values yet"
+msgstr "這部分尚未有任何設定值."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:223
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:234
+msgid "Time Synchronization"
+msgstr "校時同步"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:228
+msgid "Time Synchronization is not configured yet."
+msgstr "校時同步尚未設定."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:45
+msgid "Timezone"
+msgstr "時區"
+
+#: modules/luci-base/htdocs/luci-static/resources/xhr.js:47
+msgid "To login…"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:32
+msgid ""
+"To restore configuration files, you can upload a previously generated backup "
+"archive here. To reset the firmware to its initial state, click \"Perform "
+"reset\" (only possible with squashfs images)."
+msgstr ""
+"要復原設定檔, 可以上傳之前製作的備份壓縮檔放這. 要重置回復出廠值,按下\"執行還"
+"原\"(可能只對squashfs影像檔有效)"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:112
+msgid "Tone"
+msgstr ""
+
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:16
+#: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:27
+msgid "Total Available"
+msgstr "全部可用"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:92
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:94
+msgid "Traceroute"
+msgstr "路由追蹤"
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:45
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:24
+msgid "Traffic"
+msgstr "流量"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:362
+msgid "Transfer"
+msgstr "傳輸"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:595
+msgid "Transmission Rate"
+msgstr "傳輸速率"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:119
+msgid "Transmit"
+msgstr "射頻"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:211
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:273
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:345
+msgid "Transmit Power"
+msgstr "射頻功率"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:318
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:349
+msgid "Transmitter Antenna"
+msgstr "射頻天線"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:43
+msgid "Trigger"
+msgstr "觸發"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:115
+msgid "Trigger Mode"
+msgstr "觸發模式"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:54
+msgid "Tunnel ID"
+msgstr "通道ID"
+
+#: modules/luci-base/luasrc/model/network.lua:1430
+msgid "Tunnel Interface"
+msgstr "通道介面"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:11
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:26
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:61
+msgid "Tunnel Link"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+msgid "Tx-Power"
+msgstr "傳送-功率"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:32
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:168
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:11
+msgid "Type"
+msgstr "型態"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:323
+msgid "UDP:"
+msgstr "UDP:"
+
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:28
+msgid "UMTS only"
+msgstr "只用3G UMTS"
+
+#: protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua:10
+msgid "UMTS/GPRS/EV-DO"
+msgstr "UMTS/GPRS/EV-DO"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:123
+msgid "USB Device"
+msgstr "USB設備"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:144
+msgid "USB Ports"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:56
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:47
+msgid "UUID"
+msgstr "設備通用唯一識別碼UUID"
+
+#: modules/luci-base/luasrc/model/network.lua:34
+#: modules/luci-base/luasrc/model/network.lua:35
+msgid "Unable to determine device name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:36
+msgid "Unable to determine external IP address"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:37
+msgid "Unable to determine upstream interface"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/error404.htm:10
+msgid "Unable to dispatch"
+msgstr "無法發送"
+
+#: protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua:54
+msgid "Unable to obtain client ID"
+msgstr ""
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:61
+msgid "Unable to resolve AFTR host name"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:38
+msgid "Unable to resolve peer host name"
+msgstr ""
+
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:115
+msgid "Unavailable Seconds (UAS)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:970
+msgid "Unknown"
+msgstr "未知"
+
+#: modules/luci-base/luasrc/model/network.lua:1137
+msgid "Unknown error (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/network.lua:964
+msgid "Unmanaged"
+msgstr "未託管"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:119
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:125
+msgid "Unmount"
+msgstr ""
+
+#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:107
+msgid "Unnamed key"
+msgstr ""
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:148
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:172
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:141
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:189
+msgid "Unsaved Changes"
+msgstr "尚未存檔的修改"
+
+#: protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua:64
+msgid "Unsupported MAP type"
+msgstr ""
+
+#: protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua:69
+msgid "Unsupported modem"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:119
+msgid "Unsupported protocol type."
+msgstr "不支援的協定型態"
+
+#: modules/luci-base/luasrc/view/cbi/tblsection.htm:151
+msgid "Up"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:103
+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-相容的映像檔在這以便替代正執行中的韌體. 勾選\"保持設定\"以"
+"保留目前設定值(必須要是OpenWrt相容性韌體映像檔)."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:51
+msgid "Upload archive..."
+msgstr "上傳壓縮檔..."
+
+#: modules/luci-base/luasrc/view/cbi/upload.htm:8
+msgid "Uploaded File"
+msgstr "檔案已上傳"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js:14
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:85
+#: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:26
+msgid "Uptime"
+msgstr "上傳花費時間"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:36
+msgid "Use <code>/etc/ethers</code>"
+msgstr "採用 <code>/etc/ethers</code>"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:40
+msgid "Use DHCP gateway"
+msgstr "使用DHCP的閘道"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:33
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:85
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:34
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:94
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:46
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:65
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:59
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:38
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:58
+msgid "Use DNS servers advertised by peer"
+msgstr "使用終端發布的DNS伺服器"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:227
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:233
+msgid "Use ISO/IEC 3166 alpha2 country codes."
+msgstr "使用Use ISO/IEC 3166 alpha2 國碼."
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:31
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:100
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:35
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:51
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:86
+msgid "Use MTU on tunnel interface"
+msgstr "在通道介面上使用的MTU數值"
+
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:95
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:65
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:30
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:46
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:81
+msgid "Use TTL on tunnel interface"
+msgstr "在通道介面上使用的TTL存活時間"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:106
+msgid "Use as external overlay (/overlay)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:105
+msgid "Use as root filesystem (/)"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:19
+msgid "Use broadcast flag"
+msgstr "當作廣播旗標"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:253
+msgid "Use builtin IPv6-management"
+msgstr "使用內建的IPv6管理功能"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:40
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:109
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:92
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:45
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:101
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:53
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:72
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:66
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:45
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:65
+msgid "Use custom DNS servers"
+msgstr "使用自定的DNS伺服器"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:26
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:70
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:16
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:28
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:80
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:24
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:50
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:44
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:23
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:43
+msgid "Use default gateway"
+msgstr "使用預設閘道"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:48
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:164
+#: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:77
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua:24
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua:88
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:58
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua:23
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua:39
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua:74
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:86
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:31
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua:38
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua:57
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:51
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:30
+#: protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua:50
+msgid "Use gateway metric"
+msgstr "使用閘道公測數"
+
+#: protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua:64
+msgid "Use routing table"
+msgstr "使用路由表"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:273
+msgid ""
+"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
+"the requesting host. The optional <em>Lease time</em> can be used to set non-"
+"standard host-specific lease time, e.g. 12h, 3d or infinite."
+msgstr ""
+"使用 <em>Add</em> 鍵以便新增一個租賃的項目. 這個 <em>MAC-Address</em> 標誌這"
+"個主機, the <em>IPv4-Address</em> 指定固定位址以便使用,<em>Hostname</em> 備指"
+"定當作象徵名稱到請求的主機上."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:111
+msgid "Used"
+msgstr "已使用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:848
+msgid "Used Key Slot"
+msgstr "已使用的關鍵插槽"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:913
+msgid ""
+"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
+"needed with normal WPA(2)-PSK."
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:48
+msgid "User certificate (PEM encoded)"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:61
+msgid "User key (PEM encoded)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/sysauth.htm:23
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:41
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:32
+msgid "Username"
+msgstr "用戶名稱"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:182
+msgid "VC-Mux"
+msgstr "虛擬電路多工器VC-Mux"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:128
+msgid "VDSL"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:172
+msgid "VLANs on %q"
+msgstr "VLAN 在 %q"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:171
+msgid "VLANs on %q (%s)"
+msgstr "VLAN 在 %q (%s)"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:18
+msgid "VPN Local address"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:22
+msgid "VPN Local port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:15
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua:11
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:15
+msgid "VPN Server"
+msgstr "VPN伺服器"
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:18
+msgid "VPN Server port"
+msgstr ""
+
+#: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:37
+msgid "VPN Server's certificate SHA1 hash"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua:9
+msgid "VPNC (CISCO 3000 (and others) VPN)"
+msgstr ""
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:44
+msgid "Vendor"
+msgstr ""
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:60
+msgid "Vendor Class to send when requesting DHCP"
+msgstr "當請求DHCP封包時要傳送的製造商類別碼"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:9
+msgid "Verify"
+msgstr "確認"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:76
+msgid "Virtual dynamic interface"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:471
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:553
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:576
+msgid "WDS"
+msgstr "無線分散系統WDS"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:667
+msgid "WEP Open System"
+msgstr "WEP 開放系統"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:668
+msgid "WEP Shared Key"
+msgstr "WEP 共享金鑰"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:59
+msgid "WEP passphrase"
+msgstr "WEP通關密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:503
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:566
+msgid "WMM Mode"
+msgstr "無線多媒體機制"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:68
+msgid "WPA passphrase"
+msgstr "WPA 密碼"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:716
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:735
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:740
+msgid ""
+"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
+"and ad-hoc mode) to be installed."
+msgstr ""
+"WPA-加密需要 wpa_supplican(終端模式)或者hostapd熱點(對AP或者是 ad-hoc模式)已"
+"被安裝."
+
+#: modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm:46
+msgid "Waiting for changes to be applied..."
+msgstr "等待修改被啟用..."
+
+#: modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm:34
+msgid "Waiting for command to complete..."
+msgstr "等待完整性指令..."
+
+#: modules/luci-base/luasrc/view/cbi/apply_widget.htm:109
+msgid "Waiting for configuration to be applied… %ds"
+msgstr "正在等候設定值套用完畢… %ds"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:56
+msgid "Waiting for device..."
+msgstr "正在等待裝置..."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:97
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:107
+msgid "Warning"
+msgstr "警告"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:14
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "警告: 目前存在未儲存的設定,這些設定將會在裝置重啟後遺失!"
+
+#: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
+msgid "Weak"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
+msgid ""
+"When using a PSK, the PMK can be automatically generated. When enabled, the "
+"R0/R1 key options below are not applied. Disable this to use the R0 and R1 "
+"key options."
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:74
+msgid "Wi-Fi activity (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:70
+msgid "Wi-Fi client association (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:66
+msgid "Wi-Fi data reception (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:68
+msgid "Wi-Fi data transmission (%s)"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua:72
+msgid "Wi-Fi on (%s)"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:166
+msgid "Width"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9
+msgid "WireGuard VPN"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/controller/admin/network.lua:58
+#: modules/luci-mod-status/luasrc/controller/admin/status.lua:28
+#: modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm:14
+msgid "Wireless"
+msgstr "無線網路"
+
+#: modules/luci-base/luasrc/model/network.lua:1418
+msgid "Wireless Adapter"
+msgstr "無線網卡"
+
+#: modules/luci-base/luasrc/model/network.lua:1404
+#: modules/luci-base/luasrc/model/network.lua:1865
+msgid "Wireless Network"
+msgstr "無線網路"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:68
+msgid "Wireless Overview"
+msgstr "無線預覽"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:362
+msgid "Wireless Security"
+msgstr "無線安全"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm:30
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is disabled"
+msgstr "無線被關閉"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:54
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:77
+#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:162
+msgid "Wireless is not associated"
+msgstr "無線網路未連結"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:15
+msgid "Wireless is restarting..."
+msgstr "無線網路重啟中..."
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:126
+msgid "Wireless network is disabled"
+msgstr "無線網路已停用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:130
+msgid "Wireless network is enabled"
+msgstr "無線網路已啟用"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138
+msgid "Write received DNS requests to syslog"
+msgstr "寫入已接收的DNS請求到系統日誌中"
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89
+msgid "Write system log to file"
+msgstr "將系統日誌寫入檔案"
+
+#: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:85
+msgid "Yes"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:25
+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>警"
+"告: 假如您關閉必要的初始化腳本像\"網路\", 您的設備將可能無法存取!</strong>"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:206
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:243
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:253
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:319
+msgid ""
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "在瀏覽器您必須啟用JavaScript否則LuCI無法正常運作."
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:119
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:126
+msgid "ZRam Compression Streams"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:26
+msgid "ZRam Settings"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:114
+msgid "ZRam Size"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:187
+msgid "any"
+msgstr "任意"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:113
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:121
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:126
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:218
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:282
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:621
+#: protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua:37
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:22
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29
+#: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121
+msgid "auto"
+msgstr "自動"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
+msgid "baseT"
+msgstr "baseT"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:187
+msgid "bridged"
+msgstr "已橋接"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:35
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:99
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:31
+msgid "create"
+msgstr ""
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:69
+msgid "create:"
+msgstr "建立:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:264
+msgid "creates a bridge over specified interface(s)"
+msgstr "在指定的介面群上建立橋接"
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:24
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+msgid "dB"
+msgstr "dB"
+
+#: modules/luci-base/luasrc/view/wifi_assoclist.htm:77
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:34
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:35
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:46
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:47
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:48
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:277
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:279
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:331
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:334
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:337
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:341
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:344
+#: modules/luci-mod-status/luasrc/view/admin_status/wireless.htm:347
+msgid "dBm"
+msgstr "dBm"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:460
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:587
+msgid "disable"
+msgstr "關閉"
+
+#: modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua:119
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:524
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:530
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:536
+#: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua:18
+msgid "disabled"
+msgstr "已停用"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:17
+#: modules/luci-base/luasrc/view/lease_status.htm:46
+msgid "expired"
+msgstr "過期"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:42
+msgid ""
+"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>-leases will be stored"
+msgstr ""
+"當給予<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-租賃將"
+"會被存檔"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:61
+msgid "forward"
+msgstr "轉發"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "full-duplex"
+msgstr "全雙工"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:47
+msgid "half-duplex"
+msgstr "半雙工"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:621
+msgid "hexadecimal encoded value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+msgid "hidden"
+msgstr "隱藏"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:527
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538
+msgid "hybrid mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25
+msgid "if target is a network"
+msgstr "假如目標是某個網路"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "input"
+msgstr "輸入"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:65
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kB/s"
+msgstr "kB/s"
+
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:74
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:288
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:291
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:294
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:298
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:301
+#: modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm:304
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:459
+msgid "key between 8 and 63 characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:471
+msgid "key with either 5 or 13 characters"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:50
+msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
+msgstr "本地<abbr title=\"Domain Name System\">DNS</abbr> 檔案"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:952
+msgid "minutes"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43
+msgid "mixed WPA/WPA2"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "no"
+msgstr "無"
+
+#: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54
+msgid "no link"
+msgstr "無連線"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:273
+msgid "non-empty value"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:166
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:176
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:186
+msgid "not present"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:363
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:185
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270
+msgid "off"
+msgstr "關閉"
+
+#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184
+#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:214
+#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224
+#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267
+msgid "on"
+msgstr "開啟"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:525
+msgid "one of: - %s"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "open"
+msgstr "打開"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46
+msgid "output"
+msgstr ""
+
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:223
+msgid "overlay"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:305
+msgid "positive decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:297
+msgid "positive integer value"
+msgstr ""
+
+#: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:34
+msgid "random"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:526
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537
+msgid "relay mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188
+msgid "routed"
+msgstr "路由"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:534
+msgid "sec"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:525
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:531
+msgid "server mode"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:544
+msgid "stateful-only"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:542
+msgid "stateless"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:543
+msgid "stateless + stateful"
+msgstr ""
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:369
+msgid "tagged"
+msgstr "標籤"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932
+msgid "time units (TUs / 1.024 ms) [1000-65535]"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:611
+msgid "unique value"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46
+msgid "unknown"
+msgstr "未知"
+
+#: modules/luci-base/luasrc/view/lease_status.htm:15
+#: modules/luci-base/luasrc/view/lease_status.htm:44
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:197
+msgid "unlimited"
+msgstr "無限"
+
+#: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:53
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:38
+msgid "unspecified"
+msgstr "尚未指定"
+
+#: modules/luci-base/luasrc/view/cbi/network_netlist.htm:71
+msgid "unspecified -or- create:"
+msgstr "尚未指定 - 或 -建立:"
+
+#: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:366
+msgid "untagged"
+msgstr "尚未標籤"
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:310
+msgid "valid IP address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:345
+msgid "valid IPv4 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:318
+msgid "valid IPv4 address or network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:438
+msgid "valid IPv4 address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:378
+msgid "valid IPv4 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:340
+msgid "valid IPv4 or IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:331
+msgid "valid IPv4 prefix value (0-32)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:350
+msgid "valid IPv6 CIDR"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:326
+msgid "valid IPv6 address or prefix"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:368
+msgid "valid IPv6 host id"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:383
+msgid "valid IPv6 network"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:336
+msgid "valid IPv6 prefix value (0-128)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:404
+msgid "valid MAC address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:475
+msgid "valid UCI identifier"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:426
+msgid "valid UCI identifier, hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:447
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:450
+msgid "valid address:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:585
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:589
+msgid "valid date (YYYY-MM-DD)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:301
+msgid "valid decimal value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:469
+msgid "valid hexadecimal WEP key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:457
+msgid "valid hexadecimal WPA key"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:432
+msgid "valid host:port"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:419
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:421
+msgid "valid hostname"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:409
+msgid "valid hostname or IP address"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:293
+msgid "valid integer value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:373
+msgid "valid network in address/netmask notation"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:560
+msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:396
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:399
+msgid "valid port or port range (port1-port2)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:388
+msgid "valid port value"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:565
+msgid "valid time (HH:MM:SS)"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:494
+msgid "value between %d and %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:480
+msgid "value between %f and %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:484
+msgid "value greater or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:488
+msgid "value smaller or equal to %f"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:499
+msgid "value with at least %d characters"
+msgstr ""
+
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:504
+msgid "value with at most %d characters"
+msgstr ""
+
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:221
+#: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:232
+msgid "yes"
+msgstr "是的"
+
+#: modules/luci-base/luasrc/view/cbi/delegator.htm:20
+msgid "« Back"
+msgstr "« 倒退"
+
+#~ msgid "kB"
+#~ msgstr "kB"
+
+#~ msgid ""
+#~ "Here you can paste public SSH-Keys (one per line) for SSH public-key "
+#~ "authentication."
+#~ msgstr "在這裡貼上公用SSH-Keys (每行一個)以便驗證"
+
+#~ msgid "Password successfully changed!"
+#~ msgstr "密碼已變更成功!"
+
+#~ msgid "Unknown Error, password not changed!"
+#~ msgstr "未知錯誤, 密碼尚未改變!"
+
+#~ msgid "Design"
+#~ msgstr "設計規劃"
+
+#~ msgid "Available packages"
+#~ msgstr "可用軟體包"
+
+#~ msgid "Displaying only packages containing"
+#~ msgstr "僅顯示內含的軟體"
+
+#~ msgid "Download and install package"
+#~ msgstr "下載並安裝軟體包"
+
+#~ msgid "Filter"
+#~ msgstr "過濾器"
+
+#~ msgid "Find package"
+#~ msgstr "搜尋軟體包"
+
+#~ msgid "Free space"
+#~ msgstr "剩餘空間"
+
+#~ msgid "Install"
+#~ msgstr "安裝"
+
+#~ msgid "Installed packages"
+#~ msgstr "安裝軟體包"
+
+#~ msgid "No package lists available"
+#~ msgstr "尚無軟體包列表可使用"
+
+#~ msgid "OK"
+#~ msgstr "行"
+
+#~ msgid "OPKG-Configuration"
+#~ msgstr "OPKG-設定值"
+
+#~ msgid "Package lists are older than 24 hours"
+#~ msgstr "軟體包列表過期已超過24小時"
+
+#~ msgid "Package name"
+#~ msgstr "軟體包名稱"
+
+#~ msgid "Software"
+#~ msgstr "軟體"
+
+#~ msgid "Update lists"
+#~ msgstr "上傳清單"
+
+#~ msgid "Version"
+#~ msgstr "版本"
+
+#~ msgid "none"
+#~ msgstr "無"
+
+#~ msgid "Disable DNS setup"
+#~ msgstr "關閉DNS設置"
+
+#~ msgid "IPv4 and IPv6"
+#~ msgstr "IPv4和IPv6"
+
+#~ msgid "IPv4 only"
+#~ msgstr "僅用IPv4"
+
+#~ msgid "IPv6 only"
+#~ msgstr "僅用IPv6"
+
+#~ msgid "Lease validity time"
+#~ msgstr "租賃有效時間"
+
+#~ msgid "Multicast address"
+#~ msgstr "多點群播位址"
+
+#~ msgid "Protocol family"
+#~ msgstr "協定家族"
+
+#~ msgid "No chains in this table"
+#~ msgstr "尚未綁在這個表格中"
+
+#~ msgid "Configuration files will be kept."
+#~ msgstr "設定檔將被存檔"
+
+#~ msgid "Note: Configuration files will be erased."
+#~ msgstr "注意:設定檔將被刪除."
+
+#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+#~ msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+
+#~ msgid "Activate this network"
+#~ msgstr "啟用此網路"
+
+#~ msgid "Hermes 802.11b Wireless Controller"
+#~ msgstr "Hermes 802.11b 無線網路控制器"
+
+#~ msgid "Interface is shutting down..."
+#~ msgstr "介面正在關閉中..."
+
+#~ msgid "Interface reconnected"
+#~ msgstr "介面已重新連線"
+
+#~ msgid "Interface shut down"
+#~ msgstr "介面關閉"
+
+#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
+#~ msgstr "Prism2/2.5/3 802.11b 無線控制器"
+
+#~ msgid "RaLink 802.11%s Wireless Controller"
+#~ msgstr "RaLink 802.11%s 無線控制器"
+
+#~ msgid ""
+#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
+#~ "you are connected via this interface."
+#~ msgstr ""
+#~ "真的要關閉這個介面 \"%s\" ?!\n"
+#~ "假如您要透過這個介面連線您可能會無法存取這個設備."
+
+#~ msgid "Reconnecting interface"
+#~ msgstr "重連這個介面中"
+
+#~ msgid "Shutdown this network"
+#~ msgstr "關閉這個網路"
+
+#~ msgid "Wireless restarted"
+#~ msgstr "無線網路已重啟"
+
+#~ msgid "Wireless shut down"
+#~ msgstr "無線網路關閉"
+
+#~ msgid "DHCP Leases"
+#~ msgstr "DHCP的釋放週期"
+
+#~ msgid "DHCPv6 Leases"
+#~ msgstr "DHCPv6版釋放時間週期"
+
+#~ msgid ""
+#~ "Really delete this interface? The deletion cannot be undone! You might "
+#~ "lose access to this device if you are connected via this interface."
+#~ msgstr ""
+#~ "您真的要刪除這個介面?您將無法復原這項刪除!\n"
+#~ "假如您要透過這個介面連線您可能會無法存取這個設備."
+
+#, fuzzy
+#~ msgid ""
+#~ "Really shut down network? You might lose access to this device if you are "
+#~ "connected via this interface."
+#~ msgstr ""
+#~ "真的要刪除這個網路 ?\n"
+#~ "假如您是透過這個介面連線您可能會無法存取這個設備."
+
+#~ msgid "Sort"
+#~ msgstr "分類"
+
+#~ msgid "help"
+#~ msgstr "幫助"
+
+#~ msgid "IPv4 WAN Status"
+#~ msgstr "IPv4寬頻連線狀態"
+
+#~ msgid "IPv6 WAN Status"
+#~ msgstr "IPv6寬頻連線狀態"
+
+#~ msgid "Apply"
+#~ msgstr "套用"
+
+#~ msgid "Applying changes"
+#~ msgstr "正在套用變更"
+
+#~ msgid "Configuration applied."
+#~ msgstr "啟用設定"
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "保存 &#38; 啟用"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "下列的修改已經被提交"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "尚無暫存的修改等待套用"
+
+#~ msgid "Action"
+#~ msgstr "動作"
+
+#~ msgid "Buttons"
+#~ msgstr "按鈕"
+
+#~ msgid "Handler"
+#~ msgstr "多執行緒"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "可持有最長時間"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "可持有的最低時間"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "處理按鍵效果可執行檔路徑"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "指定這個按鈕狀態以便操作"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr "這一頁允許客製化按鍵動作的設定"
+
+#~ msgid "Leasetime"
+#~ msgstr "租賃時間"
+
+#~ msgid "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 "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "加入網路的設定"
+
+#~ msgid "CPU"
+#~ msgstr "CPU"
+
+#~ msgid "Port %d"
+#~ msgstr "埠 %d"
+
+#~ msgid "Port %d is untagged in multiple VLANs!"
+#~ msgstr "埠 %d 尚未標記在多個VLANs中!"
+
+#~ msgid "VLAN Interface"
+#~ msgstr "VLAN介面"
diff --git a/package/luci/modules/luci-base/root/etc/config/luci b/package/luci/modules/luci-base/root/etc/config/luci
new file mode 100644 (file)
index 0000000..82c2230
--- /dev/null
@@ -0,0 +1,30 @@
+config core main
+       option lang auto
+       option mediaurlbase /luci-static/bootstrap
+       option resourcebase /luci-static/resources
+       
+config extern flash_keep
+       option uci              "/etc/config/"
+       option dropbear "/etc/dropbear/"
+       option openvpn  "/etc/openvpn/"
+       option passwd   "/etc/passwd"
+       option opkg             "/etc/opkg.conf"
+       option firewall "/etc/firewall.user"
+       option uploads  "/lib/uci/upload/"
+       
+config internal languages
+       
+config internal sauth
+       option sessionpath "/tmp/luci-sessions"
+       option sessiontime 3600
+       
+config internal ccache
+       option enable 1
+               
+config internal themes
+
+config internal apply
+       option rollback 30
+       option holdoff 4
+       option timeout 5
+       option display 1.5
diff --git a/package/luci/modules/luci-base/root/etc/config/ucitrack b/package/luci/modules/luci-base/root/etc/config/ucitrack
new file mode 100644 (file)
index 0000000..e639866
--- /dev/null
@@ -0,0 +1,56 @@
+config network
+       option init network
+       list affects dhcp
+       list affects radvd
+
+config wireless
+       list affects network
+
+config firewall
+       option init firewall
+       list affects luci-splash
+       list affects qos
+       list affects miniupnpd
+
+config olsr
+       option init olsrd
+
+config dhcp
+       option init dnsmasq
+       list affects odhcpd
+
+config odhcpd
+       option init odhcpd
+
+config dropbear
+       option init dropbear
+
+config httpd
+       option init httpd
+
+config fstab
+       option exec '/sbin/block mount'
+
+config qos
+       option init qos
+
+config system
+       option init led
+       option exec '/etc/init.d/log reload'
+       list affects luci_statistics
+       list affects dhcp
+
+config luci_splash
+       option init luci_splash
+
+config upnpd
+       option init miniupnpd
+
+config ntpclient
+       option init ntpclient
+
+config samba
+       option init samba
+
+config tinyproxy
+       option init tinyproxy
diff --git a/package/luci/modules/luci-base/root/etc/init.d/ucitrack b/package/luci/modules/luci-base/root/etc/init.d/ucitrack
new file mode 100755 (executable)
index 0000000..27d34fa
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh /etc/rc.common
+
+START=80
+USE_PROCD=1
+
+register_init() {
+       local config="$1"
+       local init="$2"
+       shift; shift
+
+       if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then
+               logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init"
+               procd_add_config_trigger "config.change" "$config" "$init" "$@"
+       fi
+}
+
+register_trigger() {
+       local sid="$1"
+       local config init exec affects affected
+
+       config_get config "$sid" TYPE
+       config_get init "$sid" init
+       config_get exec "$sid" exec
+       config_get affects "$sid" affects
+
+       if [ -n "$init" ]; then
+               register_init "$config" "/etc/init.d/$init" "reload"
+       fi
+
+       if [ -n "$exec" ]; then
+               case "$exec" in
+                       /etc/init.d/*)
+                               set -- $exec
+                               register_init "$config" "$@"
+                       ;;
+                       *)
+                               logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec"
+                               procd_add_config_trigger "config.change" "$config" "$exec"
+                       ;;
+               esac
+       fi
+
+       for affected in $affects; do
+               logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected"
+               procd_add_config_trigger "config.change" "$affected" \
+                       ubus call service event \
+                       "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)"
+       done
+}
+
+service_triggers() {
+       config_foreach register_trigger
+}
+
+start_service() {
+       config_load ucitrack
+}
diff --git a/package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder b/package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/package/luci/modules/luci-base/root/sbin/luci-reload b/package/luci/modules/luci-base/root/sbin/luci-reload
new file mode 100755 (executable)
index 0000000..cc41da2
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+. /lib/functions.sh
+
+apply_config() {
+       config_get init "$1" init
+       config_get exec "$1" exec
+       config_get test "$1" test
+
+       echo "$2" > "/var/run/luci-reload-status"
+
+       [ -n "$init" ] && reload_init "$2" "$init" "$test"
+       [ -n "$exec" ] && reload_exec "$2" "$exec" "$test"
+}
+
+reload_exec() {
+       local service="$1"
+       local ok="$3"
+       set -- $2
+       local cmd="$1"; shift
+       
+       [ -x "$cmd" ] && {
+               echo "Reloading $service... "
+               ( $cmd "$@" ) 2>/dev/null 1>&2
+               [ -n "$ok" -a "$?" != "$ok" ] && echo '!!! Failed to reload' $service '!!!'
+       }
+}
+
+reload_init() {
+       [ -x /etc/init.d/$2 ] && /etc/init.d/$2 enabled && {
+               echo "Reloading $1... "
+               /etc/init.d/$2 reload >/dev/null 2>&1
+               [ -n "$3" -a "$?" != "$3" ] && echo '!!! Failed to reload' $1 '!!!'
+       }
+}
+
+lock "/var/run/luci-reload"
+
+config_load ucitrack
+
+for i in $*; do
+       config_foreach apply_config $i $i
+done
+
+rm -f "/var/run/luci-reload-status"
+lock -u "/var/run/luci-reload"
diff --git a/package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json b/package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json
new file mode 100644 (file)
index 0000000..4d58236
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "user": "nobody",
+       "access": {
+               "system": {
+                       "methods": [ "board", "info" ]
+               }
+       }
+}
diff --git a/package/luci/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/package/luci/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
new file mode 100644 (file)
index 0000000..ed7ad8a
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "uci-access": {
+               "description": "Grant uci write access to all configurations",
+               "read": {
+                       "uci": [ "*" ]
+               },
+               "write": {
+                       "uci": [ "*" ]
+               }
+       }
+}
diff --git a/package/luci/modules/luci-base/root/www/index.html b/package/luci/modules/luci-base/root/www/index.html
new file mode 100644 (file)
index 0000000..6899820
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/" />
+</head>
+<body style="background-color: white">
+<a style="color: black; font-family: arial, helvetica, sans-serif;" href="/cgi-bin/luci/">LuCI - Lua Configuration Interface</a>
+</body>
+</html>
diff --git a/package/luci/modules/luci-base/src/Makefile b/package/luci/modules/luci-base/src/Makefile
new file mode 100644 (file)
index 0000000..3e6ead1
--- /dev/null
@@ -0,0 +1,24 @@
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
+
+clean:
+       rm -f po2lmo parser.so version.lua *.o
+
+jsmin: jsmin.o
+       $(CC) $(LDFLAGS) -o $@ $^
+
+po2lmo: po2lmo.o template_lmo.o
+       $(CC) $(LDFLAGS) -o $@ $^
+
+parser.so: template_parser.o template_utils.o template_lmo.o template_lualib.o
+       $(CC) $(LDFLAGS) -shared -o $@ $^
+
+version.lua:
+       ./mkversion.sh $@ $(LUCI_VERSION) "$(LUCI_GITBRANCH)"
+
+compile: parser.so version.lua
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/lib/lua/luci/template
+       cp parser.so $(DESTDIR)/usr/lib/lua/luci/template/parser.so
+       cp version.lua $(DESTDIR)/usr/lib/lua/luci/version.lua
diff --git a/package/luci/modules/luci-base/src/jsmin.c b/package/luci/modules/luci-base/src/jsmin.c
new file mode 100644 (file)
index 0000000..d23718d
--- /dev/null
@@ -0,0 +1,292 @@
+/* jsmin.c
+   2011-09-30
+
+Copyright (c) 2002 Douglas Crockford  (www.crockford.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+static int   theA;
+static int   theB;
+static int   theLookahead = EOF;
+
+
+/* isAlphanum -- return true if the character is a letter, digit, underscore,
+        dollar sign, or non-ASCII character.
+*/
+
+static int
+isAlphanum(int c)
+{
+    return ((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') ||
+        (c >= 'A' && c <= 'Z') || c == '_' || c == '$' || c == '\\' ||
+        c > 126);
+}
+
+
+/* get -- return the next character from stdin. Watch out for lookahead. If
+        the character is a control character, translate it to a space or
+        linefeed.
+*/
+
+static int
+get()
+{
+    int c = theLookahead;
+    theLookahead = EOF;
+    if (c == EOF) {
+        c = getc(stdin);
+    }
+    if (c >= ' ' || c == '\n' || c == EOF) {
+        return c;
+    }
+    if (c == '\r') {
+        return '\n';
+    }
+    return ' ';
+}
+
+
+/* peek -- get the next character without getting it.
+*/
+
+static int
+peek()
+{
+    theLookahead = get();
+    return theLookahead;
+}
+
+
+/* next -- get the next character, excluding comments. peek() is used to see
+        if a '/' is followed by a '/' or '*'.
+*/
+
+static int
+next()
+{
+    int c = get();
+    if  (c == '/') {
+        switch (peek()) {
+        case '/':
+            for (;;) {
+                c = get();
+                if (c <= '\n') {
+                    return c;
+                }
+            }
+        case '*':
+            get();
+            for (;;) {
+                switch (get()) {
+                case '*':
+                    if (peek() == '/') {
+                        get();
+                        return ' ';
+                    }
+                    break;
+                case EOF:
+                    fprintf(stderr, "Error: JSMIN Unterminated comment.\n");
+                    exit(1);
+                }
+            }
+        default:
+            return c;
+        }
+    }
+    return c;
+}
+
+
+/* action -- do something! What you do is determined by the argument:
+        1   Output A. Copy B to A. Get the next B.
+        2   Copy B to A. Get the next B. (Delete A).
+        3   Get the next B. (Delete B).
+   action treats a string as a single character. Wow!
+   action recognizes a regular expression if it is preceded by ( or , or =.
+*/
+
+static void
+action(int d)
+{
+    switch (d) {
+    case 1:
+        putc(theA, stdout);
+    case 2:
+        theA = theB;
+        if (theA == '\'' || theA == '"' || theA == '`') {
+            for (;;) {
+                putc(theA, stdout);
+                theA = get();
+                if (theA == theB) {
+                    break;
+                }
+                if (theA == '\\') {
+                    putc(theA, stdout);
+                    theA = get();
+                }
+                if (theA == EOF) {
+                    fprintf(stderr, "Error: JSMIN unterminated string literal.");
+                    exit(1);
+                }
+            }
+        }
+    case 3:
+        theB = next();
+        if (theB == '/' && (theA == '(' || theA == ',' || theA == '=' ||
+                            theA == ':' || theA == '[' || theA == '!' ||
+                            theA == '&' || theA == '|' || theA == '?' ||
+                            theA == '{' || theA == '}' || theA == ';' ||
+                            theA == '\n')) {
+            putc(theA, stdout);
+            putc(theB, stdout);
+            for (;;) {
+                theA = get();
+                if (theA == '[') {
+                    for (;;) {
+                        putc(theA, stdout);
+                        theA = get();
+                        if (theA == ']') {
+                            break;
+                        }
+                        if (theA == '\\') {
+                            putc(theA, stdout);
+                            theA = get();
+                        }
+                        if (theA == EOF) {
+                            fprintf(stderr,
+                                "Error: JSMIN unterminated set in Regular Expression literal.\n");
+                            exit(1);
+                        }
+                    }
+                } else if (theA == '/') {
+                    break;
+                } else if (theA =='\\') {
+                    putc(theA, stdout);
+                    theA = get();
+                }
+                if (theA == EOF) {
+                    fprintf(stderr,
+                        "Error: JSMIN unterminated Regular Expression literal.\n");
+                    exit(1);
+                }
+                putc(theA, stdout);
+            }
+            theB = next();
+        }
+    }
+}
+
+
+/* jsmin -- Copy the input to the output, deleting the characters which are
+        insignificant to JavaScript. Comments will be removed. Tabs will be
+        replaced with spaces. Carriage returns will be replaced with linefeeds.
+        Most spaces and linefeeds will be removed.
+*/
+
+static void
+jsmin()
+{
+    theA = '\n';
+    action(3);
+    while (theA != EOF) {
+        switch (theA) {
+        case ' ':
+            if (isAlphanum(theB)) {
+                action(1);
+            } else {
+                action(2);
+            }
+            break;
+        case '\n':
+            switch (theB) {
+            case '{':
+            case '[':
+            case '(':
+            case '+':
+            case '-':
+                action(1);
+                break;
+            case ' ':
+                action(3);
+                break;
+            default:
+                if (isAlphanum(theB)) {
+                    action(1);
+                } else {
+                    action(2);
+                }
+            }
+            break;
+        default:
+            switch (theB) {
+            case ' ':
+                if (isAlphanum(theA)) {
+                    action(1);
+                    break;
+                }
+                action(3);
+                break;
+            case '\n':
+                switch (theA) {
+                case '}':
+                case ']':
+                case ')':
+                case '+':
+                case '-':
+                case '"':
+                case '\'':
+                case '`':
+                    action(1);
+                    break;
+                default:
+                    if (isAlphanum(theA)) {
+                        action(1);
+                    } else {
+                        action(3);
+                    }
+                }
+                break;
+            default:
+                action(1);
+                break;
+            }
+        }
+    }
+}
+
+
+/* main -- Output any command line arguments as comments
+        and then minify the input.
+*/
+extern int
+main(int argc, char* argv[])
+{
+    int i;
+    for (i = 1; i < argc; i += 1) {
+        fprintf(stdout, "// %s\n", argv[i]);
+    }
+    jsmin();
+    return 0;
+}
diff --git a/package/luci/modules/luci-base/src/mkversion.sh b/package/luci/modules/luci-base/src/mkversion.sh
new file mode 100755 (executable)
index 0000000..e2d02c1
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+cat <<EOF > $1
+local pcall, dofile, _G = pcall, dofile, _G
+
+module "luci.version"
+
+if pcall(dofile, "/etc/openwrt_release") and _G.DISTRIB_DESCRIPTION then
+       distname    = ""
+       distversion = _G.DISTRIB_DESCRIPTION
+       if _G.DISTRIB_REVISION then
+               distrevision = _G.DISTRIB_REVISION
+               if not distversion:find(distrevision,1,true) then
+                       distversion = distversion .. " " .. distrevision
+               end
+       end
+else
+       distname    = "OpenWrt"
+       distversion = "Development Snapshot"
+end
+
+luciname    = "${3:-LuCI}"
+luciversion = "${2:-Git}"
+EOF
diff --git a/package/luci/modules/luci-base/src/po2lmo.c b/package/luci/modules/luci-base/src/po2lmo.c
new file mode 100644 (file)
index 0000000..fd927cb
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * lmo - Lua Machine Objects - PO to LMO conversion tool
+ *
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "template_lmo.h"
+
+static void die(const char *msg)
+{
+       fprintf(stderr, "Error: %s\n", msg);
+       exit(1);
+}
+
+static void usage(const char *name)
+{
+       fprintf(stderr, "Usage: %s input.po output.lmo\n", name);
+       exit(1);
+}
+
+static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream)
+{
+       if( fwrite(ptr, size, nmemb, stream) == 0 )
+               die("Failed to write stdout");
+}
+
+static int extract_string(const char *src, char *dest, int len)
+{
+       int pos = 0;
+       int esc = 0;
+       int off = -1;
+
+       for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ )
+       {
+               if( (off == -1) && (src[pos] == '"') )
+               {
+                       off = pos + 1;
+               }
+               else if( off >= 0 )
+               {
+                       if( esc == 1 )
+                       {
+                               switch (src[pos])
+                               {
+                               case '"':
+                               case '\\':
+                                       off++;
+                                       break;
+                               }
+                               dest[pos-off] = src[pos];
+                               esc = 0;
+                       }
+                       else if( src[pos] == '\\' )
+                       {
+                               dest[pos-off] = src[pos];
+                               esc = 1;
+                       }
+                       else if( src[pos] != '"' )
+                       {
+                               dest[pos-off] = src[pos];
+                       }
+                       else
+                       {
+                               dest[pos-off] = '\0';
+                               break;
+                       }
+               }
+       }
+
+       return (off > -1) ? strlen(dest) : -1;
+}
+
+static int cmp_index(const void *a, const void *b)
+{
+       uint32_t x = ((const lmo_entry_t *)a)->key_id;
+       uint32_t y = ((const lmo_entry_t *)b)->key_id;
+
+       if (x < y)
+               return -1;
+       else if (x > y)
+               return 1;
+
+       return 0;
+}
+
+static void print_uint32(uint32_t x, FILE *out)
+{
+       uint32_t y = htonl(x);
+       print(&y, sizeof(uint32_t), 1, out);
+}
+
+static void print_index(void *array, int n, FILE *out)
+{
+       lmo_entry_t *e;
+
+       qsort(array, n, sizeof(*e), cmp_index);
+
+       for (e = array; n > 0; n--, e++)
+       {
+               print_uint32(e->key_id, out);
+               print_uint32(e->val_id, out);
+               print_uint32(e->offset, out);
+               print_uint32(e->length, out);
+       }
+}
+
+int main(int argc, char *argv[])
+{
+       char line[4096];
+       char key[4096];
+       char val[4096];
+       char tmp[4096];
+       int state  = 0;
+       int offset = 0;
+       int length = 0;
+       int n_entries = 0;
+       void *array = NULL;
+       lmo_entry_t *entry = NULL;
+       uint32_t key_id, val_id;
+
+       FILE *in;
+       FILE *out;
+
+       if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) )
+               usage(argv[0]);
+
+       memset(line, 0, sizeof(key));
+       memset(key, 0, sizeof(val));
+       memset(val, 0, sizeof(val));
+
+       while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) )
+       {
+               if( state == 0 && strstr(line, "msgid \"") == line )
+               {
+                       switch(extract_string(line, key, sizeof(key)))
+                       {
+                               case -1:
+                                       die("Syntax error in msgid");
+                               case 0:
+                                       state = 1;
+                                       break;
+                               default:
+                                       state = 2;
+                       }
+               }
+               else if( state == 1 || state == 2 )
+               {
+                       if( strstr(line, "msgstr \"") == line || state == 2 )
+                       {
+                               switch(extract_string(line, val, sizeof(val)))
+                               {
+                                       case -1:
+                                               state = 4;
+                                               break;
+                                       default:
+                                               state = 3;
+                               }
+                       }
+                       else
+                       {
+                               switch(extract_string(line, tmp, sizeof(tmp)))
+                               {
+                                       case -1:
+                                               state = 2;
+                                               break;
+                                       default:
+                                               strcat(key, tmp);
+                               }
+                       }
+               }
+               else if( state == 3 )
+               {
+                       switch(extract_string(line, tmp, sizeof(tmp)))
+                       {
+                               case -1:
+                                       state = 4;
+                                       break;
+                               default:
+                                       strcat(val, tmp);
+                       }
+               }
+
+               if( state == 4 )
+               {
+                       if( strlen(key) > 0 && strlen(val) > 0 )
+                       {
+                               key_id = sfh_hash(key, strlen(key));
+                               val_id = sfh_hash(val, strlen(val));
+
+                               if( key_id != val_id )
+                               {
+                                       n_entries++;
+                                       array = realloc(array, n_entries * sizeof(lmo_entry_t));
+                                       entry = (lmo_entry_t *)array + n_entries - 1;
+
+                                       if (!array)
+                                               die("Out of memory");
+
+                                       entry->key_id = key_id;
+                                       entry->val_id = val_id;
+                                       entry->offset = offset;
+                                       entry->length = strlen(val);
+
+                                       length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
+
+                                       print(val, length, 1, out);
+                                       offset += length;
+                               }
+                       }
+
+                       state = 0;
+                       memset(key, 0, sizeof(key));
+                       memset(val, 0, sizeof(val));
+               }
+
+               memset(line, 0, sizeof(line));
+       }
+
+       print_index(array, n_entries, out);
+
+       if( offset > 0 )
+       {
+               print_uint32(offset, out);
+               fsync(fileno(out));
+               fclose(out);
+       }
+       else
+       {
+               fclose(out);
+               unlink(argv[2]);
+       }
+
+       fclose(in);
+       return(0);
+}
diff --git a/package/luci/modules/luci-base/src/template_lmo.c b/package/luci/modules/luci-base/src/template_lmo.c
new file mode 100644 (file)
index 0000000..f7a118c
--- /dev/null
@@ -0,0 +1,342 @@
+/*
+ * lmo - Lua Machine Objects - Base functions
+ *
+ *   Copyright (C) 2009-2010 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "template_lmo.h"
+
+/*
+ * Hash function from http://www.azillionmonkeys.com/qed/hash.html
+ * Copyright (C) 2004-2008 by Paul Hsieh
+ */
+
+uint32_t sfh_hash(const char *data, int len)
+{
+       uint32_t hash = len, tmp;
+       int rem;
+
+       if (len <= 0 || data == NULL) return 0;
+
+       rem = len & 3;
+       len >>= 2;
+
+       /* Main loop */
+       for (;len > 0; len--) {
+               hash  += sfh_get16(data);
+               tmp    = (sfh_get16(data+2) << 11) ^ hash;
+               hash   = (hash << 16) ^ tmp;
+               data  += 2*sizeof(uint16_t);
+               hash  += hash >> 11;
+       }
+
+       /* Handle end cases */
+       switch (rem) {
+               case 3: hash += sfh_get16(data);
+                       hash ^= hash << 16;
+                       hash ^= (signed char)data[sizeof(uint16_t)] << 18;
+                       hash += hash >> 11;
+                       break;
+               case 2: hash += sfh_get16(data);
+                       hash ^= hash << 11;
+                       hash += hash >> 17;
+                       break;
+               case 1: hash += (signed char)*data;
+                       hash ^= hash << 10;
+                       hash += hash >> 1;
+       }
+
+       /* Force "avalanching" of final 127 bits */
+       hash ^= hash << 3;
+       hash += hash >> 5;
+       hash ^= hash << 4;
+       hash += hash >> 17;
+       hash ^= hash << 25;
+       hash += hash >> 6;
+
+       return hash;
+}
+
+uint32_t lmo_canon_hash(const char *str, int len)
+{
+       char res[4096];
+       char *ptr, prev;
+       int off;
+
+       if (!str || len >= sizeof(res))
+               return 0;
+
+       for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++)
+       {
+               if (isspace(*str))
+               {
+                       if (!isspace(prev))
+                               *ptr++ = ' ';
+               }
+               else
+               {
+                       *ptr++ = *str;
+               }
+       }
+
+       if ((ptr > res) && isspace(*(ptr-1)))
+               ptr--;
+
+       return sfh_hash(res, ptr - res);
+}
+
+lmo_archive_t * lmo_open(const char *file)
+{
+       int in = -1;
+       uint32_t idx_offset = 0;
+       struct stat s;
+
+       lmo_archive_t *ar = NULL;
+
+       if (stat(file, &s) == -1)
+               goto err;
+
+       if ((in = open(file, O_RDONLY)) == -1)
+               goto err;
+
+       if ((ar = (lmo_archive_t *)malloc(sizeof(*ar))) != NULL)
+       {
+               memset(ar, 0, sizeof(*ar));
+
+               ar->fd     = in;
+               ar->size = s.st_size;
+
+               fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC);
+
+               if ((ar->mmap = mmap(NULL, ar->size, PROT_READ, MAP_SHARED, ar->fd, 0)) == MAP_FAILED)
+                       goto err;
+
+               idx_offset = ntohl(*((const uint32_t *)
+                                    (ar->mmap + ar->size - sizeof(uint32_t))));
+
+               if (idx_offset >= ar->size)
+                       goto err;
+
+               ar->index  = (lmo_entry_t *)(ar->mmap + idx_offset);
+               ar->length = (ar->size - idx_offset - sizeof(uint32_t)) / sizeof(lmo_entry_t);
+               ar->end    = ar->mmap + ar->size;
+
+               return ar;
+       }
+
+err:
+       if (in > -1)
+               close(in);
+
+       if (ar != NULL)
+       {
+               if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED))
+                       munmap(ar->mmap, ar->size);
+
+               free(ar);
+       }
+
+       return NULL;
+}
+
+void lmo_close(lmo_archive_t *ar)
+{
+       if (ar != NULL)
+       {
+               if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED))
+                       munmap(ar->mmap, ar->size);
+
+               close(ar->fd);
+               free(ar);
+
+               ar = NULL;
+       }
+}
+
+
+lmo_catalog_t *_lmo_catalogs = NULL;
+lmo_catalog_t *_lmo_active_catalog = NULL;
+
+int lmo_load_catalog(const char *lang, const char *dir)
+{
+       DIR *dh = NULL;
+       char pattern[16];
+       char path[PATH_MAX];
+       struct dirent *de = NULL;
+
+       lmo_archive_t *ar = NULL;
+       lmo_catalog_t *cat = NULL;
+
+       if (!lmo_change_catalog(lang))
+               return 0;
+
+       if (!dir || !(dh = opendir(dir)))
+               goto err;
+
+       if (!(cat = malloc(sizeof(*cat))))
+               goto err;
+
+       memset(cat, 0, sizeof(*cat));
+
+       snprintf(cat->lang, sizeof(cat->lang), "%s", lang);
+       snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang);
+
+       while ((de = readdir(dh)) != NULL)
+       {
+               if (!fnmatch(pattern, de->d_name, 0))
+               {
+                       snprintf(path, sizeof(path), "%s/%s", dir, de->d_name);
+                       ar = lmo_open(path);
+
+                       if (ar)
+                       {
+                               ar->next = cat->archives;
+                               cat->archives = ar;
+                       }
+               }
+       }
+
+       closedir(dh);
+
+       cat->next = _lmo_catalogs;
+       _lmo_catalogs = cat;
+
+       if (!_lmo_active_catalog)
+               _lmo_active_catalog = cat;
+
+       return cat->archives ? 0 : -1;
+
+err:
+       if (dh) closedir(dh);
+       if (cat) free(cat);
+
+       return -1;
+}
+
+int lmo_change_catalog(const char *lang)
+{
+       lmo_catalog_t *cat;
+
+       for (cat = _lmo_catalogs; cat; cat = cat->next)
+       {
+               if (!strncmp(cat->lang, lang, sizeof(cat->lang)))
+               {
+                       _lmo_active_catalog = cat;
+                       return 0;
+               }
+       }
+
+       return -1;
+}
+
+static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash)
+{
+       unsigned int m, l, r;
+       uint32_t k;
+
+       l = 0;
+       r = ar->length - 1;
+
+       while (1)
+       {
+               m = l + ((r - l) / 2);
+
+               if (r < l)
+                       break;
+
+               k = ntohl(ar->index[m].key_id);
+
+               if (k == hash)
+                       return &ar->index[m];
+
+               if (k > hash)
+               {
+                       if (!m)
+                               break;
+
+                       r = m - 1;
+               }
+               else
+               {
+                       l = m + 1;
+               }
+       }
+
+       return NULL;
+}
+
+int lmo_translate(const char *key, int keylen, char **out, int *outlen)
+{
+       uint32_t hash;
+       lmo_entry_t *e;
+       lmo_archive_t *ar;
+
+       if (!key || !_lmo_active_catalog)
+               return -2;
+
+       hash = lmo_canon_hash(key, keylen);
+
+       for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
+       {
+               if ((e = lmo_find_entry(ar, hash)) != NULL)
+               {
+                       *out = ar->mmap + ntohl(e->offset);
+                       *outlen = ntohl(e->length);
+                       return 0;
+               }
+       }
+
+       return -1;
+}
+
+void lmo_iterate(lmo_iterate_cb_t cb, void *priv)
+{
+       unsigned int i;
+       lmo_entry_t *e;
+       lmo_archive_t *ar;
+
+       if (!_lmo_active_catalog)
+               return;
+
+       for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
+               for (i = 0, e = &ar->index[0]; i < ar->length; e = &ar->index[++i])
+                       cb(ntohl(e->key_id), ar->mmap + ntohl(e->offset), ntohl(e->length), priv);
+}
+
+void lmo_close_catalog(const char *lang)
+{
+       lmo_archive_t *ar, *next;
+       lmo_catalog_t *cat, *prev;
+
+       for (prev = NULL, cat = _lmo_catalogs; cat; prev = cat, cat = cat->next)
+       {
+               if (!strncmp(cat->lang, lang, sizeof(cat->lang)))
+               {
+                       if (prev)
+                               prev->next = cat->next;
+                       else
+                               _lmo_catalogs = cat->next;
+
+                       for (ar = cat->archives; ar; ar = next)
+                       {
+                               next = ar->next;
+                               lmo_close(ar);
+                       }
+
+                       free(cat);
+                       break;
+               }
+       }
+}
diff --git a/package/luci/modules/luci-base/src/template_lmo.h b/package/luci/modules/luci-base/src/template_lmo.h
new file mode 100644 (file)
index 0000000..587884e
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * lmo - Lua Machine Objects - General header
+ *
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#ifndef _TEMPLATE_LMO_H_
+#define _TEMPLATE_LMO_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fnmatch.h>
+#include <dirent.h>
+#include <ctype.h>
+#include <limits.h>
+
+#if (defined(__GNUC__) && defined(__i386__))
+#define sfh_get16(d) (*((const uint16_t *) (d)))
+#else
+#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+                                          +(uint32_t)(((const uint8_t *)(d))[0]) )
+#endif
+
+
+struct lmo_entry {
+       uint32_t key_id;
+       uint32_t val_id;
+       uint32_t offset;
+       uint32_t length;
+} __attribute__((packed));
+
+typedef struct lmo_entry lmo_entry_t;
+
+
+struct lmo_archive {
+       int         fd;
+       int             length;
+       uint32_t    size;
+       lmo_entry_t *index;
+       char        *mmap;
+       char            *end;
+       struct lmo_archive *next;
+};
+
+typedef struct lmo_archive lmo_archive_t;
+
+
+struct lmo_catalog {
+       char lang[6];
+       struct lmo_archive *archives;
+       struct lmo_catalog *next;
+};
+
+typedef struct lmo_catalog lmo_catalog_t;
+
+typedef void (*lmo_iterate_cb_t)(uint32_t, const char *, int, void *);
+
+uint32_t sfh_hash(const char *data, int len);
+uint32_t lmo_canon_hash(const char *data, int len);
+
+lmo_archive_t * lmo_open(const char *file);
+void lmo_close(lmo_archive_t *ar);
+
+
+extern lmo_catalog_t *_lmo_catalogs;
+extern lmo_catalog_t *_lmo_active_catalog;
+
+int lmo_load_catalog(const char *lang, const char *dir);
+int lmo_change_catalog(const char *lang);
+int lmo_translate(const char *key, int keylen, char **out, int *outlen);
+void lmo_iterate(lmo_iterate_cb_t cb, void *priv);
+void lmo_close_catalog(const char *lang);
+
+#endif
diff --git a/package/luci/modules/luci-base/src/template_lualib.c b/package/luci/modules/luci-base/src/template_lualib.c
new file mode 100644 (file)
index 0000000..fbab2cc
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * LuCI Template - Lua binding
+ *
+ *   Copyright (C) 2009 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "template_lualib.h"
+
+static int template_L_do_parse(lua_State *L, struct template_parser *parser, const char *chunkname)
+{
+       int lua_status, rv;
+
+       if (!parser)
+       {
+               lua_pushnil(L);
+               lua_pushinteger(L, errno);
+               lua_pushstring(L, strerror(errno));
+               return 3;
+       }
+
+       lua_status = lua_load(L, template_reader, parser, chunkname);
+
+       if (lua_status == 0)
+               rv = 1;
+       else
+               rv = template_error(L, parser);
+
+       template_close(parser);
+
+       return rv;
+}
+
+int template_L_parse(lua_State *L)
+{
+       const char *file = luaL_checkstring(L, 1);
+       struct template_parser *parser = template_open(file);
+
+       return template_L_do_parse(L, parser, file);
+}
+
+int template_L_parse_string(lua_State *L)
+{
+       size_t len;
+       const char *str = luaL_checklstring(L, 1, &len);
+       struct template_parser *parser = template_string(str, len);
+
+       return template_L_do_parse(L, parser, "[string]");
+}
+
+int template_L_utf8(lua_State *L)
+{
+       size_t len = 0;
+       const char *str = luaL_checklstring(L, 1, &len);
+       char *res = utf8(str, len);
+
+       if (res != NULL)
+       {
+               lua_pushstring(L, res);
+               free(res);
+
+               return 1;
+       }
+
+       return 0;
+}
+
+int template_L_pcdata(lua_State *L)
+{
+       size_t len = 0;
+       const char *str = luaL_checklstring(L, 1, &len);
+       char *res = pcdata(str, len);
+
+       if (res != NULL)
+       {
+               lua_pushstring(L, res);
+               free(res);
+
+               return 1;
+       }
+
+       return 0;
+}
+
+int template_L_striptags(lua_State *L)
+{
+       size_t len = 0;
+       const char *str = luaL_checklstring(L, 1, &len);
+       char *res = striptags(str, len);
+
+       if (res != NULL)
+       {
+               lua_pushstring(L, res);
+               free(res);
+
+               return 1;
+       }
+
+       return 0;
+}
+
+static int template_L_load_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       const char *dir  = luaL_optstring(L, 2, NULL);
+       lua_pushboolean(L, !lmo_load_catalog(lang, dir));
+       return 1;
+}
+
+static int template_L_close_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       lmo_close_catalog(lang);
+       return 0;
+}
+
+static int template_L_change_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       lua_pushboolean(L, !lmo_change_catalog(lang));
+       return 1;
+}
+
+static void template_L_get_translations_cb(uint32_t key, const char *val, int len, void *priv) {
+       lua_State *L = priv;
+       char hex[9];
+
+       luaL_checktype(L, 1, LUA_TFUNCTION);
+       snprintf(hex, sizeof(hex), "%08x", key);
+
+       lua_pushvalue(L, 1);
+       lua_pushstring(L, hex);
+       lua_pushlstring(L, val, len);
+       lua_call(L, 2, 0);
+}
+
+static int template_L_get_translations(lua_State *L) {
+       lmo_iterate(template_L_get_translations_cb, L);
+       return 0;
+}
+
+static int template_L_translate(lua_State *L) {
+       size_t len;
+       char *tr;
+       int trlen;
+       const char *key = luaL_checklstring(L, 1, &len);
+
+       switch (lmo_translate(key, len, &tr, &trlen))
+       {
+               case 0:
+                       lua_pushlstring(L, tr, trlen);
+                       return 1;
+
+               case -1:
+                       return 0;
+       }
+
+       lua_pushnil(L);
+       lua_pushstring(L, "no catalog loaded");
+       return 2;
+}
+
+static int template_L_hash(lua_State *L) {
+       size_t len;
+       const char *key = luaL_checklstring(L, 1, &len);
+       lua_pushinteger(L, sfh_hash(key, len));
+       return 1;
+}
+
+
+/* module table */
+static const luaL_reg R[] = {
+       { "parse",                              template_L_parse },
+       { "parse_string",               template_L_parse_string },
+       { "utf8",                               template_L_utf8 },
+       { "pcdata",                             template_L_pcdata },
+       { "striptags",                  template_L_striptags },
+       { "load_catalog",               template_L_load_catalog },
+       { "close_catalog",              template_L_close_catalog },
+       { "change_catalog",             template_L_change_catalog },
+       { "get_translations",           template_L_get_translations },
+       { "translate",                  template_L_translate },
+       { "hash",                               template_L_hash },
+       { NULL,                                 NULL }
+};
+
+LUALIB_API int luaopen_luci_template_parser(lua_State *L) {
+       luaL_register(L, TEMPLATE_LUALIB_META, R);
+       return 1;
+}
diff --git a/package/luci/modules/luci-base/src/template_lualib.h b/package/luci/modules/luci-base/src/template_lualib.h
new file mode 100644 (file)
index 0000000..ff7746d
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * LuCI Template - Lua library header
+ *
+ *   Copyright (C) 2009 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#ifndef _TEMPLATE_LUALIB_H_
+#define _TEMPLATE_LUALIB_H_
+
+#include "template_parser.h"
+#include "template_utils.h"
+#include "template_lmo.h"
+
+#define TEMPLATE_LUALIB_META  "template.parser"
+
+LUALIB_API int luaopen_luci_template_parser(lua_State *L);
+
+#endif
diff --git a/package/luci/modules/luci-base/src/template_parser.c b/package/luci/modules/luci-base/src/template_parser.c
new file mode 100644 (file)
index 0000000..0ef08c6
--- /dev/null
@@ -0,0 +1,419 @@
+/*
+ * LuCI Template - Parser implementation
+ *
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "template_parser.h"
+#include "template_utils.h"
+#include "template_lmo.h"
+
+
+/* leading and trailing code for different types */
+const char *gen_code[9][2] = {
+       { NULL,                                 NULL                    },
+       { "write(\"",                   "\")"                   },
+       { NULL,                                 NULL                    },
+       { "write(tostring(",    " or \"\"))"    },
+       { "include(\"",                 "\")"                   },
+       { "write(\"",                   "\")"                   },
+       { "write(\"",                   "\")"                   },
+       { NULL,                                 " "                             },
+       { NULL,                                 NULL                    },
+};
+
+/* Simple strstr() like function that takes len arguments for both haystack and needle. */
+static char *strfind(char *haystack, int hslen, const char *needle, int ndlen)
+{
+       int match = 0;
+       int i, j;
+
+       for( i = 0; i < hslen; i++ )
+       {
+               if( haystack[i] == needle[0] )
+               {
+                       match = ((ndlen == 1) || ((i + ndlen) <= hslen));
+
+                       for( j = 1; (j < ndlen) && ((i + j) < hslen); j++ )
+                       {
+                               if( haystack[i+j] != needle[j] )
+                               {
+                                       match = 0;
+                                       break;
+                               }
+                       }
+
+                       if( match )
+                               return &haystack[i];
+               }
+       }
+
+       return NULL;
+}
+
+struct template_parser * template_open(const char *file)
+{
+       struct stat s;
+       struct template_parser *parser;
+
+       if (!(parser = malloc(sizeof(*parser))))
+               goto err;
+
+       memset(parser, 0, sizeof(*parser));
+       parser->fd = -1;
+       parser->file = file;
+
+       if (stat(file, &s))
+               goto err;
+
+       if ((parser->fd = open(file, O_RDONLY)) < 0)
+               goto err;
+
+       parser->size = s.st_size;
+       parser->data = mmap(NULL, parser->size, PROT_READ, MAP_PRIVATE,
+                                               parser->fd, 0);
+
+       if (parser->data != MAP_FAILED)
+       {
+               parser->off = parser->data;
+               parser->cur_chunk.type = T_TYPE_INIT;
+               parser->cur_chunk.s    = parser->data;
+               parser->cur_chunk.e    = parser->data;
+
+               return parser;
+       }
+
+err:
+       template_close(parser);
+       return NULL;
+}
+
+struct template_parser * template_string(const char *str, uint32_t len)
+{
+       struct template_parser *parser;
+
+       if (!str) {
+               errno = EINVAL;
+               goto err;
+       }
+
+       if (!(parser = malloc(sizeof(*parser))))
+               goto err;
+
+       memset(parser, 0, sizeof(*parser));
+       parser->fd = -1;
+
+       parser->size = len;
+       parser->data = (char*)str;
+
+       parser->off = parser->data;
+       parser->cur_chunk.type = T_TYPE_INIT;
+       parser->cur_chunk.s    = parser->data;
+       parser->cur_chunk.e    = parser->data;
+
+       return parser;
+
+err:
+       template_close(parser);
+       return NULL;
+}
+
+void template_close(struct template_parser *parser)
+{
+       if (!parser)
+               return;
+
+       if (parser->gc != NULL)
+               free(parser->gc);
+
+       /* if file is not set, we were parsing a string */
+       if (parser->file) {
+               if ((parser->data != NULL) && (parser->data != MAP_FAILED))
+                       munmap(parser->data, parser->size);
+
+               if (parser->fd >= 0)
+                       close(parser->fd);
+       }
+
+       free(parser);
+}
+
+void template_text(struct template_parser *parser, const char *e)
+{
+       const char *s = parser->off;
+
+       if (s < (parser->data + parser->size))
+       {
+               if (parser->strip_after)
+               {
+                       while ((s <= e) && isspace(*s))
+                               s++;
+               }
+
+               parser->cur_chunk.type = T_TYPE_TEXT;
+       }
+       else
+       {
+               parser->cur_chunk.type = T_TYPE_EOF;
+       }
+
+       parser->cur_chunk.line = parser->line;
+       parser->cur_chunk.s = s;
+       parser->cur_chunk.e = e;
+}
+
+void template_code(struct template_parser *parser, const char *e)
+{
+       const char *s = parser->off;
+
+       parser->strip_before = 0;
+       parser->strip_after = 0;
+
+       if (*s == '-')
+       {
+               parser->strip_before = 1;
+               for (s++; (s <= e) && (*s == ' ' || *s == '\t'); s++);
+       }
+
+       if (*(e-1) == '-')
+       {
+               parser->strip_after = 1;
+               for (e--; (e >= s) && (*e == ' ' || *e == '\t'); e--);
+       }
+
+       switch (*s)
+       {
+               /* comment */
+               case '#':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_COMMENT;
+                       break;
+
+               /* include */
+               case '+':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_INCLUDE;
+                       break;
+
+               /* translate */
+               case ':':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_I18N;
+                       break;
+
+               /* translate raw */
+               case '_':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_I18N_RAW;
+                       break;
+
+               /* expr */
+               case '=':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_EXPR;
+                       break;
+
+               /* code */
+               default:
+                       parser->cur_chunk.type = T_TYPE_CODE;
+                       break;
+       }
+
+       parser->cur_chunk.line = parser->line;
+       parser->cur_chunk.s = s;
+       parser->cur_chunk.e = e;
+}
+
+static const char *
+template_format_chunk(struct template_parser *parser, size_t *sz)
+{
+       const char *s, *p;
+       const char *head, *tail;
+       struct template_chunk *c = &parser->prv_chunk;
+       struct template_buffer *buf;
+
+       *sz = 0;
+       s = parser->gc = NULL;
+
+       if (parser->strip_before && c->type == T_TYPE_TEXT)
+       {
+               while ((c->e > c->s) && isspace(*(c->e - 1)))
+                       c->e--;
+       }
+
+       /* empty chunk */
+       if (c->s == c->e)
+       {
+               if (c->type == T_TYPE_EOF)
+               {
+                       *sz = 0;
+                       s = NULL;
+               }
+               else
+               {
+                       *sz = 1;
+                       s = " ";
+               }
+       }
+
+       /* format chunk */
+       else if ((buf = buf_init(c->e - c->s)) != NULL)
+       {
+               if ((head = gen_code[c->type][0]) != NULL)
+                       buf_append(buf, head, strlen(head));
+
+               switch (c->type)
+               {
+                       case T_TYPE_TEXT:
+                               luastr_escape(buf, c->s, c->e - c->s, 0);
+                               break;
+
+                       case T_TYPE_EXPR:
+                               buf_append(buf, c->s, c->e - c->s);
+                               for (p = c->s; p < c->e; p++)
+                                       parser->line += (*p == '\n');
+                               break;
+
+                       case T_TYPE_INCLUDE:
+                               luastr_escape(buf, c->s, c->e - c->s, 0);
+                               break;
+
+                       case T_TYPE_I18N:
+                               luastr_translate(buf, c->s, c->e - c->s, 1);
+                               break;
+
+                       case T_TYPE_I18N_RAW:
+                               luastr_translate(buf, c->s, c->e - c->s, 0);
+                               break;
+
+                       case T_TYPE_CODE:
+                               buf_append(buf, c->s, c->e - c->s);
+                               for (p = c->s; p < c->e; p++)
+                                       parser->line += (*p == '\n');
+                               break;
+               }
+
+               if ((tail = gen_code[c->type][1]) != NULL)
+                       buf_append(buf, tail, strlen(tail));
+
+               *sz = buf_length(buf);
+               s = parser->gc = buf_destroy(buf);
+
+               if (!*sz)
+               {
+                       *sz = 1;
+                       s = " ";
+               }
+       }
+
+       return s;
+}
+
+const char *template_reader(lua_State *L, void *ud, size_t *sz)
+{
+       struct template_parser *parser = ud;
+       int rem = parser->size - (parser->off - parser->data);
+       char *tag;
+
+       parser->prv_chunk = parser->cur_chunk;
+
+       /* free previous string */
+       if (parser->gc)
+       {
+               free(parser->gc);
+               parser->gc = NULL;
+       }
+
+       /* before tag */
+       if (!parser->in_expr)
+       {
+               if ((tag = strfind(parser->off, rem, "<%", 2)) != NULL)
+               {
+                       template_text(parser, tag);
+                       parser->off = tag + 2;
+                       parser->in_expr = 1;
+               }
+               else
+               {
+                       template_text(parser, parser->data + parser->size);
+                       parser->off = parser->data + parser->size;
+               }
+       }
+
+       /* inside tag */
+       else
+       {
+               if ((tag = strfind(parser->off, rem, "%>", 2)) != NULL)
+               {
+                       template_code(parser, tag);
+                       parser->off = tag + 2;
+                       parser->in_expr = 0;
+               }
+               else
+               {
+                       /* unexpected EOF */
+                       template_code(parser, parser->data + parser->size);
+
+                       *sz = 1;
+                       return "\033";
+               }
+       }
+
+       return template_format_chunk(parser, sz);
+}
+
+int template_error(lua_State *L, struct template_parser *parser)
+{
+       const char *err = luaL_checkstring(L, -1);
+       const char *off = parser->prv_chunk.s;
+       const char *ptr;
+       char msg[1024];
+       int line = 0;
+       int chunkline = 0;
+
+       if ((ptr = strfind((char *)err, strlen(err), "]:", 2)) != NULL)
+       {
+               chunkline = atoi(ptr + 2) - parser->prv_chunk.line;
+
+               while (*ptr)
+               {
+                       if (*ptr++ == ' ')
+                       {
+                               err = ptr;
+                               break;
+                       }
+               }
+       }
+
+       if (strfind((char *)err, strlen(err), "'char(27)'", 10) != NULL)
+       {
+               off = parser->data + parser->size;
+               err = "'%>' expected before end of file";
+               chunkline = 0;
+       }
+
+       for (ptr = parser->data; ptr < off; ptr++)
+               if (*ptr == '\n')
+                       line++;
+
+       snprintf(msg, sizeof(msg), "Syntax error in %s:%d: %s",
+                        parser->file ? parser->file : "[string]", line + chunkline, err ? err : "(unknown error)");
+
+       lua_pushnil(L);
+       lua_pushinteger(L, line + chunkline);
+       lua_pushstring(L, msg);
+
+       return 3;
+}
diff --git a/package/luci/modules/luci-base/src/template_parser.h b/package/luci/modules/luci-base/src/template_parser.h
new file mode 100644 (file)
index 0000000..2415e87
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * LuCI Template - Parser header
+ *
+ *   Copyright (C) 2009 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#ifndef _TEMPLATE_PARSER_H_
+#define _TEMPLATE_PARSER_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+
+
+/* code types */
+#define T_TYPE_INIT                    0
+#define T_TYPE_TEXT                    1
+#define T_TYPE_COMMENT         2
+#define T_TYPE_EXPR                    3
+#define T_TYPE_INCLUDE                 4
+#define T_TYPE_I18N                    5
+#define T_TYPE_I18N_RAW                6
+#define T_TYPE_CODE                    7
+#define T_TYPE_EOF                     8
+
+
+struct template_chunk {
+       const char *s;
+       const char *e;
+       int type;
+       int line;
+};
+
+/* parser state */
+struct template_parser {
+       int fd;
+       uint32_t size;
+       char *data;
+       char *off;
+       char *gc;
+       int line;
+       int in_expr;
+       int strip_before;
+       int strip_after;
+       struct template_chunk prv_chunk;
+       struct template_chunk cur_chunk;
+       const char *file;
+};
+
+struct template_parser * template_open(const char *file);
+struct template_parser * template_string(const char *str, uint32_t len);
+void template_close(struct template_parser *parser);
+
+const char *template_reader(lua_State *L, void *ud, size_t *sz);
+int template_error(lua_State *L, struct template_parser *parser);
+
+#endif
diff --git a/package/luci/modules/luci-base/src/template_utils.c b/package/luci/modules/luci-base/src/template_utils.c
new file mode 100644 (file)
index 0000000..0411932
--- /dev/null
@@ -0,0 +1,484 @@
+/*
+ * LuCI Template - Utility functions
+ *
+ *   Copyright (C) 2010 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#include "template_utils.h"
+#include "template_lmo.h"
+
+/* initialize a buffer object */
+struct template_buffer * buf_init(int size)
+{
+       struct template_buffer *buf;
+
+       if (size <= 0)
+               size = 1024;
+
+       buf = (struct template_buffer *)malloc(sizeof(struct template_buffer));
+
+       if (buf != NULL)
+       {
+               buf->fill = 0;
+               buf->size = size;
+               buf->data = malloc(buf->size);
+
+               if (buf->data != NULL)
+               {
+                       buf->dptr = buf->data;
+                       buf->data[0] = 0;
+
+                       return buf;
+               }
+
+               free(buf);
+       }
+
+       return NULL;
+}
+
+/* grow buffer */
+int buf_grow(struct template_buffer *buf, int size)
+{
+       unsigned int off = (buf->dptr - buf->data);
+       char *data;
+
+       if (size <= 0)
+               size = 1024;
+
+       data = realloc(buf->data, buf->size + size);
+
+       if (data != NULL)
+       {
+               buf->data  = data;
+               buf->dptr  = data + off;
+               buf->size += size;
+
+               return buf->size;
+       }
+
+       return 0;
+}
+
+/* put one char into buffer object */
+int buf_putchar(struct template_buffer *buf, char c)
+{
+       if( ((buf->fill + 1) >= buf->size) && !buf_grow(buf, 0) )
+               return 0;
+
+       *(buf->dptr++) = c;
+       *(buf->dptr) = 0;
+
+       buf->fill++;
+       return 1;
+}
+
+/* append data to buffer */
+int buf_append(struct template_buffer *buf, const char *s, int len)
+{
+       if ((buf->fill + len + 1) >= buf->size)
+       {
+               if (!buf_grow(buf, len + 1))
+                       return 0;
+       }
+
+       memcpy(buf->dptr, s, len);
+       buf->fill += len;
+       buf->dptr += len;
+
+       *(buf->dptr) = 0;
+
+       return len;
+}
+
+/* read buffer length */
+int buf_length(struct template_buffer *buf)
+{
+       return buf->fill;
+}
+
+/* destroy buffer object and return pointer to data */
+char * buf_destroy(struct template_buffer *buf)
+{
+       char *data = buf->data;
+
+       free(buf);
+       return data;
+}
+
+
+/* calculate the number of expected continuation chars */
+static inline int mb_num_chars(unsigned char c)
+{
+       if ((c & 0xE0) == 0xC0)
+               return 2;
+       else if ((c & 0xF0) == 0xE0)
+               return 3;
+       else if ((c & 0xF8) == 0xF0)
+               return 4;
+       else if ((c & 0xFC) == 0xF8)
+               return 5;
+       else if ((c & 0xFE) == 0xFC)
+               return 6;
+
+       return 1;
+}
+
+/* test whether the given byte is a valid continuation char */
+static inline int mb_is_cont(unsigned char c)
+{
+       return ((c >= 0x80) && (c <= 0xBF));
+}
+
+/* test whether the byte sequence at the given pointer with the given
+ * length is the shortest possible representation of the code point */
+static inline int mb_is_shortest(unsigned char *s, int n)
+{
+       switch (n)
+       {
+               case 2:
+                       /* 1100000x (10xxxxxx) */
+                       return !(((*s >> 1) == 0x60) &&
+                                        ((*(s+1) >> 6) == 0x02));
+
+               case 3:
+                       /* 11100000 100xxxxx (10xxxxxx) */
+                       return !((*s == 0xE0) &&
+                                        ((*(s+1) >> 5) == 0x04) &&
+                                        ((*(s+2) >> 6) == 0x02));
+
+               case 4:
+                       /* 11110000 1000xxxx (10xxxxxx 10xxxxxx) */
+                       return !((*s == 0xF0) &&
+                                        ((*(s+1) >> 4) == 0x08) &&
+                                        ((*(s+2) >> 6) == 0x02) &&
+                                        ((*(s+3) >> 6) == 0x02));
+
+               case 5:
+                       /* 11111000 10000xxx (10xxxxxx 10xxxxxx 10xxxxxx) */
+                       return !((*s == 0xF8) &&
+                                        ((*(s+1) >> 3) == 0x10) &&
+                                        ((*(s+2) >> 6) == 0x02) &&
+                                        ((*(s+3) >> 6) == 0x02) &&
+                                        ((*(s+4) >> 6) == 0x02));
+
+               case 6:
+                       /* 11111100 100000xx (10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx) */
+                       return !((*s == 0xF8) &&
+                                        ((*(s+1) >> 2) == 0x20) &&
+                                        ((*(s+2) >> 6) == 0x02) &&
+                                        ((*(s+3) >> 6) == 0x02) &&
+                                        ((*(s+4) >> 6) == 0x02) &&
+                                        ((*(s+5) >> 6) == 0x02));
+       }
+
+       return 1;
+}
+
+/* test whether the byte sequence at the given pointer with the given
+ * length is an UTF-16 surrogate */
+static inline int mb_is_surrogate(unsigned char *s, int n)
+{
+       return ((n == 3) && (*s == 0xED) && (*(s+1) >= 0xA0) && (*(s+1) <= 0xBF));
+}
+
+/* test whether the byte sequence at the given pointer with the given
+ * length is an illegal UTF-8 code point */
+static inline int mb_is_illegal(unsigned char *s, int n)
+{
+       return ((n == 3) && (*s == 0xEF) && (*(s+1) == 0xBF) &&
+                       (*(s+2) >= 0xBE) && (*(s+2) <= 0xBF));
+}
+
+
+/* scan given source string, validate UTF-8 sequence and store result
+ * in given buffer object */
+static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf)
+{
+       unsigned char *ptr = *s;
+       unsigned int o = 0, v, n;
+
+       /* ascii byte without null */
+       if ((*(ptr+0) >= 0x01) && (*(ptr+0) <= 0x7F))
+       {
+               if (!buf_putchar(buf, *ptr++))
+                       return 0;
+
+               o = 1;
+       }
+
+       /* multi byte sequence */
+       else if ((n = mb_num_chars(*ptr)) > 1)
+       {
+               /* count valid chars */
+               for (v = 1; (v <= n) && ((o+v) < l) && mb_is_cont(*(ptr+v)); v++);
+
+               switch (n)
+               {
+                       case 6:
+                       case 5:
+                               /* five and six byte sequences are always invalid */
+                               if (!buf_putchar(buf, '?'))
+                                       return 0;
+
+                               break;
+
+                       default:
+                               /* if the number of valid continuation bytes matches the
+                                * expected number and if the sequence is legal, copy
+                                * the bytes to the destination buffer */
+                               if ((v == n) && mb_is_shortest(ptr, n) &&
+                                       !mb_is_surrogate(ptr, n) && !mb_is_illegal(ptr, n))
+                               {
+                                       /* copy sequence */
+                                       if (!buf_append(buf, (char *)ptr, n))
+                                               return 0;
+                               }
+
+                               /* the found sequence is illegal, skip it */
+                               else
+                               {
+                                       /* invalid sequence */
+                                       if (!buf_putchar(buf, '?'))
+                                               return 0;
+                               }
+
+                               break;
+               }
+
+               /* advance beyond the last found valid continuation char */
+               o = v;
+               ptr += v;
+       }
+
+       /* invalid byte (0x00) */
+       else
+       {
+               if (!buf_putchar(buf, '?')) /* or 0xEF, 0xBF, 0xBD */
+                       return 0;
+
+               o = 1;
+               ptr++;
+       }
+
+       *s = ptr;
+       return o;
+}
+
+/* sanitize given string and replace all invalid UTF-8 sequences with "?" */
+char * utf8(const char *s, unsigned int l)
+{
+       struct template_buffer *buf = buf_init(l);
+       unsigned char *ptr = (unsigned char *)s;
+       unsigned int v, o;
+
+       if (!buf)
+               return NULL;
+
+       for (o = 0; o < l; o++)
+       {
+               /* ascii char */
+               if ((*ptr >= 0x01) && (*ptr <= 0x7F))
+               {
+                       if (!buf_putchar(buf, (char)*ptr++))
+                               break;
+               }
+
+               /* invalid byte or multi byte sequence */
+               else
+               {
+                       if (!(v = _validate_utf8(&ptr, l - o, buf)))
+                               break;
+
+                       o += (v - 1);
+               }
+       }
+
+       return buf_destroy(buf);
+}
+
+/* Sanitize given string and strip all invalid XML bytes
+ * Validate UTF-8 sequences
+ * Escape XML control chars */
+char * pcdata(const char *s, unsigned int l)
+{
+       struct template_buffer *buf = buf_init(l);
+       unsigned char *ptr = (unsigned char *)s;
+       unsigned int o, v;
+       char esq[8];
+       int esl;
+
+       if (!buf)
+               return NULL;
+
+       for (o = 0; o < l; o++)
+       {
+               /* Invalid XML bytes */
+               if (((*ptr >= 0x00) && (*ptr <= 0x08)) ||
+                   ((*ptr >= 0x0B) && (*ptr <= 0x0C)) ||
+                   ((*ptr >= 0x0E) && (*ptr <= 0x1F)) ||
+                   (*ptr == 0x7F))
+               {
+                       ptr++;
+               }
+
+               /* Escapes */
+               else if ((*ptr == 0x26) ||
+                        (*ptr == 0x27) ||
+                        (*ptr == 0x22) ||
+                        (*ptr == 0x3C) ||
+                        (*ptr == 0x3E))
+               {
+                       esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
+
+                       if (!buf_append(buf, esq, esl))
+                               break;
+
+                       ptr++;
+               }
+
+               /* ascii char */
+               else if (*ptr <= 0x7F)
+               {
+                       buf_putchar(buf, (char)*ptr++);
+               }
+
+               /* multi byte sequence */
+               else
+               {
+                       if (!(v = _validate_utf8(&ptr, l - o, buf)))
+                               break;
+
+                       o += (v - 1);
+               }
+       }
+
+       return buf_destroy(buf);
+}
+
+char * striptags(const char *s, unsigned int l)
+{
+       struct template_buffer *buf = buf_init(l);
+       unsigned char *ptr = (unsigned char *)s;
+       unsigned char *end = ptr + l;
+       unsigned char *tag;
+       unsigned char prev;
+       char esq[8];
+       int esl;
+
+       for (prev = ' '; ptr < end; ptr++)
+       {
+               if ((*ptr == '<') && ((ptr + 2) < end) &&
+                       ((*(ptr + 1) == '/') || isalpha(*(ptr + 1))))
+               {
+                       for (tag = ptr; tag < end; tag++)
+                       {
+                               if (*tag == '>')
+                               {
+                                       if (!isspace(prev))
+                                               buf_putchar(buf, ' ');
+
+                                       ptr = tag;
+                                       prev = ' ';
+                                       break;
+                               }
+                       }
+               }
+               else if (isspace(*ptr))
+               {
+                       if (!isspace(prev))
+                               buf_putchar(buf, *ptr);
+
+                       prev = *ptr;
+               }
+               else
+               {
+                       switch(*ptr)
+                       {
+                               case '"':
+                               case '\'':
+                               case '<':
+                               case '>':
+                               case '&':
+                                       esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
+                                       buf_append(buf, esq, esl);
+                                       break;
+
+                               default:
+                                       buf_putchar(buf, *ptr);
+                                       break;
+                       }
+
+                       prev = *ptr;
+               }
+       }
+
+       return buf_destroy(buf);
+}
+
+void luastr_escape(struct template_buffer *out, const char *s, unsigned int l,
+                                  int escape_xml)
+{
+       int esl;
+       char esq[8];
+       char *ptr;
+
+       for (ptr = (char *)s; ptr < (s + l); ptr++)
+       {
+               switch (*ptr)
+               {
+               case '\\':
+                       buf_append(out, "\\\\", 2);
+                       break;
+
+               case '"':
+                       if (escape_xml)
+                               buf_append(out, "&#34;", 5);
+                       else
+                               buf_append(out, "\\\"", 2);
+                       break;
+
+               case '\n':
+                       buf_append(out, "\\n", 2);
+                       break;
+
+               case '\'':
+               case '&':
+               case '<':
+               case '>':
+                       if (escape_xml)
+                       {
+                               esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
+                               buf_append(out, esq, esl);
+                               break;
+                       }
+
+               default:
+                       buf_putchar(out, *ptr);
+               }
+       }
+}
+
+void luastr_translate(struct template_buffer *out, const char *s, unsigned int l,
+                                         int escape_xml)
+{
+       char *tr;
+       int trlen;
+
+       if (!lmo_translate(s, l, &tr, &trlen))
+               luastr_escape(out, tr, trlen, escape_xml);
+       else
+               luastr_escape(out, s, l, escape_xml);
+}
diff --git a/package/luci/modules/luci-base/src/template_utils.h b/package/luci/modules/luci-base/src/template_utils.h
new file mode 100644 (file)
index 0000000..32a79f9
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * LuCI Template - Utility header
+ *
+ *   Copyright (C) 2010-2012 Jo-Philipp Wich <jow@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
+ *
+ *  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.
+ */
+
+#ifndef _TEMPLATE_UTILS_H_
+#define _TEMPLATE_UTILS_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+
+/* buffer object */
+struct template_buffer {
+       char *data;
+       char *dptr;
+       unsigned int size;
+       unsigned int fill;
+};
+
+struct template_buffer * buf_init(int size);
+int buf_grow(struct template_buffer *buf, int size);
+int buf_putchar(struct template_buffer *buf, char c);
+int buf_append(struct template_buffer *buf, const char *s, int len);
+int buf_length(struct template_buffer *buf);
+char * buf_destroy(struct template_buffer *buf);
+
+char * utf8(const char *s, unsigned int l);
+char * pcdata(const char *s, unsigned int l);
+char * striptags(const char *s, unsigned int l);
+
+void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);
+void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);
+
+#endif
diff --git a/package/luci/modules/luci-mod-admin-full/Makefile b/package/luci/modules/luci-mod-admin-full/Makefile
new file mode 100644 (file)
index 0000000..b376b35
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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:=LuCI Administration - full-featured for full control
+LUCI_DEPENDS:=+luci-base +luci-mod-status +luci-mod-system +luci-mod-network
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua
new file mode 100644 (file)
index 0000000..2572615
--- /dev/null
@@ -0,0 +1,9 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.filebrowser", package.seeall)
+
+function index()
+       entry( {"admin", "filebrowser"}, template("cbi/filebrowser") ).leaf = true
+end
diff --git a/package/luci/modules/luci-mod-admin-mini/Makefile b/package/luci/modules/luci-mod-admin-mini/Makefile
new file mode 100644 (file)
index 0000000..5da4caf
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# 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:=LuCI Essentials - stripped down and user-friendly
+LUCI_DEPENDS:=+luci-base @BROKEN
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua
new file mode 100644 (file)
index 0000000..dd25f2c
--- /dev/null
@@ -0,0 +1,39 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.mini.index", package.seeall)
+
+function index()
+       local root = node()
+       if not root.lock then
+               root.target = alias("mini")
+               root.index = true
+       end
+       
+       entry({"about"}, template("about"))
+       
+       local page   = entry({"mini"}, alias("mini", "index"), _("Essentials"), 10)
+       page.sysauth = "root"
+       page.sysauth_authenticator = "htmlauth"
+       page.index = true
+       
+       entry({"mini", "index"}, alias("mini", "index", "index"), _("Overview"), 10).index = true
+       entry({"mini", "index", "index"}, form("mini/index"), _("General"), 1).ignoreindex = true
+       entry({"mini", "index", "luci"}, cbi("mini/luci", {autoapply=true}), _("Settings"), 10)
+       entry({"mini", "index", "logout"}, call("action_logout"), _("Logout"))
+end
+
+function action_logout()
+       local dsp = require "luci.dispatcher"
+       local utl = require "luci.util"
+       if dsp.context.authsession then
+               utl.ubus("session", "destroy", {
+                       ubus_rpc_session = dsp.context.authsession
+               })
+               dsp.context.urltoken.stok = nil
+       end
+
+       luci.http.header("Set-Cookie", "sysauth=; path=" .. dsp.build_url())
+       luci.http.redirect(luci.dispatcher.build_url())
+end
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua
new file mode 100644 (file)
index 0000000..92506e5
--- /dev/null
@@ -0,0 +1,12 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.mini.network", package.seeall)
+
+function index()
+       entry({"mini", "network"}, alias("mini", "network", "index"), _("Network"), 20).index = true
+       entry({"mini", "network", "index"}, cbi("mini/network", {autoapply=true}), _("General"), 1)
+       entry({"mini", "network", "wifi"}, cbi("mini/wifi", {autoapply=true}), _("Wireless"), 10)
+       entry({"mini", "network", "dhcp"}, cbi("mini/dhcp", {autoapply=true}), _("DHCP"), 20)
+end
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua
new file mode 100644 (file)
index 0000000..74a5ae4
--- /dev/null
@@ -0,0 +1,235 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.mini.system", package.seeall)
+
+function index()
+       entry({"mini", "system"}, alias("mini", "system", "index"), _("System"), 40).index = true
+       entry({"mini", "system", "index"}, cbi("mini/system", {autoapply=true}), _("General"), 1)
+       entry({"mini", "system", "passwd"}, form("mini/passwd"), _("Admin Password"), 10)
+       entry({"mini", "system", "backup"}, call("action_backup"), _("Backup / Restore"), 80)
+       entry({"mini", "system", "upgrade"}, call("action_upgrade"), _("Flash Firmware"), 90)
+       entry({"mini", "system", "reboot"}, call("action_reboot"), _("Reboot"), 100)
+end
+
+function action_backup()
+       local reset_avail = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0
+       local restore_cmd = "gunzip | tar -xC/ >/dev/null 2>&1"
+       local backup_cmd  = "tar -c %s | gzip 2>/dev/null"
+       
+       local restore_fpi 
+       luci.http.setfilehandler(
+               function(meta, chunk, eof)
+                       if not restore_fpi then
+                               restore_fpi = io.popen(restore_cmd, "w")
+                       end
+                       if chunk then
+                               restore_fpi:write(chunk)
+                       end
+                       if eof then
+                               restore_fpi:close()
+                       end
+               end
+       )
+                 
+       local upload = luci.http.formvalue("archive")
+       local backup = luci.http.formvalue("backup")
+       local reset  = reset_avail and luci.http.formvalue("reset")
+       
+       if upload and #upload > 0 then
+               luci.template.render("mini/applyreboot")
+               luci.sys.reboot()
+       elseif backup then
+               local reader = ltn12_popen(backup_cmd:format(_keep_pattern()))
+               luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' % {
+                       luci.sys.hostname(), os.date("%Y-%m-%d")})
+               luci.http.prepare_content("application/x-targz")
+               luci.ltn12.pump.all(reader, luci.http.write)
+       elseif reset then
+               luci.template.render("mini/applyreboot")
+               luci.util.exec("mtd -r erase rootfs_data")
+       else
+               luci.template.render("mini/backup", {reset_avail = reset_avail})
+       end
+end
+
+function action_reboot()
+       local reboot = luci.http.formvalue("reboot")
+       luci.template.render("mini/reboot", {reboot=reboot})
+       if reboot then
+               luci.sys.reboot()
+       end
+end
+
+function action_upgrade()
+       require("luci.model.uci")
+
+       local tmpfile = "/tmp/firmware.img"
+       
+       local function image_supported()
+               -- XXX: yay...
+               return ( 0 == os.execute(
+                       ". /lib/functions.sh; " ..
+                       "include /lib/upgrade; " ..
+                       "platform_check_image %q >/dev/null"
+                               % tmpfile
+               ) )
+       end
+       
+       local function image_checksum()
+               return (luci.sys.exec("md5sum %q" % tmpfile):match("^([^%s]+)"))
+       end
+       
+       local function storage_size()
+               local size = 0
+               if nixio.fs.access("/proc/mtd") then
+                       for l in io.lines("/proc/mtd") do
+                               local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"')
+                               if n == "linux" then
+                                       size = tonumber(s, 16)
+                                       break
+                               end
+                       end
+               elseif nixio.fs.access("/proc/partitions") then
+                       for l in io.lines("/proc/partitions") do
+                               local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)')
+                               if b and n and not n:match('[0-9]') then
+                                       size = tonumber(b) * 1024
+                                       break
+                               end
+                       end
+               end
+               return size
+       end
+
+
+       -- Install upload handler
+       local file
+       luci.http.setfilehandler(
+               function(meta, chunk, eof)
+                       if not nixio.fs.access(tmpfile) and not file and chunk and #chunk > 0 then
+                               file = io.open(tmpfile, "w")
+                       end
+                       if file and chunk then
+                               file:write(chunk)
+                       end
+                       if file and eof then
+                               file:close()
+                       end
+               end
+       )
+
+
+       -- Determine state
+       local keep_avail   = true
+       local step         = tonumber(luci.http.formvalue("step") or 1)
+       local has_image    = nixio.fs.access(tmpfile)
+       local has_support  = image_supported()
+       local has_platform = nixio.fs.access("/lib/upgrade/platform.sh")
+       local has_upload   = luci.http.formvalue("image")
+       
+       -- This does the actual flashing which is invoked inside an iframe
+       -- so don't produce meaningful errors here because the the 
+       -- previous pages should arrange the stuff as required.
+       if step == 4 then
+               if has_platform and has_image and has_support then
+                       -- Mimetype text/plain
+                       luci.http.prepare_content("text/plain")
+                       luci.http.write("Starting luci-flash...\n")
+
+                       -- Now invoke sysupgrade
+                       local keepcfg = keep_avail and luci.http.formvalue("keepcfg") == "1"
+                       local flash = ltn12_popen("/sbin/luci-flash %s %q" %{
+                               keepcfg and "-k %q" % _keep_pattern() or "", tmpfile
+                       })
+
+                       luci.ltn12.pump.all(flash, luci.http.write)
+
+                       -- Make sure the device is rebooted
+                       luci.sys.reboot()
+               end
+
+
+       --
+       -- This is step 1-3, which does the user interaction and
+       -- image upload.
+       --
+
+       -- Step 1: file upload, error on unsupported image format
+       elseif not has_image or not has_support or step == 1 then
+               -- If there is an image but user has requested step 1
+               -- or type is not supported, then remove it.
+               if has_image then
+                       nixio.fs.unlink(tmpfile)
+               end
+                       
+               luci.template.render("mini/upgrade", {
+                       step=1,
+                       bad_image=(has_image and not has_support or false),
+                       keepavail=keep_avail,
+                       supported=has_platform
+               } )
+
+       -- Step 2: present uploaded file, show checksum, confirmation
+       elseif step == 2 then
+               luci.template.render("mini/upgrade", {
+                       step=2,
+                       checksum=image_checksum(),
+                       filesize=nixio.fs.stat(tmpfile).size,
+                       flashsize=storage_size(),
+                       keepconfig=(keep_avail and luci.http.formvalue("keepcfg") == "1")
+               } )
+       
+       -- Step 3: load iframe which calls the actual flash procedure
+       elseif step == 3 then
+               luci.template.render("mini/upgrade", {
+                       step=3,
+                       keepconfig=(keep_avail and luci.http.formvalue("keepcfg") == "1")
+               } )
+       end     
+end
+
+function _keep_pattern()
+       local kpattern = ""
+       local files = luci.model.uci.cursor():get_all("luci", "flash_keep")
+       if files then
+               kpattern = ""
+               for k, v in pairs(files) do
+                       if k:sub(1,1) ~= "." and nixio.fs.glob(v)() then
+                               kpattern = kpattern .. " " ..  v
+                       end
+               end
+       end
+       return kpattern
+end
+
+function ltn12_popen(command)
+
+       local fdi, fdo = nixio.pipe()
+       local pid = nixio.fork()
+
+       if pid > 0 then
+               fdo:close()
+               local close
+               return function()
+                       local buffer = fdi:read(2048)
+                       local wpid, stat = nixio.waitpid(pid, "nohang")
+                       if not close and wpid and stat == "exited" then
+                               close = true
+                       end
+
+                       if buffer and #buffer > 0 then
+                               return buffer
+                       elseif close then
+                               fdi:close()
+                               return nil
+                       end
+               end
+       elseif pid == 0 then
+               nixio.dup(fdo, nixio.stdout)
+               fdi:close()
+               fdo:close()
+               nixio.exec("/bin/sh", "-c", command)
+       end
+end
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua
new file mode 100644 (file)
index 0000000..bcc26cd
--- /dev/null
@@ -0,0 +1,97 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local uci = require "luci.model.uci".cursor()
+local sys = require "luci.sys"
+local wa  = require "luci.tools.webadmin"
+local fs  = require "nixio.fs"
+
+m = Map("dhcp", "DHCP")
+
+s = m:section(TypedSection, "dhcp", "DHCP-Server")
+s.anonymous = true
+s.addremove = false
+s.dynamic = false
+
+s:depends("interface", "lan")
+
+enable = s:option(ListValue, "ignore", translate("enable"), "")
+enable:value(0, translate("enable"))
+enable:value(1, translate("disable"))
+
+start = s:option(Value, "start", translate("First leased address"))
+start.rmempty = true
+start:depends("ignore", "0")
+
+
+limit = s:option(Value, "limit", translate("Number of leased addresses"), "")
+limit:depends("ignore", "0")
+
+function limit.cfgvalue(self, section)
+       local value = Value.cfgvalue(self, section)
+       
+       if value then
+               return tonumber(value) + 1
+       end 
+end
+
+function limit.write(self, section, value)
+       value = tonumber(value) - 1
+       return Value.write(self, section, value) 
+end
+
+limit.rmempty = true
+
+time = s:option(Value, "leasetime")
+time:depends("ignore", "0")
+time.rmempty = true
+
+
+local leasefn, leasefp, leases
+uci:foreach("dhcp", "dnsmasq",
+ function(section)
+       leasefn = section.leasefile
+ end
+) 
+local leasefp = leasefn and fs.access(leasefn) and io.lines(leasefn)
+if leasefp then
+       leases = {}
+       for lease in leasefp do
+               table.insert(leases, luci.util.split(lease, " "))
+       end
+end
+
+if leases then
+       v = m:section(Table, leases, translate("Active Leases"))
+       name = v:option(DummyValue, 4, translate("Hostname"))
+       function name.cfgvalue(self, ...)
+               local value = DummyValue.cfgvalue(self, ...)
+               return (value == "*") and "?" or value
+       end
+       ip = v:option(DummyValue, 3, translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+       mac  = v:option(DummyValue, 2, translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address"))
+       ltime = v:option(DummyValue, 1, translate("Leasetime remaining"))
+       function ltime.cfgvalue(self, ...)
+               local value = DummyValue.cfgvalue(self, ...)
+               return wa.date_format(os.difftime(tonumber(value), os.time()))
+       end
+end
+
+s2 = m:section(TypedSection, "host", translate("Static Leases"))
+s2.addremove = true
+s2.anonymous = true
+s2.template = "cbi/tblsection"
+
+name = s2:option(Value, "name", translate("Hostname"))
+mac = s2:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address"))
+ip = s2:option(Value, "ip", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+
+sys.host_hints(function(m, v4, v6, name)
+       if m and v4 then
+               ip:value(v4)
+               mac:value(m, "%s (%s)" %{ m, name or v4 })
+       end
+end)
+
+return m
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua
new file mode 100644 (file)
index 0000000..9ecee1a
--- /dev/null
@@ -0,0 +1,4 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+return Template("mini/index")
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua
new file mode 100644 (file)
index 0000000..a1ef0fe
--- /dev/null
@@ -0,0 +1,37 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "luci.config"
+local fs = require "nixio.fs"
+
+m = Map("luci", translate("Web <abbr title=\"User Interface\">UI</abbr>"), translate("Here you can customize the settings and the functionality of <abbr title=\"Lua Configuration Interface\">LuCI</abbr>."))
+
+-- force reload of global luci config namespace to reflect the changes
+function m.commit_handler(self)
+       package.loaded["luci.config"] = nil
+       require "luci.config"
+end
+
+
+c = m:section(NamedSection, "main", "core", translate("General"))
+
+l = c:option(ListValue, "lang", translate("Language"))
+l:value("auto")
+
+local i18ndir = luci.i18n.i18ndir .. "base."
+for k, v in luci.util.kspairs(luci.config.languages) do
+       local file = i18ndir .. k:gsub("_", "-")
+       if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then
+               l:value(k, v)
+       end
+end
+
+t = c:option(ListValue, "mediaurlbase", translate("Design"))
+for k, v in pairs(luci.config.themes) do
+       if k:sub(1, 1) ~= "." then
+               t:value(v, k)
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
new file mode 100644 (file)
index 0000000..7bc4df8
--- /dev/null
@@ -0,0 +1,219 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local wa  = require "luci.tools.webadmin"
+local sys = require "luci.sys"
+local fs  = require "nixio.fs"
+local nx  = require "nixio"
+
+local has_pptp  = fs.access("/usr/sbin/pptp")
+local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")()
+
+local network = luci.model.uci.cursor_state():get_all("network")
+
+local netstat = {}
+local ifaces = {}
+
+local k, v
+for k, v in ipairs(nx.getifaddrs()) do
+       if v.family == "packet" then
+               local d = v.data
+               d[1] = d.rx_bytes
+               d[2] = d.rx_packets
+               d[3] = d.rx_errors
+               d[4] = d.rx_dropped
+               d[5] = 0
+               d[6] = 0
+               d[7] = 0
+               d[8] = d.multicast
+               d[9] = d.tx_bytes
+               d[10] = d.tx_packets
+               d[11] = d.tx_errors
+               d[12] = d.tx_dropped
+               d[13] = 0
+               d[14] = d.collisions
+               d[15] = 0
+               d[16] = 0
+               netstat[v.name] = d
+       end
+end
+
+for k, v in pairs(network) do
+       if v[".type"] == "interface" and k ~= "loopback" then
+               table.insert(ifaces, v)
+       end
+end
+
+m = Map("network", translate("Network"))
+s = m:section(Table, ifaces, translate("Status"))
+s.parse = function() end
+
+s:option(DummyValue, ".name", translate("Network"))
+
+hwaddr = s:option(DummyValue, "_hwaddr",
+ translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address"), translate("Hardware Address"))
+function hwaddr.cfgvalue(self, section)
+       local ix = self.map:get(section, "ifname") or ""
+       local mac = fs.readfile("/sys/class/net/" .. ix .. "/address")
+
+       if not mac then
+               mac = luci.util.exec("ifconfig " .. ix)
+               mac = mac and mac:match(" ([A-F0-9:]+)%s*\n")
+       end
+
+       if mac and #mac > 0 then
+               return mac:upper()
+       end
+
+       return "?"
+end
+
+
+s:option(DummyValue, "ipaddr", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+
+s:option(DummyValue, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"))
+
+
+txrx = s:option(DummyValue, "_txrx",
+ translate("Traffic"), translate("transmitted / received"))
+
+function txrx.cfgvalue(self, section)
+       local ix = self.map:get(section, "ifname")
+
+       local rx = netstat and netstat[ix] and netstat[ix][1]
+       rx = rx and wa.byte_format(tonumber(rx)) or "-"
+
+       local tx = netstat and netstat[ix] and netstat[ix][9]
+       tx = tx and wa.byte_format(tonumber(tx)) or "-"
+
+       return string.format("%s / %s", tx, rx)
+end
+
+errors = s:option(DummyValue, "_err",
+ translate("Errors"), translate("TX / RX"))
+
+function errors.cfgvalue(self, section)
+       local ix = self.map:get(section, "ifname")
+
+       local rx = netstat and netstat[ix] and netstat[ix][3]
+       local tx = netstat and netstat[ix] and netstat[ix][11]
+
+       rx = rx and tostring(rx) or "-"
+       tx = tx and tostring(tx) or "-"
+
+       return string.format("%s / %s", tx, rx)
+end
+
+
+
+s = m:section(NamedSection, "lan", "interface", translate("Local Network"))
+s.addremove = false
+s:option(Value, "ipaddr", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+
+nm = s:option(Value, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"))
+nm:value("255.255.255.0")
+nm:value("255.255.0.0")
+nm:value("255.0.0.0")
+
+gw = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway") .. translate(" (optional)"))
+gw.rmempty = true
+dns = s:option(Value, "dns", translate("<abbr title=\"Domain Name System\">DNS</abbr>-Server") .. translate(" (optional)"))
+dns.rmempty = true
+
+
+s = m:section(NamedSection, "wan", "interface", translate("Internet Connection"))
+s.addremove = false
+p = s:option(ListValue, "proto", translate("Protocol"))
+p.override_values = true
+p:value("none", "disabled")
+p:value("static", translate("manual"))
+p:value("dhcp", translate("automatic"))
+if has_pppoe then p:value("pppoe", "PPPoE") end
+if has_pptp  then p:value("pptp",  "PPTP")  end
+
+function p.write(self, section, value)
+       -- Always set defaultroute to PPP and use remote dns
+       -- Overwrite a bad variable behaviour in OpenWrt
+       if value == "pptp" or value == "pppoe" then
+               self.map:set(section, "peerdns", "1")
+               self.map:set(section, "defaultroute", "1")
+       end
+       return ListValue.write(self, section, value)
+end
+
+if not ( has_pppoe and has_pptp ) then
+       p.description = translate("You need to install \"ppp-mod-pppoe\" for PPPoE or \"pptp\" for PPtP support")
+end
+
+
+ip = s:option(Value, "ipaddr", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+ip:depends("proto", "static")
+
+nm = s:option(Value, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"))
+nm:depends("proto", "static")
+
+gw = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"))
+gw:depends("proto", "static")
+gw.rmempty = true
+
+dns = s:option(Value, "dns", translate("<abbr title=\"Domain Name System\">DNS</abbr>-Server"))
+dns:depends("proto", "static")
+dns.rmempty = true
+
+usr = s:option(Value, "username", translate("Username"))
+usr:depends("proto", "pppoe")
+usr:depends("proto", "pptp")
+
+pwd = s:option(Value, "password", translate("Password"))
+pwd.password = true
+pwd:depends("proto", "pppoe")
+pwd:depends("proto", "pptp")
+
+
+-- Allow user to set MSS correction here if the UCI firewall is installed
+-- This cures some cancer for providers with pre-war routers
+if fs.access("/etc/config/firewall") then
+       mssfix = s:option(Flag, "_mssfix",
+               translate("Clamp Segment Size"), translate("Fixes problems with unreachable websites, submitting forms or other unexpected behaviour for some ISPs."))
+       mssfix.rmempty = false
+
+       function mssfix.cfgvalue(self)
+               local value
+               m.uci:foreach("firewall", "forwarding", function(s)
+                       if s.src == "lan" and s.dest == "wan" then
+                               value = s.mtu_fix
+                       end
+               end)
+               return value
+       end
+
+       function mssfix.write(self, section, value)
+               m.uci:foreach("firewall", "forwarding", function(s)
+                       if s.src == "lan" and s.dest == "wan" then
+                               m.uci:set("firewall", s[".name"], "mtu_fix", value)
+                               m:chain("firewall")
+                       end
+               end)
+       end
+end
+
+kea = s:option(Flag, "keepalive", translate("automatically reconnect"))
+kea:depends("proto", "pppoe")
+kea:depends("proto", "pptp")
+kea.rmempty = true
+kea.enabled = "10"
+
+
+cod = s:option(Value, "demand", translate("disconnect when idle for"), "s")
+cod:depends("proto", "pppoe")
+cod:depends("proto", "pptp")
+cod.rmempty = true
+
+srv = s:option(Value, "server", translate("<abbr title=\"Point-to-Point Tunneling Protocol\">PPTP</abbr>-Server"))
+srv:depends("proto", "pptp")
+srv.rmempty = true
+
+
+
+return m
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua
new file mode 100644 (file)
index 0000000..39123a7
--- /dev/null
@@ -0,0 +1,35 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+f = SimpleForm("password", translate("Admin Password"), translate("Change the password of the system administrator (User <code>root</code>)"))
+
+pw1 = f:field(Value, "pw1", translate("Password"))
+pw1.password = true
+pw1.rmempty = false
+
+pw2 = f:field(Value, "pw2", translate("Confirmation"))
+pw2.password = true
+pw2.rmempty = false
+
+function pw2.validate(self, value, section)
+       return pw1:formvalue(section) == value and value
+end
+
+function f.handle(self, state, data)
+       if state == FORM_VALID then
+               local stat = luci.sys.user.setpasswd("root", data.pw1) == 0
+               
+               if stat then
+                       f.message = translate("Password successfully changed")
+               else
+                       f.errmessage = translate("Unknown Error")
+               end
+               
+               data.pw1 = nil
+               data.pw2 = nil
+       end
+       return true
+end
+
+return f
\ No newline at end of file
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua
new file mode 100644 (file)
index 0000000..b621ad0
--- /dev/null
@@ -0,0 +1,76 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require("luci.sys")
+require("luci.sys.zoneinfo")
+require("luci.tools.webadmin")
+require("luci.util")
+
+
+m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone."))
+
+s = m:section(TypedSection, "system", "")
+s.anonymous = true
+s.addremove = false
+
+
+local sysinfo = luci.util.ubus("system", "info") or { }
+local boardinfo = luci.util.ubus("system", "board") or { }
+
+local uptime = sysinfo.uptime or 0
+local loads = sysinfo.load or { 0, 0, 0 }
+local memory = sysinfo.memory or {
+       total = 0,
+       free = 0,
+       buffered = 0,
+       shared = 0
+}
+
+s:option(DummyValue, "_system", translate("Model")).value = boardinfo.model or "?"
+s:option(DummyValue, "_cpu", translate("System")).value = boardinfo.system or "?"
+
+s:option(DummyValue, "_la", translate("Load")).value =
+ string.format("%.2f, %.2f, %.2f", loads[1] / 65535.0, loads[2] / 65535.0, loads[3] / 65535.0)
+
+s:option(DummyValue, "_memtotal", translate("Memory")).value =
+ string.format("%.2f MB (%.0f%% %s, %.0f%% %s)",
+  tonumber(memory.total) / 1024 / 1024,
+  100 * memory.buffered / memory.total,
+  tostring(translate("buffered")),
+  100 * memory.free / memory.total,
+  tostring(translate("free"))
+)
+
+s:option(DummyValue, "_systime", translate("Local Time")).value =
+ os.date("%c")
+
+s:option(DummyValue, "_uptime", translate("Uptime")).value =
+ luci.tools.webadmin.date_format(tonumber(uptime))
+
+hn = s:option(Value, "hostname", translate("Hostname"))
+
+function hn.write(self, section, value)
+       Value.write(self, section, value)
+       luci.sys.hostname(value)
+end
+
+
+tz = s:option(ListValue, "zonename", translate("Timezone"))
+tz:value("UTC")
+
+for i, zone in ipairs(luci.sys.zoneinfo.TZ) do
+        tz:value(zone[1])
+end
+
+function tz.write(self, section, value)
+        local function lookup_zone(title)
+                for _, zone in ipairs(luci.sys.zoneinfo.TZ) do
+                        if zone[1] == title then return zone[2] end
+                end
+        end
+
+        AbstractValue.write(self, section, value)
+        self.map.uci:set("system", section, "timezone", lookup_zone(value) or "GMT0")
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
new file mode 100644 (file)
index 0000000..799211f
--- /dev/null
@@ -0,0 +1,351 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+-- Data init --
+
+local fs  = require "nixio.fs"
+local sys = require "luci.sys"
+local uci = require "luci.model.uci".cursor()
+
+if not uci:get("network", "wan") then
+       uci:section("network", "interface", "wan", {proto="none", ifname=" "})
+       uci:save("network")
+       uci:commit("network")
+end
+
+local wlcursor = luci.model.uci.cursor_state()
+local wireless = wlcursor:get_all("wireless")
+local wifidevs = {}
+local ifaces = {}
+
+for k, v in pairs(wireless) do
+       if v[".type"] == "wifi-iface" then
+               table.insert(ifaces, v)
+       end
+end
+
+wlcursor:foreach("wireless", "wifi-device",
+       function(section)
+               table.insert(wifidevs, section[".name"])
+       end)
+
+
+-- Main Map --
+
+m = Map("wireless", translate("Wireless"), translate("Here you can configure installed wifi devices."))
+m:chain("network")
+
+
+-- Status Table --
+s = m:section(Table, ifaces, translate("Networks"))
+
+link = s:option(DummyValue, "_link", translate("Link"))
+function link.cfgvalue(self, section)
+       local ifname = self.map:get(section, "ifname")
+       local iwinfo = sys.wifi.getiwinfo(ifname)
+       return iwinfo and "%d/%d" %{ iwinfo.quality, iwinfo.quality_max } or "-"
+end
+
+essid = s:option(DummyValue, "ssid", "ESSID")
+
+bssid = s:option(DummyValue, "_bsiid", "BSSID")
+function bssid.cfgvalue(self, section)
+       local ifname = self.map:get(section, "ifname")
+       local iwinfo = sys.wifi.getiwinfo(ifname)
+       return iwinfo and iwinfo.bssid or "-"
+end
+
+channel = s:option(DummyValue, "channel", translate("Channel"))
+function channel.cfgvalue(self, section)
+       return wireless[self.map:get(section, "device")].channel
+end
+
+protocol = s:option(DummyValue, "_mode", translate("Protocol"))
+function protocol.cfgvalue(self, section)
+       local mode = wireless[self.map:get(section, "device")].mode
+       return mode and "802." .. mode
+end
+
+mode = s:option(DummyValue, "mode", translate("Mode"))
+encryption = s:option(DummyValue, "encryption", translate("<abbr title=\"Encrypted\">Encr.</abbr>"))
+
+power = s:option(DummyValue, "_power", translate("Power"))
+function power.cfgvalue(self, section)
+       local ifname = self.map:get(section, "ifname")
+       local iwinfo = sys.wifi.getiwinfo(ifname)
+       return iwinfo and "%d dBm" % iwinfo.txpower or "-"
+end
+
+scan = s:option(Button, "_scan", translate("Scan"))
+scan.inputstyle = "find"
+
+function scan.cfgvalue(self, section)
+       return self.map:get(section, "ifname") or false
+end
+
+-- WLAN-Scan-Table --
+
+t2 = m:section(Table, {}, translate("<abbr title=\"Wireless Local Area Network\">WLAN</abbr>-Scan"), translate("Wifi networks in your local environment"))
+
+function scan.write(self, section)
+       m.autoapply = false
+       t2.render = t2._render
+       local ifname = self.map:get(section, "ifname")
+       local iwinfo = sys.wifi.getiwinfo(ifname)
+       if iwinfo then
+               local _, cell
+               for _, cell in ipairs(iwinfo.scanlist) do
+                       t2.data[#t2.data+1] = {
+                               Quality = "%d/%d" %{ cell.quality, cell.quality_max },
+                               ESSID   = cell.ssid,
+                               Address = cell.bssid,
+                               Mode    = cell.mode,
+                               ["Encryption key"] = cell.encryption.enabled and "On" or "Off",
+                               ["Signal level"]   = "%d dBm" % cell.signal,
+                               ["Noise level"]    = "%d dBm" % iwinfo.noise
+                       }
+               end
+       end
+end
+
+t2._render = t2.render
+t2.render = function() end
+
+t2:option(DummyValue, "Quality", translate("Link"))
+essid = t2:option(DummyValue, "ESSID", "ESSID")
+function essid.cfgvalue(self, section)
+       return self.map:get(section, "ESSID")
+end
+
+t2:option(DummyValue, "Address", "BSSID")
+t2:option(DummyValue, "Mode", translate("Mode"))
+chan = t2:option(DummyValue, "channel", translate("Channel"))
+function chan.cfgvalue(self, section)
+       return self.map:get(section, "Channel")
+           or self.map:get(section, "Frequency")
+           or "-"
+end
+
+t2:option(DummyValue, "Encryption key", translate("<abbr title=\"Encrypted\">Encr.</abbr>"))
+
+t2:option(DummyValue, "Signal level", translate("Signal"))
+
+t2:option(DummyValue, "Noise level", translate("Noise"))
+
+
+
+if #wifidevs < 1 then
+       return m
+end
+
+-- Config Section --
+
+s = m:section(NamedSection, wifidevs[1], "wifi-device", translate("Devices"))
+s.addremove = false
+
+en = s:option(Flag, "disabled", translate("enable"))
+en.rmempty = false
+en.enabled = "0"
+en.disabled = "1"
+
+function en.cfgvalue(self, section)
+       return Flag.cfgvalue(self, section) or "0"
+end
+
+
+local hwtype = m:get(wifidevs[1], "type")
+
+ch = s:option(Value, "channel", translate("Channel"))
+for i=1, 14 do
+       ch:value(i, i .. " (2.4 GHz)")
+end
+
+
+s = m:section(TypedSection, "wifi-iface", translate("Local Network"))
+s.anonymous = true
+s.addremove = false
+
+s:option(Value, "ssid", translate("Network Name (<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>)"))
+
+bssid = s:option(Value, "bssid", translate("<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"))
+bssid.datatype = "macaddr"
+
+local devs = {}
+luci.model.uci.cursor():foreach("wireless", "wifi-device",
+       function (section)
+               table.insert(devs, section[".name"])
+       end)
+
+if #devs > 1 then
+       device = s:option(DummyValue, "device", translate("Device"))
+else
+       s.defaults.device = devs[1]
+end
+
+mode = s:option(ListValue, "mode", translate("Mode"))
+mode.override_values = true
+mode:value("ap", translate("Provide (Access Point)"))
+mode:value("adhoc", translate("Independent (Ad-Hoc)"))
+mode:value("sta", translate("Join (Client)"))
+
+function mode.write(self, section, value)
+       if value == "sta" then
+               local oldif = m.uci:get("network", "wan", "ifname")
+               if oldif and oldif ~= " " then
+                       m.uci:set("network", "wan", "_ifname", oldif)
+               end
+               m.uci:set("network", "wan", "ifname", " ")
+
+               self.map:set(section, "network", "wan")
+       else
+               if m.uci:get("network", "wan", "_ifname") then
+                       m.uci:set("network", "wan", "ifname", m.uci:get("network", "wan", "_ifname"))
+               end
+               self.map:set(section, "network", "lan")
+       end
+
+       return ListValue.write(self, section, value)
+end
+
+encr = s:option(ListValue, "encryption", translate("Encryption"))
+encr.override_values = true
+encr:value("none", "No Encryption")
+encr:value("wep", "WEP")
+
+if hwtype == "mac80211" then
+       local supplicant = fs.access("/usr/sbin/wpa_supplicant")
+       local hostapd    = fs.access("/usr/sbin/hostapd")
+
+       if hostapd and supplicant then
+               encr:value("psk", "WPA-PSK")
+               encr:value("psk2", "WPA2-PSK")
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode")
+               encr:value("wpa", "WPA-Radius", {mode="ap"}, {mode="sta"})
+               encr:value("wpa2", "WPA2-Radius", {mode="ap"}, {mode="sta"})
+       elseif hostapd and not supplicant then
+               encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="adhoc"})
+               encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="adhoc"})
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="adhoc"})
+               encr:value("wpa", "WPA-Radius", {mode="ap"})
+               encr:value("wpa2", "WPA2-Radius", {mode="ap"})
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )
+       elseif not hostapd and supplicant then
+               encr:value("psk", "WPA-PSK", {mode="sta"})
+               encr:value("psk2", "WPA2-PSK", {mode="sta"})
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"})
+               encr:value("wpa", "WPA-EAP", {mode="sta"})
+               encr:value("wpa2", "WPA2-EAP", {mode="sta"})
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )               
+       else
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )
+       end
+elseif hwtype == "broadcom" then
+       encr:value("psk", "WPA-PSK")
+       encr:value("psk2", "WPA2-PSK")
+       encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode")
+end
+
+key = s:option(Value, "key", translate("Key"))
+key:depends("encryption", "wep")
+key:depends("encryption", "psk")
+key:depends("encryption", "psk2")
+key:depends("encryption", "psk+psk2")
+key:depends("encryption", "psk-mixed")
+key:depends({mode="ap", encryption="wpa"})
+key:depends({mode="ap", encryption="wpa2"})
+key.rmempty = true
+key.password = true
+
+server = s:option(Value, "server", translate("Radius-Server"))
+server:depends({mode="ap", encryption="wpa"})
+server:depends({mode="ap", encryption="wpa2"})
+server.rmempty = true
+
+port = s:option(Value, "port", translate("Radius-Port"))
+port:depends({mode="ap", encryption="wpa"})
+port:depends({mode="ap", encryption="wpa2"})
+port.rmempty = true
+
+
+if hwtype == "mac80211" then
+       nasid = s:option(Value, "nasid", translate("NAS ID"))
+       nasid:depends({mode="ap", encryption="wpa"})
+       nasid:depends({mode="ap", encryption="wpa2"})
+       nasid.rmempty = true
+
+       eaptype = s:option(ListValue, "eap_type", translate("EAP-Method"))
+       eaptype:value("TLS")
+       eaptype:value("TTLS")
+       eaptype:value("PEAP")
+       eaptype:depends({mode="sta", encryption="wpa"})
+       eaptype:depends({mode="sta", encryption="wpa2"})
+
+       cacert = s:option(FileUpload, "ca_cert", translate("Path to CA-Certificate"))
+       cacert:depends({mode="sta", encryption="wpa"})
+       cacert:depends({mode="sta", encryption="wpa2"})
+
+       privkey = s:option(FileUpload, "priv_key", translate("Path to Private Key"))
+       privkey:depends({mode="sta", eap_type="TLS", encryption="wpa2"})
+       privkey:depends({mode="sta", eap_type="TLS", encryption="wpa"})
+
+       privkeypwd = s:option(Value, "priv_key_pwd", translate("Password of Private Key"))
+       privkeypwd:depends({mode="sta", eap_type="TLS", encryption="wpa2"})
+       privkeypwd:depends({mode="sta", eap_type="TLS", encryption="wpa"})
+
+
+       auth = s:option(Value, "auth", translate("Authentication"))
+       auth:value("PAP")
+       auth:value("CHAP")
+       auth:value("MSCHAP")
+       auth:value("MSCHAPV2")
+       auth:depends({mode="sta", eap_type="PEAP", encryption="wpa2"})
+       auth:depends({mode="sta", eap_type="PEAP", encryption="wpa"})
+       auth:depends({mode="sta", eap_type="TTLS", encryption="wpa2"})
+       auth:depends({mode="sta", eap_type="TTLS", encryption="wpa"})
+
+
+       identity = s:option(Value, "identity", translate("Identity"))
+       identity:depends({mode="sta", eap_type="PEAP", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="PEAP", encryption="wpa"})
+       identity:depends({mode="sta", eap_type="TTLS", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="TTLS", encryption="wpa"})
+
+       password = s:option(Value, "password", translate("Password"))
+       password:depends({mode="sta", eap_type="PEAP", encryption="wpa2"})
+       password:depends({mode="sta", eap_type="PEAP", encryption="wpa"})
+       password:depends({mode="sta", eap_type="TTLS", encryption="wpa2"})
+       password:depends({mode="sta", eap_type="TTLS", encryption="wpa"})
+end
+
+
+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")
+
+       hide = s:option(Flag, "hidden", translate("Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
+       hide.rmempty = true
+       hide:depends("mode", "ap")
+end
+
+if hwtype == "mac80211" then
+       bssid:depends({mode="adhoc"})
+end
+
+if hwtype == "broadcom" then
+       bssid:depends({mode="wds"})
+       bssid:depends({mode="adhoc"})
+end
+
+
+return m
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm
new file mode 100644 (file)
index 0000000..d33a2ca
--- /dev/null
@@ -0,0 +1,13 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:System%></h2>
+<br />
+<p><% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %></p>
+<p><%:Please wait: Device rebooting...%></p>
+<script type="text/javascript">setTimeout("location='<%=controller%>'", 60000)</script>
+<%+footer%>
\ No newline at end of file
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm
new file mode 100644 (file)
index 0000000..efc6aa7
--- /dev/null
@@ -0,0 +1,32 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:System%></h2>
+<h3><%:Backup / Restore%></h3>
+<p><%:Here you can backup and restore your configuration and - if possible - reset this device to the default settings.%></p>
+<br />
+<div>
+       <ul>
+       <li><a href="<%=REQUEST_URI%>?backup=kthxbye"><%:Create backup%></a></li>
+       <% if reset_avail then -%>
+       <li><a href="<%=REQUEST_URI%>?reset=yarly" onclick="return confirm('<%:Proceed reverting all settings and resetting to firmware defaults?%>')"><%:Reset this device to defaults%></a></li>
+       <% end -%>
+       </ul>
+</div>
+
+<br />
+
+<form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
+       <div class="left"><%:Backup Archive%>:</div>
+       <div>
+               <input type="file" size="30" name="archive" />
+       </div>
+       <div>
+               <input type="submit" class="cbi-button cbi-input-apply" value="<%:Restore backup%>" />
+       </div>
+</form>
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm
new file mode 100644 (file)
index 0000000..621e3cb
--- /dev/null
@@ -0,0 +1,13 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<h2 name="content"><%:Hello!%></h2>
+<p><%_This is the administration area of <abbr title="Lua Configuration Interface">LuCI</abbr>.%></p>
+<p><%_<abbr title="Lua Configuration Interface">LuCI</abbr> is a free, flexible, and user friendly graphical interface for configuring OpenWrt.%><br />
+<%:On the following pages you can adjust all important settings of this device.%></p>
+<p><%:As we always want to improve this interface we are looking forward to your feedback and suggestions.%></p>
+<p><%:And now have fun with your device!%></p>
+<p><em><strong><a href="<%=controller%>/about"><%_The <abbr title="Lua Configuration Interface">LuCI</abbr> Team%></a></strong></em></p>
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm
new file mode 100644 (file)
index 0000000..f70e7c9
--- /dev/null
@@ -0,0 +1,25 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:System%></h2>
+<h3><%:Reboot%></h3>
+<p><%:Reboots the operating system of your device%></p>
+<%-
+local c = require("luci.model.uci").cursor():changes()
+if c and next(c) then
+-%>
+       <p class="warning"><%:Warning: There are unsaved changes that will be lost while rebooting!%></p> 
+<%-
+end
+if not reboot then 
+-%>
+<p><a href="<%=REQUEST_URI%>?reboot=1"><%:Perform reboot%></a></p>
+<%- else -%>
+<p><%:Please wait: Device rebooting...%></p>
+<script type="text/javascript">setTimeout("location='<%=controller%>'", 60000)</script>
+<%- end -%>
+<%+footer%>
\ No newline at end of file
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm
new file mode 100644 (file)
index 0000000..ef3e2e8
--- /dev/null
@@ -0,0 +1,96 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:System%></h2>
+<h3><%:Flash Firmware%></h3>
+
+<% if step == 1 then %>
+       <% if supported then %>
+       <form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
+       <p>
+               <%:Upload a sysupgrade-compatible image file to reflash the device.%>
+               <% if bad_image then %>
+                       <br /><br />
+                       <div class="error"><%:The uploaded image file does not
+                               contain a supported format. Make sure that you choose the generic
+                               image format for your platform. %></div>
+               <% end %>
+       </p>
+       <div>
+               <%:Firmware image%>:<br />
+               <input type="hidden" name="step" value="2" />
+               <input type="file" size="30" name="image" />
+               <br />
+               <br />
+               <% if keepavail then -%>
+               <input type="checkbox" name="keepcfg" value="1" checked="checked" />
+               <span class="bold"><%:Keep configuration files%></span>
+               <% end -%>
+
+               <br />
+               <input class="cbi-button cbi-button-apply" type="submit" value="<%:Upload image%>" />
+       </div>
+       </form>
+       <% else %>
+               <div class="error"><%_ Sorry.
+                       A system upgrade is not supported on this platform.<br />
+                       You need to manually flash your device. %></div>
+       <% end %>
+<% elseif step == 2 then %>
+       <p>
+               <%_ 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. %>
+
+               <% if flashsize > 0 and filesize > flashsize then %>
+                       <br /><br />
+                       <div class="error"><%:It appears that you are trying to
+                               flash an image that does not fit into the flash memory, please verify
+                               the image file! %></div>
+               <% end %>
+
+               <br />
+               <ul>
+                       <li><%:Checksum%>: <code><%=checksum%></code></li>
+                       <li><%:Size%>: <%
+                               local w = require "luci.tools.webadmin"
+                               write(w.byte_format(filesize))
+       
+                               if flashsize > 0 then
+                                       write(luci.i18n.translatef(
+                                               " (%s available)",
+                                               w.byte_format(flashsize)
+                                       ))
+                               end
+                       %></li>
+               </ul>
+       </p>
+       <div class="cbi-page-actions right">
+               <form style="display:inline">
+                       <input type="hidden" name="step" value="3" />
+                       <input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>" />
+                       <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />        
+               </form>
+               <form style="display:inline">
+                       <input type="hidden" name="step" value="1" />
+                       <input type="hidden" name="keepcfg" value="<%=keepconfig and "1" or "0"%>" />
+                       <input class="cbi-button cbi-button-reset" type="submit" value="<%:Cancel%>" />
+               </form>
+       </div>
+<% elseif step == 3 then %>
+       <p><%_ 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 address of your computer to reach the device
+               again, depending on your settings. %></p>
+               
+       <iframe src="<%=REQUEST_URI%>?step=4&#38;keepcfg=<%=keepconfig and "1" or "0"%>" style="border:1px solid black; width:100%; height:150px"></iframe>
+<% end %>
+<%+footer%>
+
diff --git a/package/luci/modules/luci-mod-failsafe/Makefile b/package/luci/modules/luci-mod-failsafe/Makefile
new file mode 100644 (file)
index 0000000..8afc614
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# 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:=LuCI Fail-Safe - Fail-Safe sysupgrade module
+LUCI_DEPENDS:=+luci-base
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua b/package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua
new file mode 100644 (file)
index 0000000..60caadb
--- /dev/null
@@ -0,0 +1,202 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2012 Daniel Golle <dgolle@allnet.de>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.failsafe.failsafe", package.seeall)
+
+function index()
+       local root = node()
+       if not root.target then
+               root.target = alias("failsafe")
+               root.index = true
+       end
+
+       page          = node()
+       page.lock     = true
+       page.target   = alias("failsafe")
+       page.subindex = true
+       page.index    = false
+
+       page          = node("failsafe")
+       page.title    = _("Fail-safe")
+       page.target   = alias("failsafe", "flashops")
+       page.order    = 5
+       page.setuser  = "root"
+       page.setgroup = "root"
+       page.index    = true
+
+       entry({"failsafe", "flashops"}, call("action_flashops"), _("Flash Firmware"), 70).index = true
+       entry({"failsafe", "reboot"}, call("action_reboot"), _("Reboot"), 90)
+end
+
+function action_flashops()
+       local sys = require "luci.sys"
+       local fs  = require "nixio.fs"
+
+       local upgrade_avail = fs.access("/lib/upgrade/platform.sh")
+       local reset_avail   = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0
+
+       local image_tmp   = "/tmp/firmware.img"
+
+       local function image_supported()
+               -- XXX: yay...
+               return ( 0 == os.execute(
+                       ". /lib/functions.sh; " ..
+                       "include /lib/upgrade; " ..
+                       "platform_check_image %q >/dev/null"
+                               % image_tmp
+               ) )
+       end
+
+       local function image_checksum()
+               return (luci.sys.exec("md5sum %q" % image_tmp):match("^([^%s]+)"))
+       end
+
+       local function storage_size()
+               local size = 0
+               if fs.access("/proc/mtd") then
+                       for l in io.lines("/proc/mtd") do
+                               local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"')
+                               if n == "linux" or n == "firmware" then
+                                       size = tonumber(s, 16)
+                                       break
+                               end
+                       end
+               elseif fs.access("/proc/partitions") then
+                       for l in io.lines("/proc/partitions") do
+                               local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)')
+                               if b and n and not n:match('[0-9]') then
+                                       size = tonumber(b) * 1024
+                                       break
+                               end
+                       end
+               end
+               return size
+       end
+
+
+       local fp
+       luci.http.setfilehandler(
+               function(meta, chunk, eof)
+                       if not fp then
+                               if meta and meta.name == "image" then
+                                       fp = io.open(image_tmp, "w")
+                               end
+                       end
+                       if fp then
+                               if chunk then
+                                       fp:write(chunk)
+                               end
+                               if eof then
+                                       fp:close()
+                               end
+                       end
+               end
+       )
+
+       if luci.http.formvalue("image") or luci.http.formvalue("step") then
+               --
+               -- Initiate firmware flash
+               --
+               local step = tonumber(luci.http.formvalue("step") or 1)
+               if step == 1 then
+                       if image_supported() then
+                               luci.template.render("failsafe/upgrade", {
+                                       checksum = image_checksum(),
+                                       storage  = storage_size(),
+                                       size     = (fs.stat(image_tmp, "size") or 0),
+                                       keep     = false
+                               })
+                       else
+                               fs.unlink(image_tmp)
+                               luci.template.render("failsafe/flashops", {
+                                       reset_avail   = reset_avail,
+                                       upgrade_avail = upgrade_avail,
+                                       image_invalid = true
+                               })
+                       end
+               --
+               -- Start sysupgrade flash
+               --
+               elseif step == 2 then
+                       local keep = (luci.http.formvalue("keep") == "1") and "" or "-n"
+                       luci.template.render("failsafe/applyreboot", {
+                               title = luci.i18n.translate("Flashing..."),
+                               msg   = luci.i18n.translate("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 address of your computer to reach the device again, depending on your settings."),
+                               addr  = (#keep > 0) and "192.168.1.1" or nil
+                       })
+                       fork_exec("killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %q" %{ keep, image_tmp })
+               end
+       else
+               --
+               -- Overview
+               --
+               luci.template.render("failsafe/flashops", {
+                       reset_avail   = reset_avail,
+                       upgrade_avail = upgrade_avail
+               })
+       end
+end
+
+function action_reboot()
+       local reboot = luci.http.formvalue("reboot")
+       luci.template.render("failsafe/reboot", {reboot=reboot})
+       if reboot then
+               luci.sys.reboot()
+       end
+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 ltn12_popen(command)
+
+       local fdi, fdo = nixio.pipe()
+       local pid = nixio.fork()
+
+       if pid > 0 then
+               fdo:close()
+               local close
+               return function()
+                       local buffer = fdi:read(2048)
+                       local wpid, stat = nixio.waitpid(pid, "nohang")
+                       if not close and wpid and stat == "exited" then
+                               close = true
+                       end
+
+                       if buffer and #buffer > 0 then
+                               return buffer
+                       elseif close then
+                               fdi:close()
+                               return nil
+                       end
+               end
+       elseif pid == 0 then
+               nixio.dup(fdo, nixio.stdout)
+               fdi:close()
+               fdo:close()
+               nixio.exec("/bin/sh", "-c", command)
+       end
+end
diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm
new file mode 100644 (file)
index 0000000..12c138c
--- /dev/null
@@ -0,0 +1,41 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<html>
+       <head>
+               <title><%=luci.sys.hostname()%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %></title>
+               <link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
+               <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
+               <script type="text/javascript">//<![CDATA[
+                       var interval = window.setInterval(function() {
+                               var img = new Image();
+
+                               img.onload = function() {
+                                       window.clearInterval(interval);
+                                       location.href = 'http://<%=addr or luci.http.getenv("SERVER_NAME")%>/';
+                               };
+
+                               img.src = 'http://<%=addr or luci.http.getenv("SERVER_NAME")%><%=resource%>/icons/loading.gif?' + Math.random();
+                       }, 5000);
+               //]]></script>
+       </head>
+       <body>
+               <div id="maincontainer">
+                       <div id="maincontent">
+                               <h2 name="content"><%:System%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %></h2>
+                               <fieldset class="cbi-section">
+                                       <p>
+                                               <% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %>
+                                       </p>
+                                       <p>
+                                               <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+                                               <%:Waiting for changes to be applied...%>
+                                       </p>
+                               </fieldset>
+                       </div>
+               </div>
+       </body>
+</html>
diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm
new file mode 100644 (file)
index 0000000..d6e9ad7
--- /dev/null
@@ -0,0 +1,34 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2012 Daniel Golle <dgolle@allnet.de>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Flash operations%></h2>
+<fieldset class="cbi-section">
+       <legend><%:Flash new firmware image%></legend>
+       <% if upgrade_avail then %>
+               <form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
+                       <div class="cbi-section-descr"><%:Upload a sysupgrade-compatible image. %></div>
+                       <div class="cbi-section-node">
+                               <div class="cbi-value cbi-value-last<% if image_invalid then %> cbi-value-error<% end %>">
+                                       <label class="cbi-value-title" for="image"><%:Image%>:</label>
+                                       <div class="cbi-value-field">
+                                               <input type="file" name="image" id="image" />
+                                               <input type="submit" class="cbi-button cbi-input-apply" value="<%:Flash image...%>" />
+                                       </div>
+                               </div>
+                       </div>
+                       <% if image_invalid then %>
+                               <div class="cbi-section-error"><%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %></div>
+                       <% end %>
+               </form>
+       <% else %>
+               <div class="cbi-section-descr"><%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%></div>
+       <% end %>
+</fieldset>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm
new file mode 100644 (file)
index 0000000..cbbe13b
--- /dev/null
@@ -0,0 +1,18 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2012 Daniel Golle <dgolle@allnet.de>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:System%></h2>
+<h3><%:Reboot%></h3>
+<p><%:Reboots the operating system of your device%></p>
+<%- if not reboot then -%>
+<p><a href="<%=controller%>/failsafe/reboot?reboot=1"><%:Perform reboot%></a></p>
+<%- else -%>
+<p><%:Please wait: Device rebooting...%></p>
+<script type="text/javascript">setTimeout("location='<%=controller%>'", 60000)</script>
+<%- end -%>
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm
new file mode 100644 (file)
index 0000000..3be9ae1
--- /dev/null
@@ -0,0 +1,53 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2012 Daniel Golle <dgolle@allnet.de>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Flash Firmware%> - <%:Verify%></h2>
+<p>
+       <%_ 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. %>
+
+       <% if storage > 0 and size > storage then %>
+               <br /><br />
+               <div class="error"><%:It appears that you are trying to
+                       flash an image that does not fit into the flash memory, please verify
+                       the image file! %></div>
+       <% end %>
+
+</p>
+
+<fieldset class="cbi-section">
+       <ul>
+               <li><%:Checksum%>: <code><%=checksum%></code></li>
+               <li><%:Size%>: <%
+                       local w = require "luci.tools.webadmin"
+                       write(w.byte_format(size))
+
+                       if storage > 0 then
+                               write(luci.i18n.translatef(
+                                       " (%s available)",
+                                       w.byte_format(storage)
+                               ))
+                       end
+               %></li>
+       </ul>
+</fieldset>
+
+<div class="cbi-page-actions right">
+       <form style="display:inline" action="<%=REQUEST_URI%>" method="post">
+               <input class="cbi-button cbi-button-reset" type="submit" value="<%:Cancel%>" />
+       </form>
+       <form style="display:inline" action="<%=REQUEST_URI%>" method="post">
+               <input type="hidden" name="step" value="2" />
+               <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+       </form>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-network/Makefile b/package/luci/modules/luci-mod-network/Makefile
new file mode 100644 (file)
index 0000000..5958765
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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:=LuCI Network Administration
+LUCI_DEPENDS:=+luci-base +libiwinfo-lua
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js b/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/iface_status.js
new file mode 100644 (file)
index 0000000..88f48d1
--- /dev/null
@@ -0,0 +1,42 @@
+requestAnimationFrame(function() {
+       document.querySelectorAll('[data-iface-status]').forEach(function(container) {
+               var network = container.getAttribute('data-iface-status'),
+                   icon = container.querySelector('img'),
+                   info = container.querySelector('span');
+
+               L.poll(5, L.url('admin/network/iface_status', network), null, function(xhr, ifaces) {
+                       var ifc = Array.isArray(ifaces) ? ifaces[0] : null;
+                       if (!ifc)
+                               return;
+
+                       L.itemlist(info, [
+                               _('Device'),  ifc.ifname,
+                               _('Uptime'),  ifc.is_up ? '%t'.format(ifc.uptime) : null,
+                               _('MAC'),     ifc.ifname ? ifc.macaddr : null,
+                               _('RX'),      ifc.ifname ? '%.2mB (%d %s)'.format(ifc.rx_bytes, ifc.rx_packets, _('Pkts.')) : null,
+                               _('TX'),      ifc.ifname ? '%.2mB (%d %s)'.format(ifc.tx_bytes, ifc.tx_packets, _('Pkts.')) : null,
+                               _('IPv4'),    ifc.ipaddrs ? ifc.ipaddrs[0] : null,
+                               _('IPv4'),    ifc.ipaddrs ? ifc.ipaddrs[1] : null,
+                               _('IPv4'),    ifc.ipaddrs ? ifc.ipaddrs[2] : null,
+                               _('IPv4'),    ifc.ipaddrs ? ifc.ipaddrs[3] : null,
+                               _('IPv4'),    ifc.ipaddrs ? ifc.ipaddrs[4] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[0] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[1] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[2] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[3] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[4] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[5] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[6] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[7] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[8] : null,
+                               _('IPv6'),    ifc.ip6addrs ? ifc.ip6addrs[9] : null,
+                               _('IPv6-PD'), ifc.ip6prefix,
+                               null,         ifc.ifname ? null : E('em', _('Interface not present or not connected yet.'))
+                       ]);
+
+                       icon.src = L.resource('icons/%s%s.png').format(ifc.type, ifc.is_up ? '' : '_disabled');
+               });
+
+               L.run();
+       });
+});
diff --git a/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js b/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js
new file mode 100644 (file)
index 0000000..bab23cc
--- /dev/null
@@ -0,0 +1,136 @@
+function iface_reconnect(id) {
+       L.halt();
+       L.dom.content(document.getElementById(id + '-ifc-description'), E('em', _('Interface is reconnecting...')));
+       L.post(L.url('admin/network/iface_reconnect', id), null, L.run);
+}
+
+function iface_delete(ev) {
+       if (!confirm(_('Really delete this interface? The deletion cannot be undone! You might lose access to this device if you are connected via this interface'))) {
+               ev.preventDefault();
+               return false;
+       }
+
+       ev.target.previousElementSibling.value = '1';
+       return true;
+}
+
+var networks = [];
+
+document.querySelectorAll('[data-network]').forEach(function(n) {
+       networks.push(n.getAttribute('data-network'));
+});
+
+function render_iface(ifc) {
+       return E('span', { class: 'cbi-tooltip-container' }, [
+               E('img', { 'class' : 'middle', 'src': L.resource('icons/%s%s.png').format(
+                       ifc.is_alias ? 'alias' : ifc.type,
+                       ifc.is_up ? '' : '_disabled') }),
+               E('span', { 'class': 'cbi-tooltip ifacebadge large' }, [
+                       E('img', { 'src': L.resource('icons/%s%s.png').format(
+                               ifc.type, ifc.is_up ? '' : '_disabled') }),
+                       L.itemlist(E('span', { 'class': 'left' }), [
+                               _('Type'),      ifc.typename,
+                               _('Device'),    ifc.ifname,
+                               _('Connected'), ifc.is_up ? _('yes') : _('no'),
+                               _('MAC'),       ifc.macaddr,
+                               _('RX'),        '%.2mB (%d %s)'.format(ifc.rx_bytes, ifc.rx_packets, _('Pkts.')),
+                               _('TX'),        '%.2mB (%d %s)'.format(ifc.tx_bytes, ifc.tx_packets, _('Pkts.'))
+                       ])
+               ])
+       ]);
+}
+
+L.poll(5, L.url('admin/network/iface_status', networks.join(',')), null,
+       function(x, ifcs) {
+               if (ifcs) {
+                       for (var idx = 0; idx < ifcs.length; idx++) {
+                               var ifc = ifcs[idx];
+
+                               var s = document.getElementById(ifc.id + '-ifc-devices');
+                               if (s) {
+                                       var c = [ render_iface(ifc) ];
+
+                                       if (ifc.subdevices && ifc.subdevices.length)
+                                       {
+                                               var sifs = [ ' (' ];
+
+                                               for (var j = 0; j < ifc.subdevices.length; j++)
+                                                       sifs.push(render_iface(ifc.subdevices[j]));
+
+                                               sifs.push(')');
+
+                                               c.push(E('span', {}, sifs));
+                                       }
+
+                                       c.push(E('br'));
+                                       c.push(E('small', {}, ifc.is_alias ? _('Alias of "%s"').format(ifc.is_alias) : ifc.name));
+
+                                       L.dom.content(s, c);
+                               }
+
+                               var d = document.getElementById(ifc.id + '-ifc-description');
+                               if (d && ifc.proto && ifc.ifname) {
+                                       var desc = null, c = [];
+
+                                       if (ifc.is_dynamic)
+                                               desc = _('Virtual dynamic interface');
+                                       else if (ifc.is_alias)
+                                               desc = _('Alias Interface');
+
+                                       if (ifc.desc)
+                                               desc = desc ? '%s (%s)'.format(desc, ifc.desc) : ifc.desc;
+
+                                       L.itemlist(d, [
+                                               _('Protocol'), desc || '?',
+                                               _('Uptime'),   ifc.is_up ? '%t'.format(ifc.uptime) : null,
+                                               _('MAC'),      (!ifc.is_dynamic && !ifc.is_alias && ifc.macaddr) ? ifc.macaddr : null,
+                                               _('RX'),       (!ifc.is_dynamic && !ifc.is_alias) ? '%.2mB (%d %s)'.format(ifc.rx_bytes, ifc.rx_packets, _('Pkts.')) : null,
+                                               _('TX'),       (!ifc.is_dynamic && !ifc.is_alias) ? '%.2mB (%d %s)'.format(ifc.tx_bytes, ifc.tx_packets, _('Pkts.')) : null,
+                                               _('IPv4'),     ifc.ipaddrs ? ifc.ipaddrs[0] : null,
+                                               _('IPv4'),     ifc.ipaddrs ? ifc.ipaddrs[1] : null,
+                                               _('IPv4'),     ifc.ipaddrs ? ifc.ipaddrs[2] : null,
+                                               _('IPv4'),     ifc.ipaddrs ? ifc.ipaddrs[3] : null,
+                                               _('IPv4'),     ifc.ipaddrs ? ifc.ipaddrs[4] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[0] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[1] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[2] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[3] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[4] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[5] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[6] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[7] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[8] : null,
+                                               _('IPv6'),     ifc.ip6addrs ? ifc.ip6addrs[9] : null,
+                                               _('IPv6-PD'),  ifc.ip6prefix,
+                                               _('Information'), ifc.is_auto ? null : _('Not started on boot'),
+                                               _('Error'),    ifc.errors ? ifc.errors[0] : null,
+                                               _('Error'),    ifc.errors ? ifc.errors[1] : null,
+                                               _('Error'),    ifc.errors ? ifc.errors[2] : null,
+                                               _('Error'),    ifc.errors ? ifc.errors[3] : null,
+                                               _('Error'),    ifc.errors ? ifc.errors[4] : null,
+                                       ]);
+                               }
+                               else if (d && !ifc.proto) {
+                                       var e = document.getElementById(ifc.id + '-ifc-edit');
+                                       if (e) e.disabled = true;
+
+                                       var link = L.url('admin/system/opkg') + '?query=luci-proto';
+                                       L.dom.content(d, [
+                                               E('em', _('Unsupported protocol type.')), E('br'),
+                                               E('a', { href: link }, _('Install protocol extensions...'))
+                                       ]);
+                               }
+                               else if (d && !ifc.ifname) {
+                                       var link = L.url('admin/network/network', ifc.name) + '?tab.network.%s=physical'.format(ifc.name);
+                                       L.dom.content(d, [
+                                               E('em', _('Network without interfaces.')), E('br'),
+                                               E('a', { href: link }, _('Assign interfaces...'))
+                                       ]);
+                               }
+                               else if (d) {
+                                       L.dom.content(d, E('em' ,_('Interface not present or not connected yet.')));
+                               }
+                       }
+               }
+       }
+);
diff --git a/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js b/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js
new file mode 100644 (file)
index 0000000..d5bd7b0
--- /dev/null
@@ -0,0 +1,159 @@
+var poll = null;
+
+function format_signal(bss) {
+       var qval = bss.quality || 0,
+           qmax = bss.quality_max || 100,
+           scale = 100 / qmax * qval,
+           range = 'none';
+
+       if (!bss.bssid || bss.bssid == '00:00:00:00:00:00')
+               range = 'none';
+       else if (scale < 15)
+               range = '0';
+       else if (scale < 35)
+               range = '0-25';
+       else if (scale < 55)
+               range = '25-50';
+       else if (scale < 75)
+               range = '50-75';
+       else
+               range = '75-100';
+
+       return E('span', {
+               class: 'ifacebadge',
+               title: '%s: %d%s / %s: %d/%d'.format(_('Signal'), bss.signal, _('dB'), _('Quality'), qval, qmax)
+       }, [
+               E('img', { src: L.resource('icons/signal-%s.png').format(range) }),
+               ' %d%%'.format(scale)
+       ]);
+}
+
+function format_encryption(bss) {
+       var enc = bss.encryption || { }
+
+       if (enc.wep === true)
+               return 'WEP';
+       else if (enc.wpa > 0)
+               return E('abbr', {
+                       title: 'Pairwise: %h / Group: %h'.format(
+                               enc.pair_ciphers.join(', '),
+                               enc.group_ciphers.join(', '))
+                       },
+                       '%h - %h'.format(
+                               (enc.wpa === 3) ? _('mixed WPA/WPA2') : (enc.wpa === 2 ? 'WPA2' : 'WPA'),
+                               enc.auth_suites.join(', ')));
+       else
+               return E('em', enc.enabled ? _('unknown') : _('open'));
+}
+
+function format_actions(dev, type, bss) {
+       var enc = bss.encryption || { },
+           input = [
+                       E('input', { type: 'submit', class: 'cbi-button cbi-button-action important', value: _('Join Network') }),
+                       E('input', { type: 'hidden', name: 'token',    value: L.env.token }),
+                       E('input', { type: 'hidden', name: 'device',   value: dev }),
+                       E('input', { type: 'hidden', name: 'join',     value: bss.ssid }),
+                       E('input', { type: 'hidden', name: 'mode',     value: bss.mode }),
+                       E('input', { type: 'hidden', name: 'bssid',    value: bss.bssid }),
+                       E('input', { type: 'hidden', name: 'channel',  value: bss.channel }),
+                       E('input', { type: 'hidden', name: 'clbridge', value: type === 'wl' ? 1 : 0 }),
+                       E('input', { type: 'hidden', name: 'wep',      value: enc.wep ? 1 : 0 })
+               ];
+
+       if (enc.wpa) {
+               input.push(E('input', { type: 'hidden', name: 'wpa_version', value: enc.wpa }));
+
+               enc.auth_suites.forEach(function(s) {
+                       input.push(E('input', { type: 'hidden', name: 'wpa_suites', value: s }));
+               });
+
+               enc.group_ciphers.forEach(function(s) {
+                       input.push(E('input', { type: 'hidden', name: 'wpa_group', value: s }));
+               });
+
+               enc.pair_ciphers.forEach(function(s) {
+                       input.push(E('input', { type: 'hidden', name: 'wpa_pairwise', value: s }));
+               });
+       }
+
+       return E('form', {
+               class: 'inline',
+               method: 'post',
+               action: L.url('admin/network/wireless_join')
+       }, input);
+}
+
+function fade(bss, content) {
+       if (bss.stale)
+               return E('span', { style: 'opacity:0.5' }, content);
+       else
+               return content;
+}
+
+function flush() {
+       L.stop(poll);
+       L.halt();
+
+       scan();
+}
+
+function scan() {
+       var tbl = document.querySelector('[data-wifi-scan]'),
+           dev = tbl.getAttribute('data-wifi-scan'),
+           type = tbl.getAttribute('data-wifi-type');
+
+       cbi_update_table(tbl, [], E('em', { class: 'spinning' }, _('Starting wireless scan...')));
+
+       L.post(L.url('admin/network/wireless_scan_trigger', dev), null, function(s) {
+               if (s.status !== 204) {
+                       cbi_update_table(tbl, [], E('em', _('Scan request failed')));
+                       return;
+               }
+
+               var count = 0;
+
+               poll = L.poll(3, L.url('admin/network/wireless_scan_results', dev), null, function(s, results) {
+                       if (Array.isArray(results)) {
+                               var bss = [];
+
+                               results.sort(function(a, b) {
+                                       var diff = (b.quality - a.quality) || (a.channel - b.channel);
+
+                                       if (diff)
+                                               return diff;
+
+                                       if (a.ssid < b.ssid)
+                                               return -1;
+                                       else if (a.ssid > b.ssid)
+                                               return 1;
+
+                                       if (a.bssid < b.bssid)
+                                               return -1;
+                                       else if (a.bssid > b.bssid)
+                                               return 1;
+                               }).forEach(function(res) {
+                                       bss.push([
+                                               fade(res, format_signal(res)),
+                                               fade(res, res.ssid ? '%h'.format(res.ssid) : E('em', {}, _('hidden'))),
+                                               fade(res, res.channel),
+                                               fade(res, res.mode),
+                                               fade(res, res.bssid),
+                                               fade(res, format_encryption(res)),
+                                               format_actions(dev, type, res)
+                                       ]);
+                               });
+
+                               cbi_update_table(tbl, bss, E('em', { class: 'spinning' }, _('No scan results available yet...')));
+                       }
+
+                       if (count++ >= 3) {
+                               count = 0;
+                               L.post(L.url('admin/network/wireless_scan_trigger', dev, 1), null, function() {});
+                       }
+               });
+
+               L.run();
+       });
+}
+
+document.addEventListener('DOMContentLoaded', scan);
diff --git a/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js b/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js
new file mode 100644 (file)
index 0000000..108a141
--- /dev/null
@@ -0,0 +1,59 @@
+requestAnimationFrame(function() {
+       document.querySelectorAll('[data-wifi-status]').forEach(function(container) {
+               var ifname = container.getAttribute('data-wifi-status'),
+                   small = container.querySelector('small'),
+                   info = container.querySelector('span');
+
+               L.poll(5, L.url('admin/network/wireless_status', ifname), null, function(xhr, iws) {
+                       var iw = Array.isArray(iws) ? iws[0] : null;
+                       if (!iw)
+                               return;
+
+                       var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && !iw.disabled);
+                       var p = iw.quality;
+                       var q = iw.disabled ? -1 : p;
+
+                       var icon;
+                       if (q < 0)
+                               icon = L.resource('icons/signal-none.png');
+                       else if (q == 0)
+                               icon = L.resource('icons/signal-0.png');
+                       else if (q < 25)
+                               icon = L.resource('icons/signal-0-25.png');
+                       else if (q < 50)
+                               icon = L.resource('icons/signal-25-50.png');
+                       else if (q < 75)
+                               icon = L.resource('icons/signal-50-75.png');
+                       else
+                               icon = L.resource('icons/signal-75-100.png');
+
+                       L.dom.content(small, [
+                               E('img', {
+                                       src: icon,
+                                       title: '%s: %d %s / %s: %d %s'.format(
+                                               _('Signal'), iw.signal, _('dBm'),
+                                               _('Noise'), iw.noise, _('dBm'))
+                               }),
+                               '\u00a0', E('br'), '%d%%\u00a0'.format(p)
+                       ]);
+
+                       L.itemlist(info, [
+                               _('Mode'),       iw.mode,
+                               _('SSID'),       iw.ssid || '?',
+                               _('BSSID'),      is_assoc ? iw.bssid : null,
+                               _('Encryption'), is_assoc ? iw.encryption || _('None') : null,
+                               _('Channel'),    is_assoc ? '%d (%.3f %s)'.format(iw.channel, iw.frequency || 0, _('GHz')) : null,
+                               _('Tx-Power'),   is_assoc ? '%d %s'.format(iw.txpower, _('dBm')) : null,
+                               _('Signal'),     is_assoc ? '%d %s'.format(iw.signal, _('dBm')) : null,
+                               _('Noise'),      is_assoc ? '%d %s'.format(iw.noise, _('dBm')) : null,
+                               _('Bitrate'),    is_assoc ? '%.1f %s'.format(iw.bitrate || 0, _('Mbit/s')) : null,
+                               _('Country'),    is_assoc ? iw.country : null
+                       ], [ ' | ', E('br'), E('br'), E('br'), E('br'), E('br'), ' | ', E('br'), ' | ' ]);
+
+                       if (!is_assoc)
+                               L.dom.append(info, E('em', iw.disabled ? _('Wireless is disabled') : _('Wireless is not associated')));
+               });
+
+               L.run();
+       });
+});
diff --git a/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/package/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
new file mode 100644 (file)
index 0000000..57e6bbb
--- /dev/null
@@ -0,0 +1,93 @@
+function wifi_delete(ev) {
+       if (!confirm(_('Really delete this wireless network? The deletion cannot be undone! You might lose access to this device if you are connected via this network.'))) {
+               ev.preventDefault();
+               return false;
+       }
+
+       ev.target.previousElementSibling.value = '1';
+       return true;
+}
+
+function wifi_restart(ev) {
+       L.halt();
+
+       findParent(ev.target, '.table').querySelectorAll('[data-disabled="false"]').forEach(function(s) {
+               L.dom.content(s, E('em', _('Wireless is restarting...')));
+       });
+
+       L.post(L.url('admin/network/wireless_reconnect', ev.target.getAttribute('data-radio')), L.run);
+}
+
+var networks = [ ];
+
+document.querySelectorAll('[data-network]').forEach(function(n) {
+       networks.push(n.getAttribute('data-network'));
+});
+
+L.poll(5, L.url('admin/network/wireless_status', networks.join(',')), null,
+       function(x, st) {
+               if (st) {
+                       var rowstyle = 1;
+                       var radiostate = { };
+
+                       st.forEach(function(s) {
+                               var r = radiostate[s.device.device] || (radiostate[s.device.device] = {});
+
+                               s.is_assoc = (s.bssid && s.bssid != '00:00:00:00:00:00' && s.channel && s.mode != 'Unknown' && !s.disabled);
+
+                               r.up        = r.up        || s.is_assoc;
+                               r.channel   = r.channel   || s.channel;
+                               r.bitrate   = r.bitrate   || s.bitrate;
+                               r.frequency = r.frequency || s.frequency;
+                       });
+
+                       for (var i = 0; i < st.length; i++) {
+                               var iw = st[i],
+                                   sig = document.getElementById(iw.id + '-iw-signal'),
+                                   info = document.getElementById(iw.id + '-iw-status'),
+                                   disabled = (info && info.getAttribute('data-disabled') === 'true');
+
+                               var p = iw.quality;
+                               var q = disabled ? -1 : p;
+
+                               var icon;
+                               if (q < 0)
+                                       icon = L.resource('icons/signal-none.png');
+                               else if (q == 0)
+                                       icon = L.resource('icons/signal-0.png');
+                               else if (q < 25)
+                                       icon = L.resource('icons/signal-0-25.png');
+                               else if (q < 50)
+                                       icon = L.resource('icons/signal-25-50.png');
+                               else if (q < 75)
+                                       icon = L.resource('icons/signal-50-75.png');
+                               else
+                                       icon = L.resource('icons/signal-75-100.png');
+
+                               L.dom.content(sig, E('span', {
+                                       class: 'ifacebadge',
+                                       title: '%s %d %s / %s: %d %s'.format(_('Signal'), iw.signal, _('dBm'), _('Noise'), iw.noise, _('dBm'))
+                               }, [ E('img', { src: icon }), ' %d%%'.format(p) ]));
+
+                               L.itemlist(info, [
+                                       _('SSID'),       iw.ssid || '?',
+                                       _('Mode'),       iw.mode,
+                                       _('BSSID'),      iw.is_assoc ? iw.bssid : null,
+                                       _('Encryption'), iw.is_assoc ? iw.encryption || _('None') : null,
+                                       null,            iw.is_assoc ? null : E('em', disabled ? _('Wireless is disabled') : _('Wireless is not associated'))
+                               ], [ ' | ', E('br') ]);
+                       }
+
+                       for (var dev in radiostate) {
+                               var img = document.getElementById(dev + '-iw-upstate');
+                               if (img) img.src = L.resource('icons/wifi' + (radiostate[dev].up ? '' : '_disabled') + '.png');
+
+                               var stat = document.getElementById(dev + '-iw-devinfo');
+                               L.itemlist(stat, [
+                                       _('Channel'), '%s (%s %s)'.format(radiostate[dev].channel || '?', radiostate[dev].frequency || '?', _('GHz')),
+                                       _('Bitrate'), '%s %s'.format(radiostate[dev].bitrate || '?', _('Mbit/s'))
+                               ], ' | ');
+                       }
+               }
+       }
+);
diff --git a/package/luci/modules/luci-mod-network/luasrc/controller/admin/network.lua b/package/luci/modules/luci-mod-network/luasrc/controller/admin/network.lua
new file mode 100644 (file)
index 0000000..2312dcf
--- /dev/null
@@ -0,0 +1,419 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2011-2018 Jo-Philipp Wich <jo@mein.io>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.network", package.seeall)
+
+function index()
+       local uci = require("luci.model.uci").cursor()
+       local page
+
+--     if page.inreq then
+               local has_switch = false
+
+               uci:foreach("network", "switch",
+                       function(s)
+                               has_switch = true
+                               return false
+                       end)
+
+               if has_switch then
+                       page  = node("admin", "network", "vlan")
+                       page.target = cbi("admin_network/vlan")
+                       page.title  = _("Switch")
+                       page.order  = 20
+
+                       page = entry({"admin", "network", "switch_status"}, call("switch_status"), nil)
+                       page.leaf = true
+               end
+
+
+               local has_wifi = false
+
+               uci:foreach("wireless", "wifi-device",
+                       function(s)
+                               has_wifi = true
+                               return false
+                       end)
+
+               if has_wifi then
+                       page = entry({"admin", "network", "wireless_join"}, post("wifi_join"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless_add"}, post("wifi_add"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless_status"}, call("wifi_status"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless_reconnect"}, post("wifi_reconnect"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless_scan_trigger"}, post("wifi_scan_trigger"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless_scan_results"}, call("wifi_scan_results"), nil)
+                       page.leaf = true
+
+                       page = entry({"admin", "network", "wireless"}, arcombine(cbi("admin_network/wifi_overview"), cbi("admin_network/wifi")), _("Wireless"), 15)
+                       page.leaf = true
+                       page.subindex = true
+
+                       if page.inreq then
+                               local wdev
+                               local net = require "luci.model.network".init(uci)
+                               for _, wdev in ipairs(net:get_wifidevs()) do
+                                       local wnet
+                                       for _, wnet in ipairs(wdev:get_wifinets()) do
+                                               entry(
+                                                       {"admin", "network", "wireless", wnet:id()},
+                                                       alias("admin", "network", "wireless"),
+                                                       wdev:name() .. ": " .. wnet:shortname()
+                                               )
+                                       end
+                               end
+                       end
+               end
+
+
+               page = entry({"admin", "network", "iface_add"}, form("admin_network/iface_add"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "iface_status"}, call("iface_status"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "iface_reconnect"}, post("iface_reconnect"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "network"}, arcombine(cbi("admin_network/network"), cbi("admin_network/ifaces")), _("Interfaces"), 10)
+               page.leaf   = true
+               page.subindex = true
+
+               if page.inreq then
+                       uci:foreach("network", "interface",
+                               function (section)
+                                       local ifc = section[".name"]
+                                       if ifc ~= "loopback" then
+                                               entry({"admin", "network", "network", ifc},
+                                               true, ifc:upper())
+                                       end
+                               end)
+               end
+
+
+               if nixio.fs.access("/etc/config/dhcp") then
+                       page = node("admin", "network", "dhcp")
+                       page.target = cbi("admin_network/dhcp")
+                       page.title  = _("DHCP and DNS")
+                       page.order  = 30
+
+                       page = node("admin", "network", "hosts")
+                       page.target = cbi("admin_network/hosts")
+                       page.title  = _("Hostnames")
+                       page.order  = 40
+               end
+
+               page  = node("admin", "network", "routes")
+               page.target = cbi("admin_network/routes")
+               page.title  = _("Static Routes")
+               page.order  = 50
+
+               page = node("admin", "network", "diagnostics")
+               page.target = template("admin_network/diagnostics")
+               page.title  = _("Diagnostics")
+               page.order  = 60
+
+               page = entry({"admin", "network", "diag_ping"}, post("diag_ping"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "diag_nslookup"}, post("diag_nslookup"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "diag_traceroute"}, post("diag_traceroute"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "diag_ping6"}, post("diag_ping6"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "diag_traceroute6"}, post("diag_traceroute6"), nil)
+               page.leaf = true
+--     end
+end
+
+function wifi_join()
+       local tpl  = require "luci.template"
+       local http = require "luci.http"
+       local dev  = http.formvalue("device")
+       local ssid = http.formvalue("join")
+
+       if dev and ssid then
+               local cancel = (http.formvalue("cancel") or http.formvalue("cbi.cancel"))
+               if not cancel then
+                       local cbi = require "luci.cbi"
+                       local map = luci.cbi.load("admin_network/wifi_add")[1]
+
+                       if map:parse() ~= cbi.FORM_DONE then
+                               tpl.render("header")
+                               map:render()
+                               tpl.render("footer")
+                       end
+
+                       return
+               end
+       end
+
+       tpl.render("admin_network/wifi_join")
+end
+
+function wifi_add()
+       local dev = luci.http.formvalue("device")
+       local ntm = require "luci.model.network".init()
+
+       dev = dev and ntm:get_wifidev(dev)
+
+       if dev then
+               local net = dev:add_wifinet({
+                       mode       = "ap",
+                       ssid       = "OpenWrt",
+                       encryption = "none",
+                       disabled   = 1
+               })
+
+               ntm:save("wireless")
+               luci.http.redirect(net:adminlink())
+       end
+end
+
+function iface_status(ifaces)
+       local netm = require "luci.model.network".init()
+       local rv   = { }
+
+       local iface
+       for iface in ifaces:gmatch("[%w%.%-_]+") do
+               local net = netm:get_network(iface)
+               local device = net and net:get_interface()
+               if device then
+                       local data = {
+                               id         = iface,
+                               desc       = net:get_i18n(),
+                               proto      = net:proto(),
+                               uptime     = net:uptime(),
+                               gwaddr     = net:gwaddr(),
+                               ipaddrs    = net:ipaddrs(),
+                               ip6addrs   = net:ip6addrs(),
+                               dnsaddrs   = net:dnsaddrs(),
+                               ip6prefix  = net:ip6prefix(),
+                               errors     = net:errors(),
+                               name       = device:shortname(),
+                               type       = device:type(),
+                               typename   = device:get_type_i18n(),
+                               ifname     = device:name(),
+                               macaddr    = device:mac(),
+                               is_up      = net:is_up() and device:is_up(),
+                               is_alias   = net:is_alias(),
+                               is_dynamic = net:is_dynamic(),
+                               is_auto    = net:is_auto(),
+                               rx_bytes   = device:rx_bytes(),
+                               tx_bytes   = device:tx_bytes(),
+                               rx_packets = device:rx_packets(),
+                               tx_packets = device:tx_packets(),
+
+                               subdevices = { }
+                       }
+
+                       for _, device in ipairs(net:get_interfaces() or {}) do
+                               data.subdevices[#data.subdevices+1] = {
+                                       name       = device:shortname(),
+                                       type       = device:type(),
+                                       typename   = device:get_type_i18n(),
+                                       ifname     = device:name(),
+                                       macaddr    = device:mac(),
+                                       is_up      = device:is_up(),
+                                       rx_bytes   = device:rx_bytes(),
+                                       tx_bytes   = device:tx_bytes(),
+                                       rx_packets = device:rx_packets(),
+                                       tx_packets = device:tx_packets(),
+                               }
+                       end
+
+                       rv[#rv+1] = data
+               else
+                       rv[#rv+1] = {
+                               id   = iface,
+                               name = iface,
+                               type = "ethernet"
+                       }
+               end
+       end
+
+       if #rv > 0 then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(rv)
+               return
+       end
+
+       luci.http.status(404, "No such device")
+end
+
+function iface_reconnect(iface)
+       local netmd = require "luci.model.network".init()
+       local net = netmd:get_network(iface)
+       if net then
+               luci.sys.call("env -i /sbin/ifup %s >/dev/null 2>/dev/null"
+                       % luci.util.shellquote(iface))
+               luci.http.status(200, "Reconnected")
+               return
+       end
+
+       luci.http.status(404, "No such interface")
+end
+
+function wifi_status(devs)
+       local s    = require "luci.tools.status"
+       local rv   = { }
+
+       if type(devs) == "string" then
+               local dev
+               for dev in devs:gmatch("[%w%.%-]+") do
+                       rv[#rv+1] = s.wifi_network(dev)
+               end
+       end
+
+       if #rv > 0 then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(rv)
+               return
+       end
+
+       luci.http.status(404, "No such device")
+end
+
+function wifi_reconnect(radio)
+       local rc = luci.sys.call("env -i /sbin/wifi up %s" % luci.util.shellquote(radio))
+
+       if rc == 0 then
+               luci.http.status(200, "Reconnected")
+       else
+               luci.http.status(500, "Error")
+       end
+end
+
+local function _wifi_get_scan_results(cache_key)
+       local results = luci.util.ubus("session", "get", {
+               ubus_rpc_session = luci.model.uci:get_session_id(),
+               keys = { cache_key }
+       })
+
+       if type(results) == "table" and
+          type(results.values) == "table" and
+          type(results.values[cache_key]) == "table"
+       then
+               return results.values[cache_key]
+       end
+
+       return { }
+end
+
+function wifi_scan_trigger(radio, update)
+       local iw = radio and luci.sys.wifi.getiwinfo(radio)
+
+       if not iw then
+               luci.http.status(404, "No such radio device")
+               return
+       end
+
+       luci.http.status(204, "Scan scheduled")
+
+       if nixio.fork() == 0 then
+               io.stderr:close()
+               io.stdout:close()
+
+               local _, bss
+               local data, bssids = { }, { }
+               local cache_key = "scan_%s" % radio
+
+               luci.util.ubus("session", "set", {
+                       ubus_rpc_session = luci.model.uci:get_session_id(),
+                       values = { [cache_key] = nil }
+               })
+
+               for _, bss in ipairs(iw.scanlist or { }) do
+                       data[_] = bss
+                       bssids[bss.bssid] = bss
+               end
+
+               if update then
+                       for _, bss in ipairs(_wifi_get_scan_results(cache_key)) do
+                               if not bssids[bss.bssid] then
+                                       bss.stale = true
+                                       data[#data + 1] = bss
+                               end
+                       end
+               end
+
+               luci.util.ubus("session", "set", {
+                       ubus_rpc_session = luci.model.uci:get_session_id(),
+                       values = { [cache_key] = data }
+               })
+       end
+end
+
+function wifi_scan_results(radio)
+       local results = radio and _wifi_get_scan_results("scan_%s" % radio)
+
+       if results and #results > 0 then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(results)
+       else
+               luci.http.status(404, "No wireless scan results")
+       end
+end
+
+function switch_status(switches)
+       local s = require "luci.tools.status"
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(s.switch_status(switches))
+end
+
+function diag_command(cmd, addr)
+       if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
+               luci.http.prepare_content("text/plain")
+
+               local util = io.popen(cmd % luci.util.shellquote(addr))
+               if util then
+                       while true do
+                               local ln = util:read("*l")
+                               if not ln then break end
+                               luci.http.write(ln)
+                               luci.http.write("\n")
+                       end
+
+                       util:close()
+               end
+
+               return
+       end
+
+       luci.http.status(500, "Bad address")
+end
+
+function diag_ping(addr)
+       diag_command("ping -c 5 -W 1 %s 2>&1", addr)
+end
+
+function diag_traceroute(addr)
+       diag_command("traceroute -q 1 -w 1 -n %s 2>&1", addr)
+end
+
+function diag_nslookup(addr)
+       diag_command("nslookup %s 2>&1", addr)
+end
+
+function diag_ping6(addr)
+       diag_command("ping6 -c 5 %s 2>&1", addr)
+end
+
+function diag_traceroute6(addr)
+       diag_command("traceroute6 -q 1 -w 2 -n %s 2>&1", addr)
+end
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua
new file mode 100644 (file)
index 0000000..0be1b3f
--- /dev/null
@@ -0,0 +1,344 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local ipc = require "luci.ip"
+local sys = require "luci.sys"
+local o
+require "luci.util"
+
+m = Map("dhcp", translate("DHCP and DNS"),
+       translate("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"))
+
+s = m:section(TypedSection, "dnsmasq", translate("Server Settings"))
+s.anonymous = true
+s.addremove = false
+
+s:tab("general", translate("General Settings"))
+s:tab("files", translate("Resolv and Hosts Files"))
+s:tab("tftp", translate("TFTP Settings"))
+s:tab("advanced", translate("Advanced Settings"))
+
+s:taboption("general", Flag, "domainneeded",
+       translate("Domain required"),
+       translate("Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without " ..
+               "<abbr title=\"Domain Name System\">DNS</abbr>-Name"))
+
+s:taboption("general", Flag, "authoritative",
+       translate("Authoritative"),
+       translate("This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" ..
+               "abbr> in the local network"))
+
+
+s:taboption("files", Flag, "readethers",
+       translate("Use <code>/etc/ethers</code>"),
+       translate("Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host " ..
+               "Configuration Protocol\">DHCP</abbr>-Server"))
+
+s:taboption("files", Value, "leasefile",
+       translate("Leasefile"),
+       translate("file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" ..
+               "abbr>-leases will be stored"))
+
+s:taboption("files", Flag, "noresolv",
+       translate("Ignore resolve file")).optional = true
+
+rf = s:taboption("files", Value, "resolvfile",
+       translate("Resolve file"),
+       translate("local <abbr title=\"Domain Name System\">DNS</abbr> file"))
+
+rf:depends("noresolv", "")
+rf.optional = true
+
+
+s:taboption("files", Flag, "nohosts",
+       translate("Ignore <code>/etc/hosts</code>")).optional = true
+
+s:taboption("files", DynamicList, "addnhosts",
+       translate("Additional Hosts files")).optional = true
+
+qu = s:taboption("advanced", Flag, "quietdhcp",
+       translate("Suppress logging"),
+       translate("Suppress logging of the routine operation of these protocols"))
+qu.optional = true
+
+se = s:taboption("advanced", Flag, "sequential_ip",
+       translate("Allocate IP sequentially"),
+       translate("Allocate IP addresses sequentially, starting from the lowest available address"))
+se.optional = true
+
+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"),
+       translate("Do not forward requests that cannot be answered by public name servers"))
+
+
+s:taboption("advanced", Flag, "localise_queries",
+       translate("Localise queries"),
+       translate("Localise hostname depending on the requesting subnet if multiple IPs are available"))
+
+local have_dnssec_support = luci.util.checklib("/usr/sbin/dnsmasq", "libhogweed.so")
+
+if have_dnssec_support then
+       o = s:taboption("advanced", Flag, "dnssec",
+               translate("DNSSEC"))
+       o.optional = true
+
+       o = s:taboption("advanced", Flag, "dnsseccheckunsigned",
+               translate("DNSSEC check unsigned"),
+               translate("Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains"))
+       o.optional = true
+end
+
+s:taboption("general", Value, "local",
+       translate("Local server"),
+       translate("Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only"))
+
+s:taboption("general", Value, "domain",
+       translate("Local domain"),
+       translate("Local domain suffix appended to DHCP names and hosts file entries"))
+
+s:taboption("advanced", Flag, "expandhosts",
+       translate("Expand hosts"),
+       translate("Add local domain suffix to names served from hosts files"))
+
+s:taboption("advanced", Flag, "nonegcache",
+       translate("No negative cache"),
+       translate("Do not cache negative replies, e.g. for not existing domains"))
+
+s:taboption("advanced", Value, "serversfile",
+       translate("Additional servers file"),
+       translate("This file may contain lines like 'server=/domain/1.2.3.4' or 'server=1.2.3.4' for"..
+               "domain-specific or full upstream <abbr title=\"Domain Name System\">DNS</abbr> servers."))
+
+s:taboption("advanced", Flag, "strictorder",
+       translate("Strict order"),
+       translate("<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the " ..
+               "order of the resolvfile")).optional = true
+
+s:taboption("advanced", Flag, "allservers",
+       translate("All Servers"),
+       translate("Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> servers")).optional = true
+
+bn = s:taboption("advanced", DynamicList, "bogusnxdomain", translate("Bogus NX Domain Override"),
+       translate("List of hosts that supply bogus NX domain results"))
+
+bn.optional = true
+bn.placeholder = "67.215.65.132"
+
+
+s:taboption("general", Flag, "logqueries",
+       translate("Log queries"),
+       translate("Write received DNS requests to syslog")).optional = true
+
+df = s:taboption("general", DynamicList, "server", translate("DNS forwardings"),
+       translate("List of <abbr title=\"Domain Name System\">DNS</abbr> " ..
+                       "servers to forward requests to"))
+
+df.optional = true
+df.placeholder = "/example.org/10.1.2.3"
+
+
+rp = s:taboption("general", Flag, "rebind_protection",
+       translate("Rebind protection"),
+       translate("Discard upstream RFC1918 responses"))
+
+rp.rmempty = false
+
+
+rl = s:taboption("general", Flag, "rebind_localhost",
+       translate("Allow localhost"),
+       translate("Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"))
+
+rl:depends("rebind_protection", "1")
+
+
+rd = s:taboption("general", DynamicList, "rebind_domain",
+       translate("Domain whitelist"),
+       translate("List of domains to allow RFC1918 responses for"))
+rd.optional = true
+
+rd:depends("rebind_protection", "1")
+rd.datatype = "host(1)"
+rd.placeholder = "ihost.netflix.com"
+
+
+pt = s:taboption("advanced", Value, "port",
+       translate("<abbr title=\"Domain Name System\">DNS</abbr> server port"),
+       translate("Listening port for inbound DNS queries"))
+
+pt.optional = true
+pt.datatype = "port"
+pt.placeholder = 53
+
+
+qp = s:taboption("advanced", Value, "queryport",
+       translate("<abbr title=\"Domain Name System\">DNS</abbr> query port"),
+       translate("Fixed source port for outbound DNS queries"))
+
+qp.optional = true
+qp.datatype = "port"
+qp.placeholder = translate("any")
+
+
+lm = s:taboption("advanced", Value, "dhcpleasemax",
+       translate("<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration " ..
+               "Protocol\">DHCP</abbr> leases"),
+       translate("Maximum allowed number of active DHCP leases"))
+
+lm.optional = true
+lm.datatype = "uinteger"
+lm.placeholder = translate("unlimited")
+
+
+em = s:taboption("advanced", Value, "ednspacket_max",
+       translate("<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for " ..
+               "Domain Name System\">EDNS0</abbr> packet size"),
+       translate("Maximum allowed size of EDNS.0 UDP packets"))
+
+em.optional = true
+em.datatype = "uinteger"
+em.placeholder = 1280
+
+
+cq = s:taboption("advanced", Value, "dnsforwardmax",
+       translate("<abbr title=\"maximal\">Max.</abbr> concurrent queries"),
+       translate("Maximum allowed number of concurrent DNS queries"))
+
+cq.optional = true
+cq.datatype = "uinteger"
+cq.placeholder = 150
+
+cs = s:taboption("advanced", Value, "cachesize",
+       translate("Size of DNS query cache"),
+       translate("Number of cached DNS entries (max is 10000, 0 is no caching)"))
+cs.optional = true
+cs.datatype = "range(0,10000)"
+cs.placeholder = 150
+
+s:taboption("tftp", Flag, "enable_tftp",
+       translate("Enable TFTP server")).optional = true
+
+tr = s:taboption("tftp", Value, "tftp_root",
+       translate("TFTP server root"),
+       translate("Root directory for files served via TFTP"))
+
+tr.optional = true
+tr:depends("enable_tftp", "1")
+tr.placeholder = "/"
+
+
+db = s:taboption("tftp", Value, "dhcp_boot",
+       translate("Network boot image"),
+       translate("Filename of the boot image advertised to clients"))
+
+db.optional = true
+db:depends("enable_tftp", "1")
+db.placeholder = "pxelinux.0"
+
+o = s:taboption("general", Flag, "localservice",
+       translate("Local Service Only"),
+       translate("Limit DNS service to subnets interfaces on which we are serving DNS."))
+o.optional = false
+o.rmempty = false
+
+o = s:taboption("general", Flag, "nonwildcard",
+       translate("Non-wildcard"),
+       translate("Bind dynamically to interfaces rather than wildcard address (recommended as linux default)"))
+o.optional = false
+o.rmempty = true
+
+o = s:taboption("general", DynamicList, "interface",
+       translate("Listen Interfaces"),
+       translate("Limit listening to these interfaces, and loopback."))
+o.optional = true
+
+o = s:taboption("general", DynamicList, "notinterface",
+       translate("Exclude interfaces"),
+       translate("Prevent listening on these interfaces."))
+o.optional = true
+
+m:section(SimpleSection).template = "lease_status"
+
+s = m:section(TypedSection, "host", translate("Static Leases"),
+       translate("Static leases are used to assign fixed IP addresses and symbolic hostnames to " ..
+               "DHCP clients. They are also required for non-dynamic interface configurations where " ..
+               "only hosts with a corresponding lease are served.") .. "<br />" ..
+       translate("Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</em> " ..
+               "identifies the host, the <em>IPv4-Address</em> specifies the fixed address to " ..
+               "use, and the <em>Hostname</em> is assigned as a symbolic name to the requesting host. " ..
+               "The optional <em>Lease time</em> can be used to set non-standard host-specific " ..
+               "lease time, e.g. 12h, 3d or infinite."))
+
+s.addremove = true
+s.anonymous = true
+s.template = "cbi/tblsection"
+
+name = s:option(Value, "name", translate("Hostname"))
+name.datatype = "hostname('strict')"
+name.rmempty  = true
+
+function name.write(self, section, value)
+       Value.write(self, section, value)
+       m:set(section, "dns", "1")
+end
+
+function name.remove(self, section)
+       Value.remove(self, section)
+       m:del(section, "dns")
+end
+
+mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address"))
+mac.datatype = "list(unique(macaddr))"
+mac.rmempty  = true
+
+function mac.cfgvalue(self, section)
+       local val = Value.cfgvalue(self, section)
+       return ipc.checkmac(val) or val
+end
+
+ip = s:option(Value, "ip", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
+ip.datatype = "or(ip4addr,'ignore')"
+
+time = s:option(Value, "leasetime", translate("Lease time"))
+time.rmempty = true
+
+duid = s:option(Value, "duid", translate("<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"))
+duid.datatype = "and(rangelength(20,36),hexstring)"
+fp = io.open("/var/hosts/odhcpd")
+if fp then
+       for line in fp:lines() do
+               local net_val, duid_val = string.match(line, "# (%S+)%s+(%S+)")
+               if duid_val then
+                       duid:value(duid_val, duid_val)
+               end
+       end
+       fp:close()
+end
+
+hostid = s:option(Value, "hostid", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"))
+
+sys.net.host_hints(function(m, v4, v6, name)
+       if m and v4 then
+               ip:value(v4)
+               mac:value(m, "%s (%s)" %{ m, name or v4 })
+       end
+end)
+
+function ip.validate(self, value, section)
+       local m = mac:formvalue(section) or ""
+       local n = name:formvalue(section) or ""
+       if value and #n == 0 and #m == 0 then
+               return nil, translate("One of hostname or mac address must be specified!")
+       end
+       return Value.validate(self, value, section)
+end
+
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua
new file mode 100644 (file)
index 0000000..46945af
--- /dev/null
@@ -0,0 +1,31 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local ipc = require "luci.ip"
+local sys = require "luci.sys"
+
+m = Map("dhcp", translate("Hostnames"))
+
+s = m:section(TypedSection, "domain", translate("Host entries"))
+s.addremove = true
+s.anonymous = true
+s.template = "cbi/tblsection"
+
+hn = s:option(Value, "name", translate("Hostname"))
+hn.datatype = "hostname"
+hn.rmempty  = true
+
+ip = s:option(Value, "ip", translate("IP address"))
+ip.datatype = "ipaddr"
+ip.rmempty  = true
+
+sys.net.host_hints(function(mac, v4, v6, name)
+       v6 = v6 and ipc.IPv6(v6)
+
+       if v4 or (v6 and not v6:is6linklocal()) then
+               ip:value(tostring(v4 or v6), "%s (%s)" %{ tostring(v4 or v6), name or mac })
+       end
+end)
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua
new file mode 100644 (file)
index 0000000..ca66e9f
--- /dev/null
@@ -0,0 +1,101 @@
+-- Copyright 2009-2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local nw  = require "luci.model.network".init()
+local fw  = require "luci.model.firewall".init()
+local utl = require "luci.util"
+local uci = require "luci.model.uci".cursor()
+
+m = SimpleForm("network", translate("Create Interface"))
+m.redirect = luci.dispatcher.build_url("admin/network/network")
+m.reset = false
+
+function m.on_cancel()
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/network"))
+end
+
+newnet = m:field(Value, "_netname", translate("Name of the new interface"),
+       translate("The allowed characters are: <code>A-Z</code>, <code>a-z</code>, " ..
+               "<code>0-9</code> and <code>_</code>"
+       ))
+
+newnet:depends("_attach", "")
+newnet.default = arg[1] and "net_" .. arg[1]:gsub("[^%w_]+", "_")
+newnet.datatype = "and(uciname,maxlength(15))"
+
+advice = m:field(DummyValue, "d1", translate("Note: interface name length"),
+        translate("Maximum length of the name is 15 characters including " ..
+               "the automatic protocol/bridge prefix (br-, 6in4-, pppoe- etc.)"
+       ))
+
+newproto = m:field(ListValue, "_netproto", translate("Protocol of the new interface"))
+
+netbridge = m:field(Flag, "_bridge", translate("Create a bridge over multiple interfaces"))
+
+
+sifname = m:field(Value, "_ifname", translate("Cover the following interface"))
+
+sifname.widget = "radio"
+sifname.template  = "cbi/network_ifacelist"
+sifname.nobridges = true
+
+
+mifname = m:field(Value, "_ifnames", translate("Cover the following interfaces"))
+
+mifname.widget = "checkbox"
+mifname.template  = "cbi/network_ifacelist"
+mifname.nobridges = true
+
+
+local _, p
+for _, p in ipairs(nw:get_protocols()) do
+       if p:is_installed() then
+               newproto:value(p:proto(), p:get_i18n())
+               if not p:is_virtual()  then netbridge:depends("_netproto", p:proto()) end
+               if not p:is_floating() then
+                       sifname:depends({ _bridge = "",  _netproto = p:proto()})
+                       mifname:depends({ _bridge = "1", _netproto = p:proto()})
+               end
+       end
+end
+
+function newproto.validate(self, value, section)
+       local name = newnet:formvalue(section)
+       if not name or #name == 0 then
+               newnet:add_error(section, translate("No network name specified"))
+       elseif m:get(name) then
+               newnet:add_error(section, translate("The given network name is not unique"))
+       end
+
+       local proto = nw:get_protocol(value)
+       if proto and not proto:is_floating() then
+               local br = (netbridge:formvalue(section) == "1")
+               local ifn = br and mifname:formvalue(section) or sifname:formvalue(section)
+               for ifn in utl.imatch(ifn) do
+                       return value
+               end
+               return nil, translate("The selected protocol needs a device assigned")
+       end
+       return value
+end
+
+function newproto.write(self, section, value)
+       local name = newnet:formvalue(section)
+       if name and #name > 0 then
+               local br = (netbridge:formvalue(section) == "1") and "bridge" or nil
+               local net = nw:add_network(name, { proto = value, type = br })
+               if net then
+                       local ifn
+                       for ifn in utl.imatch(
+                               br and mifname:formvalue(section) or sifname:formvalue(section)
+                       ) do
+                               net:add_interface(ifn)
+                       end
+                       nw:save("network")
+                       nw:save("wireless")
+               end
+               luci.http.redirect(luci.dispatcher.build_url("admin/network/network", name))
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua
new file mode 100644 (file)
index 0000000..de7b867
--- /dev/null
@@ -0,0 +1,563 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+local ut = require "luci.util"
+local pt = require "luci.tools.proto"
+local nw = require "luci.model.network"
+local fw = require "luci.model.firewall"
+
+arg[1] = arg[1] or ""
+
+local has_dnsmasq  = fs.access("/etc/config/dhcp")
+local has_firewall = fs.access("/etc/config/firewall")
+
+m = Map("network", translate("Interfaces") .. " - " .. arg[1]:upper(), translate("On this page you can configure the network interfaces. You can bridge several interfaces by ticking the \"bridge interfaces\" field and enter the names of several network interfaces separated by spaces. You can also use <abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation <samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: <samp>eth0.1</samp>)."))
+m.redirect = luci.dispatcher.build_url("admin", "network", "network")
+m:chain("wireless")
+m:chain("luci")
+
+if has_firewall then
+       m:chain("firewall")
+end
+
+nw.init(m.uci)
+fw.init(m.uci)
+
+
+local net = nw:get_network(arg[1])
+
+local function set_ifstate(name, option, value)
+       local found = false
+
+       m.uci:foreach("luci", "ifstate", function (s)
+               if s.interface == name then
+                       m.uci:set("luci", s[".name"], option, value)
+                       found = true
+                       return false
+               end
+       end)
+
+       if not found then
+               local sid = m.uci:add("luci", "ifstate")
+               m.uci:set("luci", sid, "interface", name)
+               m.uci:set("luci", sid, option, value)
+       end
+
+       m.uci:save("luci")
+end
+
+local function get_ifstate(name, option)
+       local val
+
+       m.uci:foreach("luci", "ifstate", function (s)
+               if s.interface == name then
+                       val = s[option]
+                       return false
+               end
+       end)
+
+       return val
+end
+
+local function backup_ifnames(is_bridge)
+       if not net:is_floating() and not get_ifstate(net:name(), "ifname") then
+               local ifcs = net:get_interfaces() or { net:get_interface() }
+               if ifcs then
+                       local _, ifn
+                       local ifns = { }
+                       for _, ifn in ipairs(ifcs) do
+                               local wif = ifn:get_wifinet()
+                               ifns[#ifns+1] = wif and wif:id() or ifn:name()
+                       end
+                       if #ifns > 0 then
+                               set_ifstate(net:name(), "ifname", table.concat(ifns, " "))
+                               set_ifstate(net:name(), "bridge", tostring(net:is_bridge()))
+                       end
+               end
+       end
+end
+
+
+-- redirect to overview page if network does not exist anymore (e.g. after a revert)
+if not net then
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/network"))
+       return
+end
+
+-- protocol switch was requested, rebuild interface config and reload page
+if m:formvalue("cbid.network.%s._switch" % net:name()) then
+       -- get new protocol
+       local ptype = m:formvalue("cbid.network.%s.proto" % net:name()) or "-"
+       local proto = nw:get_protocol(ptype, net:name())
+       if proto then
+               -- backup default
+               backup_ifnames()
+
+               -- if current proto is not floating and target proto is not floating,
+               -- then attempt to retain the ifnames
+               --error(net:proto() .. " > " .. proto:proto())
+               if not net:is_floating() and not proto:is_floating() then
+                       -- if old proto is a bridge and new proto not, then clip the
+                       -- interface list to the first ifname only
+                       if net:is_bridge() and proto:is_virtual() then
+                               local _, ifn
+                               local first = true
+                               for _, ifn in ipairs(net:get_interfaces() or { net:get_interface() }) do
+                                       if first then
+                                               first = false
+                                       else
+                                               net:del_interface(ifn)
+                                       end
+                               end
+                               m:del(net:name(), "type")
+                       end
+
+               -- if the current proto is floating, the target proto not floating,
+               -- then attempt to restore ifnames from backup
+               elseif net:is_floating() and not proto:is_floating() then
+                       -- if we have backup data, then re-add all orphaned interfaces
+                       -- from it and restore the bridge choice
+                       local br = (get_ifstate(net:name(), "bridge") == "true")
+                       local ifn
+                       local ifns = { }
+                       for ifn in ut.imatch(get_ifstate(net:name(), "ifname")) do
+                               ifn = nw:get_interface(ifn)
+                               if ifn and not ifn:get_network() then
+                                       proto:add_interface(ifn)
+                                       if not br then
+                                               break
+                                       end
+                               end
+                       end
+                       if br then
+                               m:set(net:name(), "type", "bridge")
+                       end
+
+               -- in all other cases clear the ifnames
+               else
+                       local _, ifc
+                       for _, ifc in ipairs(net:get_interfaces() or { net:get_interface() }) do
+                               net:del_interface(ifc)
+                       end
+                       m:del(net:name(), "type")
+               end
+
+               -- clear options
+               local k, v
+               for k, v in pairs(m:get(net:name())) do
+                       if k:sub(1,1) ~= "." and
+                          k ~= "type" and
+                          k ~= "ifname"
+                       then
+                               m:del(net:name(), k)
+                       end
+               end
+
+               -- set proto
+               m:set(net:name(), "proto", proto:proto())
+               m.uci:save("network")
+               m.uci:save("wireless")
+
+               -- reload page
+               luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1]))
+               return
+       end
+end
+
+-- dhcp setup was requested, create section and reload page
+if m:formvalue("cbid.dhcp._enable._enable") then
+       m.uci:section("dhcp", "dhcp", arg[1], {
+               interface = arg[1],
+               start     = "100",
+               limit     = "150",
+               leasetime = "12h"
+       })
+
+       m.uci:save("dhcp")
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1]))
+       return
+end
+
+local ifc = net:get_interface()
+
+s = m:section(NamedSection, arg[1], "interface", translate("Common Configuration"))
+s.addremove = false
+
+s:tab("general",  translate("General Setup"))
+s:tab("advanced", translate("Advanced Settings"))
+s:tab("physical", translate("Physical Settings"))
+
+if has_firewall then
+       s:tab("firewall", translate("Firewall Settings"))
+end
+
+
+st = s:taboption("general", DummyValue, "__status", translate("Status"))
+
+local function set_status()
+       -- if current network is empty, print a warning
+       if not net:is_floating() and net:is_empty() then
+               st.template = "cbi/dvalue"
+               st.network  = nil
+               st.value    = translate("There is no device assigned yet, please attach a network device in the \"Physical Settings\" tab")
+       else
+               st.template = "admin_network/iface_status"
+               st.network  = arg[1]
+               st.value    = nil
+       end
+end
+
+m.on_init = set_status
+m.on_after_save = set_status
+
+
+p = s:taboption("general", ListValue, "proto", translate("Protocol"))
+p.default = net:proto()
+
+
+if not net:is_installed() then
+       p_install = s:taboption("general", Button, "_install")
+       p_install.title      = translate("Protocol support is not installed")
+       p_install.inputtitle = translate("Install package %q" % net:opkg_package())
+       p_install.inputstyle = "apply"
+       p_install:depends("proto", net:proto())
+
+       function p_install.write()
+               return luci.http.redirect(
+                       luci.dispatcher.build_url("admin/system/opkg") ..
+                       "?query=%s" % net:opkg_package()
+               )
+       end
+end
+
+
+p_switch = s:taboption("general", Button, "_switch")
+p_switch.title      = translate("Really switch protocol?")
+p_switch.inputtitle = translate("Switch protocol")
+p_switch.inputstyle = "apply"
+
+local _, pr
+for _, pr in ipairs(nw:get_protocols()) do
+       p:value(pr:proto(), pr:get_i18n())
+       if pr:proto() ~= net:proto() then
+               p_switch:depends("proto", pr:proto())
+       end
+end
+
+
+auto = s:taboption("general", Flag, "auto", translate("Bring up on boot"))
+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)"))
+       br.enabled = "bridge"
+       br.rmempty = true
+       br:depends("proto", "static")
+       br:depends("proto", "dhcp")
+       br:depends("proto", "none")
+
+       stp = s:taboption("physical", Flag, "stp", translate("Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"),
+               translate("Enables the Spanning Tree Protocol on this bridge"))
+       stp:depends("type", "bridge")
+       stp.rmempty = true
+
+       igmp = s:taboption("physical", Flag, "igmp_snooping", translate("Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> snooping"),
+               translate("Enables IGMP snooping on this bridge"))
+       igmp:depends("type", "bridge")
+       igmp.rmempty = true
+end
+
+
+if not net:is_floating() then
+       ifname_single = s:taboption("physical", Value, "ifname_single", translate("Interface"))
+       ifname_single.template = "cbi/network_ifacelist"
+       ifname_single.widget = "radio"
+       ifname_single.nobridges = net:is_bridge()
+       ifname_single.noaliases = false
+       ifname_single.rmempty = false
+       ifname_single.network = arg[1]
+       ifname_single:depends("type", "")
+
+       function ifname_single.cfgvalue(self, s)
+               -- let the template figure out the related ifaces through the network model
+               return nil
+       end
+
+       function ifname_single.write(self, s, val)
+               local _, i
+               local new_ifs = { }
+               local old_ifs = { }
+
+               local alias = net:is_alias()
+
+               if alias then
+                       old_ifs[1] = '@' .. alias
+               else
+                       for _, i in ipairs(net:get_interfaces() or { net:get_interface() }) do
+                               old_ifs[#old_ifs+1] = i:name()
+                       end
+               end
+
+               for i in ut.imatch(val) do
+                       new_ifs[#new_ifs+1] = i
+
+                       -- if this is not a bridge, only assign first interface
+                       if self.option == "ifname_single" then
+                               break
+                       end
+               end
+
+               table.sort(old_ifs)
+               table.sort(new_ifs)
+
+               for i = 1, math.max(#old_ifs, #new_ifs) do
+                       if old_ifs[i] ~= new_ifs[i] then
+                               backup_ifnames()
+                               for i = 1, #old_ifs do
+                                       net:del_interface(old_ifs[i])
+                               end
+                               for i = 1, #new_ifs do
+                                       net:add_interface(new_ifs[i])
+                               end
+                               break
+                       end
+               end
+       end
+end
+
+
+if not net:is_virtual() then
+       ifname_multi = s:taboption("physical", Value, "ifname_multi", translate("Interface"))
+       ifname_multi.template = "cbi/network_ifacelist"
+       ifname_multi.nobridges = net:is_bridge()
+       ifname_multi.noaliases = true
+       ifname_multi.rmempty = false
+       ifname_multi.network = arg[1]
+       ifname_multi.widget = "checkbox"
+       ifname_multi:depends("type", "bridge")
+       ifname_multi.cfgvalue = ifname_single.cfgvalue
+       ifname_multi.write = ifname_single.write
+end
+
+
+if has_firewall then
+       fwzone = s:taboption("firewall", Value, "_fwzone",
+               translate("Create / Assign firewall-zone"),
+               translate("Choose the firewall zone you want to assign to this interface. Select <em>unspecified</em> to remove the interface from the associated zone or fill out the <em>create</em> field to define a new zone and attach the interface to it."))
+
+       fwzone.template = "cbi/firewall_zonelist"
+       fwzone.network = arg[1]
+
+       function fwzone.cfgvalue(self, section)
+               self.iface = section
+               local z = fw:get_zone_by_network(section)
+               return z and z:name()
+       end
+
+       function fwzone.write(self, section, value)
+               local zone = fw:get_zone(value) or fw:add_zone(value)
+               if zone then
+                       fw:del_network(section)
+                       zone:add_network(section)
+               end
+       end
+
+       function fwzone.remove(self, section)
+               fw:del_network(section)
+       end
+end
+
+
+function p.write() end
+function p.remove() end
+function p.validate(self, value, section)
+       if value == net:proto() then
+               if not net:is_floating() and net:is_empty() then
+                       local ifn = ((br and (br:formvalue(section) == "bridge"))
+                               and ifname_multi:formvalue(section)
+                            or ifname_single:formvalue(section))
+
+                       for ifn in ut.imatch(ifn) do
+                               return value
+                       end
+                       return nil, translate("The selected protocol needs a device assigned")
+               end
+       end
+       return value
+end
+
+
+local form, ferr = loadfile(
+       ut.libpath() .. "/model/cbi/admin_network/proto_%s.lua" % net:proto()
+)
+
+if not form then
+       s:taboption("general", DummyValue, "_error",
+               translate("Missing protocol extension for proto %q" % net:proto())
+       ).value = ferr
+else
+       setfenv(form, getfenv(1))(m, s, net)
+end
+
+
+local _, field
+for _, field in ipairs(s.children) do
+       if field ~= st and field ~= p and field ~= p_install and field ~= p_switch then
+               if next(field.deps) then
+                       local _, dep
+                       for _, dep in ipairs(field.deps) do
+                               dep.proto = net:proto()
+                       end
+               else
+                       field:depends("proto", net:proto())
+               end
+       end
+end
+
+
+--
+-- Display DNS settings if dnsmasq is available
+--
+
+if has_dnsmasq and net:proto() == "static" then
+       m2 = Map("dhcp", "", "")
+
+       local has_section = false
+
+       m2.uci:foreach("dhcp", "dhcp", function(s)
+               if s.interface == arg[1] then
+                       has_section = true
+                       return false
+               end
+       end)
+
+       if not has_section and has_dnsmasq then
+
+               s = m2:section(TypedSection, "dhcp", translate("DHCP Server"))
+               s.anonymous   = true
+               s.cfgsections = function() return { "_enable" } end
+
+               x = s:option(Button, "_enable")
+               x.title      = translate("No DHCP Server configured for this interface")
+               x.inputtitle = translate("Setup DHCP Server")
+               x.inputstyle = "apply"
+
+       elseif has_section then
+
+               s = m2:section(TypedSection, "dhcp", translate("DHCP Server"))
+               s.addremove = false
+               s.anonymous = true
+               s:tab("general",  translate("General Setup"))
+               s:tab("advanced", translate("Advanced Settings"))
+               s:tab("ipv6", translate("IPv6 Settings"))
+
+               function s.filter(self, section)
+                       return m2.uci:get("dhcp", section, "interface") == arg[1]
+               end
+
+               local ignore = s:taboption("general", Flag, "ignore",
+                       translate("Ignore interface"),
+                       translate("Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for " ..
+                               "this interface."))
+
+               local start = s:taboption("general", Value, "start", translate("Start"),
+                       translate("Lowest leased address as offset from the network address."))
+               start.optional = true
+               start.datatype = "or(uinteger,ip4addr)"
+               start.default = "100"
+
+               local limit = s:taboption("general", Value, "limit", translate("Limit"),
+                       translate("Maximum number of leased addresses."))
+               limit.optional = true
+               limit.datatype = "uinteger"
+               limit.default = "150"
+
+               local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"),
+                       translate("Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."))
+               ltime.rmempty = true
+               ltime.default = "12h"
+
+               local dd = s:taboption("advanced", Flag, "dynamicdhcp",
+                       translate("Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"),
+                       translate("Dynamically allocate DHCP addresses for clients. If disabled, only " ..
+                               "clients having static leases will be served."))
+               dd.default = dd.enabled
+
+               s:taboption("advanced", Flag, "force", translate("Force"),
+                       translate("Force DHCP on this network even if another server is detected."))
+
+               -- XXX: is this actually useful?
+               --s:taboption("advanced", Value, "name", translate("Name"),
+               --      translate("Define a name for this network."))
+
+               mask = s:taboption("advanced", Value, "netmask",
+                       translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"),
+                       translate("Override the netmask sent to clients. Normally it is calculated " ..
+                               "from the subnet that is served."))
+
+               mask.optional = true
+               mask.datatype = "ip4addr"
+
+               s:taboption("advanced", DynamicList, "dhcp_option", translate("DHCP-Options"),
+                       translate("Define additional DHCP options, for example \"<code>6,192.168.2.1," ..
+                               "192.168.2.2</code>\" which advertises different DNS servers to clients."))
+
+               for i, n in ipairs(s.children) do
+                       if n ~= ignore then
+                               n:depends("ignore", "")
+                       end
+               end
+
+               o = s:taboption("ipv6", ListValue, "ra", translate("Router Advertisement-Service"))
+               o:value("", translate("disabled"))
+               o:value("server", translate("server mode"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "dhcpv6", translate("DHCPv6-Service"))
+               o:value("", translate("disabled"))
+               o:value("server", translate("server mode"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "ndp", translate("NDP-Proxy"))
+               o:value("", translate("disabled"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "ra_management", translate("DHCPv6-Mode"),
+                       translate("Default is stateless + stateful"))
+               o:value("0", translate("stateless"))
+               o:value("1", translate("stateless + stateful"))
+               o:value("2", translate("stateful-only"))
+               o:depends("dhcpv6", "server")
+               o:depends("dhcpv6", "hybrid")
+               o.default = "1"
+
+               o = s:taboption("ipv6", Flag, "ra_default", translate("Always announce default router"),
+                       translate("Announce as default router even if no public prefix is available."))
+               o:depends("ra", "server")
+               o:depends("ra", "hybrid")
+
+               s:taboption("ipv6", DynamicList, "dns", translate("Announced DNS servers"))
+               s:taboption("ipv6", DynamicList, "domain", translate("Announced DNS domains"))
+
+       else
+               m2 = nil
+       end
+end
+
+
+return m, m2
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua
new file mode 100644 (file)
index 0000000..b98086d
--- /dev/null
@@ -0,0 +1,202 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+local tpl = require "luci.template"
+local ntm = require "luci.model.network".init()
+local fwm = require "luci.model.firewall".init()
+local json = require "luci.jsonc"
+
+m = Map("network", translate("Interfaces"))
+m:chain("wireless")
+m:chain("firewall")
+m:chain("dhcp")
+m.pageaction = false
+
+
+local _, net
+local ifaces, netlist = { }, { }
+
+for _, net in ipairs(ntm:get_networks()) do
+       if net:name() ~= "loopback" then
+               local zn = net:zonename()
+               local z = zn and fwm:get_zone(zn) or fwm:get_zone_by_network(net:name())
+
+               local w = 1
+               if net:is_alias() then
+                       w = 2
+               elseif net:is_dynamic() then
+                       w = 3
+               end
+
+               ifaces[#ifaces+1] = net:name()
+               netlist[#netlist+1] = {
+                       net:name(), z and z:name() or "-", z, net, w
+               }
+       end
+end
+
+table.sort(netlist,
+       function(a, b)
+               if a[2] ~= b[2] then
+                       return a[2] < b[2]
+               elseif a[5] ~= b[5] then
+                       return a[5] < b[5]
+               else
+                       return a[1] < b[1]
+               end
+       end)
+
+s = m:section(TypedSection, "interface", translate("Interface Overview"))
+s.template = "admin_network/iface_overview"
+s.netlist = netlist
+
+function s.cfgsections(self)
+       local _, net, sl = nil, nil, { }
+
+       for _, net in ipairs(netlist) do
+               sl[#sl+1] = net[1]
+       end
+
+       return sl
+end
+
+o = s:option(Value, "__disable__")
+
+function o.write(self, sid, value)
+       if value ~= "1" then
+               m:set(sid, "auto", "")
+       else
+               m:set(sid, "auto", "0")
+       end
+end
+
+o.remove = o.write
+
+o = s:option(Value, "__delete__")
+
+function o.write(self, sid, value)
+       ntm:del_network(sid)
+end
+
+
+if fs.access("/etc/init.d/dsl_control") then
+       local ok, boarddata = pcall(json.parse, fs.readfile("/etc/board.json"))
+       local modemtype = (ok == true)
+               and (type(boarddata) == "table")
+               and (type(boarddata.dsl) == "table")
+               and (type(boarddata.dsl.modem) == "table")
+               and boarddata.dsl.modem.type
+
+       dsl = m:section(TypedSection, "dsl", translate("DSL"))
+       dsl.anonymous = true
+
+       annex = dsl:option(ListValue, "annex", translate("Annex"))
+       annex:value("a", translate("Annex A + L + M (all)"))
+       annex:value("b", translate("Annex B (all)"))
+       annex:value("j", translate("Annex J (all)"))
+       annex:value("m", translate("Annex M (all)"))
+       annex:value("bdmt", translate("Annex B G.992.1"))
+       annex:value("b2", translate("Annex B G.992.3"))
+       annex:value("b2p", translate("Annex B G.992.5"))
+       annex:value("at1", translate("ANSI T1.413"))
+       annex:value("admt", translate("Annex A G.992.1"))
+       annex:value("alite", translate("Annex A G.992.2"))
+       annex:value("a2", translate("Annex A G.992.3"))
+       annex:value("a2p", translate("Annex A G.992.5"))
+       annex:value("l", translate("Annex L G.992.3 POTS 1"))
+       annex:value("m2", translate("Annex M G.992.3"))
+       annex:value("m2p", translate("Annex M G.992.5"))
+
+       tone = dsl:option(ListValue, "tone", translate("Tone"))
+       tone:value("", translate("auto"))
+       tone:value("a", translate("A43C + J43 + A43"))
+       tone:value("av", translate("A43C + J43 + A43 + V43"))
+       tone:value("b", translate("B43 + B43C"))
+       tone:value("bv", translate("B43 + B43C + V43"))
+
+       if modemtype == "vdsl" then
+               xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode"))
+               xfer_mode:value("", translate("auto"))
+               xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)"))
+               xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)"))
+
+               line_mode = dsl:option(ListValue, "line_mode", translate("DSL line mode"))
+               line_mode:value("", translate("auto"))
+               line_mode:value("adsl", translate("ADSL"))
+               line_mode:value("vdsl", translate("VDSL"))
+
+               ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset"))
+               ds_snr.default = "0"
+               for i = -100, 100, 5 do
+                       ds_snr:value(i, translatef("%.1f dB", i / 10))
+               end
+       end
+
+       firmware = dsl:option(Value, "firmware", translate("Firmware File"))
+
+       m.pageaction = true
+end
+
+-- Show ATM bridge section if we have the capabilities
+if fs.access("/usr/sbin/br2684ctl") then
+       atm = m:section(TypedSection, "atm-bridge", translate("ATM Bridges"),
+               translate("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."))
+
+       atm.addremove = true
+       atm.anonymous = true
+
+       atm.create = function(self, section)
+               local sid = TypedSection.create(self, section)
+               local max_unit = -1
+
+               m.uci:foreach("network", "atm-bridge",
+                       function(s)
+                               local u = tonumber(s.unit)
+                               if u ~= nil and u > max_unit then
+                                       max_unit = u
+                               end
+                       end)
+
+               m.uci:set("network", sid, "unit", max_unit + 1)
+               m.uci:set("network", sid, "atmdev", 0)
+               m.uci:set("network", sid, "encaps", "llc")
+               m.uci:set("network", sid, "payload", "bridged")
+               m.uci:set("network", sid, "vci", 35)
+               m.uci:set("network", sid, "vpi", 8)
+
+               return sid
+       end
+
+       atm:tab("general", translate("General Setup"))
+       atm:tab("advanced", translate("Advanced Settings"))
+
+       vci    = atm:taboption("general", Value, "vci", translate("ATM Virtual Channel Identifier (VCI)"))
+       vpi    = atm:taboption("general", Value, "vpi", translate("ATM Virtual Path Identifier (VPI)"))
+       encaps = atm:taboption("general", ListValue, "encaps", translate("Encapsulation mode"))
+       encaps:value("llc", translate("LLC"))
+       encaps:value("vc", translate("VC-Mux"))
+
+       atmdev  = atm:taboption("advanced", Value, "atmdev", translate("ATM device number"))
+       unit    = atm:taboption("advanced", Value, "unit", translate("Bridge unit number"))
+       payload = atm:taboption("advanced", ListValue, "payload", translate("Forwarding mode"))
+       payload:value("bridged", translate("bridged"))
+       payload:value("routed", translate("routed"))
+       m.pageaction = true
+end
+
+local network = require "luci.model.network"
+if network:has_ipv6() then
+       local s = m:section(NamedSection, "globals", "globals", translate("Global network options"))
+       local o = s:option(Value, "ula_prefix", translate("IPv6 ULA-Prefix"))
+       o.datatype = "ip6addr"
+       o.rmempty = true
+       m.pageaction = true
+end
+
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua
new file mode 100644 (file)
index 0000000..1970f36
--- /dev/null
@@ -0,0 +1,102 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local wa = require "luci.tools.webadmin"
+local fs = require "nixio.fs"
+
+m = Map("network",
+       translate("Routes"),
+       translate("Routes specify over which interface and gateway a certain host or network " ..
+               "can be reached."))
+
+s = m:section(TypedSection, "route", translate("Static IPv4 Routes"))
+s.addremove = true
+s.anonymous = true
+
+s.template  = "cbi/tblsection"
+
+iface = s:option(ListValue, "interface", translate("Interface"))
+wa.cbi_add_networks(iface)
+
+t = s:option(Value, "target", translate("Target"), translate("Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"))
+t.datatype = "ip4addr"
+t.rmempty = false
+
+n = s:option(Value, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"), translate("if target is a network"))
+n.placeholder = "255.255.255.255"
+n.datatype = "ip4addr"
+n.rmempty = true
+
+g = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"))
+g.datatype = "ip4addr"
+g.rmempty = true
+
+metric = s:option(Value, "metric", translate("Metric"))
+metric.placeholder = 0
+metric.datatype = "range(0,255)"
+metric.size = 5
+metric.rmempty = true
+
+mtu = s:option(Value, "mtu", translate("MTU"))
+mtu.placeholder = 1500
+mtu.datatype = "range(64,9000)"
+mtu.size = 5
+mtu.rmempty = true
+
+routetype = s:option(Value, "type", translate("Route type"))
+routetype:value("", "unicast")
+routetype:value("local", "local")
+routetype:value("broadcast", "broadcast")
+routetype:value("multicast", "multicast")
+routetype:value("unreachable", "unreachable")
+routetype:value("prohibit", "prohibit")
+routetype:value("blackhole", "blackhole")
+routetype:value("anycast", "anycast")
+routetype.default = ""
+routetype.rmempty = true
+
+if fs.access("/proc/net/ipv6_route") then
+       s = m:section(TypedSection, "route6", translate("Static IPv6 Routes"))
+       s.addremove = true
+       s.anonymous = true
+
+       s.template  = "cbi/tblsection"
+
+       iface = s:option(ListValue, "interface", translate("Interface"))
+       wa.cbi_add_networks(iface)
+
+       t = s:option(Value, "target", translate("Target"), translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network (CIDR)"))
+       t.datatype = "ip6addr"
+       t.rmempty = false
+
+       g = s:option(Value, "gateway", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"))
+       g.datatype = "ip6addr"
+       g.rmempty = true
+
+       metric = s:option(Value, "metric", translate("Metric"))
+       metric.placeholder = 0
+       metric.datatype = "range(0,65535)" -- XXX: not sure
+       metric.size = 5
+       metric.rmempty = true
+
+       mtu = s:option(Value, "mtu", translate("MTU"))
+       mtu.placeholder = 1500
+       mtu.datatype = "range(64,9000)"
+       mtu.size = 5
+       mtu.rmempty = true
+
+       routetype = s:option(Value, "type", translate("Route type"))
+       routetype:value("", "unicast")
+       routetype:value("local", "local")
+       routetype:value("broadcast", "broadcast")
+       routetype:value("multicast", "multicast")
+       routetype:value("unreachable", "unreachable")
+       routetype:value("prohibit", "prohibit")
+       routetype:value("blackhole", "blackhole")
+       routetype:value("anycast", "anycast")
+       routetype.default = ""
+       routetype.rmempty = true
+end
+
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua
new file mode 100644 (file)
index 0000000..edeb193
--- /dev/null
@@ -0,0 +1,389 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s in which computers can communicate directly with each other. <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s are often used to separate different network 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."))
+
+local fs = require "nixio.fs"
+local ut = require "luci.util"
+local nw = require "luci.model.network"
+local switches = { }
+
+nw.init(m.uci)
+
+local topologies = nw:get_switch_topologies() or {}
+
+local update_interfaces = function(old_ifname, new_ifname)
+       local info = { }
+
+       m.uci:foreach("network", "interface", function(section)
+               local old_ifnames = section.ifname
+               local new_ifnames = { }
+               local cur_ifname
+               local changed = false
+               for cur_ifname in luci.util.imatch(old_ifnames) do
+                       if cur_ifname == old_ifname then
+                               new_ifnames[#new_ifnames+1] = new_ifname
+                               changed = true
+                       else
+                               new_ifnames[#new_ifnames+1] = cur_ifname
+                       end
+               end
+               if changed then
+                       m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " "))
+
+                       info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.",
+                               section[".name"], old_ifname, new_ifname)
+               end
+       end)
+
+       if #info > 0 then
+               m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n")
+       end
+end
+
+local vlan_already_created
+
+m.uci:foreach("network", "switch",
+       function(x)
+               local sid         = x['.name']
+               local switch_name = x.name or sid
+               local has_vlan    = nil
+               local has_learn   = nil
+               local has_vlan4k  = nil
+               local has_jumbo3  = nil
+               local has_mirror  = nil
+               local min_vid     = 0
+               local max_vid     = 16
+               local num_vlans   = 16
+
+               local switch_title
+               local enable_vlan4k = false
+
+               local topo = topologies[switch_name]
+
+               if not topo then
+                       m.message = translatef("Switch %q has an unknown topology - the VLAN settings might not be accurate.", switch_name)
+                       topo = {
+                               ports = {
+                                       { num = 0, label = "Port 1" },
+                                       { num = 1, label = "Port 2" },
+                                       { num = 2, label = "Port 3" },
+                                       { num = 3, label = "Port 4" },
+                                       { num = 4, label = "Port 5" },
+                                       { num = 5, label = "CPU (eth0)", tagged = false }
+                               }
+                       }
+               end
+
+               -- Parse some common switch properties from swconfig help output.
+               local swc = io.popen("swconfig dev %s help 2>/dev/null" % ut.shellquote(switch_name))
+               if swc then
+
+                       local is_port_attr = false
+                       local is_vlan_attr = false
+
+                       while true do
+                               local line = swc:read("*l")
+                               if not line then break end
+
+                               if line:match("^%s+%-%-vlan") then
+                                       is_vlan_attr = true
+
+                               elseif line:match("^%s+%-%-port") then
+                                       is_vlan_attr = false
+                                       is_port_attr = true
+
+                               elseif line:match("cpu @") then
+                                       switch_title = line:match("^switch%d: %w+%((.-)%)")
+                                       num_vlans  = tonumber(line:match("vlans: (%d+)")) or 16
+                                       min_vid    = 1
+
+                               elseif line:match(": pvid") or line:match(": tag") or line:match(": vid") then
+                                       if is_vlan_attr then has_vlan4k = line:match(": (%w+)") end
+
+                               elseif line:match(": enable_vlan4k") then
+                                       enable_vlan4k = true
+
+                               elseif line:match(": enable_vlan") then
+                                       has_vlan = "enable_vlan"
+
+                               elseif line:match(": enable_learning") then
+                                       has_learn = "enable_learning"
+
+                               elseif line:match(": enable_mirror_rx") then
+                                       has_mirror = "enable_mirror_rx"
+
+                               elseif line:match(": max_length") then
+                                       has_jumbo3 = "max_length"
+                               end
+                       end
+
+                       swc:close()
+               end
+
+
+               -- Switch properties
+               s = m:section(NamedSection, x['.name'], "switch",
+                       switch_title and translatef("Switch %q (%s)", switch_name, switch_title)
+                                             or translatef("Switch %q", switch_name))
+
+               s.addremove = false
+
+               if has_vlan then
+                       s:option(Flag, has_vlan, translate("Enable VLAN functionality"))
+               end
+
+               if has_learn then
+                       x = s:option(Flag, has_learn, translate("Enable learning and aging"))
+                       x.default = x.enabled
+               end
+
+               if has_jumbo3 then
+                       x = s:option(Flag, has_jumbo3, translate("Enable Jumbo Frame passthrough"))
+                       x.enabled = "3"
+                       x.rmempty = true
+               end
+
+               -- Does this switch support port mirroring?
+               if has_mirror then
+                       s:option(Flag, "enable_mirror_rx", translate("Enable mirroring of incoming packets"))
+                       s:option(Flag, "enable_mirror_tx", translate("Enable mirroring of outgoing packets"))
+
+                       local sp = s:option(ListValue, "mirror_source_port", translate("Mirror source port"))
+                       local mp = s:option(ListValue, "mirror_monitor_port", translate("Mirror monitor port"))
+
+                       sp:depends("enable_mirror_tx", "1")
+                       sp:depends("enable_mirror_rx", "1")
+
+                       mp:depends("enable_mirror_tx", "1")
+                       mp:depends("enable_mirror_rx", "1")
+
+                       local _, pt
+                       for _, pt in ipairs(topo.ports) do
+                               sp:value(pt.num, pt.label)
+                               mp:value(pt.num, pt.label)
+                       end
+               end
+
+               -- VLAN table
+               s = m:section(TypedSection, "switch_vlan",
+                       switch_title and translatef("VLANs on %q (%s)", switch_name, switch_title)
+                                                 or translatef("VLANs on %q", switch_name))
+
+               s.template = "cbi/tblsection"
+               s.addremove = true
+               s.anonymous = true
+
+               -- Filter by switch
+               s.filter = function(self, section)
+                       local device = m:get(section, "device")
+                       return (device and device == switch_name)
+               end
+
+               -- Override cfgsections callback to enforce row ordering by vlan id.
+               s.cfgsections = function(self)
+                       local osections = TypedSection.cfgsections(self)
+                       local sections = { }
+                       local section
+
+                       for _, section in luci.util.spairs(
+                               osections,
+                               function(a, b)
+                                       return (tonumber(m:get(osections[a], has_vlan4k or "vlan")) or 9999)
+                                               <  (tonumber(m:get(osections[b], has_vlan4k or "vlan")) or 9999)
+                               end
+                       ) do
+                               sections[#sections+1] = section
+                       end
+
+                       return sections
+               end
+
+               -- When creating a new vlan, preset it with the highest found vid + 1.
+               s.create = function(self, section, origin)
+                       -- VLAN has already been created for another switch
+                       if vlan_already_created then
+                               return
+
+                       -- VLAN add button was pressed in an empty VLAN section so only
+                       -- accept the create event if our switch is without existing VLANs
+                       elseif origin == "" then
+                               local is_empty_switch = true
+
+                               m.uci:foreach("network", "switch_vlan",
+                                       function(s)
+                                               if s.device == switch_name then
+                                                       is_empty_switch = false
+                                                       return false
+                                               end
+                                       end)
+
+                               if not is_empty_switch then
+                                       return
+                               end
+
+                       -- VLAN was created for another switch
+                       elseif m:get(origin, "device") ~= switch_name then
+                               return
+                       end
+
+                       local sid = TypedSection.create(self, section)
+
+                       local max_nr = 0
+                       local max_id = 0
+
+                       m.uci:foreach("network", "switch_vlan",
+                               function(s)
+                                       if s.device == switch_name then
+                                               local nr = tonumber(s.vlan)
+                                               local id = has_vlan4k and tonumber(s[has_vlan4k])
+                                               if nr ~= nil and nr > max_nr then max_nr = nr end
+                                               if id ~= nil and id > max_id then max_id = id end
+                                       end
+                               end)
+
+                       m:set(sid, "device", switch_name)
+                       m:set(sid, "vlan", max_nr + 1)
+
+                       if has_vlan4k then
+                               m:set(sid, has_vlan4k, max_id + 1)
+                       end
+
+                       vlan_already_created = true
+
+                       return sid
+               end
+
+
+               local port_opts = { }
+               local untagged  = { }
+
+               -- Parse current tagging state from the "ports" option.
+               local portvalue = function(self, section)
+                       local pt
+                       for pt in (m:get(section, "ports") or ""):gmatch("%w+") do
+                               local pc, tu = pt:match("^(%d+)([tu]*)")
+                               if pc == self.option then return (#tu > 0) and tu or "u" end
+                       end
+                       return ""
+               end
+
+               -- Validate port tagging. Ensure that a port is only untagged once,
+               -- bail out if not.
+               local portvalidate = function(self, value, section)
+                       -- ensure that the ports appears untagged only once
+                       if value == "u" then
+                               if not untagged[self.option] then
+                                       untagged[self.option] = true
+                               else
+                                       return nil,
+                                               translatef("%s is untagged in multiple VLANs!", self.title)
+                               end
+                       end
+                       return value
+               end
+
+
+               local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID")
+               local mx_vid = has_vlan4k and 4094 or (num_vlans - 1)
+
+               vid.rmempty = false
+               vid.forcewrite = true
+               vid.vlan_used = { }
+               vid.datatype = "and(uinteger,range("..min_vid..","..mx_vid.."))"
+
+               -- Validate user provided VLAN ID, make sure its within the bounds
+               -- allowed by the switch.
+               vid.validate = function(self, value, section)
+                       local v = tonumber(value)
+                       local m = has_vlan4k and 4094 or (num_vlans - 1)
+                       if v ~= nil and v >= min_vid and v <= m then
+                               if not self.vlan_used[v] then
+                                       self.vlan_used[v] = true
+                                       return value
+                               else
+                                       return nil,
+                                               translatef("Invalid VLAN ID given! Only unique IDs are allowed")
+                               end
+                       else
+                               return nil,
+                                       translatef("Invalid VLAN ID given! Only IDs between %d and %d are allowed.", min_vid, m)
+                       end
+               end
+
+               -- When writing the "vid" or "vlan" option, serialize the port states
+               -- as well and write them as "ports" option to uci.
+               vid.write = function(self, section, new_vid)
+                       local o
+                       local p = { }
+                       for _, o in ipairs(port_opts) do
+                               local new_tag = o:formvalue(section)
+                               if new_tag == "t" then
+                                       p[#p+1] = o.option .. new_tag
+                               elseif new_tag == "u" then
+                                       p[#p+1] = o.option
+                               end
+
+                               if o.info and o.info.device then
+                                       local old_tag = o:cfgvalue(section)
+                                       local old_vid = self:cfgvalue(section)
+                                       if old_tag ~= new_tag or old_vid ~= new_vid then
+                                               local old_ifname = (old_tag == "u") and o.info.device
+                                                       or "%s.%s" %{ o.info.device, old_vid }
+
+                                               local new_ifname = (new_tag == "u") and o.info.device
+                                                       or "%s.%s" %{ o.info.device, new_vid }
+
+                                               if old_ifname ~= new_ifname then
+                                                       update_interfaces(old_ifname, new_ifname)
+                                               end
+                                       end
+                               end
+                       end
+
+                       if enable_vlan4k then
+                               m:set(sid, "enable_vlan4k", "1")
+                       end
+
+                       m:set(section, "ports", table.concat(p, " "))
+                       return Value.write(self, section, new_vid)
+               end
+
+               -- Fallback to "vlan" option if "vid" option is supported but unset.
+               vid.cfgvalue = function(self, section)
+                       return m:get(section, has_vlan4k or "vlan")
+                               or m:get(section, "vlan")
+               end
+
+               local _, pt
+               for _, pt in ipairs(topo.ports) do
+                       local po = s:option(ListValue, tostring(pt.num), pt.label)
+
+                       po:value("",  translate("off"))
+
+                       if not pt.tagged then
+                               po:value("u", translate("untagged"))
+                       end
+
+                       po:value("t", translate("tagged"))
+
+                       po.cfgvalue = portvalue
+                       po.validate = portvalidate
+                       po.write    = function() end
+                       po.info     = pt
+
+                       port_opts[#port_opts+1] = po
+               end
+
+               table.sort(port_opts, function(a, b) return a.option < b.option end)
+               switches[#switches+1] = switch_name
+       end
+)
+
+-- Switch status template
+s = m:section(SimpleSection)
+s.template = "admin_network/switch_status"
+s.switches = switches
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua
new file mode 100644 (file)
index 0000000..6cf4bdd
--- /dev/null
@@ -0,0 +1,1204 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local wa = require "luci.tools.webadmin"
+local nw = require "luci.model.network"
+local ut = require "luci.util"
+local nt = require "luci.sys".net
+local fs = require "nixio.fs"
+
+local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2,
+       auth, auth_port, auth_secret, auth_server, bssid, cacert, cacert2,
+       cc, ch, cipher, clientcert, clientcert2, ea, eaptype, en, encr,
+       ft_protocol, ft_psk_generate_local, hidden, htmode, identity,
+       ieee80211r, ieee80211w, ifname, isolate, key_retries,
+       legacyrates, max_timeout, meshfwd, meshid, ml, mobility_domain, mode,
+       mp, nasid, network, password, pmk_r1_push, privkey, privkey2, privkeypwd,
+       privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh,
+       reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot,
+       wmm, wpakey, wps, disassoc_low_ack, short_preamble, beacon_int, dtim_period,
+       wparekey, inactivitypool, maxinactivity, listeninterval,
+       dae_client, dae_port, dae_port
+
+
+arg[1] = arg[1] or ""
+
+m = Map("wireless", "",
+       translate("The <em>Device Configuration</em> section covers physical settings of the radio " ..
+               "hardware such as channel, transmit power or antenna selection which are shared among all " ..
+               "defined wireless networks (if the radio hardware is multi-SSID capable). Per network settings " ..
+               "like encryption or operation mode are grouped in the <em>Interface Configuration</em>."))
+
+m:chain("network")
+m:chain("firewall")
+m.redirect = luci.dispatcher.build_url("admin/network/wireless")
+
+nw.init(m.uci)
+
+local wnet = nw:get_wifinet(arg[1])
+local wdev = wnet and wnet:get_device()
+
+-- redirect to overview page if network does not exist anymore (e.g. after a revert)
+if not wnet or not wdev then
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
+       return
+end
+
+local function txpower_list(iw)
+       local list = iw.txpwrlist or { }
+       local off  = tonumber(iw.txpower_offset) or 0
+       local new  = { }
+       local prev = -1
+       local _, val
+       for _, val in ipairs(list) do
+               local dbm = val.dbm + off
+               local mw  = math.floor(10 ^ (dbm / 10))
+               if mw ~= prev then
+                       prev = mw
+                       new[#new+1] = {
+                               display_dbm = dbm,
+                               display_mw  = mw,
+                               driver_dbm  = val.dbm,
+                               driver_mw   = val.mw
+                       }
+               end
+       end
+       return new
+end
+
+local function txpower_current(pwr, list)
+       pwr = tonumber(pwr)
+       if pwr ~= nil then
+               local _, item
+               for _, item in ipairs(list) do
+                       if item.driver_dbm >= pwr then
+                               return item.driver_dbm
+                       end
+               end
+       end
+       return pwr or ""
+end
+
+local iw = luci.sys.wifi.getiwinfo(arg[1])
+local hw_modes      = iw.hwmodelist or { }
+local tx_power_list = txpower_list(iw)
+local tx_power_cur  = txpower_current(wdev:get("txpower"), tx_power_list)
+
+-- wireless toggle was requested, commit and reload page
+function m.parse(map)
+       local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name())
+       local old_cc = m:get(wdev:name(), "country")
+
+       if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then
+               if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
+                       wnet:set("disabled", nil)
+               else
+                       wnet:set("disabled", "1")
+               end
+               wdev:set("disabled", nil)
+               m.apply_needed = true
+               m.redirect = nil
+       end
+
+       Map.parse(map)
+
+       if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then
+               luci.sys.call("iw reg set %s" % ut.shellquote(new_cc))
+
+               local old_ch = tonumber(m:formvalue("cbid.wireless.%s._mode_freq.channel" % wdev:name()) or "")
+               if old_ch then
+                       local _, c, new_ch
+                       for _, c in ipairs(iw.freqlist) do
+                               if c.channel > old_ch or (old_ch <= 14 and c.channel > 14) then
+                                       break
+                               end
+                               new_ch = c.channel
+                       end
+                       if new_ch ~= old_ch then
+                               wdev:set("channel", new_ch)
+                               m.message = translatef("Channel %d is not available in the %s regulatory domain and has been auto-adjusted to %d.",
+                                       old_ch, new_cc, new_ch)
+                       end
+               end
+       end
+
+       if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
+               en.title      = translate("Wireless network is disabled")
+               en.inputtitle = translate("Enable")
+               en.inputstyle = "apply"
+       else
+               en.title      = translate("Wireless network is enabled")
+               en.inputtitle = translate("Disable")
+               en.inputstyle = "reset"
+       end
+end
+
+m.title = luci.util.pcdata(wnet:get_i18n())
+
+s = m:section(NamedSection, wdev:name(), "wifi-device", translate("Device Configuration"))
+s.addremove = false
+
+s:tab("general", translate("General Setup"))
+s:tab("macfilter", translate("MAC-Filter"))
+s:tab("advanced", translate("Advanced Settings"))
+
+st = s:taboption("general", DummyValue, "__status", translate("Status"))
+st.template = "admin_network/wifi_status"
+st.ifname   = arg[1]
+
+en = s:taboption("general", Button, "__toggle")
+
+local hwtype = wdev:get("type")
+
+-- NanoFoo
+local nsantenna = wdev:get("antenna")
+
+-- Check whether there are client interfaces on the same radio,
+-- if yes, lock the channel choice as these stations will dicatate the freq
+local found_sta = nil
+local _, net
+if wnet:mode() ~= "sta" then
+       for _, net in ipairs(wdev:get_wifinets()) do
+               if net:mode() == "sta" and net:get("disabled") ~= "1" then
+                       if not found_sta then
+                               found_sta = {}
+                               found_sta.channel = net:channel()
+                               found_sta.names = {}
+                       end
+                       found_sta.names[#found_sta.names+1] = net:shortname()
+               end
+       end
+end
+
+if found_sta then
+       ch = s:taboption("general", DummyValue, "choice", translate("Channel"))
+       ch.value = translatef("Locked to channel %s used by: %s",
+               found_sta.channel or "(auto)", table.concat(found_sta.names, ", "))
+else
+       ch = s:taboption("general", Value, "_mode_freq", '<br />'..translate("Operating frequency"))
+       ch.iwinfo = iw
+       ch.hostapd_acs = (os.execute("hostapd -vacs >/dev/null 2>/dev/null") == 0)
+       ch.template = "cbi/wireless_modefreq"
+
+       function ch.cfgvalue(self, section)
+               return {
+                       m:get(section, "hwmode") or "",
+                       m:get(section, "channel") or "auto",
+                       m:get(section, "htmode") or ""
+               }
+       end
+
+       function ch.formvalue(self, section)
+               return {
+                       m:formvalue(self:cbid(section) .. ".band") or (hw_modes.g and "11g" or "11a"),
+                       m:formvalue(self:cbid(section) .. ".channel") or "auto",
+                       m:formvalue(self:cbid(section) .. ".htmode") or ""
+               }
+       end
+
+       function ch.write(self, section, value)
+               m:set(section, "hwmode", value[1])
+               m:set(section, "channel", value[2])
+               m:set(section, "htmode", value[3])
+       end
+end
+
+------------------- MAC80211 Device ------------------
+
+if hwtype == "mac80211" then
+       if #tx_power_list > 0 then
+               tp = s:taboption("general", ListValue,
+                       "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
+       end
+
+       local cl = iw and iw.countrylist
+       if cl and #cl > 0 then
+               cc = s:taboption("advanced", ListValue, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes."))
+               cc.default = tostring(iw and iw.country or "00")
+               for _, c in ipairs(cl) do
+                       cc:value(c.alpha2, "%s - %s" %{ c.alpha2, c.name })
+               end
+       else
+               s:taboption("advanced", Value, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes."))
+       end
+
+       legacyrates = s:taboption("advanced", Flag, "legacy_rates", translate("Allow legacy 802.11b rates"))
+       legacyrates.rmempty = false
+       legacyrates.default = "1"
+
+       s:taboption("advanced", Value, "distance", translate("Distance Optimization"),
+               translate("Distance to farthest network member in meters."))
+
+       -- external antenna profiles
+       local eal = iw and iw.extant
+       if eal and #eal > 0 then
+               ea = s:taboption("advanced", ListValue, "extant", translate("Antenna Configuration"))
+               for _, eap in ipairs(eal) do
+                       ea:value(eap.id, "%s (%s)" %{ eap.name, eap.description })
+                       if eap.selected then
+                               ea.default = eap.id
+                       end
+               end
+       end
+
+       s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
+       s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
+       
+       s:taboption("advanced", Flag, "noscan", translate("Force 40MHz mode"),
+               translate("Always use 40MHz channels even if the secondary channel overlaps. Using this option does not comply with IEEE 802.11n-2009!")).optional = true
+
+       beacon_int = s:taboption("advanced", Value, "beacon_int", translate("Beacon Interval"))
+       beacon_int.optional = true
+       beacon_int.placeholder = 100
+       beacon_int.datatype = "range(15,65535)"
+end
+
+
+------------------- Broadcom Device ------------------
+
+if hwtype == "broadcom" 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
+
+       mode = s:taboption("advanced", ListValue, "hwmode", translate("Band"))
+       if hw_modes.b then
+               mode:value("11b", "2.4GHz (802.11b)")
+               if hw_modes.g then
+                       mode:value("11bg", "2.4GHz (802.11b+g)")
+               end
+       end
+       if hw_modes.g then
+               mode:value("11g", "2.4GHz (802.11g)")
+               mode:value("11gst", "2.4GHz (802.11g + Turbo)")
+               mode:value("11lrs", "2.4GHz (802.11g Limited Rate Support)")
+       end
+       if hw_modes.a then mode:value("11a", "5GHz (802.11a)") end
+       if hw_modes.n then
+               if hw_modes.g then
+                       mode:value("11ng", "2.4GHz (802.11g+n)")
+                       mode:value("11n", "2.4GHz (802.11n)")
+               end
+               if hw_modes.a then
+                       mode:value("11na", "5GHz (802.11a+n)")
+                       mode:value("11n", "5GHz (802.11n)")
+               end
+               htmode = s:taboption("advanced", ListValue, "htmode", translate("HT mode (802.11n)"))
+               htmode:depends("hwmode", "11ng")
+               htmode:depends("hwmode", "11na")
+               htmode:depends("hwmode", "11n")
+               htmode:value("HT20", "20MHz")
+               htmode:value("HT40", "40MHz")
+       end
+
+       ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna"))
+       ant1.widget = "radio"
+       ant1:depends("diversity", "")
+       ant1:value("3", translate("auto"))
+       ant1:value("0", translate("Antenna 1"))
+       ant1:value("1", translate("Antenna 2"))
+
+       ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna"))
+       ant2.widget = "radio"
+       ant2:depends("diversity", "")
+       ant2:value("3", translate("auto"))
+       ant2:value("0", translate("Antenna 1"))
+       ant2:value("1", translate("Antenna 2"))
+
+       s:taboption("advanced", Flag, "frameburst", translate("Frame Bursting"))
+
+       s:taboption("advanced", Value, "distance", translate("Distance Optimization"))
+       --s:option(Value, "slottime", translate("Slot time"))
+
+       s:taboption("advanced", Value, "country", translate("Country Code"))
+       s:taboption("advanced", Value, "maxassoc", translate("Connection Limit"))
+end
+
+
+--------------------- HostAP Device ---------------------
+
+if hwtype == "prism2" then
+       s:taboption("advanced", Value, "txpower", translate("Transmit Power"), "att units").rmempty = true
+
+       s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false
+
+       s:taboption("advanced", Value, "txantenna", translate("Transmitter Antenna"))
+       s:taboption("advanced", Value, "rxantenna", translate("Receiver Antenna"))
+end
+
+
+----------------------- Interface -----------------------
+
+s = m:section(NamedSection, wnet.sid, "wifi-iface", translate("Interface Configuration"))
+s.addremove = false
+s.anonymous = true
+s.defaults.device = wdev:name()
+
+s:tab("general", translate("General Setup"))
+s:tab("encryption", translate("Wireless Security"))
+s:tab("macfilter", translate("MAC-Filter"))
+s:tab("advanced", translate("Advanced Settings"))
+
+mode = s:taboption("general", ListValue, "mode", translate("Mode"))
+mode.override_values = true
+mode:value("ap", translate("Access Point"))
+mode:value("sta", translate("Client"))
+mode:value("adhoc", translate("Ad-Hoc"))
+
+meshid = s:taboption("general", Value, "mesh_id", translate("Mesh Id"))
+meshid:depends({mode="mesh"})
+
+meshfwd = s:taboption("advanced", Flag, "mesh_fwding", translate("Forward mesh peer traffic"))
+meshfwd.rmempty = false
+meshfwd.default = "1"
+meshfwd:depends({mode="mesh"})
+
+mesh_rssi_th = s:taboption("advanced", Value, "mesh_rssi_threshold",
+       translate("RSSI threshold for joining"),
+       translate("0 = not using RSSI threshold, 1 = do not change driver default"))
+mesh_rssi_th.rmempty = false
+mesh_rssi_th.default = "0"
+mesh_rssi_th.datatype = "range(-255,1)"
+mesh_rssi_th:depends({mode="mesh"})
+
+ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
+ssid.datatype = "maxlength(32)"
+ssid:depends({mode="ap"})
+ssid:depends({mode="sta"})
+ssid:depends({mode="adhoc"})
+ssid:depends({mode="ahdemo"})
+ssid:depends({mode="monitor"})
+ssid:depends({mode="ap-wds"})
+ssid:depends({mode="sta-wds"})
+ssid:depends({mode="wds"})
+
+bssid = s:taboption("general", Value, "bssid", translate("<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"))
+bssid.datatype = "macaddr"
+
+network = s:taboption("general", Value, "network", translate("Network"),
+       translate("Choose the network(s) you want to attach to this wireless interface or " ..
+               "fill out the <em>create</em> field to define a new network."))
+
+network.rmempty = true
+network.template = "cbi/network_netlist"
+network.widget = "checkbox"
+network.novirtual = true
+
+function network.write(self, section, value)
+       local i = nw:get_interface(section)
+       if i then
+               local _, net, old, new = nil, nil, {}, {}
+
+               for _, net in ipairs(i:get_networks()) do
+                       old[net:name()] = true
+               end
+
+               for net in ut.imatch(value) do
+                       new[net] = true
+                       if not old[net] then
+                               local n = nw:get_network(net) or nw:add_network(net, { proto = "none" })
+                               if n then
+                                       if not n:is_empty() then
+                                               n:set("type", "bridge")
+                                       end
+                                       n:add_interface(i)
+                               end
+                       end
+               end
+
+               for net, _ in pairs(old) do
+                       if not new[net] then
+                               local n = nw:get_network(net)
+                               if n then
+                                       n:del_interface(i)
+                               end
+                       end
+               end
+       end
+end
+
+-------------------- MAC80211 Interface ----------------------
+
+if hwtype == "mac80211" then
+       if fs.access("/usr/sbin/iw") then
+               mode:value("mesh", "802.11s")
+       end
+
+       mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)"))
+       mode:value("monitor", translate("Monitor"))
+       bssid:depends({mode="adhoc"})
+       bssid:depends({mode="sta"})
+       bssid:depends({mode="sta-wds"})
+
+       mp = s:taboption("macfilter", ListValue, "macfilter", translate("MAC-Address Filter"))
+       mp:depends({mode="ap"})
+       mp:depends({mode="ap-wds"})
+       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({macfilter="allow"})
+       ml:depends({macfilter="deny"})
+       nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end)
+
+       mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")})
+       mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("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
+
+       hidden = s:taboption("general", Flag, "hidden", translate("Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
+       hidden:depends({mode="ap"})
+       hidden:depends({mode="ap-wds"})
+
+       wmm = s:taboption("general", Flag, "wmm", translate("WMM Mode"))
+       wmm:depends({mode="ap"})
+       wmm:depends({mode="ap-wds"})
+       wmm.default = wmm.enabled
+
+       isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
+        translate("Prevents client-to-client communication"))
+       isolate:depends({mode="ap"})
+       isolate:depends({mode="ap-wds"})
+
+       ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
+       ifname.optional = true
+
+       short_preamble = s:taboption("advanced", Flag, "short_preamble", translate("Short Preamble"))
+       short_preamble.default = short_preamble.enabled
+
+       dtim_period = s:taboption("advanced", Value, "dtim_period", translate("DTIM Interval"), translate("Delivery Traffic Indication Message Interval"))
+       dtim_period.optional = true
+       dtim_period.placeholder = 2
+       dtim_period.datatype = "range(1,255)"
+       
+       
+       wparekey = s:taboption("advanced", Value, "wpa_group_rekey", translate("Time interval for rekeying GTK"), translate("sec"))
+       wparekey.optional    = true
+       wparekey.placeholder = 600
+       wparekey.datatype    = "uinteger"
+       
+       inactivitypool = s:taboption("advanced", Flag , "skip_inactivity_poll", translate("Disable Inactivity Polling"))
+       inactivitypool.optional    = true
+       inactivitypool.datatype    = "uinteger"
+       
+       maxinactivity = s:taboption("advanced", Value, "max_inactivity", translate("Station inactivity limit"), translate("sec"))
+       maxinactivity.optional    = true
+       maxinactivity.placeholder = 300
+       maxinactivity.datatype    = "uinteger"
+       
+       listeninterval = s:taboption("advanced", Value, "max_listen_interval", translate("Maximum allowed Listen Interval"))
+       listeninterval.optional    = true
+       listeninterval.placeholder = 65535
+       listeninterval.datatype    = "uinteger"
+
+       disassoc_low_ack = s:taboption("advanced", Flag, "disassoc_low_ack", translate("Disassociate On Low Acknowledgement"),
+               translate("Allow AP mode to disconnect STAs based on low ACK condition"))
+       disassoc_low_ack.default = disassoc_low_ack.enabled
+end
+
+
+-------------------- Broadcom Interface ----------------------
+
+if hwtype == "broadcom" then
+       mode:value("wds", translate("WDS"))
+       mode:value("monitor", translate("Monitor"))
+
+       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="wds"})
+
+       isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"),
+        translate("Prevents client-to-client communication"))
+       isolate:depends({mode="ap"})
+
+       s:taboption("advanced", Flag, "doth", "802.11h")
+       s:taboption("advanced", Flag, "wmm", translate("WMM Mode"))
+
+       bssid:depends({mode="wds"})
+       bssid:depends({mode="adhoc"})
+end
+
+
+----------------------- HostAP Interface ---------------------
+
+if hwtype == "prism2" then
+       mode:value("wds", translate("WDS"))
+       mode:value("monitor", translate("Monitor"))
+
+       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="wds"})
+
+       bssid:depends({mode="sta"})
+
+       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:depends({macpolicy="allow"})
+       ml:depends({macpolicy="deny"})
+       nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end)
+
+       s:taboption("advanced", Value, "rate", translate("Transmission Rate"))
+       s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
+       s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
+end
+
+
+------------------- WiFI-Encryption -------------------
+
+encr = s:taboption("encryption", ListValue, "encryption", translate("Encryption"))
+encr.override_values = true
+encr.override_depends = true
+encr:depends({mode="ap"})
+encr:depends({mode="sta"})
+encr:depends({mode="adhoc"})
+encr:depends({mode="ahdemo"})
+encr:depends({mode="ap-wds"})
+encr:depends({mode="sta-wds"})
+encr:depends({mode="mesh"})
+
+cipher = s:taboption("encryption", ListValue, "cipher", translate("Cipher"))
+cipher:depends({encryption="wpa"})
+cipher:depends({encryption="wpa2"})
+cipher:depends({encryption="psk"})
+cipher:depends({encryption="psk2"})
+cipher:depends({encryption="wpa-mixed"})
+cipher:depends({encryption="psk-mixed"})
+cipher:value("auto", translate("auto"))
+cipher:value("ccmp", translate("Force CCMP (AES)"))
+cipher:value("tkip", translate("Force TKIP"))
+cipher:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)"))
+
+function encr.cfgvalue(self, section)
+       local v = tostring(ListValue.cfgvalue(self, section))
+       if v == "wep" then
+               return "wep-open"
+       elseif v and v:match("%+") then
+               return (v:gsub("%+.+$", ""))
+       end
+       return v
+end
+
+function encr.write(self, section, value)
+       local e = tostring(encr:formvalue(section))
+       local c = tostring(cipher:formvalue(section))
+       if value == "wpa" or value == "wpa2"  then
+               self.map.uci:delete("wireless", section, "key")
+       end
+       if e and (c == "tkip" or c == "ccmp" or c == "tkip+ccmp") then
+               e = e .. "+" .. c
+       end
+       self.map:set(section, "encryption", e)
+end
+
+function cipher.cfgvalue(self, section)
+       local v = tostring(ListValue.cfgvalue(encr, section))
+       if v and v:match("%+") then
+               v = v:gsub("^[^%+]+%+", "")
+               if v == "aes" then v = "ccmp"
+               elseif v == "tkip+aes" then v = "tkip+ccmp"
+               elseif v == "aes+tkip" then v = "tkip+ccmp"
+               elseif v == "ccmp+tkip" then v = "tkip+ccmp"
+               end
+       end
+       return v
+end
+
+function cipher.write(self, section)
+       return encr:write(section)
+end
+
+
+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 == "mac80211" or hwtype == "prism2" then
+       local supplicant = fs.access("/usr/sbin/wpa_supplicant")
+       local hostapd = fs.access("/usr/sbin/hostapd")
+
+       -- Probe EAP support
+       local has_ap_eap  = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
+       local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0)
+
+       -- Probe SAE support
+       local has_ap_sae  = (os.execute("hostapd -vsae >/dev/null 2>/dev/null") == 0)
+       local has_sta_sae = (os.execute("wpa_supplicant -vsae >/dev/null 2>/dev/null") == 0)
+
+       -- Probe OWE support
+       local has_ap_owe  = (os.execute("hostapd -vowe >/dev/null 2>/dev/null") == 0)
+       local has_sta_owe = (os.execute("wpa_supplicant -vowe >/dev/null 2>/dev/null") == 0)
+
+       if hostapd and supplicant then
+               encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+               encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+               if has_ap_sae and has_sta_sae then
+                       encr:value("sae", "WPA3-SAE", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="mesh"})
+                       encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+               end
+               if has_ap_eap and has_sta_eap then
+                       encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
+                       encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
+               end
+               if has_ap_owe and has_sta_owe then
+                       encr:value("owe", "OWE", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+               end
+       elseif hostapd and not supplicant then
+               encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="ap-wds"})
+               encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="ap-wds"})
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="ap-wds"})
+               if has_ap_sae then
+                       encr:value("sae", "WPA3-SAE", {mode="ap"}, {mode="ap-wds"})
+                       encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="ap"}, {mode="ap-wds"})
+               end
+               if has_ap_eap then
+                       encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="ap-wds"})
+                       encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="ap-wds"})
+               end
+               if has_ap_owe then
+                       encr:value("owe", "OWE", {mode="ap"}, {mode="ap-wds"})
+               end
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )
+       elseif not hostapd and supplicant then
+               encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+               encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+               encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+               if has_sta_sae then
+                       encr:value("sae", "WPA3-SAE", {mode="sta"}, {mode="sta-wds"}, {mode="mesh"})
+                       encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="sta"}, {mode="sta-wds"})
+               end
+               if has_sta_eap then
+                       encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"})
+                       encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"})
+               end
+               if has_sta_owe then
+                       encr:value("owe", "OWE", {mode="sta"}, {mode="sta-wds"})
+               end
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )
+       else
+               encr.description = translate(
+                       "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " ..
+                       "and ad-hoc mode) to be installed."
+               )
+       end
+elseif hwtype == "broadcom" then
+       encr:value("psk", "WPA-PSK")
+       encr:value("psk2", "WPA2-PSK")
+       encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode")
+end
+
+auth_server = s:taboption("encryption", Value, "auth_server", translate("Radius-Authentication-Server"))
+auth_server:depends({mode="ap", encryption="wpa"})
+auth_server:depends({mode="ap", encryption="wpa2"})
+auth_server:depends({mode="ap-wds", encryption="wpa"})
+auth_server:depends({mode="ap-wds", encryption="wpa2"})
+auth_server.rmempty = true
+auth_server.datatype = "host(0)"
+
+auth_port = s:taboption("encryption", Value, "auth_port", translate("Radius-Authentication-Port"), translatef("Default %d", 1812))
+auth_port:depends({mode="ap", encryption="wpa"})
+auth_port:depends({mode="ap", encryption="wpa2"})
+auth_port:depends({mode="ap-wds", encryption="wpa"})
+auth_port:depends({mode="ap-wds", encryption="wpa2"})
+auth_port.rmempty = true
+auth_port.datatype = "port"
+
+auth_secret = s:taboption("encryption", Value, "auth_secret", translate("Radius-Authentication-Secret"))
+auth_secret:depends({mode="ap", encryption="wpa"})
+auth_secret:depends({mode="ap", encryption="wpa2"})
+auth_secret:depends({mode="ap-wds", encryption="wpa"})
+auth_secret:depends({mode="ap-wds", encryption="wpa2"})
+auth_secret.rmempty = true
+auth_secret.password = true
+
+acct_server = s:taboption("encryption", Value, "acct_server", translate("Radius-Accounting-Server"))
+acct_server:depends({mode="ap", encryption="wpa"})
+acct_server:depends({mode="ap", encryption="wpa2"})
+acct_server:depends({mode="ap-wds", encryption="wpa"})
+acct_server:depends({mode="ap-wds", encryption="wpa2"})
+acct_server.rmempty = true
+acct_server.datatype = "host(0)"
+
+acct_port = s:taboption("encryption", Value, "acct_port", translate("Radius-Accounting-Port"), translatef("Default %d", 1813))
+acct_port:depends({mode="ap", encryption="wpa"})
+acct_port:depends({mode="ap", encryption="wpa2"})
+acct_port:depends({mode="ap-wds", encryption="wpa"})
+acct_port:depends({mode="ap-wds", encryption="wpa2"})
+acct_port.rmempty = true
+acct_port.datatype = "port"
+
+acct_secret = s:taboption("encryption", Value, "acct_secret", translate("Radius-Accounting-Secret"))
+acct_secret:depends({mode="ap", encryption="wpa"})
+acct_secret:depends({mode="ap", encryption="wpa2"})
+acct_secret:depends({mode="ap-wds", encryption="wpa"})
+acct_secret:depends({mode="ap-wds", encryption="wpa2"})
+acct_secret.rmempty = true
+acct_secret.password = true
+
+dae_client = s:taboption("encryption", Value, "dae_client", translate("DAE-Client"))
+dae_client:depends({mode="ap", encryption="wpa"})
+dae_client:depends({mode="ap", encryption="wpa2"})
+dae_client:depends({mode="ap-wds", encryption="wpa"})
+dae_client:depends({mode="ap-wds", encryption="wpa2"})
+dae_client.rmempty = true
+dae_client.datatype = "host(0)"
+
+dae_port = s:taboption("encryption", Value, "dae_port", translate("DAE-Port"), translatef("Default %d", 3799))
+dae_port:depends({mode="ap", encryption="wpa"})
+dae_port:depends({mode="ap", encryption="wpa2"})
+dae_port:depends({mode="ap-wds", encryption="wpa"})
+dae_port:depends({mode="ap-wds", encryption="wpa2"})
+dae_port.rmempty = true
+dae_port.datatype = "port"
+
+dae_secret = s:taboption("encryption", Value, "dae_secret", translate("DAE-Secret"))
+dae_secret:depends({mode="ap", encryption="wpa"})
+dae_secret:depends({mode="ap", encryption="wpa2"})
+dae_secret:depends({mode="ap-wds", encryption="wpa"})
+dae_secret:depends({mode="ap-wds", encryption="wpa2"})
+dae_secret.rmempty = true
+dae_secret.password = true
+
+wpakey = s:taboption("encryption", Value, "_wpa_key", translate("Key"))
+wpakey:depends("encryption", "psk")
+wpakey:depends("encryption", "psk2")
+wpakey:depends("encryption", "psk+psk2")
+wpakey:depends("encryption", "psk-mixed")
+wpakey:depends("encryption", "sae")
+wpakey:depends("encryption", "sae-mixed")
+wpakey.datatype = "wpakey"
+wpakey.rmempty = true
+wpakey.password = true
+
+wpakey.cfgvalue = function(self, section, value)
+       local key = m.uci:get("wireless", section, "key")
+       if key == "1" or key == "2" or key == "3" or key == "4" then
+               return nil
+       end
+       return key
+end
+
+wpakey.write = function(self, section, value)
+       self.map.uci:set("wireless", section, "key", value)
+       self.map.uci:delete("wireless", section, "key1")
+end
+
+
+wepslot = s:taboption("encryption", ListValue, "_wep_key", translate("Used Key Slot"))
+wepslot:depends("encryption", "wep-open")
+wepslot:depends("encryption", "wep-shared")
+wepslot:value("1", translatef("Key #%d", 1))
+wepslot:value("2", translatef("Key #%d", 2))
+wepslot:value("3", translatef("Key #%d", 3))
+wepslot:value("4", translatef("Key #%d", 4))
+
+wepslot.cfgvalue = function(self, section)
+       local slot = tonumber(m.uci:get("wireless", section, "key"))
+       if not slot or slot < 1 or slot > 4 then
+               return 1
+       end
+       return slot
+end
+
+wepslot.write = function(self, section, value)
+       self.map.uci:set("wireless", section, "key", value)
+end
+
+local slot
+for slot=1,4 do
+       wepkey = s:taboption("encryption", Value, "key" .. slot, translatef("Key #%d", slot))
+       wepkey:depends("encryption", "wep-open")
+       wepkey:depends("encryption", "wep-shared")
+       wepkey.datatype = "wepkey"
+       wepkey.rmempty = true
+       wepkey.password = true
+
+       function wepkey.write(self, section, value)
+               if value and (#value == 5 or #value == 13) then
+                       value = "s:" .. value
+               end
+               return Value.write(self, section, value)
+       end
+end
+
+if hwtype == "mac80211" or hwtype == "prism2" then
+
+       -- 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"),
+               translate("Enables fast roaming among access points that belong " ..
+                       "to the same Mobility Domain"))
+       ieee80211r:depends({mode="ap", encryption="wpa"})
+       ieee80211r:depends({mode="ap", encryption="wpa2"})
+       ieee80211r:depends({mode="ap-wds", encryption="wpa"})
+       ieee80211r:depends({mode="ap-wds", encryption="wpa2"})
+       if has_80211r then
+               ieee80211r:depends({mode="ap", encryption="psk"})
+               ieee80211r:depends({mode="ap", encryption="psk2"})
+               ieee80211r:depends({mode="ap", encryption="psk-mixed"})
+               ieee80211r:depends({mode="ap", encryption="sae"})
+               ieee80211r:depends({mode="ap", encryption="sae-mixed"})
+               ieee80211r:depends({mode="ap-wds", encryption="psk"})
+               ieee80211r:depends({mode="ap-wds", encryption="psk2"})
+               ieee80211r:depends({mode="ap-wds", encryption="psk-mixed"})
+               ieee80211r:depends({mode="ap-wds", encryption="sae"})
+               ieee80211r:depends({mode="ap-wds", encryption="sae-mixed"})
+       end
+       ieee80211r.rmempty = true
+
+       nasid = s:taboption("encryption", Value, "nasid", translate("NAS ID"),
+               translate("Used for two different purposes: RADIUS NAS ID and " ..
+                       "802.11r R0KH-ID. Not needed with normal WPA(2)-PSK."))
+       nasid:depends({mode="ap", encryption="wpa"})
+       nasid:depends({mode="ap", encryption="wpa2"})
+       nasid:depends({mode="ap-wds", encryption="wpa"})
+       nasid:depends({mode="ap-wds", encryption="wpa2"})
+       nasid:depends({ieee80211r="1"})
+       nasid.rmempty = true
+
+       mobility_domain = s:taboption("encryption", Value, "mobility_domain",
+                       translate("Mobility Domain"),
+                       translate("4-character hexadecimal ID"))
+       mobility_domain:depends({ieee80211r="1"})
+       mobility_domain.placeholder = "4f57"
+       mobility_domain.datatype = "and(hexstring,rangelength(4,4))"
+       mobility_domain.rmempty = true
+
+       reassociation_deadline = s:taboption("encryption", Value, "reassociation_deadline",
+               translate("Reassociation Deadline"),
+               translate("time units (TUs / 1.024 ms) [1000-65535]"))
+       reassociation_deadline:depends({ieee80211r="1"})
+       reassociation_deadline.placeholder = "1000"
+       reassociation_deadline.datatype = "range(1000,65535)"
+       reassociation_deadline.rmempty = true
+
+       ft_protocol = s:taboption("encryption", ListValue, "ft_over_ds", translate("FT protocol"))
+       ft_protocol:depends({ieee80211r="1"})
+       ft_protocol:value("1", translatef("FT over DS"))
+       ft_protocol:value("0", translatef("FT over the Air"))
+       ft_protocol.rmempty = true
+
+       ft_psk_generate_local = s:taboption("encryption", Flag, "ft_psk_generate_local",
+               translate("Generate PMK locally"),
+               translate("When using a PSK, the PMK can be automatically generated. When enabled, the R0/R1 key options below are not applied. Disable this to use the R0 and R1 key options."))
+       ft_psk_generate_local:depends({ieee80211r="1"})
+       ft_psk_generate_local.default = ft_psk_generate_local.enabled
+       ft_psk_generate_local.rmempty = false
+
+       r0_key_lifetime = s:taboption("encryption", Value, "r0_key_lifetime",
+                       translate("R0 Key Lifetime"), translate("minutes"))
+       r0_key_lifetime:depends({ieee80211r="1"})
+       r0_key_lifetime.placeholder = "10000"
+       r0_key_lifetime.datatype = "uinteger"
+       r0_key_lifetime.rmempty = true
+
+       r1_key_holder = s:taboption("encryption", Value, "r1_key_holder",
+                       translate("R1 Key Holder"),
+                       translate("6-octet identifier as a hex string - no colons"))
+       r1_key_holder:depends({ieee80211r="1"})
+       r1_key_holder.placeholder = "00004f577274"
+       r1_key_holder.datatype = "and(hexstring,rangelength(12,12))"
+       r1_key_holder.rmempty = true
+
+       pmk_r1_push = s:taboption("encryption", Flag, "pmk_r1_push", translate("PMK R1 Push"))
+       pmk_r1_push:depends({ieee80211r="1"})
+       pmk_r1_push.placeholder = "0"
+       pmk_r1_push.rmempty = true
+
+       r0kh = s:taboption("encryption", DynamicList, "r0kh", translate("External R0 Key Holder List"),
+               translate("List of R0KHs in the same Mobility Domain. " ..
+                       "<br />Format: MAC-address,NAS-Identifier,128-bit key as hex string. " ..
+                       "<br />This list is used to map R0KH-ID (NAS Identifier) to a destination " ..
+                       "MAC address when requesting PMK-R1 key from the R0KH that the STA " ..
+                       "used during the Initial Mobility Domain Association."))
+       r0kh:depends({ieee80211r="1"})
+       r0kh.rmempty = true
+
+       r1kh = s:taboption("encryption", DynamicList, "r1kh", translate("External R1 Key Holder List"),
+               translate ("List of R1KHs in the same Mobility Domain. "..
+                       "<br />Format: MAC-address,R1KH-ID as 6 octets with colons,128-bit key as hex string. "..
+                       "<br />This list is used to map R1KH-ID to a destination MAC address " ..
+                       "when sending PMK-R1 key from the R0KH. This is also the " ..
+                       "list of authorized R1KHs in the MD that can request PMK-R1 keys."))
+       r1kh:depends({ieee80211r="1"})
+       r1kh.rmempty = true
+       -- End of 802.11r options
+
+       eaptype = s:taboption("encryption", ListValue, "eap_type", translate("EAP-Method"))
+       eaptype:value("tls",  "TLS")
+       eaptype:value("ttls", "TTLS")
+       eaptype:value("peap", "PEAP")
+       eaptype:value("fast", "FAST")
+       eaptype:depends({mode="sta", encryption="wpa"})
+       eaptype:depends({mode="sta", encryption="wpa2"})
+       eaptype:depends({mode="sta-wds", encryption="wpa"})
+       eaptype:depends({mode="sta-wds", encryption="wpa2"})
+
+       cacert = s:taboption("encryption", FileUpload, "ca_cert", translate("Path to CA-Certificate"))
+       cacert:depends({mode="sta", encryption="wpa"})
+       cacert:depends({mode="sta", encryption="wpa2"})
+       cacert:depends({mode="sta-wds", encryption="wpa"})
+       cacert:depends({mode="sta-wds", encryption="wpa2"})
+       cacert.rmempty = true
+
+       clientcert = s:taboption("encryption", FileUpload, "client_cert", translate("Path to Client-Certificate"))
+       clientcert:depends({mode="sta", eap_type="tls", encryption="wpa"})
+       clientcert:depends({mode="sta", eap_type="tls", encryption="wpa2"})
+       clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa"})
+       clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"})
+
+       privkey = s:taboption("encryption", FileUpload, "priv_key", translate("Path to Private Key"))
+       privkey:depends({mode="sta", eap_type="tls", encryption="wpa2"})
+       privkey:depends({mode="sta", eap_type="tls", encryption="wpa"})
+       privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"})
+       privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa"})
+
+       privkeypwd = s:taboption("encryption", Value, "priv_key_pwd", translate("Password of Private Key"))
+       privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa2"})
+       privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa"})
+       privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"})
+       privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa"})
+       privkeypwd.rmempty = true
+       privkeypwd.password = true
+
+       auth = s:taboption("encryption", ListValue, "auth", translate("Authentication"))
+       auth:value("PAP", "PAP", {eap_type="ttls"})
+       auth:value("CHAP", "CHAP", {eap_type="ttls"})
+       auth:value("MSCHAP", "MSCHAP", {eap_type="ttls"})
+       auth:value("MSCHAPV2", "MSCHAPv2", {eap_type="ttls"})
+       auth:value("EAP-GTC")
+       auth:value("EAP-MD5")
+       auth:value("EAP-MSCHAPV2")
+       auth:value("EAP-TLS")
+       auth:depends({mode="sta", eap_type="fast", encryption="wpa2"})
+       auth:depends({mode="sta", eap_type="fast", encryption="wpa"})
+       auth:depends({mode="sta", eap_type="peap", encryption="wpa2"})
+       auth:depends({mode="sta", eap_type="peap", encryption="wpa"})
+       auth:depends({mode="sta", eap_type="ttls", encryption="wpa2"})
+       auth:depends({mode="sta", eap_type="ttls", encryption="wpa"})
+       auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"})
+       auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa"})
+       auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"})
+       auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa"})
+       auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"})
+       auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"})
+
+       cacert2 = s:taboption("encryption", FileUpload, "ca_cert2", translate("Path to inner CA-Certificate"))
+       cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"})
+       cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"})
+       cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"})
+       cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"})
+
+       clientcert2 = s:taboption("encryption", FileUpload, "client_cert2", translate("Path to inner Client-Certificate"))
+       clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"})
+       clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"})
+       clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"})
+       clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"})
+
+       privkey2 = s:taboption("encryption", FileUpload, "priv_key2", translate("Path to inner Private Key"))
+       privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"})
+       privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"})
+       privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"})
+       privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"})
+
+       privkeypwd2 = s:taboption("encryption", Value, "priv_key2_pwd", translate("Password of inner Private Key"))
+       privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"})
+       privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"})
+       privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"})
+       privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"})
+       privkeypwd2.rmempty = true
+       privkeypwd2.password = true
+
+       identity = s:taboption("encryption", Value, "identity", translate("Identity"))
+       identity:depends({mode="sta", eap_type="fast", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="fast", encryption="wpa"})
+       identity:depends({mode="sta", eap_type="peap", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="peap", encryption="wpa"})
+       identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="ttls", encryption="wpa"})
+       identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"})
+       identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"})
+       identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"})
+       identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"})
+       identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"})
+       identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"})
+       identity:depends({mode="sta", eap_type="tls", encryption="wpa2"})
+       identity:depends({mode="sta", eap_type="tls", encryption="wpa"})
+       identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"})
+       identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"})
+
+       anonymous_identity = s:taboption("encryption", Value, "anonymous_identity", translate("Anonymous Identity"))
+       anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa"})
+       anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa"})
+       anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"})
+       anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"})
+       anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"})
+
+       password = s:taboption("encryption", Value, "password", translate("Password"))
+       password:depends({mode="sta", eap_type="fast", encryption="wpa2"})
+       password:depends({mode="sta", eap_type="fast", encryption="wpa"})
+       password:depends({mode="sta", eap_type="peap", encryption="wpa2"})
+       password:depends({mode="sta", eap_type="peap", encryption="wpa"})
+       password:depends({mode="sta", eap_type="ttls", encryption="wpa2"})
+       password:depends({mode="sta", eap_type="ttls", encryption="wpa"})
+       password:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"})
+       password:depends({mode="sta-wds", eap_type="fast", encryption="wpa"})
+       password:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"})
+       password:depends({mode="sta-wds", eap_type="peap", encryption="wpa"})
+       password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"})
+       password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"})
+       password.rmempty = true
+       password.password = true
+end
+
+-- ieee802.11w options
+if hwtype == "mac80211" 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 Jan 2019: " ..
+                               "ath9k, ath10k, mwlwifi and mt76)"))
+               ieee80211w.default = ""
+               ieee80211w.rmempty = true
+               ieee80211w:value("", translate("Disabled (default)"))
+               ieee80211w:value("1", translate("Optional"))
+               ieee80211w:value("2", translate("Required"))
+               ieee80211w:depends({mode="ap", encryption="wpa2"})
+               ieee80211w:depends({mode="ap-wds", encryption="wpa2"})
+               ieee80211w:depends({mode="ap", encryption="psk2"})
+               ieee80211w:depends({mode="ap", encryption="psk-mixed"})
+               ieee80211w:depends({mode="ap", encryption="sae"})
+               ieee80211w:depends({mode="ap", encryption="sae-mixed"})
+               ieee80211w:depends({mode="ap", encryption="owe"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk2"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"})
+               ieee80211w:depends({mode="ap-wds", encryption="sae"})
+               ieee80211w:depends({mode="ap-wds", encryption="sae-mixed"})
+               ieee80211w:depends({mode="ap-wds", encryption="owe"})
+
+               max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout",
+                               translate("802.11w maximum timeout"),
+                               translate("802.11w Association SA Query maximum timeout"))
+               max_timeout:depends({ieee80211w="1"})
+               max_timeout:depends({ieee80211w="2"})
+               max_timeout.datatype = "uinteger"
+               max_timeout.placeholder = "1000"
+               max_timeout.rmempty = true
+
+               retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout",
+                               translate("802.11w retry timeout"),
+                               translate("802.11w Association SA Query retry timeout"))
+               retry_timeout:depends({ieee80211w="1"})
+               retry_timeout:depends({ieee80211w="2"})
+               retry_timeout.datatype = "uinteger"
+               retry_timeout.placeholder = "201"
+               retry_timeout.rmempty = true
+       end
+
+       key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
+               translate("Enable key reinstallation (KRACK) countermeasures"),
+               translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load."))
+
+       key_retries:depends({mode="ap", encryption="wpa2"})
+       key_retries:depends({mode="ap", encryption="psk2"})
+       key_retries:depends({mode="ap", encryption="psk-mixed"})
+       key_retries:depends({mode="ap", encryption="sae"})
+       key_retries:depends({mode="ap", encryption="sae-mixed"})
+       key_retries:depends({mode="ap-wds", encryption="wpa2"})
+       key_retries:depends({mode="ap-wds", encryption="psk2"})
+       key_retries:depends({mode="ap-wds", encryption="psk-mixed"})
+       key_retries:depends({mode="ap-wds", encryption="sae"})
+       key_retries:depends({mode="ap-wds", encryption="sae-mixed"})
+end
+
+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
+               wps = s:taboption("encryption", Flag, "wps_pushbutton", translate("Enable WPS pushbutton, requires WPA(2)-PSK"))
+               wps.enabled = "1"
+               wps.disabled = "0"
+               wps.rmempty = false
+               wps:depends("encryption", "psk")
+               wps:depends("encryption", "psk2")
+               wps:depends("encryption", "psk-mixed")
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua
new file mode 100644 (file)
index 0000000..e8a3058
--- /dev/null
@@ -0,0 +1,168 @@
+-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs   = require "nixio.fs"
+local nw   = require "luci.model.network"
+local fw   = require "luci.model.firewall"
+local uci  = require "luci.model.uci".cursor()
+local http = require "luci.http"
+
+local iw = luci.sys.wifi.getiwinfo(http.formvalue("device"))
+
+local has_firewall = fs.access("/etc/config/firewall")
+
+if not iw then
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
+       return
+end
+
+m = SimpleForm("network", translatef("Joining Network: %q", http.formvalue("join")))
+m.cancel = translate("Back to scan results")
+m.reset = false
+
+function m.on_cancel()
+       local dev = http.formvalue("device")
+       http.redirect(luci.dispatcher.build_url(
+               dev and "admin/network/wireless_join?device=" .. dev
+                       or "admin/network/wireless"
+       ))
+end
+
+nw.init(uci)
+fw.init(uci)
+
+m.hidden = {
+       device      = http.formvalue("device"),
+       join        = http.formvalue("join"),
+       channel     = http.formvalue("channel"),
+       mode        = http.formvalue("mode"),
+       bssid       = http.formvalue("bssid"),
+       wep         = http.formvalue("wep"),
+       wpa_suites      = http.formvalue("wpa_suites"),
+       wpa_version = http.formvalue("wpa_version")
+}
+
+if iw and iw.mbssid_support then
+       replace = m:field(Flag, "replace", translate("Replace wireless configuration"),
+               translate("Check this option to delete the existing networks from this radio."))
+
+       function replace.cfgvalue() return "0" end
+else
+       replace = m:field(DummyValue, "replace", translate("Replace wireless configuration"))
+       replace.default = translate("The hardware is not multi-SSID capable and the existing " ..
+               "configuration will be replaced if you proceed.")
+
+       function replace.formvalue() return "1" end
+end
+
+if http.formvalue("wep") == "1" then
+       key = m:field(Value, "key", translate("WEP passphrase"),
+               translate("Specify the secret encryption key here."))
+
+       key.password = true
+       key.datatype = "wepkey"
+
+elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and
+       (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2")
+then
+       key = m:field(Value, "key", translate("WPA passphrase"),
+               translate("Specify the secret encryption key here."))
+
+       key.password = true
+       key.datatype = "wpakey"
+       --m.hidden.wpa_suite = (tonumber(http.formvalue("wpa_version")) or 0) >= 2 and "psk2" or "psk"
+end
+
+newnet = m:field(Value, "_netname_new", translate("Name of the new network"),
+       translate("The allowed characters are: <code>A-Z</code>, <code>a-z</code>, " ..
+               "<code>0-9</code> and <code>_</code>"
+       ))
+
+newnet.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wwan"
+newnet.datatype = "uciname"
+
+if has_firewall then
+       fwzone = m:field(Value, "_fwzone",
+               translate("Create / Assign firewall-zone"),
+               translate("Choose the firewall zone you want to assign to this interface. Select <em>unspecified</em> to remove the interface from the associated zone or fill out the <em>create</em> field to define a new zone and attach the interface to it."))
+
+       fwzone.template = "cbi/firewall_zonelist"
+       fwzone.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wan"
+end
+
+function newnet.parse(self, section)
+       local net, zone
+
+       if has_firewall then
+               local value = fwzone:formvalue(section)
+               if value and #value > 0 then
+                       zone = fw:get_zone(value) or fw:add_zone(value)
+               end
+       end
+
+       local wdev = nw:get_wifidev(m.hidden.device)
+
+       wdev:set("disabled", false)
+       wdev:set("channel", m.hidden.channel)
+
+       if replace:formvalue(section) then
+               local n
+               for _, n in ipairs(wdev:get_wifinets()) do
+                       wdev:del_wifinet(n)
+               end
+       end
+
+       local wconf = {
+               device  = m.hidden.device,
+               ssid    = m.hidden.join,
+               mode    = (m.hidden.mode == "Ad-Hoc" and "adhoc" or "sta")
+       }
+
+       if m.hidden.wep == "1" then
+               wconf.encryption = "wep-open"
+               wconf.key        = "1"
+               wconf.key1       = key and key:formvalue(section) or ""
+       elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
+               wconf.encryption = (tonumber(m.hidden.wpa_version) or 0) >= 2 and "psk2" or "psk"
+               wconf.key        = key and key:formvalue(section) or ""
+       else
+               wconf.encryption = "none"
+       end
+
+       if wconf.mode == "adhoc" or wconf.mode == "sta" then
+               wconf.bssid = m.hidden.bssid
+       end
+
+       local value = self:formvalue(section)
+       net = nw:add_network(value, { proto = "dhcp" })
+
+       if not net then
+               self.error = { [section] = "missing" }
+       else
+               wconf.network = net:name()
+
+               local wnet = wdev:add_wifinet(wconf)
+               if wnet then
+                       if zone then
+                               fw:del_network(net:name())
+                               zone:add_network(net:name())
+                       end
+
+                       uci:save("wireless")
+                       uci:save("network")
+                       uci:save("firewall")
+
+                       luci.http.redirect(wnet:adminlink())
+               end
+       end
+end
+
+if has_firewall then
+       function fwzone.cfgvalue(self, section)
+               self.iface = section
+               local z = fw:get_zone_by_network(section)
+               return z and z:name()
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua b/package/luci/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua
new file mode 100644 (file)
index 0000000..54720d6
--- /dev/null
@@ -0,0 +1,153 @@
+-- Copyright 2018 Jo-Philipp Wich <jo@mein.io>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs = require "nixio.fs"
+local utl = require "luci.util"
+local tpl = require "luci.template"
+local ntm = require "luci.model.network"
+
+local has_iwinfo = pcall(require, "iwinfo")
+
+function guess_wifi_hw(dev)
+       local bands = ""
+       local ifname = dev:name()
+       local name, idx = ifname:match("^([a-z]+)(%d+)")
+       idx = tonumber(idx)
+
+       if has_iwinfo then
+               local bl = dev.iwinfo.hwmodelist
+               if bl and next(bl) then
+                       if bl.a then bands = bands .. "a" end
+                       if bl.b then bands = bands .. "b" end
+                       if bl.g then bands = bands .. "g" end
+                       if bl.n then bands = bands .. "n" end
+                       if bl.ac then bands = bands .. "ac" end
+               end
+
+               local hw = dev.iwinfo.hardware_name
+               if hw then
+                       return "%s 802.11%s" %{ hw, bands }
+               end
+       end
+
+       -- wl.o
+       if name == "wl" then
+               local name = translatef("Broadcom 802.11%s Wireless Controller", bands)
+               local nm   = 0
+
+               local fd = nixio.open("/proc/bus/pci/devices", "r")
+               if fd then
+                       local ln
+                       for ln in fd:linesource() do
+                               if ln:match("wl$") then
+                                       if nm == idx then
+                                               local version = ln:match("^%S+%s+%S%S%S%S([0-9a-f]+)")
+                                               name = translatef(
+                                                       "Broadcom BCM%04x 802.11 Wireless Controller",
+                                                       tonumber(version, 16)
+                                               )
+
+                                               break
+                                       else
+                                               nm = nm + 1
+                                       end
+                               end
+                       end
+                       fd:close()
+               end
+
+               return name
+
+       -- dunno yet
+       else
+               return translatef("Generic 802.11%s Wireless Controller", bands)
+       end
+end
+
+
+m = Map("wireless", translate("Wireless Overview"))
+m:chain("network")
+m.pageaction = false
+
+if not has_iwinfo then
+       s = m:section(NamedSection, "__warning__")
+
+       function s.render(self)
+               tpl.render_string([[
+                       <div class="alert-message warning">
+                               <h4><%:Package libiwinfo required!%></h4>
+                               <p><%_The <em>libiwinfo-lua</em> package is not installed. You must install this component for working wireless configuration!%></p>
+                       </div>
+               ]])
+       end
+end
+
+local _, dev, net
+for _, dev in ipairs(ntm:get_wifidevs()) do
+       s = m:section(TypedSection)
+       s.template = "admin_network/wifi_overview"
+       s.wnets = dev:get_wifinets()
+       s.dev = dev
+       s.hw = guess_wifi_hw(dev)
+
+       function s.cfgsections(self)
+               local _, net, sl = nil, nil, { }
+               for _, net in ipairs(self.wnets) do
+                       sl[#sl+1] = net:name()
+                       self.wnets[net:name()] = net
+               end
+               return sl
+       end
+
+       o = s:option(Value, "__disable__")
+
+       function o.cfgvalue(self, sid)
+               local wnet = self.section.wnets[sid]
+               local wdev = wnet:get_device()
+
+               return ((wnet and wnet:get("disabled") == "1") or
+                           (wdev and wdev:get("disabled") == "1")) and "1" or "0"
+       end
+
+       function o.write(self, sid, value)
+               local wnet = self.section.wnets[sid]
+               local wdev = wnet:get_device()
+
+               if value ~= "1" then
+                       wnet:set("disabled", nil)
+                       wdev:set("disabled", nil)
+               else
+                       wnet:set("disabled", "1")
+               end
+       end
+
+       o.remove = o.write
+
+
+       o = s:option(Value, "__delete__")
+
+       function o.write(self, sid, value)
+               local wnet = self.section.wnets[sid]
+               local nets = wnet:get_networks()
+
+               ntm:del_wifinet(wnet:id())
+
+               local _, net
+               for _, net in ipairs(nets) do
+                       if net:is_empty() then
+                               ntm:del_network(net:name())
+                       end
+               end
+       end
+end
+
+s = m:section(NamedSection, "__assoclist__")
+
+function s.render(self, sid)
+       tpl.render_string([[
+               <h2><%:Associated Stations%></h2>
+               <%+wifi_assoclist%>
+       ]])
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/diagnostics.htm
new file mode 100644 (file)
index 0000000..03dd5aa
--- /dev/null
@@ -0,0 +1,117 @@
+<%#
+ Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%
+local fs   = require "nixio.fs"
+local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6")
+local has_traceroute6 = fs.access("/bin/traceroute6") or fs.access("/usr/bin/traceroute6")
+
+local dns_host = luci.config.diag and luci.config.diag.dns or "dev.openwrt.org"
+local ping_host = luci.config.diag and luci.config.diag.ping or "dev.openwrt.org"
+local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.org"
+%>
+
+<script type="text/javascript">//<![CDATA[
+       var stxhr = new XHR();
+
+       function update_status(field, proto)
+       {
+               var tool = field.name;
+               var addr = field.value;
+               var protocol = proto ? "6" : "";
+
+               var legend = document.getElementById('diag-rc-legend');
+               var output = document.getElementById('diag-rc-output');
+
+               if (legend && output)
+               {
+                       output.innerHTML =
+                               '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+                               '<%:Waiting for command to complete...%>'
+                       ;
+
+                       legend.parentNode.style.display = 'block';
+                       legend.style.display = 'inline';
+
+                       stxhr.post('<%=url('admin/network')%>/diag_' + tool + protocol + '/' + addr, { token: '<%=token%>' },
+                               function(x)
+                               {
+                                       if (x.responseText)
+                                       {
+                                               legend.style.display = 'none';
+                                               output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+                                       }
+                                       else
+                                       {
+                                               legend.style.display = 'none';
+                                               output.innerHTML = '<span class="error"><%:Bad address specified!%></span>';
+                                       }
+                               }
+                       );
+               }
+       }
+//]]></script>
+
+<form method="post" action="<%=url('admin/network/diagnostics')%>">
+       <div class="cbi-map">
+               <h2 name="content"><%:Diagnostics%></h2>
+
+               <div class="cbi-section">
+                       <legend><%:Network Utilities%></legend>
+
+                       <div class="table">
+                               <div class="tr">
+                                       <div class="td left">
+                                               <input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br />
+                                               <% if has_ping6 then %>
+                                               <span>
+                                                       <select name="ping_proto" style="width:auto">
+                                                               <option value="" selected="selected"><%:IPv4%></option>
+                                                               <option value="6"><%:IPv6%></option>
+                                                       </select>
+                                               </span>
+                                               <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping, this.form.ping_proto.selectedIndex)" />
+                                               <% else %>
+                                               <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" />
+                                               <% end %>
+                                       </div>
+
+                                       <div class="td left">
+                                               <input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br />
+                                               <% if has_traceroute6 then %>
+                                               <span>
+                                                       <select name="traceroute_proto" style="width:auto">
+                                                               <option value="" selected="selected"><%:IPv4%></option>
+                                                               <option value="6"><%:IPv6%></option>
+                                                       </select>
+                                               </span>
+                                               <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute, this.form.traceroute_proto.selectedIndex)" />
+                                               <% else %>
+                                               <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" />
+                                               <% end %>
+                                               <% if not has_traceroute6 then %>
+                                                       <p>&#160;</p>
+                                                       <p><%:Install iputils-traceroute6 for IPv6 traceroute%></p>
+                                               <% end %>
+                                       </div>
+
+                                       <div class="td left">
+                                               <input style="margin: 5px 0" type="text" value="<%=dns_host%>" name="nslookup" /><br />
+                                               <input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" />
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </div>
+
+       <div class="cbi-section" style="display:none">
+               <strong id="diag-rc-legend"></strong>
+               <span id="diag-rc-output"></span>
+       </div>
+</form>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_overview.htm
new file mode 100644 (file)
index 0000000..9d4afd2
--- /dev/null
@@ -0,0 +1,53 @@
+<div class="cbi-section-node">
+       <div class="table">
+               <%
+                       for i, net in ipairs(self.netlist) do
+                               local z = net[3]
+                               local c = z and z:get_color() or "#EEEEEE"
+                               local t = z and translate("Part of zone %q") % z:name() or translate("No zone assigned")
+                               local disabled = (net[4]:get("auto") == "0")
+                               local dynamic = net[4]:is_dynamic()
+               %>
+                       <div class="tr cbi-rowstyle-<%=i % 2 + 1%>">
+                               <div class="td col-3 center middle">
+                                       <div class="ifacebox">
+                                               <div class="ifacebox-head" style="background-color:<%=c%>" title="<%=pcdata(t)%>">
+                                                       <strong><%=net[1]:upper()%></strong>
+                                               </div>
+                                               <div class="ifacebox-body" id="<%=net[1]%>-ifc-devices" data-network="<%=net[1]%>">
+                                                       <img src="<%=resource%>/icons/ethernet_disabled.png" style="width:16px; height:16px" /><br />
+                                                       <small>?</small>
+                                               </div>
+                                       </div>
+                               </div>
+                               <div class="td col-5 left middle" id="<%=net[1]%>-ifc-description">
+                                       <em><%:Collecting data...%></em>
+                               </div>
+                               <div class="td cbi-section-actions">
+                                       <div>
+                                               <input type="button" class="cbi-button cbi-button-neutral" onclick="iface_reconnect('<%=net[1]%>')" title="<%:Reconnect this interface%>" value="<%:Restart%>"<%=ifattr(disabled or dynamic, "disabled", "disabled")%> />
+
+                                               <% if disabled then %>
+                                                       <input type="hidden" name="cbid.network.<%=net[1]%>.__disable__" value="1" />
+                                                       <input type="submit" name="cbi.apply" class="cbi-button cbi-button-neutral" onclick="this.previousElementSibling.value='0'" title="<%:Reconnect this interface%>" value="<%:Connect%>"<%=ifattr(dynamic, "disabled", "disabled")%> />
+                                               <% else %>
+                                                       <input type="hidden" name="cbid.network.<%=net[1]%>.__disable__" value="0" />
+                                                       <input type="submit" name="cbi.apply" class="cbi-button cbi-button-neutral" onclick="this.previousElementSibling.value='1'" title="<%:Shutdown this interface%>" value="<%:Stop%>"<%=ifattr(dynamic, "disabled", "disabled")%> />
+                                               <% end %>
+
+                                               <input type="button" class="cbi-button cbi-button-action important" onclick="location.href='<%=url("admin/network/network", net[1])%>'" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit"<%=ifattr(dynamic, "disabled", "disabled")%> />
+
+                                               <input type="hidden" name="cbid.network.<%=net[1]%>.__delete__" value="" />
+                                               <input type="submit" name="cbi.apply" class="cbi-button cbi-button-negative" onclick="iface_delete(event)" value="<%:Delete%>"<%=ifattr(dynamic, "disabled", "disabled")%> />
+                                       </div>
+                               </div>
+                       </div>
+               <% end %>
+       </div>
+</div>
+
+<div class="cbi-section-create">
+       <input type="button" class="cbi-button cbi-button-add" value="<%:Add new interface...%>" onclick="location.href='<%=url("admin/network/iface_add")%>'" />
+</div>
+
+<script type="text/javascript" src="<%=resource%>/view/network/network.js"></script>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/iface_status.htm
new file mode 100644 (file)
index 0000000..a75b275
--- /dev/null
@@ -0,0 +1,12 @@
+<%+cbi/valueheader%>
+
+<span class="ifacebadge large"<%=attr("data-iface-status", self.network)%>>
+       <img src="<%=resource%>/icons/ethernet_disabled.png" />
+       <span>
+               <em class="spinning"><%:Collecting data...%></em>
+       </span>
+</span>
+
+<script type="text/javascript" src="<%=resource%>/view/network/iface_status.js"></script>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm
new file mode 100644 (file)
index 0000000..6e741b4
--- /dev/null
@@ -0,0 +1,62 @@
+<script type="text/javascript">//<![CDATA[
+       var switches = [ '<%=table.concat(self.switches, "', '")%>' ],
+           tables = document.querySelectorAll('.cbi-section-table');
+
+       function add_status_row(table) {
+               var first_row = table.querySelector('.cbi-section-table-row');
+               if (first_row.classList.contains('port-status'))
+                       return first_row;
+
+               var status_row = first_row.parentNode.insertBefore(
+                       E('div', { 'class': first_row.className }), first_row);
+
+               first_row.querySelectorAll('.td').forEach(function(td) {
+                       status_row.appendChild(td.cloneNode(false));
+                       status_row.lastElementChild.removeAttribute('data-title');
+               });
+
+               status_row.firstElementChild.innerHTML = '<%:Port status:%>';
+               status_row.classList.add('port-status') ;
+
+               return status_row;
+       }
+
+       XHR.poll(-1, '<%=url('admin/network/switch_status')%>/' + switches.join(','), null,
+               function(x, st)
+               {
+                       for (var i = 0; i < switches.length; i++)
+                       {
+                               var ports = st[switches[i]];
+                               var tr = add_status_row(tables[i]);
+
+                               if (tr && ports && ports.length)
+                               {
+                                       for (var j = 0; j < ports.length; j++)
+                                       {
+                                               var th = tr.querySelector('[data-name="%d"]'.format(j));
+
+                                               if (!th)
+                                                       continue;
+
+                                               if (ports[j].link)
+                                               {
+                                                       th.innerHTML = String.format(
+                                                               '<small><img src="<%=resource%>/icons/port_up.png" />' +
+                                                               '<br />%d<%:baseT%><br />%s</small>',
+                                                               ports[j].speed, ports[j].duplex
+                                                                       ? '<%:full-duplex%>' : '<%:half-duplex%>'
+                                                       );
+                                               }
+                                               else
+                                               {
+                                                       th.innerHTML = String.format(
+                                                               '<small><img src="<%=resource%>/icons/port_down.png" />' +
+                                                               '<br /><%:no link%></small>'
+                                                       );
+                                               }
+                                       }
+                               }
+                       }
+               }
+       );
+//]]></script>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm
new file mode 100644 (file)
index 0000000..5a61ba0
--- /dev/null
@@ -0,0 +1,59 @@
+<%#
+ Copyright 2009-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%-
+
+       local sys = require "luci.sys"
+       local utl = require "luci.util"
+
+       local dev = luci.http.formvalue("device")
+       local iw = luci.sys.wifi.getiwinfo(dev)
+
+       if not iw then
+               luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
+               return
+       end
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Join Network: Wireless Scan%></h2>
+
+<div class="cbi-map">
+       <div class="cbi-section">
+               <div class="table"<%=attr("data-wifi-scan", dev) .. attr("data-wifi-type", iw.type)%>>
+                       <div class="tr table-titles">
+                               <div class="th col-2 middle center"><%:Signal%></div>
+                               <div class="th col-4 middle left"><%:SSID%></div>
+                               <div class="th col-2 middle center hide-xs"><%:Channel%></div>
+                               <div class="th col-2 middle left hide-xs"><%:Mode%></div>
+                               <div class="th col-3 middle left hide-xs"><%:BSSID%></div>
+                               <div class="th col-3 middle left"><%:Encryption%></div>
+                               <div class="th cbi-section-actions">&#160;</div>
+                       </div>
+
+                       <div class="tr placeholder">
+                               <div class="td">
+                                       <img src="<%=resource%>/icons/loading.gif" class="middle" />
+                                       <em><%:Collecting data...%></em>
+                               </div>
+                       </div>
+               </div>
+       </div>
+</div>
+<div class="cbi-page-actions right">
+       <form class="inline" action="<%=url("admin/network/wireless")%>" method="get">
+               <input class="cbi-button cbi-button-neutral" type="submit" value="<%:Back to overview%>" />
+       </form>
+       <form class="inline" action="<%=url('admin/network/wireless_join')%>" method="post">
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" />
+               <input type="button" class="cbi-button cbi-button-action" value="<%:Repeat scan%>" onclick="flush()" />
+       </form>
+</div>
+
+<script type="text/javascript" src="<%=resource%>/view/network/wifi_join.js"></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_overview.htm
new file mode 100644 (file)
index 0000000..89bb404
--- /dev/null
@@ -0,0 +1,61 @@
+<div class="cbi-section-node">
+       <div class="table">
+               <!-- physical device -->
+               <div class="tr cbi-rowstyle-2">
+                       <div class="td col-2 center middle">
+                               <span class="ifacebadge"><img src="<%=resource%>/icons/wifi_disabled.png" id="<%=self.dev:name()%>-iw-upstate" /> <%=self.dev:name()%></span>
+                       </div>
+                       <div class="td col-7 left middle">
+                               <big><strong><%=self.hw%></strong></big><br />
+                               <span id="<%=self.dev:name()%>-iw-devinfo"></span>
+                       </div>
+                       <div class="td middle cbi-section-actions">
+                               <div>
+                                       <input type="button" class="cbi-button cbi-button-neutral" title="<%:Restart radio interface%>" value="<%:Restart%>" data-radio="<%=self.dev:name()%>" onclick="wifi_restart(event)" />
+                                       <input type="button" class="cbi-button cbi-button-action important" title="<%:Find and join network%>" value="<%:Scan%>" onclick="cbi_submit(this, 'device', '<%=self.dev:name()%>', '<%=url('admin/network/wireless_join')%>')" />
+                                       <input type="button" class="cbi-button cbi-button-add" title="<%:Provide new network%>" value="<%:Add%>" onclick="cbi_submit(this, 'device', '<%=self.dev:name()%>', '<%=url('admin/network/wireless_add')%>')" />
+                               </div>
+                       </div>
+               </div>
+               <!-- /physical device -->
+
+               <!-- network list -->
+               <% if #self.wnets > 0 then %>
+                       <% for i, net in ipairs(self.wnets) do local disabled = (self.dev:get("disabled") == "1" or net:get("disabled") == "1") %>
+                       <div class="tr cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
+                               <div class="td col-2 center middle" id="<%=net:id()%>-iw-signal">
+                                       <span class="ifacebadge" title="<%:Not associated%>"><img src="<%=resource%>/icons/signal-<%= disabled and "none" or "0" %>.png" /> 0%</span>
+                               </div>
+                               <div class="td col-7 left middle" id="<%=net:id()%>-iw-status" data-network="<%=net:id()%>" data-disabled="<%= disabled and "true" or "false" %>">
+                                       <em><%= disabled and translate("Wireless is disabled") or translate("Collecting data...") %></em>
+                               </div>
+                               <div class="td middle cbi-section-actions">
+                                       <div>
+                                               <% if disabled then %>
+                                                       <input name="cbid.wireless.<%=net:name()%>.__disable__" type="hidden" value="1" />
+                                                       <input name="cbi.apply" type="submit" class="cbi-button cbi-button-neutral" title="<%:Enable this network%>" value="<%:Enable%>" onclick="this.previousElementSibling.value='0'" />
+                                               <% else %>
+                                                       <input name="cbid.wireless.<%=net:name()%>.__disable__" type="hidden" value="0" />
+                                                       <input name="cbi.apply" type="submit" class="cbi-button cbi-button-neutral" title="<%:Disable this network%>" value="<%:Disable%>" onclick="this.previousElementSibling.value='1'" />
+                                               <% end %>
+
+                                               <input type="button" class="cbi-button cbi-button-action important" onclick="location.href='<%=net:adminlink()%>'" title="<%:Edit this network%>" value="<%:Edit%>" />
+
+                                               <input name="cbid.wireless.<%=net:name()%>.__delete__" type="hidden" value="" />
+                                               <input name="cbi.apply" type="submit" class="cbi-button cbi-button-negative" title="<%:Delete this network%>" value="<%:Remove%>" onclick="wifi_delete(event)" />
+                                       </div>
+                               </div>
+                       </div>
+                       <% end %>
+               <% else %>
+                       <div class="tr placeholder">
+                               <div class="td">
+                                       <em><%:No network configured on this device%></em>
+                               </div>
+                       </div>
+               <% end %>
+               <!-- /network list -->
+       </div>
+</div>
+
+<script type="text/javascript" src="<%=resource%>/view/network/wireless.js"></script>
diff --git a/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm b/package/luci/modules/luci-mod-network/luasrc/view/admin_network/wifi_status.htm
new file mode 100644 (file)
index 0000000..93ae2f5
--- /dev/null
@@ -0,0 +1,14 @@
+<%+cbi/valueheader%>
+
+<span class="ifacebadge large"<%=attr("data-wifi-status", self.ifname)%>>
+       <small>
+               <img src="<%=resource%>/icons/signal-none.png" title="<%:Not associated%>" />&#160;
+       </small>
+       <span>
+               <em class="spinning"><%:Collecting data...%></em>
+       </span>
+</span>
+
+<script type="text/javascript" src="<%=resource%>/view/network/wifi_status.js"></script>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full b/package/luci/modules/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full
new file mode 100755 (executable)
index 0000000..140c832
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ "$(uci -q get luci.diag)" != "internal" ]; then
+       host=""
+
+       if [ -s /etc/os-release ]; then
+               . /etc/os-release
+               host="${HOME_URL:-${BUG_URL:-$OPENWRT_DEVICE_MANUFACTURER_URL}}"
+               host="${host#*://}"
+               host="${host%%/*}"
+       fi
+
+       uci -q batch <<-EOF >/dev/null
+               set luci.diag=internal
+               set luci.diag.dns='${host:-openwrt.org}'
+               set luci.diag.ping='${host:-openwrt.org}'
+               set luci.diag.route='${host:-openwrt.org}'
+               commit luci
+       EOF
+fi
+
+exit 0
diff --git a/package/luci/modules/luci-mod-rpc/Makefile b/package/luci/modules/luci-mod-rpc/Makefile
new file mode 100644 (file)
index 0000000..bc1f6d2
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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:=LuCI RPC - JSON-RPC API
+LUCI_DEPENDS:=+luci-lib-json
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua
new file mode 100644 (file)
index 0000000..37a9760
--- /dev/null
@@ -0,0 +1,245 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.rpc", package.seeall)
+
+
+function session_retrieve(sid, allowed_users)
+       local util = require "luci.util"
+       local sdat = util.ubus("session", "get", {
+               ubus_rpc_session = sid
+       })
+
+       if type(sdat) == "table" and
+          type(sdat.values) == "table" and
+          type(sdat.values.token) == "string" and
+          type(sdat.values.username) == "string" and
+          util.contains(allowed_users, sdat.values.username)
+       then
+               return sid, sdat.values
+       end
+
+       return nil
+end
+
+function authenticator(validator, accs)
+       local http = require "luci.http"
+       local ctrl = require "luci.controller.rpc"
+       local auth = http.formvalue("auth", true) or http.getcookie("sysauth")
+
+       if auth then -- if authentication token was given
+               local sid, sdat = ctrl.session_retrieve(auth, accs)
+               if sdat then -- if given token is valid
+                       return sdat.username, sid
+               end
+               http.status(403, "Forbidden")
+       end
+end
+
+
+function index()
+       local ctrl = require "luci.controller.rpc"
+
+       local rpc = node("rpc")
+       rpc.sysauth = "root"
+       rpc.sysauth_authenticator = ctrl.authenticator
+       rpc.notemplate = true
+
+       entry({"rpc", "uci"}, call("rpc_uci"))
+       entry({"rpc", "fs"}, call("rpc_fs"))
+       entry({"rpc", "sys"}, call("rpc_sys"))
+       entry({"rpc", "ipkg"}, call("rpc_ipkg"))
+       entry({"rpc", "ip"}, call("rpc_ip"))
+       entry({"rpc", "auth"}, call("rpc_auth")).sysauth = false
+end
+
+function rpc_auth()
+       local ctrl    = require "luci.controller.rpc"
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local sys     = require "luci.sys"
+       local ltn12   = require "luci.ltn12"
+       local util    = require "luci.util"
+
+       local server = {}
+       server.challenge = function(user, pass)
+               local config = require "luci.config"
+               local login = util.ubus("session", "login", {
+                       username = user,
+                       password = pass,
+                       timeout  = tonumber(config.sauth.sessiontime)
+               })
+
+               if type(login) == "table" and
+                  type(login.ubus_rpc_session) == "string"
+               then
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = login.ubus_rpc_session,
+                               values = {
+                                       token = sys.uniqueid(16)
+                               }
+                       })
+
+                       local sid, sdat = ctrl.session_retrieve(login.ubus_rpc_session, { user })
+                       if sdat then
+                               return {
+                                       sid = sid,
+                                       token = sdat.token
+                               }
+                       end
+               end
+
+               return nil
+       end
+
+       server.login = function(...)
+               local challenge = server.challenge(...)
+               if challenge then
+                       http.header("Set-Cookie", 'sysauth=%s; path=%s' %{
+                               challenge.sid,
+                               http.getenv("SCRIPT_NAME")
+                       })
+                       return challenge.sid
+               end
+       end
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(server, http.source()), http.write)
+end
+
+function rpc_uci()
+       if not pcall(require, "luci.model.uci") then
+               luci.http.status(404, "Not Found")
+               return nil
+       end
+       local uci     = require "luci.jsonrpcbind.uci"
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local ltn12   = require "luci.ltn12"
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(uci, http.source()), http.write)
+end
+
+function rpc_fs()
+       local util    = require "luci.util"
+       local io      = require "io"
+       local fs2     = util.clone(require "nixio.fs")
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local ltn12   = require "luci.ltn12"
+
+       function fs2.readfile(filename)
+               local stat, mime = pcall(require, "mime")
+               if not stat then
+                       error("Base64 support not available. Please install LuaSocket.")
+               end
+
+               local fp = io.open(filename)
+               if not fp then
+                       return nil
+               end
+
+               local output = {}
+               local sink = ltn12.sink.table(output)
+               local source = ltn12.source.chain(ltn12.source.file(fp), mime.encode("base64"))
+               return ltn12.pump.all(source, sink) and table.concat(output)
+       end
+
+       function fs2.writefile(filename, data)
+               local stat, mime = pcall(require, "mime")
+               if not stat then
+                       error("Base64 support not available. Please install LuaSocket.")
+               end
+
+               local  file = io.open(filename, "w")
+               local  sink = file and ltn12.sink.chain(mime.decode("base64"), ltn12.sink.file(file))
+               return sink and ltn12.pump.all(ltn12.source.string(data), sink) or false
+       end
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(fs2, http.source()), http.write)
+end
+
+function rpc_sys()
+       local util    = require "luci.util"
+       local sys     = require "luci.sys"
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local ltn12   = require "luci.ltn12"
+
+       local sys2 = util.clone(sys)
+             sys2.net = util.clone(sys.net)
+             sys2.wifi = util.clone(sys.wifi)
+
+       function sys2.wifi.getiwinfo(ifname, operation)
+               local iw = sys.wifi.getiwinfo(ifname)
+               if iw then
+                       if operation then
+                               assert(type(iwinfo[iw.type][operation]) == "function")
+                               return iw[operation]
+                       end
+
+                       local n, f
+                       local rv = { ifname = ifname }
+                       for n, f in pairs(iwinfo[iw.type]) do
+                               if type(f) == "function" and
+                                  n ~= "scanlist" and n ~= "countrylist"
+                               then
+                                       rv[n] = iw[n]
+                               end
+                       end
+                       return rv
+               end
+               return nil
+       end
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(sys2, http.source()), http.write)
+end
+
+function rpc_ipkg()
+       if not pcall(require, "luci.model.ipkg") then
+               luci.http.status(404, "Not Found")
+               return nil
+       end
+       local ipkg    = require "luci.model.ipkg"
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local ltn12   = require "luci.ltn12"
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(ipkg, http.source()), http.write)
+end
+
+function rpc_ip()
+       if not pcall(require, "luci.ip") then
+               luci.http.status(404, "Not Found")
+               return nil
+       end
+
+       local util    = require "luci.util"
+       local ip      = require "luci.ip"
+       local jsonrpc = require "luci.jsonrpc"
+       local http    = require "luci.http"
+       local ltn12   = require "luci.ltn12"
+
+       local ip2 = util.clone(ip)
+
+       local _, n
+       for _, n in ipairs({ "new", "IPv4", "IPv6", "MAC" }) do
+               ip2[n] = function(address, netmask, operation, argument)
+                       local cidr = ip[n](address, netmask)
+                       if cidr and operation then
+                               assert(type(cidr[operation]) == "function")
+                               local cidr2 = cidr[operation](cidr, argument)
+                               return (type(cidr2) == "userdata") and cidr2:string() or cidr2
+                       end
+                       return (type(cidr) == "userdata") and cidr:string() or cidr
+               end
+       end
+
+       http.prepare_content("application/json")
+       ltn12.pump.all(jsonrpc.handle(ip2, http.source()), http.write)
+end
diff --git a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua b/package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua
new file mode 100644 (file)
index 0000000..c7f0254
--- /dev/null
@@ -0,0 +1,83 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.jsonrpc", package.seeall)
+require "luci.json"
+
+function resolve(mod, method)
+       local path = luci.util.split(method, ".")
+       
+       for j=1, #path-1 do
+               if not type(mod) == "table" then
+                       break
+               end
+               mod = rawget(mod, path[j])
+               if not mod then
+                       break
+               end
+       end
+       mod = type(mod) == "table" and rawget(mod, path[#path]) or nil
+       if type(mod) == "function" then
+               return mod
+       end
+end
+
+function handle(tbl, rawsource, ...)
+       local decoder = luci.json.Decoder()
+       local stat = luci.ltn12.pump.all(rawsource, decoder:sink())
+       local json = decoder:get()
+       local response
+       local success = false
+       
+       if stat then
+               if type(json.method) == "string"
+                and (not json.params or type(json.params) == "table") then
+                       local method = resolve(tbl, json.method)
+                       if method then
+                               response = reply(json.jsonrpc, json.id,
+                                proxy(method, unpack(json.params or {})))
+                       else
+                               response = reply(json.jsonrpc, json.id,
+                                nil, {code=-32601, message="Method not found."})
+                       end
+               else
+                       response = reply(json.jsonrpc, json.id,
+                        nil, {code=-32600, message="Invalid request."})
+               end
+       else
+               response = reply("2.0", nil,
+                nil, {code=-32700, message="Parse error."})
+       end
+
+       return luci.json.Encoder(response, ...):source()
+end
+
+function reply(jsonrpc, id, res, err)
+       require "luci.json"
+       id = id or luci.json.null
+       
+       -- 1.0 compatibility
+       if jsonrpc ~= "2.0" then
+               jsonrpc = nil
+               res = res or luci.json.null
+               err = err or luci.json.null
+       end
+       
+       return {id=id, result=res, error=err, jsonrpc=jsonrpc}
+end
+
+function proxy(method, ...)
+       local res = {luci.util.copcall(method, ...)}
+       local stat = table.remove(res, 1)
+       
+       if not stat then
+               return nil, {code=-32602, message="Invalid params.", data=table.remove(res, 1)} 
+       else
+               if #res <= 1 then
+                       return res[1] or luci.json.null
+               else
+                       return res
+               end
+       end
+end
diff --git a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua b/package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua
new file mode 100644 (file)
index 0000000..284801e
--- /dev/null
@@ -0,0 +1,83 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local uci   = require "luci.model.uci".cursor()
+local ucis  = require "luci.model.uci".cursor_state()
+local table = require "table"
+
+
+module "luci.jsonrpcbind.uci"
+_M, _PACKAGE, _NAME = nil, nil, nil
+
+function add(config, ...)
+       uci:load(config)
+       local stat = uci:add(config, ...)
+       return uci:save(config) and stat
+end
+
+function apply(config)
+       return uci:apply(config)
+end
+
+function changes(...)
+       return uci:changes(...)
+end
+
+function commit(config)
+       return uci:load(config) and uci:commit(config)
+end
+
+function delete(config, ...)
+       uci:load(config) 
+       return uci:delete(config, ...) and uci:save(config) 
+end
+
+function delete_all(config, ...)
+       uci:load(config)
+       return uci:delete_all(config, ...) and uci:save(config) 
+end
+
+function foreach(config, stype)
+       uci:load(config)
+       local sections = {}
+       
+       return uci:foreach(config, stype, function(section)
+               table.insert(sections, section)
+       end) and sections
+end
+
+function get(config, ...)
+       uci:load(config)
+       return uci:get(config, ...)
+end
+
+function get_all(config, ...)
+       uci:load(config)
+       return uci:get_all(config, ...)
+end
+
+function get_state(config, ...)
+       ucis:load(config)
+       return ucis:get(config, ...)
+end
+
+function revert(config)
+       return uci:load(config) and uci:revert(config)
+end
+
+function section(config, ...)
+       uci:load(config)
+       return uci:section(config, ...) and uci:save(config)
+end
+
+function set(config, ...)
+       uci:load(config)
+       return uci:set(config, ...) and uci:save(config)
+end
+
+function tset(config, ...)
+       uci:load(config)
+       return uci:tset(config, ...) and uci:save(config)
+end
+
diff --git a/package/luci/modules/luci-mod-status/Makefile b/package/luci/modules/luci-mod-status/Makefile
new file mode 100644 (file)
index 0000000..cf8c8dd
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# 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:=LuCI Status Pages
+LUCI_DEPENDS:=+luci-base +libiwinfo +libiwinfo-lua
+
+PKG_BUILD_DEPENDS:=iwinfo
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/bandwidth.svg b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/bandwidth.svg
new file mode 100644 (file)
index 0000000..5a121b8
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+       <polyline id="rx" points="" style="fill:blue;fill-opacity:0.4;stroke:blue;stroke-width:1" />
+       <polyline id="tx" points="" style="fill:green;fill-opacity:0.4;stroke:green;stroke-width:1" />
+
+       <line x1="0" y1="25%" x2="100%" y2="25%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_75" x="20" y="24%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="50%" x2="100%" y2="50%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_50" x="20" y="49%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="75%" x2="100%" y2="75%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_25" x="20" y="74%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+</svg>
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/connections.svg b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/connections.svg
new file mode 100644 (file)
index 0000000..5794e79
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+       <polyline id="tcp" points="" style="fill:green;fill-opacity:0.4;stroke:green;stroke-width:1" />
+       <polyline id="udp" points="" style="fill:blue;fill-opacity:0.4;stroke:blue;stroke-width:1" />
+       <polyline id="other" points="" style="fill:red;fill-opacity:0.4;stroke:red;stroke-width:1" />
+
+       <line x1="0" y1="25%" x2="100%" y2="25%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_75" x="20" y="24%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="50%" x2="100%" y2="50%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_50" x="20" y="49%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="75%" x2="100%" y2="75%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_25" x="20" y="74%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+</svg>
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/load.svg b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/load.svg
new file mode 100644 (file)
index 0000000..716d376
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+       <polyline id="load01" points="" style="fill:#ff0000;fill-opacity:0.4;stroke:#ff0000;stroke-width:1" />
+       <polyline id="load05" points="" style="fill:#ff6600;fill-opacity:0.4;stroke:#ff6600;stroke-width:1" />
+       <polyline id="load15" points="" style="fill:#ffaa00;fill-opacity:0.4;stroke:#ffaa00;stroke-width:1" />
+
+       <line x1="0" y1="25%" x2="100%" y2="25%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_75" x="20" y="24%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="50%" x2="100%" y2="50%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_50" x="20" y="49%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="75%" x2="100%" y2="75%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_25" x="20" y="74%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+</svg>
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js
new file mode 100644 (file)
index 0000000..3a895ec
--- /dev/null
@@ -0,0 +1,222 @@
+function progressbar(query, value, max, byte)
+{
+       var pg = document.querySelector(query),
+           vn = parseInt(value) || 0,
+           mn = parseInt(max) || 100,
+           fv = byte ? String.format('%1024.2mB', value) : value,
+           fm = byte ? String.format('%1024.2mB', max) : max,
+           pc = Math.floor((100 / mn) * vn);
+
+       if (pg) {
+               pg.firstElementChild.style.width = pc + '%';
+               pg.setAttribute('title', '%s / %s (%d%%)'.format(fv, fm, pc));
+       }
+}
+
+function renderBox(title, active, childs) {
+       childs = childs || [];
+       childs.unshift(L.itemlist(E('span'), [].slice.call(arguments, 3)));
+
+       return E('div', { class: 'ifacebox' }, [
+               E('div', { class: 'ifacebox-head center ' + (active ? 'active' : '') },
+                       E('strong', title)),
+               E('div', { class: 'ifacebox-body left' }, childs)
+       ]);
+}
+
+function renderBadge(icon, title) {
+       return E('span', { class: 'ifacebadge' }, [
+               E('img', { src: icon, title: title || '' }),
+               L.itemlist(E('span'), [].slice.call(arguments, 2))
+       ]);
+}
+
+L.poll(5, L.location(), { status: 1 },
+       function(x, info)
+       {
+               var us = document.getElementById('upstream_status_table');
+
+               while (us.lastElementChild)
+                       us.removeChild(us.lastElementChild);
+
+               var wan_list = info.wan || [];
+
+               for (var i = 0; i < wan_list.length; i++) {
+                       var ifc = wan_list[i];
+
+                       us.appendChild(renderBox(
+                               _('IPv4 Upstream'),
+                               (ifc.ifname && ifc.proto != 'none'),
+                               [ E('div', {}, renderBadge(
+                               L.resource('icons/%s.png').format((ifc && ifc.type) ? ifc.type : 'ethernet_disabled'), null,
+                               _('Device'), ifc ? (ifc.name || ifc.ifname || '-') : '-',
+                               _('MAC-Address'), (ifc && ifc.ether) ? ifc.mac : null)) ],
+                               _('Protocol'), ifc.i18n || E('em', _('Not connected')),
+                               _('Address'), (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
+                               _('Netmask'), (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
+                               _('Gateway'), (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0',
+                               _('DNS') + ' 1', (ifc.dns) ? ifc.dns[0] : null,
+                               _('DNS') + ' 2', (ifc.dns) ? ifc.dns[1] : null,
+                               _('DNS') + ' 3', (ifc.dns) ? ifc.dns[2] : null,
+                               _('DNS') + ' 4', (ifc.dns) ? ifc.dns[3] : null,
+                               _('DNS') + ' 5', (ifc.dns) ? ifc.dns[4] : null,
+                               _('Expires'), (ifc.expires > -1) ? '%t'.format(ifc.expires) : null,
+                               _('Connected'), (ifc.uptime > 0) ? '%t'.format(ifc.uptime) : null));
+               }
+
+               var wan6_list = info.wan6 || [];
+
+               for (var i = 0; i < wan6_list.length; i++) {
+                       var ifc6 = wan6_list[i];
+
+                       us.appendChild(renderBox(
+                               _('IPv6 Upstream'),
+                               (ifc6.ifname && ifc6.proto != 'none'),
+                               [ E('div', {}, renderBadge(
+                                       L.resource('icons/%s.png').format(ifc6.type || 'ethernet_disabled'), null,
+                                       _('Device'), ifc6 ? (ifc6.name || ifc6.ifname || '-') : '-',
+                                       _('MAC-Address'), (ifc6 && ifc6.ether) ? ifc6.mac : null)) ],
+                               _('Protocol'), ifc6.i18n ? (ifc6.i18n + (ifc6.proto === 'dhcp' && ifc6.ip6prefix ? '-PD' : '')) : E('em', _('Not connected')),
+                               _('Prefix Delegated'), ifc6.ip6prefix,
+                               _('Address'), (ifc6.ip6prefix) ? (ifc6.ip6addr || null) : (ifc6.ip6addr || '::'),
+                               _('Gateway'), (ifc6.gw6addr) ? ifc6.gw6addr : '::',
+                               _('DNS') + ' 1', (ifc6.dns) ? ifc6.dns[0] : null,
+                               _('DNS') + ' 2', (ifc6.dns) ? ifc6.dns[1] : null,
+                               _('DNS') + ' 3', (ifc6.dns) ? ifc6.dns[2] : null,
+                               _('DNS') + ' 4', (ifc6.dns) ? ifc6.dns[3] : null,
+                               _('DNS') + ' 5', (ifc6.dns) ? ifc6.dns[4] : null,
+                               _('Connected'), (ifc6.uptime > 0) ? '%t'.format(ifc6.uptime) : null));
+               }
+
+               var ds = document.getElementById('dsl_status_table');
+               if (ds) {
+                       while (ds.lastElementChild)
+                               ds.removeChild(ds.lastElementChild);
+
+                       ds.appendChild(renderBox(
+                               _('DSL Status'),
+                               (info.dsl.line_state === 'UP'), [ ],
+                               _('Line State'), '%s [0x%x]'.format(info.dsl.line_state, info.dsl.line_state_detail),
+                               _('Line Mode'), info.dsl.line_mode_s || '-',
+                               _('Line Uptime'), info.dsl.line_uptime_s || '-',
+                               _('Annex'), info.dsl.annex_s || '-',
+                               _('Profile'), info.dsl.profile_s || '-',
+                               _('Data Rate'), '%s/s / %s/s'.format(info.dsl.data_rate_down_s, info.dsl.data_rate_up_s),
+                               _('Max. Attainable Data Rate (ATTNDR)'), '%s/s / %s/s'.format(info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s),
+                               _('Latency'), '%s / %s'.format(info.dsl.latency_num_down, info.dsl.latency_num_up),
+                               _('Line Attenuation (LATN)'), '%.1f dB / %.1f dB'.format(info.dsl.line_attenuation_down, info.dsl.line_attenuation_up),
+                               _('Signal Attenuation (SATN)'), '%.1f dB / %.1f dB'.format(info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up),
+                               _('Noise Margin (SNR)'), '%.1f dB / %.1f dB'.format(info.dsl.noise_margin_down, info.dsl.noise_margin_up),
+                               _('Aggregate Transmit Power(ACTATP)'), '%.1f dB / %.1f dB'.format(info.dsl.actatp_down, info.dsl.actatp_up),
+                               _('Forward Error Correction Seconds (FECS)'), '%d / %d'.format(info.dsl.errors_fec_near, info.dsl.errors_fec_far),
+                               _('Errored seconds (ES)'), '%d / %d'.format(info.dsl.errors_es_near, info.dsl.errors_es_far),
+                               _('Severely Errored Seconds (SES)'), '%d / %d'.format(info.dsl.errors_ses_near, info.dsl.errors_ses_far),
+                               _('Loss of Signal Seconds (LOSS)'), '%d / %d'.format(info.dsl.errors_loss_near, info.dsl.errors_loss_far),
+                               _('Unavailable Seconds (UAS)'), '%d / %d'.format(info.dsl.errors_uas_near, info.dsl.errors_uas_far),
+                               _('Header Error Code Errors (HEC)'), '%d / %d'.format(info.dsl.errors_hec_near, info.dsl.errors_hec_far),
+                               _('Non Pre-emtive CRC errors (CRC_P)'), '%d / %d'.format(info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far),
+                               _('Pre-emtive CRC errors (CRCP_P)'), '%d / %d'.format(info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far),
+                               _('ATU-C System Vendor ID'), info.dsl.atuc_vendor_id,
+                               _('Power Management Mode'), info.dsl.power_mode_s));
+               }
+
+               var ws = document.getElementById('wifi_status_table');
+               if (ws)
+               {
+                       while (ws.lastElementChild)
+                               ws.removeChild(ws.lastElementChild);
+
+                       for (var didx = 0; didx < info.wifinets.length; didx++)
+                       {
+                               var dev = info.wifinets[didx];
+                               var net0 = (dev.networks && dev.networks[0]) ? dev.networks[0] : {};
+                               var vifs = [];
+
+                               for (var nidx = 0; nidx < dev.networks.length; nidx++)
+                               {
+                                       var net = dev.networks[nidx];
+                                       var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled);
+
+                                       var icon;
+                                       if (net.disabled)
+                                               icon = L.resource('icons/signal-none.png');
+                                       else if (net.quality <= 0)
+                                               icon = L.resource('icons/signal-0.png');
+                                       else if (net.quality < 25)
+                                               icon = L.resource('icons/signal-0-25.png');
+                                       else if (net.quality < 50)
+                                               icon = L.resource('icons/signal-25-50.png');
+                                       else if (net.quality < 75)
+                                               icon = L.resource('icons/signal-50-75.png');
+                                       else
+                                               icon = L.resource('icons/signal-75-100.png');
+
+                                       vifs.push(renderBadge(
+                                               icon,
+                                               '%s: %d dBm / %s: %d%%'.format(_('Signal'), net.signal, _('Quality'), net.quality),
+                                               _('SSID'), E('a', { href: net.link }, [ net.ssid || '?' ]),
+                                               _('Mode'), net.mode,
+                                               _('BSSID'), is_assoc ? (net.bssid || '-') : null,
+                                               _('Encryption'), is_assoc ? net.encryption : null,
+                                               _('Associations'), is_assoc ? (net.num_assoc || '-') : null,
+                                               null, is_assoc ? null : E('em', net.disabled ? _('Wireless is disabled') : _('Wireless is not associated'))));
+                               }
+
+                               ws.appendChild(renderBox(
+                                       dev.device, dev.up || net0.up,
+                                       [ E('div', vifs) ],
+                                       _('Type'), dev.name.replace(/^Generic | Wireless Controller .+$/g, ''),
+                                       _('Channel'), net0.channel ? '%d (%.3f %s)'.format(net0.channel, net0.frequency, _('GHz')) : '-',
+                                       _('Bitrate'), net0.bitrate ? '%d %s'.format(net0.bitrate, _('Mbit/s')) : '-'));
+                       }
+
+                       if (!ws.lastElementChild)
+                               ws.appendChild(E('em', _('No information available')));
+               }
+
+               var e;
+
+               if (e = document.getElementById('localtime'))
+                       e.innerHTML = info.localtime;
+
+               if (e = document.getElementById('uptime'))
+                       e.innerHTML = String.format('%t', info.uptime);
+
+               if (e = document.getElementById('loadavg'))
+                       e.innerHTML = String.format(
+                               '%.02f, %.02f, %.02f',
+                               info.loadavg[0] / 65535.0,
+                               info.loadavg[1] / 65535.0,
+                               info.loadavg[2] / 65535.0
+                       );
+
+               progressbar('#memtotal',
+                       info.memory.free + info.memory.buffered,
+                       info.memory.total,
+                       true);
+
+               progressbar('#memfree',
+                       info.memory.free,
+                       info.memory.total,
+                       true);
+
+               progressbar('#membuff',
+                       info.memory.buffered,
+                       info.memory.total,
+                       true);
+
+               progressbar('#swaptotal',
+                       info.swap.free,
+                       info.swap.total,
+                       true);
+
+               progressbar('#swapfree',
+                       info.swap.free,
+                       info.swap.total,
+                       true);
+
+               progressbar('#conns',
+                       info.conncount, info.connmax, false);
+
+       }
+);
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js
new file mode 100644 (file)
index 0000000..a742243
--- /dev/null
@@ -0,0 +1,253 @@
+var table_names = [ 'Filter', 'NAT', 'Mangle', 'Raw' ],
+    current_mode = document.querySelector('.cbi-tab[data-mode="6"]') ? 6 : 4;
+
+function create_table_section(table)
+{
+       var idiv = document.getElementById('iptables'),
+           tdiv = idiv.querySelector('[data-table="%s"]'.format(table)),
+           title = '%s: %s'.format(_('Table'), table);
+
+       if (!tdiv) {
+               tdiv = E('div', { 'data-table': table }, [
+                       E('h3', {}, title),
+                       E('div')
+               ]);
+
+               if (idiv.firstElementChild.nodeName.toLowerCase() === 'p')
+                       idiv.removeChild(idiv.firstElementChild);
+
+               var added = false, thisIdx = table_names.indexOf(table);
+
+               idiv.querySelectorAll('[data-table]').forEach(function(child) {
+                       var childIdx = table_names.indexOf(child.getAttribute('data-table'));
+
+                       if (added === false && childIdx > thisIdx) {
+                               idiv.insertBefore(tdiv, child);
+                               added = true;
+                       }
+               });
+
+               if (added === false)
+                       idiv.appendChild(tdiv);
+       }
+
+       return tdiv.lastElementChild;
+}
+
+function create_chain_section(table, chain, policy, packets, bytes, references)
+{
+       var tdiv = create_table_section(table),
+           cdiv = tdiv.querySelector('[data-chain="%s"]'.format(chain)),
+           title;
+
+       if (policy)
+               title = '%s <em>%s</em> <span>(%s: <em>%s</em>, %d %s, %.2mB %s)</span>'
+                       .format(_('Chain'), chain, _('Policy'), policy, packets, _('Packets'), bytes, _('Traffic'));
+       else
+               title = '%s <em>%s</em> <span class="references">(%d %s)</span>'
+                       .format(_('Chain'), chain, references, _('References'));
+
+       if (!cdiv) {
+               cdiv = E('div', { 'data-chain': chain }, [
+                       E('h4', { 'id': 'rule_%s_%s'.format(table.toLowerCase(), chain) }, title),
+                       E('div', { 'class': 'table' }, [
+                               E('div', { 'class': 'tr table-titles' }, [
+                                       E('div', { 'class': 'th center' }, _('Pkts.')),
+                                       E('div', { 'class': 'th center' }, _('Traffic')),
+                                       E('div', { 'class': 'th' }, _('Target')),
+                                       E('div', { 'class': 'th' }, _('Prot.')),
+                                       E('div', { 'class': 'th' }, _('In')),
+                                       E('div', { 'class': 'th' }, _('Out')),
+                                       E('div', { 'class': 'th' }, _('Source')),
+                                       E('div', { 'class': 'th' }, _('Destination')),
+                                       E('div', { 'class': 'th' }, _('Options')),
+                                       E('div', { 'class': 'th' }, _('Comment'))
+                               ])
+                       ])
+               ]);
+
+               tdiv.appendChild(cdiv);
+       }
+       else {
+               cdiv.firstElementChild.innerHTML = title;
+       }
+
+       return cdiv.lastElementChild;
+}
+
+function update_chain_section(chaintable, rows)
+{
+       if (!chaintable)
+               return;
+
+       cbi_update_table(chaintable, rows, _('No rules in this chain.'));
+
+       if (rows.length === 0 &&
+           document.querySelector('form > [data-hide-empty="true"]'))
+               chaintable.parentNode.style.display = 'none';
+       else
+               chaintable.parentNode.style.display = '';
+
+       chaintable.parentNode.setAttribute('data-empty', rows.length === 0);
+}
+
+function hide_empty(btn)
+{
+       var hide = (btn.getAttribute('data-hide-empty') === 'false');
+
+       btn.setAttribute('data-hide-empty', hide);
+       btn.value = hide ? _('Show empty chains') : _('Hide empty chains');
+       btn.blur();
+
+       document.querySelectorAll('[data-chain][data-empty="true"]')
+               .forEach(function(chaintable) {
+                       chaintable.style.display = hide ? 'none' : '';
+               });
+}
+
+function jump_target(ev)
+{
+       var link = ev.target,
+           table = findParent(link, '[data-table]').getAttribute('data-table'),
+           chain = link.textContent,
+           num = +link.getAttribute('data-num'),
+           elem = document.getElementById('rule_%s_%s'.format(table.toLowerCase(), chain));
+
+       if (elem) {
+               (document.documentElement || document.body.parentNode || document.body).scrollTop = elem.offsetTop - 40;
+               elem.classList.remove('flash');
+               void elem.offsetWidth;
+               elem.classList.add('flash');
+
+               if (num) {
+                       var rule = elem.nextElementSibling.childNodes[num];
+                       if (rule) {
+                               rule.classList.remove('flash');
+                               void rule.offsetWidth;
+                               rule.classList.add('flash');
+                       }
+               }
+       }
+}
+
+function parse_output(table, s)
+{
+       var current_chain = null;
+       var current_rules = [];
+       var seen_chains = {};
+       var chain_refs = {};
+       var re = /([^\n]*)\n/g;
+       var m, m2;
+
+       while ((m = re.exec(s)) != null) {
+               if (m[1].match(/^Chain (.+) \(policy (\w+) (\d+) packets, (\d+) bytes\)$/)) {
+                       var chain = RegExp.$1,
+                           policy = RegExp.$2,
+                           packets = +RegExp.$3,
+                           bytes = +RegExp.$4;
+
+                       update_chain_section(current_chain, current_rules);
+
+                       seen_chains[chain] = true;
+                       current_chain = create_chain_section(table, chain, policy, packets, bytes);
+                       current_rules = [];
+               }
+               else if (m[1].match(/^Chain (.+) \((\d+) references\)$/)) {
+                       var chain = RegExp.$1,
+                           references = +RegExp.$2;
+
+                       update_chain_section(current_chain, current_rules);
+
+                       seen_chains[chain] = true;
+                       current_chain = create_chain_section(table, chain, null, null, null, references);
+                       current_rules = [];
+               }
+               else if (m[1].match(/^num /)) {
+                       continue;
+               }
+               else if ((m2 = m[1].match(/^(\d+) +(\d+) +(\d+) +(.*?) +(\S+) +(\S*) +(\S+) +(\S+) +([a-f0-9:.]+(?:\/[a-f0-9:.]+)?) +([a-f0-9:.]+(?:\/[a-f0-9:.]+)?) +(.+)$/)) !== null) {
+                       var num = +m2[1],
+                           pkts = +m2[2],
+                           bytes = +m2[3],
+                           target = m2[4],
+                           proto = m2[5],
+                           indev = m2[7],
+                           outdev = m2[8],
+                           srcnet = m2[9],
+                           dstnet = m2[10],
+                           options = m2[11] || '-',
+                           comment = '-';
+
+                       options = options.trim().replace(/(?:^| )\/\* (.+) \*\//,
+                               function(m1, m2) {
+                                       comment = m2.replace(/^!fw3(: |$)/, '').trim() || '-';
+                                       return '';
+                               }) || '-';
+
+                       current_rules.push([
+                               '%.2m'.format(pkts).nobr(),
+                               '%.2mB'.format(bytes).nobr(),
+                               target ? '<span class="target">%s</span>'.format(target) : '-',
+                               proto,
+                               (indev !== '*') ? '<span class="ifacebadge">%s</span>'.format(indev) : '*',
+                               (outdev !== '*') ? '<span class="ifacebadge">%s</span>'.format(outdev) : '*',
+                               srcnet,
+                               dstnet,
+                               options,
+                               comment
+                       ]);
+
+                       if (target) {
+                               chain_refs[target] = chain_refs[target] || [];
+                               chain_refs[target].push([ current_chain, num ]);
+                       }
+               }
+       }
+
+       update_chain_section(current_chain, current_rules);
+
+       document.querySelectorAll('[data-table="%s"] [data-chain]'.format(table))
+               .forEach(function(cdiv) {
+                       if (!seen_chains[cdiv.getAttribute('data-chain')]) {
+                               cdiv.parentNode.removeChild(cdiv);
+                               return;
+                       }
+
+                       cdiv.querySelectorAll('.target').forEach(function(tspan) {
+                               if (seen_chains[tspan.textContent]) {
+                                       tspan.classList.add('jump');
+                                       tspan.addEventListener('click', jump_target);
+                               }
+                       });
+
+                       cdiv.querySelectorAll('.references').forEach(function(rspan) {
+                               var refs = chain_refs[cdiv.getAttribute('data-chain')];
+                               if (refs && refs.length) {
+                                       rspan.classList.add('cbi-tooltip-container');
+                                       rspan.appendChild(E('small', { 'class': 'cbi-tooltip ifacebadge', 'style': 'top:1em; left:auto' }, [ E('ul') ]));
+
+                                       refs.forEach(function(ref) {
+                                               var chain = ref[0].parentNode.getAttribute('data-chain'),
+                                                   num = ref[1];
+
+                                               rspan.lastElementChild.lastElementChild.appendChild(E('li', {}, [
+                                                       _('Chain'), ' ',
+                                                       E('span', {
+                                                               'class': 'jump',
+                                                               'data-num': num,
+                                                               'onclick': 'jump_target(event)'
+                                                       }, chain),
+                                                       ', %s #%d'.format(_('Rule'), num)
+                                               ]));
+                                       });
+                               }
+                       });
+               });
+}
+
+table_names.forEach(function(table) {
+       L.poll(5, L.url('admin/status/iptables_dump', current_mode, table.toLowerCase()), null,
+               function (xhr) {
+                       parse_output(table, xhr.responseText);
+               });
+});
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wifirate.svg b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wifirate.svg
new file mode 100644 (file)
index 0000000..e75ea61
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+       <polyline id="rate" points="" style="fill:green;fill-opacity:0.4;stroke:green;stroke-width:1" />
+
+       <line x1="0" y1="25%" x2="100%" y2="25%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_75" x="20" y="24%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="50%" x2="100%" y2="50%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_50" x="20" y="49%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="75%" x2="100%" y2="75%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_25" x="20" y="74%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+</svg>
diff --git a/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wireless.svg b/package/luci/modules/luci-mod-status/htdocs/luci-static/resources/wireless.svg
new file mode 100644 (file)
index 0000000..00cc2a1
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+       <polyline id="rssi" points="" style="fill:blue;fill-opacity:0.4;stroke:blue;stroke-width:1" />
+       <polyline id="noise" points="" style="fill:red;fill-opacity:0.4;stroke:red;stroke-width:1" />
+
+       <line x1="0" y1="25%" x2="100%" y2="25%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_75" x="20" y="24%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="50%" x2="100%" y2="50%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_50" x="20" y="49%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+
+       <line x1="0" y1="75%" x2="100%" y2="75%" style="stroke:black;stroke-width:0.1" />
+       <text id="label_25" x="20" y="74%" style="fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000"> </text>
+</svg>
diff --git a/package/luci/modules/luci-mod-status/luasrc/controller/admin/status.lua b/package/luci/modules/luci-mod-status/luasrc/controller/admin/status.lua
new file mode 100644 (file)
index 0000000..0d955c9
--- /dev/null
@@ -0,0 +1,175 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.status", package.seeall)
+
+function index()
+       entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)
+
+       entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true
+       entry({"admin", "status", "iptables_dump"}, call("dump_iptables")).leaf = true
+       entry({"admin", "status", "iptables_action"}, post("action_iptables")).leaf = true
+
+       entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3)
+       entry({"admin", "status", "syslog"}, call("action_syslog"), _("System Log"), 4)
+       entry({"admin", "status", "dmesg"}, call("action_dmesg"), _("Kernel Log"), 5)
+       entry({"admin", "status", "processes"}, form("admin_status/processes"), _("Processes"), 6)
+
+       entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7)
+
+       entry({"admin", "status", "realtime", "load"}, template("admin_status/load"), _("Load"), 1).leaf = true
+       entry({"admin", "status", "realtime", "load_status"}, call("action_load")).leaf = true
+
+       entry({"admin", "status", "realtime", "bandwidth"}, template("admin_status/bandwidth"), _("Traffic"), 2).leaf = true
+       entry({"admin", "status", "realtime", "bandwidth_status"}, call("action_bandwidth")).leaf = true
+
+       if nixio.fs.access("/etc/config/wireless") then
+               entry({"admin", "status", "realtime", "wireless"}, template("admin_status/wireless"), _("Wireless"), 3).leaf = true
+               entry({"admin", "status", "realtime", "wireless_status"}, call("action_wireless")).leaf = true
+       end
+
+       entry({"admin", "status", "realtime", "connections"}, template("admin_status/connections"), _("Connections"), 4).leaf = true
+       entry({"admin", "status", "realtime", "connections_status"}, call("action_connections")).leaf = true
+
+       entry({"admin", "status", "nameinfo"}, call("action_nameinfo")).leaf = true
+end
+
+function action_syslog()
+       local syslog = luci.sys.syslog()
+       luci.template.render("admin_status/syslog", {syslog=syslog})
+end
+
+function action_dmesg()
+       local dmesg = luci.sys.dmesg()
+       luci.template.render("admin_status/dmesg", {dmesg=dmesg})
+end
+
+function dump_iptables(family, table)
+       local prefix = (family == "6") and "ip6" or "ip"
+       local ok, lines = pcall(io.lines, "/proc/net/%s_tables_names" % prefix)
+       if ok and lines then
+               local s
+               for s in lines do
+                       if s == table then
+                               luci.http.prepare_content("text/plain")
+                               luci.sys.process.exec({
+                                       "/usr/sbin/%stables" % prefix, "-w", "-t", table,
+                                       "--line-numbers", "-nxvL"
+                               }, luci.http.write)
+                               return
+                       end
+               end
+       end
+
+       luci.http.status(404, "No such table")
+       luci.http.prepare_content("text/plain")
+end
+
+function action_iptables()
+       if luci.http.formvalue("zero") then
+               if luci.http.formvalue("family") == "6" then
+                       luci.util.exec("/usr/sbin/ip6tables -Z")
+               else
+                       luci.util.exec("/usr/sbin/iptables -Z")
+               end
+       elseif luci.http.formvalue("restart") then
+               luci.util.exec("/etc/init.d/firewall restart")
+       end
+
+       luci.http.redirect(luci.dispatcher.build_url("admin/status/iptables"))
+end
+
+function action_bandwidth(iface)
+       luci.http.prepare_content("application/json")
+
+       local bwc = io.popen("luci-bwc -i %s 2>/dev/null"
+               % luci.util.shellquote(iface))
+
+       if bwc then
+               luci.http.write("[")
+
+               while true do
+                       local ln = bwc:read("*l")
+                       if not ln then break end
+                       luci.http.write(ln)
+               end
+
+               luci.http.write("]")
+               bwc:close()
+       end
+end
+
+function action_wireless(iface)
+       luci.http.prepare_content("application/json")
+
+       local bwc = io.popen("luci-bwc -r %s 2>/dev/null"
+               % luci.util.shellquote(iface))
+
+       if bwc then
+               luci.http.write("[")
+
+               while true do
+                       local ln = bwc:read("*l")
+                       if not ln then break end
+                       luci.http.write(ln)
+               end
+
+               luci.http.write("]")
+               bwc:close()
+       end
+end
+
+function action_load()
+       luci.http.prepare_content("application/json")
+
+       local bwc = io.popen("luci-bwc -l 2>/dev/null")
+       if bwc then
+               luci.http.write("[")
+
+               while true do
+                       local ln = bwc:read("*l")
+                       if not ln then break end
+                       luci.http.write(ln)
+               end
+
+               luci.http.write("]")
+               bwc:close()
+       end
+end
+
+function action_connections()
+       local sys = require "luci.sys"
+
+       luci.http.prepare_content("application/json")
+
+       luci.http.write('{ "connections": ')
+       luci.http.write_json(sys.net.conntrack())
+
+       local bwc = io.popen("luci-bwc -c 2>/dev/null")
+       if bwc then
+               luci.http.write(', "statistics": [')
+
+               while true do
+                       local ln = bwc:read("*l")
+                       if not ln then break end
+                       luci.http.write(ln)
+               end
+
+               luci.http.write("]")
+               bwc:close()
+       end
+
+       luci.http.write(" }")
+end
+
+function action_nameinfo(...)
+       local util = require "luci.util"
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(util.ubus("network.rrdns", "lookup", {
+               addrs = { ... },
+               timeout = 5000,
+               limit = 1000
+       }) or { })
+end
diff --git a/package/luci/modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua b/package/luci/modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua
new file mode 100644 (file)
index 0000000..0a6e48f
--- /dev/null
@@ -0,0 +1,34 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+f = SimpleForm("processes", translate("Processes"), translate("This list gives an overview over currently running system processes and their status."))
+f.reset = false
+f.submit = false
+
+t = f:section(Table, luci.sys.process.list())
+t:option(DummyValue, "PID", translate("PID"))
+t:option(DummyValue, "USER", translate("Owner"))
+t:option(DummyValue, "COMMAND", translate("Command"))
+t:option(DummyValue, "%CPU", translate("CPU usage (%)"))
+t:option(DummyValue, "%MEM", translate("Memory usage (%)"))
+
+hup = t:option(Button, "_hup", translate("Hang Up"))
+hup.inputstyle = "reload"
+function hup.write(self, section)
+       null, self.tag_error[section] = luci.sys.process.signal(section, 1)
+end
+
+term = t:option(Button, "_term", translate("Terminate"))
+term.inputstyle = "remove"
+function term.write(self, section)
+       null, self.tag_error[section] = luci.sys.process.signal(section, 15)
+end
+
+kill = t:option(Button, "_kill", translate("Kill"))
+kill.inputstyle = "reset"
+function kill.write(self, section)
+       null, self.tag_error[section] = luci.sys.process.signal(section, 9)
+end
+
+return f
\ No newline at end of file
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/bandwidth.htm
new file mode 100644 (file)
index 0000000..5cc661a
--- /dev/null
@@ -0,0 +1,308 @@
+<%#
+ Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%-
+       local ntm = require "luci.model.network".init()
+
+       local dev
+       local devices = { }
+       for _, dev in luci.util.vspairs(luci.sys.net.devices()) do
+               if dev ~= "lo" and not ntm:ignore_interface(dev) then
+                       devices[#devices+1] = dev
+               end
+       end
+
+       local curdev = luci.http.formvalue("dev") or devices[1]
+-%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+       var bwxhr = new XHR();
+
+       var G;
+       var TIME = 0;
+       var RXB  = 1;
+       var RXP  = 2;
+       var TXB  = 3;
+       var TXP  = 4;
+
+       var width  = 760;
+       var height = 300;
+       var step   = 5;
+
+       var data_wanted = Math.floor(width / step);
+       var data_fill   = 1;
+       var data_stamp  = 0;
+
+       var data_rx = [ ];
+       var data_tx = [ ];
+
+       var line_rx;
+       var line_tx;
+
+       var label_25;
+       var label_50;
+       var label_75;
+
+       var label_rx_cur;
+       var label_rx_avg;
+       var label_rx_peak;
+
+       var label_tx_cur;
+       var label_tx_avg;
+       var label_tx_peak;
+
+       var label_scale;
+
+
+       Math.log2 = Math.log2 || function(x) { return Math.log(x) * Math.LOG2E; };
+
+       function bandwidth_label(bytes, br)
+       {
+               var uby = '<%:kB/s%>';
+               var kby = (bytes / 1024);
+
+               if (kby >= 1024)
+               {
+                       uby = '<%:MB/s%>';
+                       kby = kby / 1024;
+               }
+
+               var ubi = '<%:kbit/s%>';
+               var kbi = (bytes * 8 / 1024);
+
+               if (kbi >= 1024)
+               {
+                       ubi = '<%:Mbit/s%>';
+                       kbi = kbi / 1024;
+               }
+
+               return String.format("%f %s%s(%f %s)",
+                       kbi.toFixed(2), ubi,
+                       br ? '<br />' : ' ',
+                       kby.toFixed(2), uby
+               );
+       }
+
+       /* wait for SVG */
+       window.setTimeout(
+               function() {
+                       var svg = document.getElementById('bwsvg');
+
+                       try {
+                               G = svg.getSVGDocument
+                                       ? svg.getSVGDocument() : svg.contentDocument;
+                       }
+                       catch(e) {
+                               G = document.embeds['bwsvg'].getSVGDocument();
+                       }
+
+                       if (!G)
+                       {
+                               window.setTimeout(arguments.callee, 1000);
+                       }
+                       else
+                       {
+                               /* find sizes */
+                               width       = svg.offsetWidth  - 2;
+                               height      = svg.offsetHeight - 2;
+                               data_wanted = Math.ceil(width / step);
+
+                               /* prefill datasets */
+                               for (var i = 0; i < data_wanted; i++)
+                               {
+                                       data_rx[i] = 0;
+                                       data_tx[i] = 0;
+                               }
+
+                               /* find svg elements */
+                               line_rx = G.getElementById('rx');
+                               line_tx = G.getElementById('tx');
+
+                               label_25 = G.getElementById('label_25');
+                               label_50 = G.getElementById('label_50');
+                               label_75 = G.getElementById('label_75');
+
+                               label_rx_cur  = document.getElementById('rx_bw_cur');
+                               label_rx_avg  = document.getElementById('rx_bw_avg');
+                               label_rx_peak = document.getElementById('rx_bw_peak');
+
+                               label_tx_cur  = document.getElementById('tx_bw_cur');
+                               label_tx_avg  = document.getElementById('tx_bw_avg');
+                               label_tx_peak = document.getElementById('tx_bw_peak');
+
+                               label_scale   = document.getElementById('scale');
+
+
+                               /* plot horizontal time interval lines */
+                               for (var i = width % (step * 60); i < width; i += step * 60)
+                               {
+                                       var line = G.createElementNS('http://www.w3.org/2000/svg', 'line');
+                                               line.setAttribute('x1', i);
+                                               line.setAttribute('y1', 0);
+                                               line.setAttribute('x2', i);
+                                               line.setAttribute('y2', '100%');
+                                               line.setAttribute('style', 'stroke:black;stroke-width:0.1');
+
+                                       var text = G.createElementNS('http://www.w3.org/2000/svg', 'text');
+                                               text.setAttribute('x', i + 5);
+                                               text.setAttribute('y', 15);
+                                               text.setAttribute('style', 'fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000');
+                                               text.appendChild(G.createTextNode(Math.round((width - i) / step / 60) + 'm'));
+
+                                       label_25.parentNode.appendChild(line);
+                                       label_25.parentNode.appendChild(text);
+                               }
+
+                               label_scale.innerHTML = String.format('<%:(%d minute window, %d second interval)%>', data_wanted / 60, 3);
+
+                               /* render datasets, start update interval */
+                               XHR.poll(3, '<%=build_url("admin/status/realtime/bandwidth_status", curdev)%>', null,
+                                       function(x, data)
+                                       {
+                                               var data_max   = 0;
+                                               var data_scale = 0;
+
+                                               var data_rx_avg = 0;
+                                               var data_tx_avg = 0;
+
+                                               var data_rx_peak = 0;
+                                               var data_tx_peak = 0;
+
+                                               for (var i = data_stamp ? 0 : 1; i < data.length; i++)
+                                               {
+                                                       /* skip overlapping entries */
+                                                       if (data[i][TIME] <= data_stamp)
+                                                               continue;
+
+                                                       data_fill++;
+
+                                                       /* normalize difference against time interval */
+                                                       if (i > 0)
+                                                       {
+                                                               var time_delta = data[i][TIME] - data[i-1][TIME];
+                                                               if (time_delta)
+                                                               {
+                                                                       data_rx.push((data[i][RXB] - data[i-1][RXB]) / time_delta);
+                                                                       data_tx.push((data[i][TXB] - data[i-1][TXB]) / time_delta);
+                                                               }
+                                                       }
+                                               }
+
+                                               /* cut off outdated entries */
+                                               data_rx = data_rx.slice(data_rx.length - data_wanted, data_rx.length);
+                                               data_tx = data_tx.slice(data_tx.length - data_wanted, data_tx.length);
+                                               data_fill = Math.min(data_fill, data_wanted);
+
+                                               /* find peak */
+                                               for (var i = 0; i < data_rx.length; i++)
+                                               {
+                                                       data_max = Math.max(data_max, data_rx[i]);
+                                                       data_max = Math.max(data_max, data_tx[i]);
+
+                                                       data_rx_peak = Math.max(data_rx_peak, data_rx[i]);
+                                                       data_tx_peak = Math.max(data_tx_peak, data_tx[i]);
+
+                                                       data_rx_avg += data_rx[i];
+                                                       data_tx_avg += data_tx[i];
+                                               }
+
+                                               data_rx_avg = (data_rx_avg / data_fill);
+                                               data_tx_avg = (data_tx_avg / data_fill);
+
+                                               var size = Math.floor(Math.log2(data_max)),
+                                                   div = Math.pow(2, size - (size % 10)),
+                                                   mult = data_max / div,
+                                                   mult = (mult < 5) ? 2 : ((mult < 50) ? 10 : ((mult < 500) ? 100 : 1000));
+
+                                               data_max = data_max + (mult * div) - (data_max % (mult * div));
+
+                                               /* remember current timestamp, calculate horizontal scale */
+                                               data_stamp = data[data.length-1][TIME];
+                                               data_scale = height / data_max;
+
+                                               /* plot data */
+                                               var pt_rx = '0,' + height;
+                                               var pt_tx = '0,' + height;
+
+                                               var y_rx = 0;
+                                               var y_tx = 0;
+
+                                               for (var i = 0; i < data_rx.length; i++)
+                                               {
+                                                       var x = i * step;
+
+                                                       y_rx = height - Math.floor(data_rx[i] * data_scale);
+                                                       y_tx = height - Math.floor(data_tx[i] * data_scale);
+
+                                                       pt_rx += ' ' + x + ',' + y_rx;
+                                                       pt_tx += ' ' + x + ',' + y_tx;
+                                               }
+
+                                               pt_rx += ' ' + width + ',' + y_rx + ' ' + width + ',' + height;
+                                               pt_tx += ' ' + width + ',' + y_tx + ' ' + width + ',' + height;
+
+
+                                               line_rx.setAttribute('points', pt_rx);
+                                               line_tx.setAttribute('points', pt_tx);
+
+                                               label_25.firstChild.data = bandwidth_label(0.25 * data_max);
+                                               label_50.firstChild.data = bandwidth_label(0.50 * data_max);
+                                               label_75.firstChild.data = bandwidth_label(0.75 * data_max);
+
+                                               label_rx_cur.innerHTML = bandwidth_label(data_rx[data_rx.length-1], true);
+                                               label_tx_cur.innerHTML = bandwidth_label(data_tx[data_tx.length-1], true);
+
+                                               label_rx_avg.innerHTML = bandwidth_label(data_rx_avg, true);
+                                               label_tx_avg.innerHTML = bandwidth_label(data_tx_avg, true);
+
+                                               label_rx_peak.innerHTML = bandwidth_label(data_rx_peak, true);
+                                               label_tx_peak.innerHTML = bandwidth_label(data_tx_peak, true);
+                                       }
+                               );
+
+                               XHR.run();
+                       }
+               }, 1000
+       );
+//]]></script>
+
+<h2 name="content"><%:Realtime Traffic%></h2>
+
+<ul class="cbi-tabmenu">
+       <% for _, dev in ipairs(devices) do %>
+               <li class="cbi-tab<%= dev == curdev and "" or "-disabled" %>"><a href="?dev=<%=pcdata(dev)%>"><%=pcdata(dev)%></a></li>
+       <% end %>
+</ul>
+
+<embed id="bwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/bandwidth.svg" />
+<div style="text-align:right"><small id="scale">-</small></div>
+<br />
+
+<div class="table" style="width:100%; table-layout:fixed" cellspacing="5">
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Inbound:%></strong></div>
+               <div class="td" id="rx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="rx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="rx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+       </div>
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Outbound:%></strong></div>
+               <div class="td" id="tx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="tx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="tx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div>
+       </div>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/connections.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/connections.htm
new file mode 100644 (file)
index 0000000..e3dd39d
--- /dev/null
@@ -0,0 +1,374 @@
+<%#
+ Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+       var bwxhr = new XHR();
+
+       var G;
+       var TIME  = 0;
+       var UDP   = 1;
+       var TCP   = 2;
+       var OTHER = 3;
+
+       var width  = 760;
+       var height = 300;
+       var step   = 5;
+
+       var data_wanted = Math.floor(width / step);
+       var data_fill   = 1;
+       var data_stamp  = 0;
+
+       var data_udp = [ ];
+       var data_tcp = [ ];
+       var data_otr = [ ];
+
+       var line_udp;
+       var line_tcp;
+
+       var label_25;
+       var label_50;
+       var label_75;
+
+       var label_udp_cur;
+       var label_udp_avg;
+       var label_udp_peak;
+
+       var label_tcp_cur;
+       var label_tcp_avg;
+       var label_tcp_peak;
+
+       var label_otr_cur;
+       var label_otr_avg;
+       var label_otr_peak;
+
+       var label_scale;
+
+       var conn_table;
+
+       var dns_cache = { };
+
+
+       /* wait for SVG */
+       window.setTimeout(
+               function() {
+                       var svg = document.getElementById('bwsvg');
+
+                       try {
+                               G = svg.getSVGDocument
+                                       ? svg.getSVGDocument() : svg.contentDocument;
+                       }
+                       catch(e) {
+                               G = document.embeds['bwsvg'].getSVGDocument();
+                       }
+
+                       if (!G)
+                       {
+                               window.setTimeout(arguments.callee, 1000);
+                       }
+                       else
+                       {
+                               /* find sizes */
+                               width       = svg.offsetWidth  - 2;
+                               height      = svg.offsetHeight - 2;
+                               data_wanted = Math.ceil(width / step);
+
+                               /* prefill datasets */
+                               for (var i = 0; i < data_wanted; i++)
+                               {
+                                       data_udp[i] = 0;
+                                       data_tcp[i] = 0;
+                                       data_otr[i] = 0;
+                               }
+
+                               /* find svg elements */
+                               line_udp = G.getElementById('udp');
+                               line_tcp = G.getElementById('tcp');
+                               line_otr = G.getElementById('other');
+
+                               label_25 = G.getElementById('label_25');
+                               label_50 = G.getElementById('label_50');
+                               label_75 = G.getElementById('label_75');
+
+                               label_udp_cur  = document.getElementById('lb_udp_cur');
+                               label_udp_avg  = document.getElementById('lb_udp_avg');
+                               label_udp_peak = document.getElementById('lb_udp_peak');
+
+                               label_tcp_cur  = document.getElementById('lb_tcp_cur');
+                               label_tcp_avg  = document.getElementById('lb_tcp_avg');
+                               label_tcp_peak = document.getElementById('lb_tcp_peak');
+
+                               label_otr_cur  = document.getElementById('lb_otr_cur');
+                               label_otr_avg  = document.getElementById('lb_otr_avg');
+                               label_otr_peak = document.getElementById('lb_otr_peak');
+
+                               label_scale    = document.getElementById('scale');
+
+                               conn_table     = document.getElementById('connections');
+
+
+                               /* plot horizontal time interval lines */
+                               for (var i = width % (step * 60); i < width; i += step * 60)
+                               {
+                                       var line = G.createElementNS('http://www.w3.org/2000/svg', 'line');
+                                               line.setAttribute('x1', i);
+                                               line.setAttribute('y1', 0);
+                                               line.setAttribute('x2', i);
+                                               line.setAttribute('y2', '100%');
+                                               line.setAttribute('style', 'stroke:black;stroke-width:0.1');
+
+                                       var text = G.createElementNS('http://www.w3.org/2000/svg', 'text');
+                                               text.setAttribute('x', i + 5);
+                                               text.setAttribute('y', 15);
+                                               text.setAttribute('style', 'fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000');
+                                               text.appendChild(G.createTextNode(Math.round((width - i) / step / 60) + 'm'));
+
+                                       label_25.parentNode.appendChild(line);
+                                       label_25.parentNode.appendChild(text);
+                               }
+
+                               label_scale.innerHTML = String.format('<%:(%d minute window, %d second interval)%>', data_wanted / 60, 3);
+
+                               /* render datasets, start update interval */
+                               XHR.poll(3, '<%=build_url("admin/status/realtime/connections_status")%>', null,
+                                       function(x, json)
+                                       {
+                                               var rows = [];
+                                               var conn = json.connections;
+
+                                               var lookup_queue = [ ];
+
+                                               conn.sort(function(a, b) {
+                                                       return b.bytes - a.bytes;
+                                               });
+
+                                               for (var i = 0; i < conn.length; i++)
+                                               {
+                                                       var c  = conn[i];
+
+                                                       if ((c.src == '127.0.0.1' && c.dst == '127.0.0.1') ||
+                                                           (c.src == '::1'       && c.dst == '::1'))
+                                                               continue;
+
+                                                       if (!dns_cache[c.src])
+                                                               lookup_queue.push(c.src);
+
+                                                       if (!dns_cache[c.dst])
+                                                               lookup_queue.push(c.dst);
+
+                                                       var src = dns_cache[c.src] || (c.layer3 == 'ipv6' ? '[' + c.src + ']' : c.src);
+                                                       var dst = dns_cache[c.dst] || (c.layer3 == 'ipv6' ? '[' + c.dst + ']' : c.dst);
+
+                                                       rows.push([
+                                                               c.layer3.toUpperCase(),
+                                                               c.layer4.toUpperCase(),
+                                                               c.hasOwnProperty('sport') ? (src + ':' + c.sport) : src,
+                                                               c.hasOwnProperty('dport') ? (dst + ':' + c.dport) : dst,
+                                                               '%1024.2mB (%d <%:Pkts.%>)'.format(c.bytes, c.packets)
+                                                       ]);
+                                               }
+
+                                               cbi_update_table(conn_table, rows, '<em><%:No information available%></em>');
+
+                                               if (lookup_queue.length > 0)
+                                                       XHR.get('<%=build_url("admin/status/nameinfo")%>/' + lookup_queue.slice(0, 100).join('/'), null,
+                                                               function(x, json)
+                                                               {
+                                                                       for (var addr in json)
+                                                                               dns_cache[addr] = json[addr];
+                                                               }
+                                                       );
+
+
+                                               var data = json.statistics;
+
+                                               var data_max   = 0;
+                                               var data_scale = 0;
+
+                                               var data_udp_avg = 0;
+                                               var data_tcp_avg = 0;
+                                               var data_otr_avg = 0;
+
+                                               var data_udp_peak = 0;
+                                               var data_tcp_peak = 0;
+                                               var data_otr_peak = 0;
+
+                                               for (var i = data_stamp ? 0 : 1; i < data.length; i++)
+                                               {
+                                                       /* skip overlapping entries */
+                                                       if (data[i][TIME] <= data_stamp)
+                                                               continue;
+
+                                                       data_fill++;
+
+                                                       data_udp.push(data[i][UDP]);
+                                                       data_tcp.push(data[i][TCP]);
+                                                       data_otr.push(data[i][OTHER]);
+                                               }
+
+                                               /* cut off outdated entries */
+                                               data_fill = Math.min(data_fill, data_wanted);
+                                               data_udp = data_udp.slice(data_udp.length - data_wanted, data_udp.length);
+                                               data_tcp = data_tcp.slice(data_tcp.length - data_wanted, data_tcp.length);
+                                               data_otr = data_otr.slice(data_otr.length - data_wanted, data_otr.length);
+
+                                               /* find peak */
+                                               for (var i = 0; i < data_udp.length; i++)
+                                               {
+                                                       data_max = Math.max(data_max, data_udp[i]);
+                                                       data_max = Math.max(data_max, data_tcp[i]);
+                                                       data_max = Math.max(data_max, data_otr[i]);
+
+                                                       data_udp_peak = Math.max(data_udp_peak, data_udp[i]);
+                                                       data_tcp_peak = Math.max(data_tcp_peak, data_tcp[i]);
+                                                       data_otr_peak = Math.max(data_otr_peak, data_otr[i]);
+
+                                                       data_udp_avg += data_udp[i];
+                                                       data_tcp_avg += data_tcp[i];
+                                                       data_otr_avg += data_otr[i];
+                                               }
+
+                                               data_udp_avg = data_udp_avg / data_fill;
+                                               data_tcp_avg = data_tcp_avg / data_fill;
+                                               data_otr_avg = data_otr_avg / data_fill;
+
+                                               /* remember current timestamp, calculate horizontal scale */
+                                               data_stamp = data[data.length-1][TIME];
+                                               data_scale = height / (data_max * 1.1);
+
+
+                                               /* plot data */
+                                               var pt_udp = '0,' + height;
+                                               var pt_tcp = '0,' + height;
+                                               var pt_otr = '0,' + height;
+
+                                               var y_udp = 0;
+                                               var y_tcp = 0;
+                                               var y_otr = 0;
+
+                                               for (var i = 0; i < data_udp.length; i++)
+                                               {
+                                                       var x = i * step;
+
+                                                       y_udp = height - Math.floor(data_udp[i] * data_scale);
+                                                       y_tcp = height - Math.floor(data_tcp[i] * data_scale);
+                                                       y_otr = height - Math.floor(data_otr[i] * data_scale);
+
+                                                       pt_udp += ' ' + x + ',' + y_udp;
+                                                       pt_tcp += ' ' + x + ',' + y_tcp;
+                                                       pt_otr += ' ' + x + ',' + y_otr;
+                                               }
+
+                                               pt_udp += ' ' + width + ',' + y_udp + ' ' + width + ',' + height;
+                                               pt_tcp += ' ' + width + ',' + y_tcp + ' ' + width + ',' + height;
+                                               pt_otr += ' ' + width + ',' + y_otr + ' ' + width + ',' + height;
+
+
+                                               var order = [
+                                                       [ line_udp, data_udp[data_udp.length-1] ],
+                                                       [ line_tcp, data_tcp[data_tcp.length-1] ],
+                                                       [ line_otr, data_otr[data_otr.length-1] ]
+                                               ];
+
+                                               order.sort(function(a, b) { return b[1] - a[1] });
+
+                                               for (var i = 0; i < order.length; i++)
+                                                       order[i][0].parentNode.appendChild(order[i][0]);
+
+
+                                               line_udp.setAttribute('points', pt_udp);
+                                               line_tcp.setAttribute('points', pt_tcp);
+                                               line_otr.setAttribute('points', pt_otr);
+
+                                               label_25.firstChild.data = Math.floor(1.1 * 0.25 * data_max);
+                                               label_50.firstChild.data = Math.floor(1.1 * 0.50 * data_max);
+                                               label_75.firstChild.data = Math.floor(1.1 * 0.75 * data_max);
+
+                                               label_udp_cur.innerHTML = Math.floor(data_udp[data_udp.length-1]);
+                                               label_tcp_cur.innerHTML = Math.floor(data_tcp[data_tcp.length-1]);
+                                               label_otr_cur.innerHTML = Math.floor(data_otr[data_otr.length-1]);
+
+                                               label_udp_avg.innerHTML = Math.floor(data_udp_avg);
+                                               label_tcp_avg.innerHTML = Math.floor(data_tcp_avg);
+                                               label_otr_avg.innerHTML = Math.floor(data_otr_avg);
+
+                                               label_udp_peak.innerHTML = Math.floor(data_udp_peak);
+                                               label_tcp_peak.innerHTML = Math.floor(data_tcp_peak);
+                                               label_otr_peak.innerHTML = Math.floor(data_otr_peak);
+                                       }
+                               );
+
+                               XHR.run();
+                       }
+               }, 1000
+       );
+//]]></script>
+
+<h2 name="content"><%:Realtime Connections%></h2>
+
+<div class="cbi-map-descr"><%:This page gives an overview over currently active network connections.%></div>
+
+<fieldset class="cbi-section" id="cbi-table-table">
+       <legend><%:Active Connections%></legend>
+
+       <embed id="bwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/connections.svg" />
+       <div style="text-align:right"><small id="scale">-</small></div>
+       <br />
+
+       <div class="table">
+               <div class="tr">
+                       <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:UDP:%></strong></div>
+                       <div class="td" id="lb_udp_cur">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+                       <div class="td" id="lb_udp_avg">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+                       <div class="td" id="lb_udp_peak">0</div>
+               </div>
+               <div class="tr">
+                       <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:TCP:%></strong></div>
+                       <div class="td" id="lb_tcp_cur">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+                       <div class="td" id="lb_tcp_avg">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+                       <div class="td" id="lb_tcp_peak">0</div>
+               </div>
+               <div class="tr">
+                       <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Other:%></strong></div>
+                       <div class="td" id="lb_otr_cur">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+                       <div class="td" id="lb_otr_avg">0</div>
+
+                       <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+                       <div class="td" id="lb_otr_peak">0</div>
+               </div>
+       </div>
+       <br />
+
+       <div class="cbi-section-node">
+               <div class="table" id="connections">
+                       <div class="tr table-titles">
+                               <div class="th col-2 hide-xs"><%:Network%></div>
+                               <div class="th col-2"><%:Protocol%></div>
+                               <div class="th col-7"><%:Source%></div>
+                               <div class="th col-7"><%:Destination%></div>
+                               <div class="th col-4"><%:Transfer%></div>
+                       </div>
+
+                       <div class="tr placeholder">
+                               <div class="td">
+                                       <em><%:Collecting data...%></em>
+                               </div>
+                       </div>
+               </div>
+       </div>
+</fieldset>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/dmesg.htm
new file mode 100644 (file)
index 0000000..1a8770e
--- /dev/null
@@ -0,0 +1,12 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:Kernel Log%></h2>
+<div id="content_syslog">
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
+</div>
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index.htm
new file mode 100644 (file)
index 0000000..465226f
--- /dev/null
@@ -0,0 +1,149 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local fs = require "nixio.fs"
+       local ipc = require "luci.ip"
+       local util = require "luci.util"
+       local stat = require "luci.tools.status"
+       local ver = require "luci.version"
+
+       if luci.http.formvalue("status") == "1" then
+
+               local sysinfo = luci.util.ubus("system", "info") or { }
+
+               local meminfo = sysinfo.memory or {
+                       total = 0,
+                       free = 0,
+                       buffered = 0,
+                       shared = 0
+               }
+
+               local swapinfo = sysinfo.swap or {
+                       total = 0,
+                       free = 0
+               }
+
+               local has_dsl = fs.access("/etc/init.d/dsl_control")
+
+               local ntm = require "luci.model.network".init()
+               local wan_nets = ntm:get_wan_networks()
+               local wan6_nets = ntm:get_wan6_networks()
+
+               local conn_count = tonumber(
+                       fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0
+
+               local conn_max = tonumber(luci.sys.exec(
+                       "sysctl -n -e net.nf_conntrack_max net.ipv4.netfilter.ip_conntrack_max"
+               ):match("%d+")) or 4096
+
+               local rv = {
+                       uptime     = sysinfo.uptime or 0,
+                       localtime  = os.date(),
+                       loadavg    = sysinfo.load or { 0, 0, 0 },
+                       memory     = meminfo,
+                       swap       = swapinfo,
+                       connmax    = conn_max,
+                       conncount  = conn_count,
+                       wifinets   = stat.wifi_networks()
+               }
+
+               if #wan_nets > 0 then
+                       local k, v
+
+                       rv.wan = { }
+
+                       for k, v in pairs(wan_nets) do
+                               local dev = v:get_interface()
+                               local link = dev and ipc.link(dev:name())
+
+                               local wan_info = {
+                                       ipaddr  = v:ipaddr(),
+                                       gwaddr  = v:gwaddr(),
+                                       netmask = v:netmask(),
+                                       dns     = v:dnsaddrs(),
+                                       expires = v:expires(),
+                                       uptime  = v:uptime(),
+                                       proto   = v:proto(),
+                                       i18n    = v:get_i18n(),
+                                       ifname  = v:ifname(),
+                                       link    = v:adminlink(),
+                                       mac     = dev and dev:mac(),
+                                       type    = dev and dev:type(),
+                                       name    = dev and dev:get_i18n(),
+                                       ether   = link and link.type == 1
+                               }
+
+                               rv.wan[#rv.wan+1] = wan_info
+                       end
+               end
+
+               if #wan6_nets > 0 then
+                       local k, v
+
+                       rv.wan6 = { }
+
+                       for k, v in pairs(wan6_nets) do
+                               local dev = v:get_interface()
+                               local link = dev and ipc.link(dev:name())
+                               local wan6_info = {
+                                       ip6addr   = v:ip6addr(),
+                                       gw6addr   = v:gw6addr(),
+                                       dns       = v:dns6addrs(),
+                                       ip6prefix = v:ip6prefix(),
+                                       uptime    = v:uptime(),
+                                       proto     = v:proto(),
+                                       i18n      = v:get_i18n(),
+                                       ifname    = v:ifname(),
+                                       link      = v:adminlink(),
+                                       mac       = dev and dev:mac(),
+                                       type      = dev and dev:type(),
+                                       name      = dev and dev:get_i18n(),
+                                       ether     = link and link.type == 1
+                               }
+
+                               rv.wan6[#rv.wan6+1] = wan6_info
+                       end
+               end
+
+               if has_dsl then
+                       local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat")
+                       local dsl_func = loadstring(dsl_stat)
+                       if dsl_func then
+                               rv.dsl = dsl_func()
+                       end
+               end
+
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(rv)
+
+               return
+       end
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Status%></h2>
+
+<%-
+       local incdir = util.libpath() .. "/view/admin_status/index/"
+       if fs.access(incdir) then
+               local _, inc
+               local includes = {}
+               for inc in fs.dir(incdir) do
+                       if inc:match("%.htm$") then
+                               includes[#includes + 1] = inc:gsub("%.htm$", "")
+                       end
+               end
+               for _, inc in luci.util.vspairs(includes) do
+                       include("admin_status/index/" .. inc)
+               end
+       end
+-%>
+
+<script type="text/javascript" src="<%=resource%>/view/status/index.js"></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm
new file mode 100644 (file)
index 0000000..994550e
--- /dev/null
@@ -0,0 +1,29 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local boardinfo = luci.util.ubus("system", "board") or { }
+       local unameinfo = nixio.uname() or { }
+       local ver = require "luci.version"
+%>
+
+<div class="cbi-section">
+       <h3><%:System%></h3>
+
+       <div class="table" width="100%">
+               <div class="tr"><div class="td left" width="33%"><%:Hostname%></div><div class="td left"><%=luci.sys.hostname() or "?"%></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Model%></div><div class="td left"><%=pcdata(boardinfo.model or "?")%></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Architecture%></div><div class="td left"><%=pcdata(boardinfo.system or "?")%></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Firmware Version%></div><div class="td left">
+                       <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> /
+                       <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>)
+               </div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Kernel Version%></div><div class="td left"><%=unameinfo.release or "?"%></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Local Time%></div><div class="td left" id="localtime">-</div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Uptime%></div><div class="td left" id="uptime">-</div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Load Average%></div><div class="td left" id="loadavg">-</div></div>
+       </div>
+</div>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm
new file mode 100644 (file)
index 0000000..1377470
--- /dev/null
@@ -0,0 +1,31 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local sysinfo = luci.util.ubus("system", "info") or { }
+       local has_swap = sysinfo.swap and sysinfo.swap.total > 0 or false
+%>
+
+<div class="cbi-section">
+       <h3><%:Memory%></h3>
+
+       <div class="table" width="100%">
+               <div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left"><div id="memtotal" class="cbi-progressbar" title="-"><div></div></div></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left"><div id="memfree" class="cbi-progressbar" title="-"><div></div></div></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Buffered%></div><div class="td left"><div id="membuff" class="cbi-progressbar" title="-"><div></div></div></div></div>
+       </div>
+</div>
+
+<% if has_swap then %>
+<div class="cbi-section">
+       <h3><%:Swap%></h3>
+
+       <div class="table" width="100%">
+               <div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left"><div id="swaptotal" class="cbi-progressbar" title="-"><div></div></div></div></div>
+               <div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left"><div id="swapfree" class="cbi-progressbar" title="-"><div></div></div></div></div>
+       </div>
+</div>
+<% end %>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm
new file mode 100644 (file)
index 0000000..945a31b
--- /dev/null
@@ -0,0 +1,17 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<div class="cbi-section">
+       <h3><%:Network%></h3>
+
+       <div id="upstream_status_table" class="network-status-table">
+               <p><em><%:Collecting data...%></em></p>
+       </div>
+
+       <div class="table" width="100%">
+               <div class="tr"><div class="td left" width="33%"><%:Active Connections%></div><div class="td left"><div id="conns" class="cbi-progressbar" title="-"><div></div></div></div></div>
+       </div>
+</div>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/40-dhcp-leases.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/40-dhcp-leases.htm
new file mode 100644 (file)
index 0000000..aaf3661
--- /dev/null
@@ -0,0 +1,14 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local fs = require "nixio.fs"
+       local has_dhcp = fs.access("/etc/config/dhcp")
+
+       if has_dhcp then
+               include("lease_status")
+       end
+%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/50-dsl.htm
new file mode 100644 (file)
index 0000000..f37bf14
--- /dev/null
@@ -0,0 +1,20 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local fs = require "nixio.fs"
+       local has_dsl = fs.access("/etc/init.d/dsl_control")
+%>
+
+<% if has_dsl then %>
+<div class="cbi-section">
+       <h3><%:DSL%></h3>
+
+       <div id="dsl_status_table" class="network-status-table">
+               <p><em><%:Collecting data...%></em></p>
+       </div>
+</div>
+<% end %>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/index/60-wifi.htm
new file mode 100644 (file)
index 0000000..7338bc7
--- /dev/null
@@ -0,0 +1,26 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local fs = require "nixio.fs"
+       local has_wifi = ((fs.stat("/etc/config/wireless", "size") or 0) > 0)
+%>
+
+<% if has_wifi then %>
+<div class="cbi-section">
+       <h3><%:Wireless%></h3>
+
+       <div id="wifi_status_table" class="network-status-table">
+               <p><em><%:Collecting data...%></em></p>
+       </div>
+</div>
+
+<div class="cbi-section">
+       <h3><%:Associated Stations%></h3>
+
+       <%+wifi_assoclist%>
+</div>
+<% end %>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/iptables.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/iptables.htm
new file mode 100644 (file)
index 0000000..89f229f
--- /dev/null
@@ -0,0 +1,73 @@
+<%#
+ Copyright 2008-2009 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%-
+       local fs = require "nixio.fs"
+       local has_ip6tables = fs.access("/usr/sbin/ip6tables")
+       local mode = 4
+
+       if has_ip6tables then
+               mode = luci.dispatcher.context.requestpath
+           mode = tonumber(mode[#mode] ~= "iptables" and mode[#mode]) or 4
+       end
+-%>
+
+<%+header%>
+
+<style type="text/css">
+       span.jump, .cbi-tooltip-container {
+               border-bottom: 1px dotted blue;
+               cursor: pointer;
+       }
+
+       ul {
+               list-style: none;
+       }
+
+       .references {
+               position: relative;
+       }
+
+       .references .cbi-tooltip {
+               left: 0 !important;
+               top: 1.5em !important;
+       }
+
+       h4 > span {
+               font-size: 90%;
+       }
+</style>
+
+<h2 name="content"><%:Firewall Status%></h2>
+
+<% if has_ip6tables then %>
+<ul class="cbi-tabmenu">
+       <li data-mode="4" class="cbi-tab<%= mode ~= 4 and "-disabled" %>">
+               <a href="<%=url("admin/status/iptables/4")%>"><%:IPv4 Firewall%></a>
+       </li>
+       <li data-mode="6" class="cbi-tab<%= mode ~= 6 and "-disabled" %>">
+               <a href="<%=url("admin/status/iptables/6")%>"><%:IPv6 Firewall%></a>
+       </li>
+</ul>
+<% end %>
+
+<div style="position: relative">
+       <form method="post" action="<%=url("admin/status/iptables_action")%>" style="position: absolute; right: 0">
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="family" value="<%=mode%>" />
+               <input type="button" class="cbi-button" data-hide-empty="false" value="<%:Hide empty chains%>" onclick="hide_empty(this)" />
+               <input type="submit" class="cbi-button" name="zero" value="<%:Reset Counters%>" />
+               <input type="submit" class="cbi-button" name="restart" value="<%:Restart Firewall%>" />
+       </form>
+</div>
+
+<div id="iptables">
+       <p><em class="spinning"><%:Collecting data...%></em></p>
+</div>
+
+<script type="text/javascript" src="<%=resource%>/view/status/iptables.js"></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/load.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/load.htm
new file mode 100644 (file)
index 0000000..d31d340
--- /dev/null
@@ -0,0 +1,283 @@
+<%#
+ Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+       var bwxhr = new XHR();
+
+       var G;
+       var TIME = 0;
+       var L01   = 1;
+       var L05   = 2;
+       var L15  = 3;
+
+       var width  = 760;
+       var height = 300;
+       var step   = 5;
+
+       var data_wanted = Math.floor(width / step);
+       var data_fill   = 1;
+       var data_stamp  = 0;
+
+       var data_01  = [ ];
+       var data_05  = [ ];
+       var data_15 = [ ];
+
+       var line_01;
+       var line_05;
+       var line_15;
+
+       var label_25;
+       var label_050;
+       var label_75;
+
+       var label_01_cur;
+       var label_01_avg;
+       var label_01_peak;
+
+       var label_05_cur;
+       var label_05_avg;
+       var label_05_peak;
+
+       var label_15_cur;
+       var label_15_avg;
+       var label_15_peak;
+
+       var label_scale;
+
+
+       /* wait for SVG */
+       window.setTimeout(
+               function() {
+                       var svg = document.getElementById('bwsvg');
+
+                       try {
+                               G = svg.getSVGDocument
+                                       ? svg.getSVGDocument() : svg.contentDocument;
+                       }
+                       catch(e) {
+                               G = document.embeds['bwsvg'].getSVGDocument();
+                       }
+
+                       if (!G)
+                       {
+                               window.setTimeout(arguments.callee, 1000);
+                       }
+                       else
+                       {
+                               /* find sizes */
+                               width       = svg.offsetWidth  - 2;
+                               height      = svg.offsetHeight - 2;
+                               data_wanted = Math.ceil(width / step);
+
+                               /* prefill datasets */
+                               for (var i = 0; i < data_wanted; i++)
+                               {
+                                       data_01[i] = 0;
+                                       data_05[i] = 0;
+                                       data_15[i] = 0;
+                               }
+
+                               /* find svg elements */
+                               line_01 = G.getElementById('load01');
+                               line_05 = G.getElementById('load05');
+                               line_15 = G.getElementById('load15');
+
+                               label_25 = G.getElementById('label_25');
+                               label_50 = G.getElementById('label_50');
+                               label_75 = G.getElementById('label_75');
+
+                               label_01_cur  = document.getElementById('lb_load01_cur');
+                               label_01_avg  = document.getElementById('lb_load01_avg');
+                               label_01_peak = document.getElementById('lb_load01_peak');
+
+                               label_05_cur  = document.getElementById('lb_load05_cur');
+                               label_05_avg  = document.getElementById('lb_load05_avg');
+                               label_05_peak = document.getElementById('lb_load05_peak');
+
+                               label_15_cur  = document.getElementById('lb_load15_cur');
+                               label_15_avg  = document.getElementById('lb_load15_avg');
+                               label_15_peak = document.getElementById('lb_load15_peak');
+
+                               label_scale   = document.getElementById('scale');
+
+
+                               /* plot horizontal time interval lines */
+                               for (var i = width % (step * 60); i < width; i += step * 60)
+                               {
+                                       var line = G.createElementNS('http://www.w3.org/2000/svg', 'line');
+                                               line.setAttribute('x1', i);
+                                               line.setAttribute('y1', 0);
+                                               line.setAttribute('x2', i);
+                                               line.setAttribute('y2', '100%');
+                                               line.setAttribute('style', 'stroke:black;stroke-width:0.1');
+
+                                       var text = G.createElementNS('http://www.w3.org/2000/svg', 'text');
+                                               text.setAttribute('x', i + 5);
+                                               text.setAttribute('y', 15);
+                                               text.setAttribute('style', 'fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000');
+                                               text.appendChild(G.createTextNode(Math.round((width - i) / step / 60) + 'm'));
+
+                                       label_25.parentNode.appendChild(line);
+                                       label_25.parentNode.appendChild(text);
+                               }
+
+                               label_scale.innerHTML = String.format('<%:(%d minute window, %d second interval)%>', data_wanted / 60, 3);
+
+                               /* render datasets, start update interval */
+                               XHR.poll(3, '<%=build_url("admin/status/realtime/load_status")%>', null,
+                                       function(x, data)
+                                       {
+                                               var data_max   = 0;
+                                               var data_scale = 0;
+
+                                               var data_01_avg = 0;
+                                               var data_05_avg = 0;
+                                               var data_15_avg = 0;
+
+                                               var data_01_peak = 0;
+                                               var data_05_peak = 0;
+                                               var data_15_peak = 0;
+
+                                               for (var i = data_stamp ? 0 : 1; i < data.length; i++)
+                                               {
+                                                       /* skip overlapping entries */
+                                                       if (data[i][TIME] <= data_stamp)
+                                                               continue;
+
+                                                       data_fill++;
+
+                                                       data_01.push(data[i][L01]);
+                                                       data_05.push(data[i][L05]);
+                                                       data_15.push(data[i][L15]);
+                                               }
+
+                                               /* cut off outdated entries */
+                                               data_fill = Math.min(data_fill, data_wanted);
+                                               data_01 = data_01.slice(data_01.length - data_wanted, data_01.length);
+                                               data_05 = data_05.slice(data_05.length - data_wanted, data_05.length);
+                                               data_15 = data_15.slice(data_15.length - data_wanted, data_15.length);
+
+                                               /* find peak */
+                                               for (var i = 0; i < data_01.length; i++)
+                                               {
+                                                       data_max = Math.max(data_max, data_01[i]);
+                                                       data_max = Math.max(data_max, data_05[i]);
+                                                       data_max = Math.max(data_max, data_15[i]);
+
+                                                       data_01_peak = Math.max(data_01_peak, data_01[i]);
+                                                       data_05_peak = Math.max(data_05_peak, data_05[i]);
+                                                       data_15_peak = Math.max(data_15_peak, data_15[i]);
+
+                                                       data_01_avg += data_01[i];
+                                                       data_05_avg += data_05[i];
+                                                       data_15_avg += data_15[i];
+                                               }
+
+                                               data_01_avg = data_01_avg / data_fill;
+                                               data_05_avg = data_05_avg / data_fill;
+                                               data_15_avg = data_15_avg / data_fill;
+
+                                               /* remember current timestamp, calculate horizontal scale */
+                                               data_stamp = data[data.length-1][TIME];
+                                               data_scale = height / (data_max * 1.1);
+
+
+                                               /* plot data */
+                                               var pt_01 = '0,' + height;
+                                               var pt_05 = '0,' + height;
+                                               var pt_15 = '0,' + height;
+
+                                               var y_01 = 0;
+                                               var y_05 = 0;
+                                               var y_15 = 0;
+
+                                               for (var i = 0; i < data_01.length; i++)
+                                               {
+                                                       var x = i * step;
+
+                                                       y_01 = height - Math.floor(data_01[i] * data_scale);
+                                                       y_05 = height - Math.floor(data_05[i] * data_scale);
+                                                       y_15 = height - Math.floor(data_15[i] * data_scale);
+
+                                                       pt_01 += ' ' + x + ',' + y_01;
+                                                       pt_05 += ' ' + x + ',' + y_05;
+                                                       pt_15 += ' ' + x + ',' + y_15;
+                                               }
+
+                                               pt_01 += ' ' + width + ',' + y_01 + ' ' + width + ',' + height;
+                                               pt_05 += ' ' + width + ',' + y_05 + ' ' + width + ',' + height;
+                                               pt_15 += ' ' + width + ',' + y_15 + ' ' + width + ',' + height;
+
+
+                                               line_01.setAttribute('points', pt_01);
+                                               line_05.setAttribute('points', pt_05);
+                                               line_15.setAttribute('points', pt_15);
+
+                                               label_25.firstChild.data = (1.1 * 0.25 * data_max / 100).toFixed(2);
+                                               label_50.firstChild.data = (1.1 * 0.50 * data_max / 100).toFixed(2);
+                                               label_75.firstChild.data = (1.1 * 0.75 * data_max / 100).toFixed(2);
+
+                                               label_01_cur.innerHTML = (data_01[data_01.length-1] / 100).toFixed(2);
+                                               label_05_cur.innerHTML = (data_05[data_05.length-1] / 100).toFixed(2);
+                                               label_15_cur.innerHTML = (data_15[data_15.length-1] / 100).toFixed(2);
+
+                                               label_01_avg.innerHTML = (data_01_avg / 100).toFixed(2);
+                                               label_05_avg.innerHTML = (data_05_avg / 100).toFixed(2);
+                                               label_15_avg.innerHTML = (data_15_avg / 100).toFixed(2);
+
+                                               label_01_peak.innerHTML = (data_01_peak / 100).toFixed(2);
+                                               label_05_peak.innerHTML = (data_05_peak / 100).toFixed(2);
+                                               label_15_peak.innerHTML = (data_15_peak / 100).toFixed(2);
+                                       }
+                               );
+
+                               XHR.run();
+                       }
+               }, 1000
+       );
+//]]></script>
+
+<h2 name="content"><%:Realtime Load%></h2>
+
+<embed id="bwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/load.svg" />
+<div style="text-align:right"><small id="scale">-</small></div>
+<br />
+
+<div class="table" style="width:100%; table-layout:fixed" cellspacing="5">
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff0000; white-space:nowrap"><%:1 Minute Load:%></strong></div>
+               <div class="td" id="lb_load01_cur">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="lb_load01_avg">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="lb_load01_peak">0</div>
+       </div>
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff6600; white-space:nowrap"><%:5 Minute Load:%></strong></div>
+               <div class="td" id="lb_load05_cur">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="lb_load05_avg">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="lb_load05_peak">0</div>
+       </div>
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ffaa00; white-space:nowrap"><%:15 Minute Load:%></strong></div>
+               <div class="td" id="lb_load15_cur">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="lb_load15_avg">0</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="lb_load15_peak">0</div>
+       </div>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/routes.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/routes.htm
new file mode 100644 (file)
index 0000000..74779f6
--- /dev/null
@@ -0,0 +1,156 @@
+<%#
+ Copyright 2008-2009 Steven Barth <steven@midlink.org>
+ Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%-
+       require "luci.tools.webadmin"
+       require "nixio.fs"
+
+       local ip = require "luci.ip"
+       local style = true
+       local _, v
+
+       local rtn = {
+               [255] = "local",
+               [254] = "main",
+               [253] = "default",
+               [0]   = "unspec"
+       }
+
+       if nixio.fs.access("/etc/iproute2/rt_tables") then
+               local ln
+               for ln in io.lines("/etc/iproute2/rt_tables") do
+                       local i, n = ln:match("^(%d+)%s+(%S+)")
+                       if i and n then
+                               rtn[tonumber(i)] = n
+                       end
+               end
+       end
+-%>
+
+<%+header%>
+
+
+<div class="cbi-map" id="cbi-network">
+       <h2 name="content"><%:Routes%></h2>
+       <div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>
+
+       <div class="cbi-section">
+               <legend>ARP</legend>
+               <div class="cbi-section-node">
+                       <div class="table">
+                               <div class="tr table-titles">
+                                       <div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div>
+                                       <div class="th"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div>
+                                       <div class="th"><%:Interface%></div>
+                               </div>
+
+                               <%
+                                       for _, v in ipairs(ip.neighbors({ family = 4 })) do
+                                               if v.mac then
+                               %>
+                               <div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
+                                       <div class="td"><%=v.dest%></div>
+                                       <div class="td"><%=v.mac%></div>
+                                       <div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
+                               </div>
+                               <%
+                                                       style = not style
+                                               end
+                                       end
+                               %>
+                       </div>
+               </div>
+       </div>
+
+       <div class="cbi-section">
+               <legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend>
+               <div class="cbi-section-node">
+                       <div class="table">
+                               <div class="tr table-titles">
+                                       <div class="th"><%:Network%></div>
+                                       <div class="th"><%:Target%></div>
+                                       <div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div>
+                                       <div class="th"><%:Metric%></div>
+                                       <div class="th"><%:Table%></div>
+                               </div>
+                               <% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %>
+                               <div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
+                                       <div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div>
+                                       <div class="td"><%=v.dest%></div>
+                                       <div class="td"><%=v.gw or "-"%></div>
+                                       <div class="td"><%=v.metric or 0%></div>
+                                       <div class="td"><%=rtn[v.table] or v.table%></div>
+                               </div>
+                               <% style = not style end %>
+                       </div>
+               </div>
+       </div>
+
+       <%
+               if nixio.fs.access("/proc/net/ipv6_route") then
+                       style = true
+       %>
+       <div class="cbi-section">
+               <legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend>
+               <div class="cbi-section-node">
+                       <div class="table">
+                               <div class="tr table-titles">
+                                       <div class="th"><%:Network%></div>
+                                       <div class="th"><%:Target%></div>
+                                       <div class="th"><%:Source%></div>
+                                       <div class="th"><%:Metric%></div>
+                                       <div class="th"><%:Table%></div>
+                               </div>
+                               <%
+                                       for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do
+                                               if v.dest and not v.dest:is6linklocal() then
+                               %>
+                               <div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
+                                       <div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
+                                       <div class="td"><%=v.dest%></div>
+                                       <div class="td"><%=v.from%></div>
+                                       <div class="td"><%=v.metric or 0%></div>
+                                       <div class="td"><%=rtn[v.table] or v.table%></div>
+                               </div>
+                               <%
+                                                       style = not style
+                                               end
+                                       end
+                               %>
+                       </div>
+               </div>
+       </div>
+
+       <div class="cbi-section">
+               <legend><%:IPv6 Neighbours%></legend>
+               <div class="cbi-section-node">
+                       <div class="table">
+                               <div class="tr table-titles">
+                                       <div class="th"><%:IPv6-Address%></div>
+                                       <div class="th"><%:MAC-Address%></div>
+                                       <div class="th"><%:Interface%></div>
+                               </div>
+                               <%
+                                       for _, v in ipairs(ip.neighbors({ family = 6 })) do
+                                               if v.dest and not v.dest:is6linklocal() and v.mac then
+                               %>
+                               <div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
+                                       <div class="td"><%=v.dest%></div>
+                                       <div class="td"><%=v.mac%></div>
+                                       <div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
+                               </div>
+                               <%
+                                                       style = not style
+                                               end
+                                       end
+                               %>
+                       </div>
+               </div>
+       </div>
+       <% end %>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/syslog.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/syslog.htm
new file mode 100644 (file)
index 0000000..fb734a7
--- /dev/null
@@ -0,0 +1,12 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+<h2 name="content"><%:System Log%></h2>
+<div id="content_syslog">
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
+</div>
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/luasrc/view/admin_status/wireless.htm b/package/luci/modules/luci-mod-status/luasrc/view/admin_status/wireless.htm
new file mode 100644 (file)
index 0000000..5ac2eb4
--- /dev/null
@@ -0,0 +1,370 @@
+<%#
+ Copyright 2011-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%-
+       local ntm = require "luci.model.network".init()
+
+       local dev
+       local devices = { }
+       for _, dev in luci.util.vspairs(luci.sys.net.devices()) do
+               if dev:match("^wlan%d") or dev:match("^ath%d") or dev:match("^wl%d") then
+                       devices[#devices+1] = dev
+               end
+       end
+
+       local curdev = luci.http.formvalue("dev") or devices[1]
+-%>
+
+<%+header%>
+
+<script type="text/javascript">//<![CDATA[
+       var bwxhr = new XHR();
+
+       var G, G2;
+       var TIME  = 0;
+       var RATE  = 1;
+       var RSSI  = 2;
+       var NOISE = 3;
+
+       var width  = 760;
+       var height = 300;
+       var step   = 5;
+
+       var data_wanted = Math.floor(width / step);
+       var data_fill   = 1;
+       var data_stamp  = 0;
+
+       var data_rssi = [ ];
+       var data_noise = [ ];
+       var data_rate = [ ];
+
+       var line_rssi;
+       var line_noise;
+       var line_rate;
+
+       var label_25, label_25_2;
+       var label_50, label_50_2;
+       var label_75, label_75_2;
+
+       var label_rssi_cur;
+       var label_rssi_avg;
+       var label_rssi_peak;
+
+       var label_noise_cur;
+       var label_noise_avg;
+       var label_noise_peak;
+
+       var label_rate_cur;
+       var label_rate_avg;
+       var label_rate_peak;
+
+       var label_scale;
+       var label_scale_2;
+
+
+       /* wait for SVG */
+       window.setTimeout(
+               function() {
+                       var svg = document.getElementById('iwsvg');
+                       var svg2 = document.getElementById('iwsvg2');
+
+                       try {
+                               G = svg.getSVGDocument
+                                       ? svg.getSVGDocument() : svg.contentDocument;
+                               G2 = svg2.getSVGDocument
+                                       ? svg2.getSVGDocument() : svg2.contentDocument;
+                       }
+                       catch(e) {
+                               G = document.embeds['iwsvg'].getSVGDocument();
+                               G2 = document.embeds['iwsvg2'].getSVGDocument();
+                       }
+
+                       if (!G || !G2)
+                       {
+                               window.setTimeout(arguments.callee, 1000);
+                       }
+                       else
+                       {
+                               /* find sizes */
+                               width       = svg.offsetWidth  - 2;
+                               height      = svg.offsetHeight - 2;
+                               data_wanted = Math.ceil(width / step);
+
+                               /* prefill datasets */
+                               for (var i = 0; i < data_wanted; i++)
+                               {
+                                       data_rssi[i] = 0;
+                                       data_noise[i] = 0;
+                                       data_rate[i] = 0;
+                               }
+
+                               /* find svg elements */
+                               line_rssi = G.getElementById('rssi');
+                               line_noise = G.getElementById('noise');
+                               line_rate = G2.getElementById('rate');
+
+                               label_25 = G.getElementById('label_25');
+                               label_50 = G.getElementById('label_50');
+                               label_75 = G.getElementById('label_75');
+                               label_25_2 = G2.getElementById('label_25');
+                               label_50_2 = G2.getElementById('label_50');
+                               label_75_2 = G2.getElementById('label_75');
+
+                               label_rssi_cur  = document.getElementById('rssi_bw_cur');
+                               label_rssi_avg  = document.getElementById('rssi_bw_avg');
+                               label_rssi_peak = document.getElementById('rssi_bw_peak');
+
+                               label_noise_cur  = document.getElementById('noise_bw_cur');
+                               label_noise_avg  = document.getElementById('noise_bw_avg');
+                               label_noise_peak = document.getElementById('noise_bw_peak');
+
+                               label_rate_cur  = document.getElementById('rate_bw_cur');
+                               label_rate_avg  = document.getElementById('rate_bw_avg');
+                               label_rate_peak = document.getElementById('rate_bw_peak');
+
+                               label_scale   = document.getElementById('scale');
+                               label_scale_2 = document.getElementById('scale2');
+
+
+                               /* plot horizontal time interval lines */
+                               for (var i = width % (step * 60); i < width; i += step * 60)
+                               {
+                                       var line = G.createElementNS('http://www.w3.org/2000/svg', 'line');
+                                               line.setAttribute('x1', i);
+                                               line.setAttribute('y1', 0);
+                                               line.setAttribute('x2', i);
+                                               line.setAttribute('y2', '100%');
+                                               line.setAttribute('style', 'stroke:black;stroke-width:0.1');
+
+                                       var text = G.createElementNS('http://www.w3.org/2000/svg', 'text');
+                                               text.setAttribute('x', i + 5);
+                                               text.setAttribute('y', 15);
+                                               text.setAttribute('style', 'fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000');
+                                               text.appendChild(G.createTextNode(Math.round((width - i) / step / 60) + 'm'));
+
+                                       label_25.parentNode.appendChild(line);
+                                       label_25.parentNode.appendChild(text);
+
+
+                                       var line2 = G2.createElementNS('http://www.w3.org/2000/svg', 'line');
+                                               line2.setAttribute('x1', i);
+                                               line2.setAttribute('y1', 0);
+                                               line2.setAttribute('x2', i);
+                                               line2.setAttribute('y2', '100%');
+                                               line2.setAttribute('style', 'stroke:black;stroke-width:0.1');
+
+                                       var text2 = G2.createElementNS('http://www.w3.org/2000/svg', 'text');
+                                               text2.setAttribute('x', i + 5);
+                                               text2.setAttribute('y', 15);
+                                               text2.setAttribute('style', 'fill:#eee; font-size:9pt; font-family:sans-serif; text-shadow:1px 1px 1px #000');
+                                               text2.appendChild(G.createTextNode(Math.round((width - i) / step / 60) + 'm'));
+
+                                       label_25_2.parentNode.appendChild(line2);
+                                       label_25_2.parentNode.appendChild(text2);
+                               }
+
+                               label_scale.innerHTML = String.format('<%:(%d minute window, %d second interval)%>', data_wanted / 60, 3);
+                               label_scale_2.innerHTML = String.format('<%:(%d minute window, %d second interval)%>', data_wanted / 60, 3);
+
+                               /* render datasets, start update interval */
+                               XHR.poll(3, '<%=build_url("admin/status/realtime/wireless_status", curdev)%>', null,
+                                       function(x, data)
+                                       {
+                                               var noise_floor = 255;
+                                               var rate_floor = 60000;
+
+                                               for (var i = 0; i < data.length; i++) {
+                                                       noise_floor = Math.min(noise_floor, data[i][NOISE]);
+                                                       rate_floor = Math.min(rate_floor, data[i][RATE]);
+                                               }
+
+                                               noise_floor -= 5;
+
+                                               var data_max   = 0;
+                                               var data_scale = 0;
+                                               var data_max_2   = 0;
+                                               var data_scale_2 = 0;
+
+                                               var data_rssi_avg = 0;
+                                               var data_noise_avg = 0;
+                                               var data_rate_avg = 0;
+
+                                               var data_rssi_peak = 0;
+                                               var data_noise_peak = 0;
+                                               var data_rate_peak = 0;
+
+                                               for (var i = data_stamp ? 0 : 1; i < data.length; i++)
+                                               {
+                                                       /* skip overlapping entries */
+                                                       if (data[i][TIME] <= data_stamp)
+                                                               continue;
+
+                                                       data_fill++;
+
+                                                       data_rssi.push(data[i][RSSI] - noise_floor);
+                                                       data_noise.push(data[i][NOISE] - noise_floor);
+                                                       data_rate.push(Math.floor(data[i][RATE] / 1000));
+                                               }
+
+                                               /* cut off outdated entries */
+                                               data_fill = Math.min(data_fill, data_wanted);
+                                               data_rssi = data_rssi.slice(data_rssi.length - data_wanted, data_rssi.length);
+                                               data_noise = data_noise.slice(data_noise.length - data_wanted, data_noise.length);
+                                               data_rate = data_rate.slice(data_rate.length - data_wanted, data_rate.length);
+
+                                               /* find peak */
+                                               for (var i = 0; i < data_rssi.length; i++)
+                                               {
+                                                       data_max = Math.max(data_max, data_rssi[i]);
+                                                       data_max_2 = Math.max(data_max_2, data_rate[i]);
+
+                                                       data_rssi_peak = Math.max(data_rssi_peak, data_rssi[i]);
+                                                       data_noise_peak = Math.max(data_noise_peak, data_noise[i]);
+                                                       data_rate_peak = Math.max(data_rate_peak, data_rate[i]);
+
+                                                       data_rssi_avg += data_rssi[i];
+                                                       data_noise_avg += data_noise[i];
+                                                       data_rate_avg += data_rate[i];
+                                               }
+
+                                               data_rssi_avg = data_rssi_avg / data_fill;
+                                               data_noise_avg = data_noise_avg / data_fill;
+                                               data_rate_avg = data_rate_avg / data_fill;
+
+                                               /* remember current timestamp, calculate horizontal scale */
+                                               data_stamp = data[data.length-1][TIME];
+                                               data_scale = (height / (data_max * 1.1)).toFixed(1);
+                                               data_scale_2 = (height / (data_max_2 * 1.1)).toFixed(1);
+
+                                               /* plot data */
+                                               var pt_rssi = '0,' + height;
+                                               var pt_noise = '0,' + height;
+                                               var pt_rate = '0,' + height;
+
+                                               var y_rssi = 0;
+                                               var y_noise = 0;
+                                               var y_rate = 0;
+
+                                               for (var i = 0; i < data_rssi.length; i++)
+                                               {
+                                                       var x = i * step;
+
+                                                       y_rssi = height - Math.floor(data_rssi[i] * data_scale);
+                                                       y_noise = height - Math.floor(data_noise[i] * data_scale);
+                                                       y_rate = height - Math.floor(data_rate[i] * data_scale_2);
+
+                                                       y_rssi -= Math.floor(y_rssi % (1/data_scale));
+                                                       y_noise -= Math.floor(y_noise % (1/data_scale));
+
+                                                       pt_rssi += ' ' + x + ',' + y_rssi;
+                                                       pt_noise += ' ' + x + ',' + y_noise;
+                                                       pt_rate += ' ' + x + ',' + y_rate;
+                                               }
+
+                                               pt_rssi += ' ' + width + ',' + y_rssi + ' ' + width + ',' + height;
+                                               pt_noise += ' ' + width + ',' + y_noise + ' ' + width + ',' + height;
+                                               pt_rate += ' ' + width + ',' + y_rate + ' ' + width + ',' + height;
+
+                                               line_rssi.setAttribute('points', pt_rssi);
+                                               line_noise.setAttribute('points', pt_noise);
+                                               line_rate.setAttribute('points', pt_rate);
+
+                                               function wireless_label(dbm, noise)
+                                               {
+                                                       if (noise)
+                                                               return String.format("%d <%:dBm%> (SNR %d <%:dB%>)", noise_floor + dbm - 255, dbm - noise);
+                                                       else
+                                                               return String.format("%d <%:dBm%>", noise_floor + dbm - 255);
+                                               }
+
+                                               function rate_label(mbit)
+                                               {
+                                                       return String.format("%d <%:Mbit/s%>", mbit);
+                                               }
+
+                                               label_25.firstChild.data = wireless_label(1.1 * 0.25 * data_max);
+                                               label_50.firstChild.data = wireless_label(1.1 * 0.50 * data_max);
+                                               label_75.firstChild.data = wireless_label(1.1 * 0.75 * data_max);
+
+                                               label_25_2.firstChild.data = rate_label(1.1 * 0.25 * data_max_2);
+                                               label_50_2.firstChild.data = rate_label(1.1 * 0.50 * data_max_2);
+                                               label_75_2.firstChild.data = rate_label(1.1 * 0.75 * data_max_2);
+
+                                               label_rssi_cur.innerHTML = wireless_label(data_rssi[data_rssi.length-1], data_noise[data_noise.length-1]).nobr();
+                                               label_noise_cur.innerHTML = wireless_label(data_noise[data_noise.length-1]).nobr();
+
+                                               label_rssi_avg.innerHTML = wireless_label(data_rssi_avg, data_noise_avg).nobr();
+                                               label_noise_avg.innerHTML = wireless_label(data_noise_avg).nobr();
+
+                                               label_rssi_peak.innerHTML = wireless_label(data_rssi_peak, data_noise_peak).nobr();
+                                               label_noise_peak.innerHTML = wireless_label(data_noise_peak).nobr();
+
+                                               label_rate_cur.innerHTML = rate_label(data_rate[data_rate.length-1]);
+                                               label_rate_avg.innerHTML = rate_label(data_rate_avg);
+                                               label_rate_peak.innerHTML = rate_label(data_rate_peak);
+                                       }
+                               );
+
+                               XHR.run();
+                       }
+               }, 1000
+       );
+//]]></script>
+
+<h2 name="content"><%:Realtime Wireless%></h2>
+
+<ul class="cbi-tabmenu">
+       <% for _, dev in ipairs(devices) do %>
+               <li class="cbi-tab<%= dev == curdev and "" or "-disabled" %>"><a href="?dev=<%=pcdata(dev)%>"><%=pcdata(dev)%></a></li>
+       <% end %>
+</ul>
+
+<embed id="iwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/wireless.svg" />
+<div style="text-align:right"><small id="scale">-</small></div>
+<br />
+
+<div class="table" style="width:100%; table-layout:fixed" cellspacing="5">
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Signal:%></strong></div>
+               <div class="td" id="rssi_bw_cur">0 <%:dBm%></div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="rssi_bw_avg">0 <%:dBm%></div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="rssi_bw_peak">0 <%:dBm%></div>
+       </div>
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Noise:%></strong></div>
+               <div class="td" id="noise_bw_cur">0 <%:dBm%></div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="noise_bw_avg">0 <%:dBm%></div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="noise_bw_peak">0 <%:dBm%></div>
+       </div>
+</div>
+
+<br />
+
+<embed id="iwsvg2" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/wifirate.svg" />
+<div style="text-align:right"><small id="scale2">-</small></div>
+<br />
+
+<div class="table" style="width:100%; table-layout:fixed" cellspacing="5">
+       <div class="tr">
+               <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Phy Rate:%></strong></div>
+               <div class="td" id="rate_bw_cur">0 MBit/s</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div>
+               <div class="td" id="rate_bw_avg">0 MBit/s</div>
+
+               <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div>
+               <div class="td" id="rate_bw_peak">0 MBit/s</div>
+       </div>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-status/src/Makefile b/package/luci/modules/luci-mod-status/src/Makefile
new file mode 100644 (file)
index 0000000..d6ed8c6
--- /dev/null
@@ -0,0 +1,14 @@
+%.o: %.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
+
+clean:
+       rm -f luci-bwc *.o
+
+luci-bwc: luci-bwc.o
+       $(CC) $(LDFLAGS) -o $@ $^ -ldl
+
+compile: luci-bwc
+
+install: compile
+       mkdir -p $(DESTDIR)/usr/bin
+       cp luci-bwc $(DESTDIR)/usr/bin/luci-bwc
diff --git a/package/luci/modules/luci-mod-status/src/luci-bwc.c b/package/luci/modules/luci-mod-status/src/luci-bwc.c
new file mode 100644 (file)
index 0000000..8ddd917
--- /dev/null
@@ -0,0 +1,778 @@
+/*
+ * luci-bwc - Very simple bandwidth collector cache for LuCI realtime graphs
+ *
+ *   Copyright (C) 2010 Jo-Philipp Wich <jow@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
+ *
+ * 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.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <fcntl.h>
+#include <time.h>
+#include <errno.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <arpa/inet.h>
+
+#include <dlfcn.h>
+#include <iwinfo.h>
+
+#define STEP_COUNT     60
+#define STEP_TIME      1
+#define TIMEOUT                10
+
+#define PID_PATH       "/var/run/luci-bwc.pid"
+
+#define DB_PATH                "/var/lib/luci-bwc"
+#define DB_IF_FILE     DB_PATH "/if/%s"
+#define DB_RD_FILE     DB_PATH "/radio/%s"
+#define DB_CN_FILE     DB_PATH "/connections"
+#define DB_LD_FILE     DB_PATH "/load"
+
+#define IF_SCAN_PATTERN \
+       " %[^ :]:%u %u" \
+       " %*d %*d %*d %*d %*d %*d" \
+       " %u %u"
+
+#define LD_SCAN_PATTERN \
+       "%f %f %f"
+
+
+struct file_map {
+       int fd;
+       int size;
+       char *mmap;
+};
+
+struct traffic_entry {
+       uint32_t time;
+       uint32_t rxb;
+       uint32_t rxp;
+       uint32_t txb;
+       uint32_t txp;
+};
+
+struct conn_entry {
+       uint32_t time;
+       uint32_t udp;
+       uint32_t tcp;
+       uint32_t other;
+};
+
+struct load_entry {
+       uint32_t time;
+       uint16_t load1;
+       uint16_t load5;
+       uint16_t load15;
+};
+
+struct radio_entry {
+       uint32_t time;
+       uint16_t rate;
+       uint8_t  rssi;
+       uint8_t  noise;
+};
+
+static int readpid(void)
+{
+       int fd;
+       int pid = -1;
+       char buf[9] = { 0 };
+
+       if ((fd = open(PID_PATH, O_RDONLY)) > -1)
+       {
+               if (read(fd, buf, sizeof(buf)))
+               {
+                       buf[8] = 0;
+                       pid = atoi(buf);
+               }
+
+               close(fd);
+       }
+
+       return pid;
+}
+
+static int writepid(void)
+{
+       int fd;
+       int wlen;
+       char buf[9] = { 0 };
+
+       if ((fd = open(PID_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0600)) > -1)
+       {
+               wlen = snprintf(buf, sizeof(buf), "%i", getpid());
+               write(fd, buf, wlen);
+               close(fd);
+
+               return 0;
+       }
+
+       return -1;
+}
+
+static int timeout = TIMEOUT;
+static int countdown = -1;
+
+static void reset_countdown(int sig)
+{
+       countdown = timeout;
+
+}
+
+
+static char *progname;
+static int prognamelen;
+
+static struct iwinfo_ops *backend = NULL;
+
+
+static int init_directory(char *path)
+{
+       char *p = path;
+
+       for (p = &path[1]; *p; p++)
+       {
+               if (*p == '/')
+               {
+                       *p = 0;
+
+                       if (mkdir(path, 0700) && (errno != EEXIST))
+                               return -1;
+
+                       *p = '/';
+               }
+       }
+
+       return 0;
+}
+
+static int init_file(char *path, int esize)
+{
+       int i, file;
+       char buf[sizeof(struct traffic_entry)] = { 0 };
+
+       if (init_directory(path))
+               return -1;
+
+       if ((file = open(path, O_WRONLY | O_CREAT, 0600)) >= 0)
+       {
+               for (i = 0; i < STEP_COUNT; i++)
+               {
+                       if (write(file, buf, esize) < 0)
+                               break;
+               }
+
+               close(file);
+
+               return 0;
+       }
+
+       return -1;
+}
+
+static inline uint32_t timeof(void *entry)
+{
+       return ntohl(((struct traffic_entry *)entry)->time);
+}
+
+static int update_file(const char *path, void *entry, int esize)
+{
+       int rv = -1;
+       int file;
+       char *map;
+
+       if ((file = open(path, O_RDWR)) >= 0)
+       {
+               map = mmap(NULL, esize * STEP_COUNT, PROT_READ | PROT_WRITE,
+                                  MAP_SHARED | MAP_LOCKED, file, 0);
+
+               if ((map != NULL) && (map != MAP_FAILED))
+               {
+                       if (timeof(entry) > timeof(map + esize * (STEP_COUNT-1)))
+                       {
+                               memmove(map, map + esize, esize * (STEP_COUNT-1));
+                               memcpy(map + esize * (STEP_COUNT-1), entry, esize);
+                       }
+
+                       munmap(map, esize * STEP_COUNT);
+
+                       rv = 0;
+               }
+
+               close(file);
+       }
+
+       return rv;
+}
+
+static int mmap_file(const char *path, int esize, struct file_map *m)
+{
+       m->fd   = -1;
+       m->size = -1;
+       m->mmap = NULL;
+
+       if ((m->fd = open(path, O_RDONLY)) >= 0)
+       {
+               m->size = STEP_COUNT * esize;
+               m->mmap = mmap(NULL, m->size, PROT_READ,
+                                          MAP_SHARED | MAP_LOCKED, m->fd, 0);
+
+               if ((m->mmap != NULL) && (m->mmap != MAP_FAILED))
+                       return 0;
+       }
+
+       return -1;
+}
+
+static void umap_file(struct file_map *m)
+{
+       if ((m->mmap != NULL) && (m->mmap != MAP_FAILED))
+               munmap(m->mmap, m->size);
+
+       if (m->fd > -1)
+               close(m->fd);
+}
+
+static void * iw_open(void)
+{
+       return dlopen("/usr/lib/libiwinfo.so", RTLD_LAZY);
+}
+
+static int iw_update(
+       void *iw, const char *ifname, uint16_t *rate, uint8_t *rssi, uint8_t *noise
+) {
+       struct iwinfo_ops *(*probe)(const char *);
+       int val;
+
+       if (!backend)
+       {
+               probe = dlsym(iw, "iwinfo_backend");
+
+               if (!probe)
+                       return 0;
+
+               backend = probe(ifname);
+
+               if (!backend)
+                       return 0;
+       }
+
+       *rate = (backend->bitrate && !backend->bitrate(ifname, &val)) ? val : 0;
+       *rssi = (backend->signal && !backend->signal(ifname, &val)) ? val : 0;
+       *noise = (backend->noise && !backend->noise(ifname, &val)) ? val : 0;
+
+       return 1;
+}
+
+static void iw_close(void *iw)
+{
+       void (*finish)(void);
+
+       finish = dlsym(iw, "iwinfo_finish");
+
+       if (finish)
+               finish();
+
+       dlclose(iw);
+}
+
+
+static int update_ifstat(
+       const char *ifname, uint32_t rxb, uint32_t rxp, uint32_t txb, uint32_t txp
+) {
+       char path[1024];
+
+       struct stat s;
+       struct traffic_entry e;
+
+       snprintf(path, sizeof(path), DB_IF_FILE, ifname);
+
+       if (stat(path, &s))
+       {
+               if (init_file(path, sizeof(struct traffic_entry)))
+               {
+                       fprintf(stderr, "Failed to init %s: %s\n",
+                                       path, strerror(errno));
+
+                       return -1;
+               }
+       }
+
+       e.time = htonl(time(NULL));
+       e.rxb  = htonl(rxb);
+       e.rxp  = htonl(rxp);
+       e.txb  = htonl(txb);
+       e.txp  = htonl(txp);
+
+       return update_file(path, &e, sizeof(struct traffic_entry));
+}
+
+static int update_radiostat(
+       const char *ifname, uint16_t rate, uint8_t rssi, uint8_t noise
+) {
+       char path[1024];
+
+       struct stat s;
+       struct radio_entry e;
+
+       snprintf(path, sizeof(path), DB_RD_FILE, ifname);
+
+       if (stat(path, &s))
+       {
+               if (init_file(path, sizeof(struct radio_entry)))
+               {
+                       fprintf(stderr, "Failed to init %s: %s\n",
+                                       path, strerror(errno));
+
+                       return -1;
+               }
+       }
+
+       e.time  = htonl(time(NULL));
+       e.rate  = htons(rate);
+       e.rssi  = rssi;
+       e.noise = noise;
+
+       return update_file(path, &e, sizeof(struct radio_entry));
+}
+
+static int update_cnstat(uint32_t udp, uint32_t tcp, uint32_t other)
+{
+       char path[1024];
+
+       struct stat s;
+       struct conn_entry e;
+
+       snprintf(path, sizeof(path), DB_CN_FILE);
+
+       if (stat(path, &s))
+       {
+               if (init_file(path, sizeof(struct conn_entry)))
+               {
+                       fprintf(stderr, "Failed to init %s: %s\n",
+                                       path, strerror(errno));
+
+                       return -1;
+               }
+       }
+
+       e.time  = htonl(time(NULL));
+       e.udp   = htonl(udp);
+       e.tcp   = htonl(tcp);
+       e.other = htonl(other);
+
+       return update_file(path, &e, sizeof(struct conn_entry));
+}
+
+static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15)
+{
+       char path[1024];
+
+       struct stat s;
+       struct load_entry e;
+
+       snprintf(path, sizeof(path), DB_LD_FILE);
+
+       if (stat(path, &s))
+       {
+               if (init_file(path, sizeof(struct load_entry)))
+               {
+                       fprintf(stderr, "Failed to init %s: %s\n",
+                                       path, strerror(errno));
+
+                       return -1;
+               }
+       }
+
+       e.time   = htonl(time(NULL));
+       e.load1  = htons(load1);
+       e.load5  = htons(load5);
+       e.load15 = htons(load15);
+
+       return update_file(path, &e, sizeof(struct load_entry));
+}
+
+static int run_daemon(void)
+{
+       FILE *info;
+       uint32_t rxb, txb, rxp, txp;
+       uint32_t udp, tcp, other;
+       uint16_t rate;
+       uint8_t rssi, noise;
+       float lf1, lf5, lf15;
+       char line[1024];
+       char ifname[16];
+       int i;
+       void *iw;
+       struct sigaction sa;
+
+       struct stat s;
+       const char *ipc = stat("/proc/net/nf_conntrack", &s)
+               ? "/proc/net/ip_conntrack" : "/proc/net/nf_conntrack";
+
+       switch (fork())
+       {
+               case -1:
+                       perror("fork()");
+                       return -1;
+
+               case 0:
+                       if (chdir("/") < 0)
+                       {
+                               perror("chdir()");
+                               exit(1);
+                       }
+
+                       close(0);
+                       close(1);
+                       close(2);
+                       break;
+
+               default:
+                       return 0;
+       }
+
+       /* setup USR1 signal handler to reset timer */
+       sa.sa_handler = reset_countdown;
+       sa.sa_flags   = SA_RESTART;
+       sigemptyset(&sa.sa_mask);
+       sigaction(SIGUSR1, &sa, NULL);
+
+       /* write pid */
+       if (writepid())
+       {
+               fprintf(stderr, "Failed to write pid file: %s\n", strerror(errno));
+               return 1;
+       }
+
+       /* initialize iwinfo */
+       iw = iw_open();
+
+       /* go */
+       for (reset_countdown(0); countdown >= 0; countdown--)
+       {
+               /* alter progname for ps, top */
+               memset(progname, 0, prognamelen);
+               snprintf(progname, prognamelen, "luci-bwc %d", countdown);
+
+               if ((info = fopen("/proc/net/dev", "r")) != NULL)
+               {
+                       while (fgets(line, sizeof(line), info))
+                       {
+                               if (strchr(line, '|'))
+                                       continue;
+
+                               if (sscanf(line, IF_SCAN_PATTERN, ifname, &rxb, &rxp, &txb, &txp))
+                               {
+                                       if (strncmp(ifname, "lo", sizeof(ifname)))
+                                               update_ifstat(ifname, rxb, rxp, txb, txp);
+                               }
+                       }
+
+                       fclose(info);
+               }
+
+               if (iw)
+               {
+                       for (i = 0; i < 5; i++)
+                       {
+#define iw_checkif(pattern) \
+                               do {                                                      \
+                                       snprintf(ifname, sizeof(ifname), pattern, i);         \
+                                       if (iw_update(iw, ifname, &rate, &rssi, &noise))  \
+                                       {                                                     \
+                                               update_radiostat(ifname, rate, rssi, noise);      \
+                                               continue;                                         \
+                                       }                                                     \
+                               } while(0)
+
+                               iw_checkif("wlan%d");
+                               iw_checkif("ath%d");
+                               iw_checkif("wl%d");
+                       }
+               }
+
+               if ((info = fopen(ipc, "r")) != NULL)
+               {
+                       udp   = 0;
+                       tcp   = 0;
+                       other = 0;
+
+                       while (fgets(line, sizeof(line), info))
+                       {
+                               if (strstr(line, "TIME_WAIT"))
+                                       continue;
+
+                               if ((strstr(line, "src=127.0.0.1 ") && strstr(line, "dst=127.0.0.1 ")) 
+                               || (strstr(line, "src=::1 ") && strstr(line, "dst=::1 ")))
+                                       continue;
+
+                               if (sscanf(line, "%*s %*d %s", ifname) || sscanf(line, "%s %*d", ifname))
+                               {
+                                       if (!strcmp(ifname, "tcp"))
+                                               tcp++;
+                                       else if (!strcmp(ifname, "udp"))
+                                               udp++;
+                                       else
+                                               other++;
+                               }
+                       }
+
+                       update_cnstat(udp, tcp, other);
+
+                       fclose(info);
+               }
+
+               if ((info = fopen("/proc/loadavg", "r")) != NULL)
+               {
+                       if (fscanf(info, LD_SCAN_PATTERN, &lf1, &lf5, &lf15))
+                       {
+                               update_ldstat((uint16_t)(lf1  * 100),
+                                                         (uint16_t)(lf5  * 100),
+                                                         (uint16_t)(lf15 * 100));
+                       }
+
+                       fclose(info);
+               }
+
+               sleep(STEP_TIME);
+       }
+
+       unlink(PID_PATH);
+
+       if (iw)
+               iw_close(iw);
+
+       return 0;
+}
+
+static void check_daemon(void)
+{
+       int pid;
+
+       if ((pid = readpid()) < 0 || kill(pid, 0) < 0)
+       {
+               /* daemon ping failed, try to start it up */
+               if (run_daemon())
+               {
+                       fprintf(stderr,
+                               "Failed to ping daemon and unable to start it up: %s\n",
+                               strerror(errno));
+
+                       exit(1);
+               }
+       }
+       else if (kill(pid, SIGUSR1))
+       {
+               fprintf(stderr, "Failed to send signal: %s\n", strerror(errno));
+               exit(2);
+       }
+}
+
+static int run_dump_ifname(const char *ifname)
+{
+       int i;
+       char path[1024];
+       struct file_map m;
+       struct traffic_entry *e;
+
+       check_daemon();
+       snprintf(path, sizeof(path), DB_IF_FILE, ifname);
+
+       if (mmap_file(path, sizeof(struct traffic_entry), &m))
+       {
+               fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno));
+               return 1;
+       }
+
+       for (i = 0; i < m.size; i += sizeof(struct traffic_entry))
+       {
+               e = (struct traffic_entry *) &m.mmap[i];
+
+               if (!e->time)
+                       continue;
+
+               printf("[ %u, %u, %" PRIu32
+                          ", %u, %u ]%s\n",
+                       ntohl(e->time),
+                       ntohl(e->rxb), ntohl(e->rxp),
+                       ntohl(e->txb), ntohl(e->txp),
+                       ((i + sizeof(struct traffic_entry)) < m.size) ? "," : "");
+       }
+
+       umap_file(&m);
+
+       return 0;
+}
+
+static int run_dump_radio(const char *ifname)
+{
+       int i;
+       char path[1024];
+       struct file_map m;
+       struct radio_entry *e;
+
+       check_daemon();
+       snprintf(path, sizeof(path), DB_RD_FILE, ifname);
+
+       if (mmap_file(path, sizeof(struct radio_entry), &m))
+       {
+               fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno));
+               return 1;
+       }
+
+       for (i = 0; i < m.size; i += sizeof(struct radio_entry))
+       {
+               e = (struct radio_entry *) &m.mmap[i];
+
+               if (!e->time)
+                       continue;
+
+               printf("[ %u, %d, %d, %d ]%s\n",
+                       ntohl(e->time),
+                       e->rate, e->rssi, e->noise,
+                       ((i + sizeof(struct radio_entry)) < m.size) ? "," : "");
+       }
+
+       umap_file(&m);
+
+       return 0;
+}
+
+static int run_dump_conns(void)
+{
+       int i;
+       char path[1024];
+       struct file_map m;
+       struct conn_entry *e;
+
+       check_daemon();
+       snprintf(path, sizeof(path), DB_CN_FILE);
+
+       if (mmap_file(path, sizeof(struct conn_entry), &m))
+       {
+               fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno));
+               return 1;
+       }
+
+       for (i = 0; i < m.size; i += sizeof(struct conn_entry))
+       {
+               e = (struct conn_entry *) &m.mmap[i];
+
+               if (!e->time)
+                       continue;
+
+               printf("[ %u, %u, %u, %u ]%s\n",
+                       ntohl(e->time), ntohl(e->udp),
+                       ntohl(e->tcp), ntohl(e->other),
+                       ((i + sizeof(struct conn_entry)) < m.size) ? "," : "");
+       }
+
+       umap_file(&m);
+
+       return 0;
+}
+
+static int run_dump_load(void)
+{
+       int i;
+       char path[1024];
+       struct file_map m;
+       struct load_entry *e;
+
+       check_daemon();
+       snprintf(path, sizeof(path), DB_LD_FILE);
+
+       if (mmap_file(path, sizeof(struct load_entry), &m))
+       {
+               fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno));
+               return 1;
+       }
+
+       for (i = 0; i < m.size; i += sizeof(struct load_entry))
+       {
+               e = (struct load_entry *) &m.mmap[i];
+
+               if (!e->time)
+                       continue;
+
+               printf("[ %u, %u, %u, %u ]%s\n",
+                       ntohl(e->time),
+                       ntohs(e->load1), ntohs(e->load5), ntohs(e->load15),
+                       ((i + sizeof(struct load_entry)) < m.size) ? "," : "");
+       }
+
+       umap_file(&m);
+
+       return 0;
+}
+
+
+int main(int argc, char *argv[])
+{
+       int opt;
+
+       progname = argv[0];
+       prognamelen = -1;
+
+       for (opt = 0; opt < argc; opt++)
+               prognamelen += 1 + strlen(argv[opt]);
+
+       while ((opt = getopt(argc, argv, "t:i:r:cl")) > -1)
+       {
+               switch (opt)
+               {
+                       case 't':
+                               timeout = atoi(optarg);
+                               break;
+
+                       case 'i':
+                               if (optarg)
+                                       return run_dump_ifname(optarg);
+                               break;
+
+                       case 'r':
+                               if (optarg)
+                                       return run_dump_radio(optarg);
+                               break;
+
+                       case 'c':
+                               return run_dump_conns();
+
+                       case 'l':
+                               return run_dump_load();
+
+                       default:
+                               break;
+               }
+       }
+
+       fprintf(stderr,
+               "Usage:\n"
+               "       %s [-t timeout] -i ifname\n"
+               "       %s [-t timeout] -r radiodev\n"
+               "       %s [-t timeout] -c\n"
+               "       %s [-t timeout] -l\n",
+                       argv[0], argv[0], argv[0], argv[0]
+       );
+
+       return 1;
+}
diff --git a/package/luci/modules/luci-mod-system/Makefile b/package/luci/modules/luci-mod-system/Makefile
new file mode 100644 (file)
index 0000000..a6d5a7a
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# 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:=LuCI Administration - Global System Settings
+LUCI_DEPENDS:=+luci-base
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js b/package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js
new file mode 100644 (file)
index 0000000..7a79d7e
--- /dev/null
@@ -0,0 +1,31 @@
+function submitPassword(ev) {
+       var pw1 = document.body.querySelector('[name="pw1"]'),
+           pw2 = document.body.querySelector('[name="pw2"]');
+
+       if (!pw1.value.length || !pw2.value.length)
+               return;
+
+       if (pw1.value === pw2.value) {
+               L.showModal(_('Change login password'),
+                       E('p', { class: 'spinning' }, _('Changing password…')));
+
+               L.post('admin/system/admin/password/json', { password: pw1.value },
+                       function() {
+                               showModal(_('Change login password'), [
+                                       E('div', _('The system password has been successfully changed.')),
+                                       E('div', { 'class': 'right' },
+                                               E('div', { class: 'btn', click: L.hideModal }, _('Dismiss')))
+                               ]);
+
+                               pw1.value = pw2.value = '';
+                       });
+       }
+       else {
+               L.showModal(_('Change login password'), [
+                       E('div', { class: 'alert-message warning' },
+                               _('Given password confirmation did not match, password not changed!')),
+                       E('div', { 'class': 'right' },
+                               E('div', { class: 'btn', click: L.hideModal }, _('Dismiss')))
+               ]);
+       }
+}
diff --git a/package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js b/package/luci/modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js
new file mode 100644 (file)
index 0000000..d298b3b
--- /dev/null
@@ -0,0 +1,215 @@
+SSHPubkeyDecoder.prototype = {
+       lengthDecode: function(s, off)
+       {
+               var l = (s.charCodeAt(off++) << 24) |
+                               (s.charCodeAt(off++) << 16) |
+                               (s.charCodeAt(off++) <<  8) |
+                                s.charCodeAt(off++);
+
+               if (l < 0 || (off + l) > s.length)
+                       return -1;
+
+               return l;
+       },
+
+       decode: function(s)
+       {
+               var parts = s.split(/\s+/);
+               if (parts.length < 2)
+                       return null;
+
+               var key = null;
+               try { key = atob(parts[1]); } catch(e) {}
+               if (!key)
+                       return null;
+
+               var off, len;
+
+               off = 0;
+               len = this.lengthDecode(key, off);
+
+               if (len <= 0)
+                       return null;
+
+               var type = key.substr(off + 4, len);
+               if (type !== parts[0])
+                       return null;
+
+               off += 4 + len;
+
+               var len1 = off < key.length ? this.lengthDecode(key, off) : 0;
+               if (len1 <= 0)
+                       return null;
+
+               var curve = null;
+               if (type.indexOf('ecdsa-sha2-') === 0) {
+                       curve = key.substr(off + 4, len1);
+
+                       if (!len1 || type.substr(11) !== curve)
+                               return null;
+
+                       type = 'ecdsa-sha2';
+                       curve = curve.replace(/^nistp(\d+)$/, 'NIST P-$1');
+               }
+
+               off += 4 + len1;
+
+               var len2 = off < key.length ? this.lengthDecode(key, off) : 0;
+               if (len2 < 0)
+                       return null;
+
+               if (len1 & 1)
+                       len1--;
+
+               if (len2 & 1)
+                       len2--;
+
+               var comment = parts.slice(2).join(' '),
+                   fprint = parts[1].length > 68 ? parts[1].substr(0, 33) + '…' + parts[1].substr(-34) : parts[1];
+
+               switch (type)
+               {
+               case 'ssh-rsa':
+                       return { type: 'RSA', bits: len2 * 8, comment: comment, fprint: fprint };
+
+               case 'ssh-dss':
+                       return { type: 'DSA', bits: len1 * 8, comment: comment, fprint: fprint };
+
+               case 'ssh-ed25519':
+                       return { type: 'ECDH', curve: 'Curve25519', comment: comment, fprint: fprint };
+
+               case 'ecdsa-sha2':
+                       return { type: 'ECDSA', curve: curve, comment: comment, fprint: fprint };
+
+               default:
+                       return null;
+               }
+       }
+};
+
+function SSHPubkeyDecoder() {}
+
+function renderKeys(keys) {
+       var list = document.querySelector('.cbi-dynlist[name="sshkeys"]'),
+           decoder = new SSHPubkeyDecoder();
+
+       while (!matchesElem(list.firstElementChild, '.add-item'))
+               list.removeChild(list.firstElementChild);
+
+       keys.forEach(function(key) {
+               var pubkey = decoder.decode(key);
+               if (pubkey)
+                       list.insertBefore(E('div', {
+                               class: 'item',
+                               click: removeKey,
+                               'data-key': key
+                       }, [
+                               E('strong', pubkey.comment || _('Unnamed key')), E('br'),
+                               E('small', [
+                                       '%s, %s'.format(pubkey.type, pubkey.curve || _('%d Bit').format(pubkey.bits)),
+                                       E('br'), E('code', pubkey.fprint)
+                               ])
+                       ]), list.lastElementChild);
+       });
+
+       if (list.firstElementChild === list.lastElementChild)
+               list.insertBefore(E('p', _('No public keys present yet.')), list.lastElementChild);
+}
+
+function saveKeys(keys) {
+       L.showModal(_('Add key'), E('div', { class: 'spinning' }, _('Saving keys…')));
+       L.post('admin/system/admin/sshkeys/json', { keys: JSON.stringify(keys) }, function(xhr, keys) {
+               renderKeys(keys);
+               L.hideModal();
+       });
+}
+
+function addKey(ev) {
+       var decoder = new SSHPubkeyDecoder(),
+           list = findParent(ev.target, '.cbi-dynlist'),
+           input = list.querySelector('input[type="text"]'),
+           key = input.value.trim(),
+           pubkey = decoder.decode(key),
+           keys = [];
+
+       if (!key.length)
+               return;
+
+       list.querySelectorAll('.item').forEach(function(item) {
+               keys.push(item.getAttribute('data-key'));
+       });
+
+       if (keys.indexOf(key) !== -1) {
+               L.showModal(_('Add key'), [
+                       E('div', { class: 'alert-message warning' }, _('The given SSH public key has already been added.')),
+                       E('div', { class: 'right' }, E('div', { class: 'btn', click: L.hideModal }, _('Close')))
+               ]);
+       }
+       else if (!pubkey) {
+               L.showModal(_('Add key'), [
+                       E('div', { class: 'alert-message warning' }, _('The given SSH public key is invalid. Please supply proper public RSA or ECDSA keys.')),
+                       E('div', { class: 'right' }, E('div', { class: 'btn', click: L.hideModal }, _('Close')))
+               ]);
+       }
+       else {
+               keys.push(key);
+               saveKeys(keys);
+               input.value = '';
+       }
+}
+
+function removeKey(ev) {
+       var list = findParent(ev.target, '.cbi-dynlist'),
+           delkey = ev.target.getAttribute('data-key'),
+           keys = [];
+
+       list.querySelectorAll('.item').forEach(function(item) {
+               var key = item.getAttribute('data-key');
+               if (key !== delkey)
+                       keys.push(key);
+       });
+
+       L.showModal(_('Delete key'), [
+               E('div', _('Do you really want to delete the following SSH key?')),
+               E('pre', delkey),
+               E('div', { class: 'right' }, [
+                       E('div', { class: 'btn', click: L.hideModal }, _('Cancel')),
+                       ' ',
+                       E('div', { class: 'btn danger', click: function(ev) { saveKeys(keys) } }, _('Delete key')),
+               ])
+       ]);
+}
+
+function dragKey(ev) {
+       ev.stopPropagation();
+       ev.preventDefault();
+       ev.dataTransfer.dropEffect = 'copy';
+}
+
+function dropKey(ev) {
+       var file = ev.dataTransfer.files[0],
+           input = ev.currentTarget.querySelector('input[type="text"]'),
+           reader = new FileReader();
+
+       if (file) {
+               reader.onload = function(rev) {
+                       input.value = rev.target.result.trim();
+                       addKey(ev);
+                       input.value = '';
+               };
+
+               reader.readAsText(file);
+       }
+
+       ev.stopPropagation();
+       ev.preventDefault();
+}
+
+window.addEventListener('dragover', function(ev) { ev.preventDefault() });
+window.addEventListener('drop', function(ev) { ev.preventDefault() });
+
+requestAnimationFrame(function() {
+       L.get('admin/system/admin/sshkeys/json', null, function(xhr, keys) {
+               renderKeys(keys);
+       });
+});
diff --git a/package/luci/modules/luci-mod-system/luasrc/controller/admin/system.lua b/package/luci/modules/luci-mod-system/luasrc/controller/admin/system.lua
new file mode 100644 (file)
index 0000000..49d4476
--- /dev/null
@@ -0,0 +1,348 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.admin.system", package.seeall)
+
+function index()
+       local fs = require "nixio.fs"
+
+       entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1)
+       entry({"admin", "system", "clock_status"}, post_on({ set = true }, "action_clock_status"))
+       entry({"admin", "system", "ntp_restart"}, call("action_ntp_restart"), nil).leaf = true
+
+       entry({"admin", "system", "admin"}, firstchild(), _("Administration"), 2)
+       entry({"admin", "system", "admin", "password"}, template("admin_system/password"), _("Router Password"), 1)
+       entry({"admin", "system", "admin", "password", "json"}, post("action_password"))
+
+       if fs.access("/etc/config/dropbear") then
+               entry({"admin", "system", "admin", "dropbear"}, cbi("admin_system/dropbear"), _("SSH Access"), 2)
+               entry({"admin", "system", "admin", "sshkeys"}, template("admin_system/sshkeys"), _("SSH-Keys"), 3)
+               entry({"admin", "system", "admin", "sshkeys", "json"}, post_on({ keys = true }, "action_sshkeys"))
+       end
+
+       entry({"admin", "system", "startup"}, form("admin_system/startup"), _("Startup"), 45)
+       entry({"admin", "system", "crontab"}, form("admin_system/crontab"), _("Scheduled Tasks"), 46)
+
+       if fs.access("/sbin/block") and fs.access("/etc/config/fstab") then
+               entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), _("Mount Points"), 50)
+               entry({"admin", "system", "fstab", "mount"}, cbi("admin_system/fstab/mount"), nil).leaf = true
+               entry({"admin", "system", "fstab", "swap"},  cbi("admin_system/fstab/swap"),  nil).leaf = true
+       end
+
+       local nodes, number = fs.glob("/sys/class/leds/*")
+       if number > 0 then
+               entry({"admin", "system", "leds"}, cbi("admin_system/leds"), _("<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"), 60)
+       end
+
+       entry({"admin", "system", "flashops"}, call("action_flashops"), _("Backup / Flash Firmware"), 70)
+       entry({"admin", "system", "flashops", "reset"}, post("action_reset"))
+       entry({"admin", "system", "flashops", "backup"}, post("action_backup"))
+       entry({"admin", "system", "flashops", "backupmtdblock"}, post("action_backupmtdblock"))
+       entry({"admin", "system", "flashops", "backupfiles"}, form("admin_system/backupfiles"))
+
+       -- call() instead of post() due to upload handling!
+       entry({"admin", "system", "flashops", "restore"}, call("action_restore"))
+       entry({"admin", "system", "flashops", "sysupgrade"}, call("action_sysupgrade"))
+
+       entry({"admin", "system", "reboot"}, template("admin_system/reboot"), _("Reboot"), 90)
+       entry({"admin", "system", "reboot", "call"}, post("action_reboot"))
+end
+
+function action_clock_status()
+       local set = tonumber(luci.http.formvalue("set"))
+       if set ~= nil and set > 0 then
+               local date = os.date("*t", set)
+               if date then
+                       luci.sys.call("date -s '%04d-%02d-%02d %02d:%02d:%02d'" %{
+                               date.year, date.month, date.day, date.hour, date.min, date.sec
+                       })
+                       luci.sys.call("/etc/init.d/sysfixtime restart")
+               end
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json({ timestring = os.date("%c") })
+end
+
+function action_ntp_restart()
+       if nixio.fs.access("/etc/init.d/sysntpd") then
+               os.execute("/etc/init.d/sysntpd restart")
+       end
+       luci.http.prepare_content("text/plain")
+       luci.http.write("0")
+end
+
+local function image_supported(image)
+       return (os.execute("sysupgrade -T %q >/dev/null" % image) == 0)
+end
+
+local function image_checksum(image)
+       return (luci.sys.exec("md5sum %q" % image):match("^([^%s]+)"))
+end
+
+local function image_sha256_checksum(image)
+       return (luci.sys.exec("sha256sum %q" % image):match("^([^%s]+)"))
+end
+
+local function supports_sysupgrade()
+       return nixio.fs.access("/lib/upgrade/platform.sh")
+end
+
+local function supports_reset()
+       return (os.execute([[grep -sq "^overlayfs:/overlay / overlay " /proc/mounts]]) == 0)
+end
+
+local function storage_size()
+       local size = 0
+       if nixio.fs.access("/proc/mtd") then
+               for l in io.lines("/proc/mtd") do
+                       local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"')
+                       if n == "linux" or n == "firmware" then
+                               size = tonumber(s, 16)
+                               break
+                       end
+               end
+       elseif nixio.fs.access("/proc/partitions") then
+               for l in io.lines("/proc/partitions") do
+                       local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)')
+                       if b and n and not n:match('[0-9]') then
+                               size = tonumber(b) * 1024
+                               break
+                       end
+               end
+       end
+       return size
+end
+
+
+function action_flashops()
+       --
+       -- Overview
+       --
+       luci.template.render("admin_system/flashops", {
+               reset_avail   = supports_reset(),
+               upgrade_avail = supports_sysupgrade()
+       })
+end
+
+function action_sysupgrade()
+       local fs = require "nixio.fs"
+       local http = require "luci.http"
+       local image_tmp = "/tmp/firmware.img"
+
+       local fp
+       http.setfilehandler(
+               function(meta, chunk, eof)
+                       if not fp and meta and meta.name == "image" then
+                               fp = io.open(image_tmp, "w")
+                       end
+                       if fp and chunk then
+                               fp:write(chunk)
+                       end
+                       if fp and eof then
+                               fp:close()
+                       end
+               end
+       )
+
+       if not luci.dispatcher.test_post_security() then
+               fs.unlink(image_tmp)
+               return
+       end
+
+       --
+       -- Cancel firmware flash
+       --
+       if http.formvalue("cancel") then
+               fs.unlink(image_tmp)
+               http.redirect(luci.dispatcher.build_url('admin/system/flashops'))
+               return
+       end
+
+       --
+       -- Initiate firmware flash
+       --
+       local step = tonumber(http.formvalue("step")) or 1
+       if step == 1 then
+               local force = http.formvalue("force")
+               if image_supported(image_tmp) or force then
+                       luci.template.render("admin_system/upgrade", {
+                               checksum = image_checksum(image_tmp),
+                               sha256ch = image_sha256_checksum(image_tmp),
+                               storage  = storage_size(),
+                               size     = (fs.stat(image_tmp, "size") or 0),
+                               keep     = (not not http.formvalue("keep")),
+                               force    = (not not http.formvalue("force"))
+                       })
+               else
+                       fs.unlink(image_tmp)
+                       luci.template.render("admin_system/flashops", {
+                               reset_avail   = supports_reset(),
+                               upgrade_avail = supports_sysupgrade(),
+                               image_invalid = true
+                       })
+               end
+
+       --
+       -- Start sysupgrade flash
+       --
+       elseif step == 2 then
+               local keep = (http.formvalue("keep") == "1") and "" or "-n"
+               local force = (http.formvalue("force") == "1") and "-F" or ""
+               luci.template.render("admin_system/applyreboot", {
+                       title = luci.i18n.translate("Flashing..."),
+                       msg   = luci.i18n.translate("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 address of your computer to reach the device again, depending on your settings."),
+                       addr  = (#keep > 0) and (#force > 0) and "192.168.1.1" or nil
+               })
+               luci.sys.process.exec({ "/bin/sh", "-c","sleep 1; killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %s %q" %{ keep, force, image_tmp } }, nil, nil, true)
+       end
+end
+
+function action_backup()
+       luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"'
+               %{ luci.sys.hostname(), os.date("%Y-%m-%d") })
+
+       luci.http.prepare_content("application/x-targz")
+       luci.sys.process.exec({ "/sbin/sysupgrade", "--create-backup", "-" }, luci.http.write)
+end
+
+function action_backupmtdblock()
+       local mv = luci.http.formvalue("mtdblockname") or ""
+       local m, n = mv:match('^([^%s%./"]+)/%d+/(%d+)$')
+
+       if not m and n then
+               luci.http.status(400, "Bad Request")
+               return
+       end
+
+       luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s-%s.bin"'
+               %{ luci.sys.hostname(), m, os.date("%Y-%m-%d") })
+
+       luci.http.prepare_content("application/octet-stream")
+       luci.sys.process.exec({ "/bin/dd", "if=/dev/mtd%s" % n, "conv=fsync,notrunc" }, luci.http.write)
+end
+
+function action_restore()
+       local fs = require "nixio.fs"
+       local http = require "luci.http"
+       local archive_tmp = "/tmp/restore.tar.gz"
+
+       local fp
+       http.setfilehandler(
+               function(meta, chunk, eof)
+                       if not fp and meta and meta.name == "archive" then
+                               fp = io.open(archive_tmp, "w")
+                       end
+                       if fp and chunk then
+                               fp:write(chunk)
+                       end
+                       if fp and eof then
+                               fp:close()
+                       end
+               end
+       )
+
+       if not luci.dispatcher.test_post_security() then
+               fs.unlink(archive_tmp)
+               return
+       end
+
+       local upload = http.formvalue("archive")
+       if upload and #upload > 0 then
+               if os.execute("gunzip -t %q >/dev/null 2>&1" % archive_tmp) == 0 then
+                       luci.template.render("admin_system/applyreboot")
+                       os.execute("tar -C / -xzf %q >/dev/null 2>&1" % archive_tmp)
+                       luci.sys.reboot()
+               else
+                       luci.template.render("admin_system/flashops", {
+                               reset_avail   = supports_reset(),
+                               upgrade_avail = supports_sysupgrade(),
+                               backup_invalid = true
+                       })
+               end
+               return
+       end
+
+       http.redirect(luci.dispatcher.build_url('admin/system/flashops'))
+end
+
+function action_reset()
+       if supports_reset() then
+               luci.template.render("admin_system/applyreboot", {
+                       title = luci.i18n.translate("Erasing..."),
+                       msg   = luci.i18n.translate("The system is erasing the configuration partition now and will reboot itself when finished."),
+                       addr  = "192.168.1.1"
+               })
+
+               luci.sys.process.exec({ "/bin/sh", "-c", "sleep 1; killall dropbear uhttpd; sleep 1; jffs2reset -y && reboot" }, nil, nil, true)
+               return
+       end
+
+       http.redirect(luci.dispatcher.build_url('admin/system/flashops'))
+end
+
+function action_password()
+       local password = luci.http.formvalue("password")
+       if not password then
+               luci.http.status(400, "Bad Request")
+               return
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json({ code = luci.sys.user.setpasswd("root", password) })
+end
+
+function action_sshkeys()
+       local keys = luci.http.formvalue("keys")
+       if keys then
+               keys = luci.jsonc.parse(keys)
+               if not keys or type(keys) ~= "table" then
+                       luci.http.status(400, "Bad Request")
+                       return
+               end
+
+               local fd, err = io.open("/etc/dropbear/authorized_keys", "w")
+               if not fd then
+                       luci.http.status(503, err)
+                       return
+               end
+
+               local _, k
+               for _, k in ipairs(keys) do
+                       if type(k) == "string" and k:match("^%w+%-") then
+                               fd:write(k)
+                               fd:write("\n")
+                       end
+               end
+
+               fd:close()
+       end
+
+       local fd, err = io.open("/etc/dropbear/authorized_keys", "r")
+       if not fd then
+               luci.http.status(503, err)
+               return
+       end
+
+       local rv = {}
+       while true do
+               local ln = fd:read("*l")
+               if not ln then
+                       break
+               elseif ln:match("^[%w%-]+%s+[A-Za-z0-9+/=]+$") or
+                      ln:match("^[%w%-]+%s+[A-Za-z0-9+/=]+%s")
+               then
+                       rv[#rv+1] = ln
+               end
+       end
+
+       fd:close()
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(rv)
+end
+
+function action_reboot()
+       luci.sys.reboot()
+end
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua
new file mode 100644 (file)
index 0000000..c81466c
--- /dev/null
@@ -0,0 +1,87 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+if luci.http.formvalue("cbid.luci.1._list") then
+       luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=list")
+elseif luci.http.formvalue("cbid.luci.1._edit") then
+       luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=edit")
+       return
+end
+
+m = SimpleForm("luci", translate("Backup file list"))
+m:append(Template("admin_system/backupfiles"))
+
+if luci.http.formvalue("display") ~= "list" then
+       f = m:section(SimpleSection, nil, translate("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."))
+
+       l = f:option(Button, "_list", translate("Show current backup file list"))
+       l.inputtitle = translate("Open list...")
+       l.inputstyle = "apply"
+
+       c = f:option(TextValue, "_custom")
+       c.forcewrite = true
+       c.rmempty = true
+       c.cols = 70
+       c.rows = 30
+
+       c.cfgvalue = function(self, section)
+               return nixio.fs.readfile("/etc/sysupgrade.conf")
+       end
+
+       m.handle = function(self, state, data)
+               if state == FORM_VALID then
+                       if data._custom then
+                               nixio.fs.writefile("/etc/sysupgrade.conf", data._custom:gsub("\r\n", "\n"))
+                       else
+                               nixio.fs.writefile("/etc/sysupgrade.conf", "")
+                       end
+               end
+               return true
+       end
+else
+       m.submit = false
+       m.reset  = false
+
+       f = m:section(SimpleSection, nil, translate("Below is the determined list of files to backup. It consists of changed configuration files marked by opkg, essential base files and the user defined backup patterns."))
+
+       l = f:option(Button, "_edit", translate("Back to configuration"))
+       l.inputtitle = translate("Close list...")
+       l.inputstyle = "link"
+
+
+       d = f:option(DummyValue, "_detected")
+       d.rawhtml = true
+       d.cfgvalue = function(s)
+               local list = io.popen(
+                       "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " ..
+                       "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " ..
+                       "opkg list-changed-conffiles ) | sort -u"
+               )
+
+               if list then
+                       local files = { "<ul>" }
+
+                       while true do
+                               local ln = list:read("*l")
+                               if not ln then
+                                       break
+                               else
+                                       files[#files+1] = "<li>"
+                                       files[#files+1] = luci.util.pcdata(ln)
+                                       files[#files+1] = "</li>"
+                               end
+                       end
+
+                       list:close()
+                       files[#files+1] = "</ul>"
+
+                       return table.concat(files, "")
+               end
+
+               return "<em>" .. translate("No files found") .. "</em>"
+       end
+
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/crontab.lua
new file mode 100644 (file)
index 0000000..beb24e7
--- /dev/null
@@ -0,0 +1,33 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2008-2013 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+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.") ..
+       translate("<br/>Note: you need to manually restart the cron service if the " ..
+               "crontab file was empty before editing."))
+
+t = f:field(TextValue, "crons")
+f.forcewrite = true
+t.rmempty = true
+t.rows = 10
+function t.cfgvalue()
+       return fs.readfile(cronfile) or ""
+end
+
+function f.handle(self, state, data)
+       if state == FORM_VALID then
+               if data.crons then
+                       fs.writefile(cronfile, data.crons:gsub("\r\n", "\n"))
+                       luci.sys.call("/usr/bin/crontab %q" % cronfile)
+               else
+                       fs.writefile(cronfile, "")
+               end
+       end
+       return true
+end
+
+return f
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua
new file mode 100644 (file)
index 0000000..1a1695d
--- /dev/null
@@ -0,0 +1,53 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2011-2018 Jo-Philipp Wich <jo@mein.io>
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("dropbear", translate("SSH Access"),
+       translate("Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"))
+m.apply_on_parse = true
+
+s = m:section(TypedSection, "dropbear", translate("Dropbear Instance"))
+s.anonymous = true
+s.addremove = true
+
+
+ni = s:option(Value, "Interface", translate("Interface"),
+       translate("Listen only on the given interface or, if unspecified, on all"))
+
+ni.template    = "cbi/network_netlist"
+ni.nocreate    = true
+ni.unspecified = true
+
+
+pt = s:option(Value, "Port", translate("Port"),
+       translate("Specifies the listening port of this <em>Dropbear</em> instance"))
+
+pt.datatype = "port"
+pt.default  = 22
+
+
+pa = s:option(Flag, "PasswordAuth", translate("Password authentication"),
+       translate("Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"))
+
+pa.enabled  = "on"
+pa.disabled = "off"
+pa.default  = pa.enabled
+pa.rmempty  = false
+
+
+ra = s:option(Flag, "RootPasswordAuth", translate("Allow root logins with password"),
+       translate("Allow the <em>root</em> user to login with password"))
+
+ra.enabled  = "on"
+ra.disabled = "off"
+ra.default  = ra.enabled
+
+
+gp = s:option(Flag, "GatewayPorts", translate("Gateway ports"),
+       translate("Allow remote hosts to connect to local SSH forwarded ports"))
+
+gp.enabled  = "on"
+gp.disabled = "off"
+gp.default  = gp.disabled
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua
new file mode 100644 (file)
index 0000000..4a31146
--- /dev/null
@@ -0,0 +1,272 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require("luci.tools.webadmin")
+
+local fs   = require "nixio.fs"
+local util = require "nixio.util"
+local tp   = require "luci.template.parser"
+
+local block = io.popen("block info", "r")
+local ln, dev, devices = nil, nil, {}
+
+repeat
+       ln = block:read("*l")
+       dev = ln and ln:match("^/dev/(.-):")
+
+       if dev then
+               local e, s, key, val = { }
+
+               for key, val in ln:gmatch([[(%w+)="(.-)"]]) do
+                       e[key:lower()] = val
+                       devices[val] = e
+               end
+
+               s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev)))
+
+               e.dev  = "/dev/%s" % dev
+               e.size = s and math.floor(s / 2048)
+
+               devices[e.dev] = e
+       end
+until not ln
+
+block:close()
+
+m = Map("fstab", translate("Mount Points"))
+s = m:section(TypedSection, "global", translate("Global Settings"))
+s.addremove = false
+s.anonymous = true
+
+detect = s:option(Button, "block_detect", translate("Generate Config"), translate("Find all currently attached filesystems and swap and replace configuration with defaults based on what was detected"))
+detect.inputstyle = "reload"
+
+detect.write = function(self, section)
+       luci.sys.call("block detect >/etc/config/fstab")
+       luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab"))
+end
+
+o = s:option(Flag, "anon_swap", translate("Anonymous Swap"), translate("Mount swap not specifically configured"))
+o.default = o.disabled
+o.rmempty = false
+
+o = s:option(Flag, "anon_mount", translate("Anonymous Mount"), translate("Mount filesystems not specifically configured"))
+o.default = o.disabled
+o.rmempty = false
+
+o = s:option(Flag, "auto_swap", translate("Automount Swap"), translate("Automatically mount swap on hotplug"))
+o.default = o.enabled
+o.rmempty = false
+
+o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("Automatically mount filesystems on hotplug"))
+o.default = o.enabled
+o.rmempty = false
+
+o = s:option(Flag, "check_fs", translate("Check filesystems before mount"), translate("Automatically check filesystem for errors before mounting"))
+o.default = o.disabled
+o.rmempty = false
+
+local mounts = luci.sys.mounts()
+local non_system_mounts = {}
+for rawmount, val in pairs(mounts) do
+    if (string.find(val.mountpoint, "/tmp/.jail") == nil) then
+      repeat 
+          val.umount = false
+          if (val.mountpoint == "/") then
+              break
+          elseif (val.mountpoint == "/overlay") then
+              break
+          elseif (val.mountpoint == "/rom") then
+              break
+          elseif (val.mountpoint == "/tmp") then
+              break
+          elseif (val.mountpoint == "/tmp/shm") then
+              break
+          elseif (val.mountpoint == "/tmp/upgrade") then
+              break
+          elseif (val.mountpoint == "/dev") then
+              break
+          end
+          val.umount = true
+      until true
+      non_system_mounts[rawmount] = val       
+   end   
+end
+
+v = m:section(Table, non_system_mounts, translate("Mounted file systems"))
+
+fs = v:option(DummyValue, "fs", translate("Filesystem"))
+
+mp = v:option(DummyValue, "mountpoint", translate("Mount Point"))
+
+avail = v:option(DummyValue, "avail", translate("Available"))
+function avail.cfgvalue(self, section)
+       return luci.tools.webadmin.byte_format(
+               ( tonumber(mounts[section].available) or 0 ) * 1024
+       ) .. " / " .. luci.tools.webadmin.byte_format(
+               ( tonumber(mounts[section].blocks) or 0 ) * 1024
+       )
+end
+
+used = v:option(DummyValue, "used", translate("Used"))
+function used.cfgvalue(self, section)
+       return ( mounts[section].percent or "0%" ) .. " (" ..
+       luci.tools.webadmin.byte_format(
+               ( tonumber(mounts[section].used) or 0 ) * 1024
+       ) .. ")"
+end
+
+unmount = v:option(Button, "unmount", translate("Unmount"))
+function unmount.cfgvalue(self, section)
+       return non_system_mounts[section].umount
+end
+
+unmount.render = function(self, section, scope)
+       self.title = translate("Unmount")
+       self.inputstyle = "remove"
+       Button.render(self, section, scope)
+end
+
+unmount.write = function(self, section)
+       if non_system_mounts[section].umount then
+               luci.sys.call("/bin/umount '%s'" % luci.util.shellstartsqescape(non_system_mounts[section].mountpoint))
+               return luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab"))
+        end
+end
+
+mount = m:section(TypedSection, "mount", translate("Mount Points"), translate("Mount Points define at which point a memory device will be attached to the filesystem"))
+mount.anonymous = true
+mount.addremove = true
+mount.template = "cbi/tblsection"
+mount.extedit  = luci.dispatcher.build_url("admin/system/fstab/mount/%s")
+
+mount.create = function(...)
+       local sid = TypedSection.create(...)
+       if sid then
+               luci.http.redirect(mount.extedit % sid)
+               return
+       end
+end
+
+
+mount:option(Flag, "enabled", translate("Enabled")).rmempty = false
+
+dev = mount:option(DummyValue, "device", translate("Device"))
+dev.rawhtml = true
+dev.cfgvalue = function(self, section)
+       local v, e
+
+       v = m.uci:get("fstab", section, "uuid")
+       e = v and devices[v:lower()]
+       if v and e and e.size then
+               return "UUID: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size }
+       elseif v and e then
+               return "UUID: %s (%s)" %{ tp.pcdata(v), e.dev }
+       elseif v then
+               return "UUID: %s (<em>%s</em>)" %{ tp.pcdata(v), translate("not present") }
+       end
+
+       v = m.uci:get("fstab", section, "label")
+       e = v and devices[v]
+       if v and e and e.size then
+               return "Label: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size }
+       elseif v and e then
+               return "Label: %s (%s)" %{ tp.pcdata(v), e.dev }
+       elseif v then
+               return "Label: %s (<em>%s</em>)" %{ tp.pcdata(v), translate("not present") }
+       end
+
+       v = Value.cfgvalue(self, section) or "?"
+       e = v and devices[v]
+       if v and e and e.size then
+               return "%s (%d MB)" %{ tp.pcdata(v), e.size }
+       elseif v and e then
+               return tp.pcdata(v)
+       elseif v then
+               return "%s (<em>%s</em>)" %{ tp.pcdata(v), translate("not present") }
+       end
+end
+
+mp = mount:option(DummyValue, "target", translate("Mount Point"))
+mp.cfgvalue = function(self, section)
+       if m.uci:get("fstab", section, "is_rootfs") == "1" then
+               return "/overlay"
+       else
+               return Value.cfgvalue(self, section) or "?"
+       end
+end
+
+fs = mount:option(DummyValue, "fstype", translate("Filesystem"))
+fs.cfgvalue = function(self, section)
+       local v, e
+
+       v = m.uci:get("fstab", section, "uuid")
+       v = v and v:lower() or m.uci:get("fstab", section, "label")
+       v = v or m.uci:get("fstab", section, "device")
+
+       e = v and devices[v]
+
+       return e and e.type or m.uci:get("fstab", section, "fstype") or "?"
+end
+
+op = mount:option(DummyValue, "options", translate("Options"))
+op.cfgvalue = function(self, section)
+       return Value.cfgvalue(self, section) or "defaults"
+end
+
+rf = mount:option(DummyValue, "is_rootfs", translate("Root"))
+rf.cfgvalue = function(self, section)
+       local target = m.uci:get("fstab", section, "target")
+       if target == "/" then
+               return translate("yes")
+       elseif target == "/overlay" then
+               return translate("overlay")
+       else
+               return translate("no")
+       end
+end
+
+ck = mount:option(DummyValue, "enabled_fsck", translate("Check"))
+ck.cfgvalue = function(self, section)
+       return Value.cfgvalue(self, section) == "1"
+               and translate("yes") or translate("no")
+end
+
+
+swap = m:section(TypedSection, "swap", translate("SWAP"), translate("If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable <abbr title=\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the <abbr title=\"Random Access Memory\">RAM</abbr>."))
+swap.anonymous = true
+swap.addremove = true
+swap.template = "cbi/tblsection"
+swap.extedit  = luci.dispatcher.build_url("admin/system/fstab/swap/%s")
+
+swap.create = function(...)
+       local sid = TypedSection.create(...)
+       if sid then
+               luci.http.redirect(swap.extedit % sid)
+               return
+       end
+end
+
+
+swap:option(Flag, "enabled", translate("Enabled")).rmempty = false
+
+dev = swap:option(DummyValue, "device", translate("Device"))
+dev.cfgvalue = function(self, section)
+       local v
+
+       v = m.uci:get("fstab", section, "uuid")
+       if v then return "UUID: %s" % v end
+
+       v = m.uci:get("fstab", section, "label")
+       if v then return "Label: %s" % v end
+
+       v = Value.cfgvalue(self, section) or "?"
+       e = v and devices[v]
+       if v and e and e.size then
+               return "%s (%s MB)" % {v, e.size}
+       else
+               return v
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua
new file mode 100644 (file)
index 0000000..f21a277
--- /dev/null
@@ -0,0 +1,158 @@
+-- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs   = require "nixio.fs"
+local util = require "nixio.util"
+
+local has_fscheck = fs.access("/usr/sbin/e2fsck")
+
+local block = io.popen("block info", "r")
+local ln, dev, devices = nil, nil, {}
+
+repeat
+       ln = block:read("*l")
+       dev = ln and ln:match("^/dev/(.-):")
+
+       if dev then
+               local e, s, key, val = { }
+
+               for key, val in ln:gmatch([[(%w+)="(.-)"]]) do
+                       e[key:lower()] = val
+               end
+
+               s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev)))
+
+               e.dev  = "/dev/%s" % dev
+               e.size = s and math.floor(s / 2048)
+
+               devices[#devices+1] = e
+       end
+until not ln
+
+block:close()
+
+
+m = Map("fstab", translate("Mount Points - Mount Entry"))
+m.redirect = luci.dispatcher.build_url("admin/system/fstab")
+
+if not arg[1] or m.uci:get("fstab", arg[1]) ~= "mount" then
+       luci.http.redirect(m.redirect)
+       return
+end
+
+
+
+mount = m:section(NamedSection, arg[1], "mount", translate("Mount Entry"))
+mount.anonymous = true
+mount.addremove = false
+
+mount:tab("general",  translate("General Settings"))
+mount:tab("advanced", translate("Advanced Settings"))
+
+
+mount:taboption("general", Flag, "enabled", translate("Enable this mount")).rmempty = false
+
+
+o = mount:taboption("general", Value, "uuid", translate("UUID"),
+       translate("If specified, mount the device by its UUID instead of a fixed device node"))
+
+o:value("", translate("-- match by uuid --"))
+
+for i, d in ipairs(devices) do
+       if d.uuid and d.size then
+               o:value(d.uuid, "%s (%s, %d MB)" %{ d.uuid, d.dev, d.size })
+       elseif d.uuid then
+               o:value(d.uuid, "%s (%s)" %{ d.uuid, d.dev })
+       end
+end
+
+
+o = mount:taboption("general", Value, "label", translate("Label"),
+       translate("If specified, mount the device by the partition label instead of a fixed device node"))
+
+o:value("", translate("-- match by label --"))
+
+o:depends("uuid", "")
+
+for i, d in ipairs(devices) do
+       if d.label and d.size then
+               o:value(d.label, "%s (%s, %d MB)" %{ d.label, d.dev, d.size })
+       elseif d.label then
+               o:value(d.label, "%s (%s)" %{ d.label, d.dev })
+       end
+end
+
+
+o = mount:taboption("general", Value, "device", translate("Device"),
+       translate("The device file of the memory or partition (<abbr title=\"for example\">e.g.</abbr> <code>/dev/sda1</code>)"))
+
+o:value("", translate("-- match by device --"))
+
+o:depends({ uuid = "", label = "" })
+
+for i, d in ipairs(devices) do
+       if d.size then
+               o:value(d.dev, "%s (%d MB)" %{ d.dev, d.size })
+       else
+               o:value(d.dev)
+       end
+end
+
+
+o = mount:taboption("general", Value, "target", translate("Mount point"),
+       translate("Specifies the directory the device is attached to"))
+
+o:value("/", translate("Use as root filesystem (/)"))
+o:value("/overlay", translate("Use as external overlay (/overlay)"))
+
+
+o = mount:taboption("general", DummyValue, "__notice", translate("Root preparation"))
+o:depends("target", "/")
+o.rawhtml = true
+o.default = [[
+<p>%s</p><pre>mkdir -p /tmp/introot
+mkdir -p /tmp/extroot
+mount --bind / /tmp/introot
+mount /dev/sda1 /tmp/extroot
+tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
+umount /tmp/introot
+umount /tmp/extroot</pre>
+]] %{
+       translate("Make sure to clone the root filesystem using something like the commands below:"),
+
+}
+
+
+o = mount:taboption("advanced", Value, "fstype", translate("Filesystem"),
+       translate("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>)"))
+
+o:value("", "auto")
+
+local fs
+for fs in io.lines("/proc/filesystems") do
+       fs = fs:match("%S+")
+       if fs ~= "nodev" then
+               o:value(fs)
+       end
+end
+
+local ok, lines = pcall(io.lines, "/etc/filesystem")
+if ok then
+       local fs
+       for fs in lines do
+               o:value(fs)
+       end
+end
+
+o = mount:taboption("advanced", Value, "options", translate("Mount options"),
+       translate("See \"mount\" manpage for details"))
+
+o.placeholder = "defaults"
+
+
+if has_fscheck then
+       o = mount:taboption("advanced", Flag, "enabled_fsck", translate("Run filesystem check"),
+               translate("Run a filesystem check before mounting the device"))
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua
new file mode 100644 (file)
index 0000000..82468d5
--- /dev/null
@@ -0,0 +1,54 @@
+-- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs   = require "nixio.fs"
+local util = require "nixio.util"
+
+local devices = {}
+util.consume((fs.glob("/dev/sd*")), devices)
+util.consume((fs.glob("/dev/hd*")), devices)
+util.consume((fs.glob("/dev/scd*")), devices)
+util.consume((fs.glob("/dev/mmc*")), devices)
+
+local size = {}
+for i, dev in ipairs(devices) do
+       local s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev:sub(6))))
+       size[dev] = s and math.floor(s / 2048)
+end
+
+
+m = Map("fstab", translate("Mount Points - Swap Entry"))
+m.redirect = luci.dispatcher.build_url("admin/system/fstab")
+
+if not arg[1] or m.uci:get("fstab", arg[1]) ~= "swap" then
+       luci.http.redirect(m.redirect)
+       return
+end
+
+
+mount = m:section(NamedSection, arg[1], "swap", translate("Swap Entry"))
+mount.anonymous = true
+mount.addremove = false
+
+mount:tab("general",  translate("General Settings"))
+mount:tab("advanced", translate("Advanced Settings"))
+
+
+mount:taboption("general", Flag, "enabled", translate("Enable this swap")).rmempty = false
+
+
+o = mount:taboption("general", Value, "device", translate("Device"),
+       translate("The device file of the memory or partition (<abbr title=\"for example\">e.g.</abbr> <code>/dev/sda1</code>)"))
+
+for i, d in ipairs(devices) do
+       o:value(d, size[d] and "%s (%s MB)" % {d, size[d]})
+end
+
+o = mount:taboption("advanced", Value, "uuid", translate("UUID"),
+       translate("If specified, mount the device by its UUID instead of a fixed device node"))
+
+o = mount:taboption("advanced", Value, "label", translate("Label"),
+       translate("If specified, mount the device by the partition label instead of a fixed device node"))
+
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/leds.lua
new file mode 100644 (file)
index 0000000..312e742
--- /dev/null
@@ -0,0 +1,188 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("system", translate("<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"), translate("Customizes the behaviour of the device <abbr title=\"Light Emitting Diode\">LED</abbr>s if possible."))
+
+local sysfs_path = "/sys/class/leds/"
+local leds = {}
+
+local fs   = require "nixio.fs"
+local nu   = require "nixio.util"
+local util = require "luci.util"
+
+if fs.access(sysfs_path) then
+       leds = nu.consume((fs.dir(sysfs_path)))
+end
+
+if #leds == 0 then
+       return m
+end
+
+
+s = m:section(TypedSection, "led", "")
+s.anonymous = true
+s.addremove = true
+
+function s.parse(self, ...)
+       TypedSection.parse(self, ...)
+       os.execute("/etc/init.d/led enable")
+end
+
+
+s:option(Value, "name", translate("Name"))
+
+
+sysfs = s:option(ListValue, "sysfs", translate("<abbr title=\"Light Emitting Diode\">LED</abbr> Name"))
+for k, v in ipairs(leds) do
+       sysfs:value(v)
+end
+
+s:option(Flag, "default", translate("Default state")).rmempty = false
+
+
+trigger = s:option(ListValue, "trigger", translate("Trigger"))
+
+local triggers = fs.readfile(sysfs_path .. leds[1] .. "/trigger")
+for t in triggers:gmatch("[%w-]+") do
+       if t == "default-on" then
+               trigger:value(t, translatef("Always on (%s)", t))
+       elseif t == "none" then
+               trigger:value(t, translatef("Always off (%s)", t))
+       elseif t == "timer" then
+               trigger:value(t, translatef("Custom flash intervall (%s)", t))
+       elseif t == "netdev" then
+               trigger:value(t, translatef("Network device activity (%s)", t))
+       elseif t == "heartbeat" then
+               trigger:value(t, translatef("Heartbeat intervall (%s)", t))
+       elseif t == "nand-disk" then
+               trigger:value(t, translatef("Flashmemory write access (%s)", t))
+       elseif t == "mtd" then
+               trigger:value(t, translatef("Flashmemory write access (%s)", t))
+       elseif t:match("mmc[0-9]") then
+               trigger:value(t, translatef("Flashmemory write access (%s)", t))
+       elseif t:match("switch[0-9]") then
+               trigger:value(t, translatef("Switchport activity (%s)", t))
+       elseif t:match("phy[0-9]rx") then
+               trigger:value(t, translatef("Wi-Fi data reception (%s)", t))
+       elseif t:match("phy[0-9]tx") then
+               trigger:value(t, translatef("Wi-Fi data transmission (%s)", t))
+       elseif t:match("phy[0-9]assoc") then
+               trigger:value(t, translatef("Wi-Fi client association (%s)", t))
+       elseif t:match("phy[0-9]radio") then
+               trigger:value(t, translatef("Wi-Fi on (%s)", t))
+       elseif t:match("phy[0-9]tpt") then
+               trigger:value(t, translatef("Wi-Fi activity (%s)", t))
+       else
+               trigger:value(t, translate(t:gsub("-", "")))
+       end
+end
+
+
+delayon = s:option(Value, "delayon", translate ("On-State Delay"))
+delayon:depends("trigger", "timer")
+
+delayoff = s:option(Value, "delayoff", translate ("Off-State Delay"))
+delayoff:depends("trigger", "timer")
+
+
+dev = s:option(Value, "_net_dev", translate("Device"))
+dev.rmempty = true
+dev:value("")
+dev:depends("trigger", "netdev")
+
+function dev.cfgvalue(self, section)
+       return m.uci:get("system", section, "dev")
+end
+
+function dev.write(self, section, value)
+       m.uci:set("system", section, "dev", value)
+end
+
+function dev.remove(self, section)
+       local t = trigger:formvalue(section)
+       if t ~= "netdev" and t ~= "usbdev" then
+               m.uci:delete("system", section, "dev")
+       end
+end
+
+for k, v in pairs(luci.sys.net.devices()) do
+       if v ~= "lo" then
+               dev:value(v)
+       end
+end
+
+
+mode = s:option(MultiValue, "mode", translate("Trigger Mode"))
+mode.rmempty = true
+mode:depends("trigger", "netdev")
+mode:value("link", translate("Link On"))
+mode:value("tx", translate("Transmit"))
+mode:value("rx", translate("Receive"))
+
+
+usbdev = s:option(ListValue, "_usb_dev", translate("USB Device"))
+usbdev:depends("trigger", "usbdev")
+usbdev.rmempty = true
+usbdev:value("")
+
+function usbdev.cfgvalue(self, section)
+       return m.uci:get("system", section, "dev")
+end
+
+function usbdev.write(self, section, value)
+       m.uci:set("system", section, "dev", value)
+end
+
+function usbdev.remove(self, section)
+       local t = trigger:formvalue(section)
+       if t ~= "netdev" and t ~= "usbdev" then
+               m.uci:delete("system", section, "dev")
+       end
+end
+
+
+usbport = s:option(MultiValue, "port", translate("USB Ports"))
+usbport:depends("trigger", "usbport")
+usbport.rmempty = true
+usbport.widget = "checkbox"
+usbport.cast = "table"
+usbport.size = 1
+
+function usbport.valuelist(self, section)
+       local port, ports = nil, {}
+       for port in util.imatch(m.uci:get("system", section, "port")) do
+               local b, n = port:match("^usb(%d+)-port(%d+)$")
+               if not (b and n) then
+                       b, n = port:match("^(%d+)-(%d+)$")
+               end
+               if b and n then
+                       ports[#ports+1] = "usb%u-port%u" %{ tonumber(b), tonumber(n) }
+               end
+       end
+       return ports
+end
+
+function usbport.validate(self, value)
+       return type(value) == "string" and { value } or value
+end
+
+
+for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*/manufacturer") do
+       local id = p:match("%d+-%d+")
+       local mf = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/manufacturer") or "?"
+       local pr = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/product")      or "?"
+       usbdev:value(id, "%s (%s - %s)" %{ id, mf, pr })
+end
+
+for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do
+       local bus, port = p:match("usb(%d+)-port(%d+)")
+       if bus and port then
+               usbport:value("usb%u-port%u" %{ tonumber(bus), tonumber(port) },
+                             "Hub %u, Port %u" %{ tonumber(bus), tonumber(port) })
+       end
+end
+
+port_mask = s:option(Value, "port_mask", translate ("Switch Port Mask"))
+port_mask:depends("trigger", "switch0")
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua
new file mode 100644 (file)
index 0000000..99ddb09
--- /dev/null
@@ -0,0 +1,104 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2010-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2010 Manuel Munz <freifunk at somakoma dot de>
+-- Licensed to the public under the Apache License 2.0.
+
+local fs  = require "nixio.fs"
+local sys = require "luci.sys"
+
+local inits = { }
+local handled = false
+
+for _, name in ipairs(sys.init.names()) do
+       local index   = sys.init.index(name)
+       local enabled = sys.init.enabled(name)
+
+       if index < 255 then
+               inits["%02i.%s" % { index, name }] = {
+                       name    = name,
+                       index   = tostring(index),
+                       enabled = enabled
+               }
+       end
+end
+
+
+m = SimpleForm("initmgr", translate("Initscripts"), translate("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>"))
+m.reset = false
+m.submit = false
+
+
+s = m:section(Table, inits)
+
+i = s:option(DummyValue, "index", translate("Start priority"))
+n = s:option(DummyValue, "name", translate("Initscript"))
+
+
+e = s:option(Button, "endisable", translate("Enable/Disable"))
+
+e.render = function(self, section, scope)
+       if inits[section].enabled then
+               self.title = translate("Enabled")
+               self.inputstyle = "save"
+       else
+               self.title = translate("Disabled")
+               self.inputstyle = "reset"
+       end
+
+       Button.render(self, section, scope)
+end
+
+e.write = function(self, section)
+       if inits[section].enabled then
+               handled = true
+               inits[section].enabled = false
+               return sys.init.disable(inits[section].name)
+       else
+               handled = true
+               inits[section].enabled = true
+               return sys.init.enable(inits[section].name)
+       end
+end
+
+
+start = s:option(Button, "start", translate("Start"))
+start.inputstyle = "apply"
+start.write = function(self, section)
+       handled = true
+       sys.call("/etc/init.d/%s %s >/dev/null" %{ inits[section].name, self.option })
+end
+
+restart = s:option(Button, "restart", translate("Restart"))
+restart.inputstyle = "reload"
+restart.write = start.write
+
+stop = s:option(Button, "stop", translate("Stop"))
+stop.inputstyle = "remove"
+stop.write = start.write
+
+
+
+f = SimpleForm("rc", translate("Local Startup"),
+       translate("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."))
+
+t = f:field(TextValue, "rcs")
+t.forcewrite = true
+t.rmempty = true
+t.rows = 20
+
+function t.cfgvalue()
+       return fs.readfile("/etc/rc.local") or ""
+end
+
+function f.handle(self, state, data)
+       if not handled and state == FORM_VALID then
+               if data.rcs then
+                       fs.writefile("/etc/rc.local", data.rcs:gsub("\r\n", "\n"))
+               else
+                       fs.writefile("/etc/rc.local", "")
+               end
+       end
+       return true
+end
+
+return m, f
diff --git a/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua b/package/luci/modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua
new file mode 100644 (file)
index 0000000..33ec027
--- /dev/null
@@ -0,0 +1,271 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local sys   = require "luci.sys"
+local zones = require "luci.sys.zoneinfo"
+local fs    = require "nixio.fs"
+local conf  = require "luci.config"
+
+local m, s, o
+local has_ntpd = fs.access("/usr/sbin/ntpd")
+local has_zram = fs.access("/etc/init.d/zram")
+
+m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone."))
+m:chain("luci")
+
+
+s = m:section(TypedSection, "system", translate("System Properties"))
+s.anonymous = true
+s.addremove = false
+
+s:tab("general",  translate("General Settings"))
+s:tab("logging",  translate("Logging"))
+s:tab("language", translate("Language and Style"))
+s:tab("advanced", translate("Advanced"))
+if has_zram then s:tab("zram", translate("ZRam Settings")) end
+
+--
+-- System Properties
+--
+
+o = s:taboption("general", DummyValue, "_systime", translate("Local Time"))
+o.template = "admin_system/clock_status"
+
+
+o = s:taboption("general", Value, "hostname", translate("Hostname"))
+o.datatype = "hostname"
+
+function o.write(self, section, value)
+       Value.write(self, section, value)
+       sys.hostname(value)
+end
+
+
+o = s:taboption("general", ListValue, "zonename", translate("Timezone"))
+o:value("UTC")
+
+for i, zone in ipairs(zones.TZ) do
+       o:value(zone[1])
+end
+
+function o.write(self, section, value)
+       local function lookup_zone(title)
+               for _, zone in ipairs(zones.TZ) do
+                       if zone[1] == title then return zone[2] end
+               end
+       end
+
+       AbstractValue.write(self, section, value)
+       local timezone = lookup_zone(value) or "GMT0"
+       self.map.uci:set("system", section, "timezone", timezone)
+       fs.writefile("/etc/TZ", timezone .. "\n")
+end
+
+
+--
+-- Logging
+--
+
+o = s:taboption("logging", Value, "log_size", translate("System log buffer size"), translate("KiB"))
+o.optional    = true
+o.placeholder = 16
+o.datatype    = "uinteger"
+
+o = s:taboption("logging", Value, "log_ip", translate("External system log server"))
+o.optional    = true
+o.placeholder = "0.0.0.0"
+o.datatype    = "ip4addr"
+
+o = s:taboption("logging", Value, "log_port", translate("External system log server port"))
+o.optional    = true
+o.placeholder = 514
+o.datatype    = "port"
+
+o = s:taboption("logging", ListValue, "log_proto", translate("External system log server protocol"))
+o:value("udp", "UDP")
+o:value("tcp", "TCP")
+
+o = s:taboption("logging", Value, "log_file", translate("Write system log to file"))
+o.optional    = true
+o.placeholder = "/tmp/system.log"
+
+o = s:taboption("logging", ListValue, "conloglevel", translate("Log output level"))
+o:value(8, translate("Debug"))
+o:value(7, translate("Info"))
+o:value(6, translate("Notice"))
+o:value(5, translate("Warning"))
+o:value(4, translate("Error"))
+o:value(3, translate("Critical"))
+o:value(2, translate("Alert"))
+o:value(1, translate("Emergency"))
+
+o = s:taboption("logging", ListValue, "cronloglevel", translate("Cron Log Level"))
+o.default = 8
+o:value(5, translate("Debug"))
+o:value(8, translate("Normal"))
+o:value(9, translate("Warning"))
+
+
+--
+-- Zram Properties
+--
+if has_zram then
+       o = s:taboption("zram", Value, "zram_size_mb", translate("ZRam Size"), translate("Size of the ZRam device in megabytes"))
+       o.optional    = true
+       o.placeholder = 16
+       o.datatype    = "uinteger"
+       
+       o = s:taboption("zram", ListValue, "zram_comp_algo", translate("ZRam Compression Algorithm"))
+       o.optional    = true
+       o.placeholder = lzo
+       o:value("lzo", "lzo")
+       o:value("lz4", "lz4")
+       o:value("deflate", "deflate")
+       
+       o = s:taboption("zram", Value, "zram_comp_streams", translate("ZRam Compression Streams"), translate("Number of parallel threads used for compression"))
+       o.optional    = true
+       o.placeholder = 1
+       o.datatype    = "uinteger"
+end
+
+
+--
+-- Language & Style
+--
+
+o = s:taboption("language", ListValue, "_lang", translate("Language"))
+o:value("auto")
+
+local i18ndir = luci.i18n.i18ndir .. "base."
+for k, v in luci.util.kspairs(conf.languages) do
+       local file = i18ndir .. k:gsub("_", "-")
+       if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then
+               o:value(k, v)
+       end
+end
+
+function o.cfgvalue(...)
+       return m.uci:get("luci", "main", "lang")
+end
+
+function o.write(self, section, value)
+       m.uci:set("luci", "main", "lang", value)
+end
+
+
+o = s:taboption("language", ListValue, "_mediaurlbase", translate("Theme"))
+for k, v in pairs(conf.themes) do
+       if k:sub(1, 1) ~= "." then
+               o:value(v, k)
+       end
+end
+
+function o.cfgvalue(...)
+       return m.uci:get("luci", "main", "mediaurlbase")
+end
+
+function o.write(self, section, value)
+       m.uci:set("luci", "main", "mediaurlbase", value)
+end
+
+
+--
+-- Advanced
+--
+
+o = s:taboption("advanced", Value, "_pollinterval",
+       translate("Polling interval"),
+       translate("Polling interval for status queries in seconds"))
+o.datatype = "range(3, 20)"
+o.default = 5
+o:value("3")
+o:value("5")
+o:value("10")
+
+function o.cfgvalue(...)
+       return m.uci:get("luci", "main", "pollinterval")
+end
+
+function o.write(self, section, value)
+       m.uci:set("luci", "main", "pollinterval", value)
+end
+
+
+--
+-- NTP
+--
+
+if has_ntpd then
+
+       -- timeserver setup was requested, create section and reload page
+       if m:formvalue("cbid.system._timeserver._enable") then
+               m.uci:section("system", "timeserver", "ntp",
+                       {
+                       server = { "0.openwrt.pool.ntp.org", "1.openwrt.pool.ntp.org", "2.openwrt.pool.ntp.org", "3.openwrt.pool.ntp.org" }
+                       }
+               )
+
+               m.uci:save("system")
+               luci.http.redirect(luci.dispatcher.build_url("admin/system", arg[1]))
+               return
+       end
+
+       local has_section = false
+       m.uci:foreach("system", "timeserver", 
+               function(s) 
+                       has_section = true 
+                       return false
+       end)
+
+       if not has_section then
+
+               s = m:section(TypedSection, "timeserver", translate("Time Synchronization"))
+               s.anonymous   = true
+               s.cfgsections = function() return { "_timeserver" } end
+
+               x = s:option(Button, "_enable")
+               x.title      = translate("Time Synchronization is not configured yet.")
+               x.inputtitle = translate("Set up Time Synchronization")
+               x.inputstyle = "apply"
+
+       else
+               
+               s = m:section(TypedSection, "timeserver", translate("Time Synchronization"))
+               s.anonymous = true
+               s.addremove = false
+
+               o = s:option(Flag, "enable", translate("Enable NTP client"))
+               o.rmempty = false
+
+               function o.cfgvalue(self)
+                       return sys.init.enabled("sysntpd")
+                               and self.enabled or self.disabled
+               end
+
+               function o.write(self, section, value)
+                       if value == self.enabled then
+                               sys.init.enable("sysntpd")
+                               sys.call("env -i /etc/init.d/sysntpd start >/dev/null")
+                       else
+                               sys.call("env -i /etc/init.d/sysntpd stop >/dev/null")
+                               sys.init.disable("sysntpd")
+                       end
+               end
+
+
+               o = s:option(Flag, "enable_server", translate("Provide NTP server"))
+               o:depends("enable", "1")
+
+
+               o = s:option(DynamicList, "server", translate("NTP server candidates"))
+               o.datatype = "host(0)"
+               o:depends("enable", "1")
+
+               -- retain server list even if disabled
+               function o.remove() end
+
+       end
+end
+
+return m
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/applyreboot.htm
new file mode 100644 (file)
index 0000000..e235bd4
--- /dev/null
@@ -0,0 +1,53 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<html>
+       <head>
+               <title><%=luci.sys.hostname()%> - <%= title or translate("Rebooting...") %></title>
+               <link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
+               <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
+               <script type="text/javascript">//<![CDATA[
+                       var interval = window.setInterval(function() {
+                               var img = new Image();
+                               var target = ('https:' == document.location.protocol ? 'https://' : 'http://') + <%=addr and "'%s'" % addr or "window.location.host"%>;
+               
+                               img.onload = function() {
+                                       window.clearInterval(interval);
+                                       window.location.replace(target);
+                               };
+                               
+                               img.src = target + '<%=resource%>/icons/loading.gif?' + Math.random();
+                               
+                       }, 5000);
+               //]]></script>
+       </head>
+       <body>
+               <header>
+                       <div class="fill">
+                               <div class="container">
+                                       <p class="brand"><%=luci.sys.hostname() or "?"%></p>
+                               </div>
+                       </div>
+               </header>
+               &#160;
+               <div class="main">
+                       <div id="maincontainer">
+                               <div id="maincontent" class="container">
+                                       <h2 name="content" id="applyreboot-container" ><%:System%> - <%= title or translate("Rebooting...") %></h2>
+                                       <div class="cbi-section" id="applyreboot-section">
+                                               <div>
+                                                       <%= msg or translate("Changes applied.") %>
+                                               </div>
+                                               <div>
+                                                       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+                                                       <%:Waiting for changes to be applied...%>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </body>
+</html>
\ No newline at end of file
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm
new file mode 100644 (file)
index 0000000..c1f3361
--- /dev/null
@@ -0,0 +1,10 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=url("admin/system/flashops")%>"><%:Actions%></a></li>
+       <li class="cbi-tab"><a href="#"><%:Configuration%></a></li>
+</ul>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/clock_status.htm
new file mode 100644 (file)
index 0000000..796aa69
--- /dev/null
@@ -0,0 +1,56 @@
+<%+cbi/valueheader%>
+
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(-1, '<%=url('admin/system/clock_status')%>', null,
+               function(x, rv)
+               {
+                       var s = document.getElementById('<%=self.option%>-clock-status');
+                       if (s)
+                       {
+                               s.innerHTML = rv.timestring || '?';
+                       }
+               }
+       );
+
+       function sync_clock(btn)
+       {
+               btn.disabled = true;
+               btn.value    = '<%:Synchronizing...%>';
+
+               (new XHR()).post('<%=url('admin/system/clock_status')%>',
+                       { token: '<%=token%>', set: Math.floor((new Date()).getTime() / 1000) },
+                       function()
+                       {
+                               btn.disabled = false;
+                               btn.value    = '<%:Sync with browser%>';
+                       }
+               );
+
+               return false;
+       }
+
+       function btn_action(action)
+       {
+               if (action.name === "do_ntp_restart")
+               {
+                       new XHR.get('<%=luci.dispatcher.build_url("admin", "system", "ntp_restart")%>', null,
+                       function(x)
+                       {
+                               if (!x)
+                               {
+                                       return;
+                               }
+                       });
+               }
+       }
+
+//]]></script>
+
+<span id="<%=self.option%>-clock-status"><em><%:Collecting data...%></em></span>
+<input type="button" class="cbi-button cbi-button-apply" value="<%:Sync with browser%>" onclick="return sync_clock(this)" />
+
+<% if require("nixio.fs").access("/etc/init.d/sysntpd") then %>
+<input type="button" class="cbi-button cbi-button-apply" name="do_ntp_restart" value="<%:Sync with NTP-Server%>" onclick="btn_action(this)" />
+<% end %>
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/flashops.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/flashops.htm
new file mode 100644 (file)
index 0000000..8204d38
--- /dev/null
@@ -0,0 +1,137 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Flash operations%></h2>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab"><a href="#"><%:Actions%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=url('admin/system/flashops/backupfiles')%>"><%:Configuration%></a></li>
+</ul>
+
+<div class="cbi-section">
+       <h3><%:Backup%></h3>
+       <div class="cbi-section-descr"><%:Click "Generate archive" to download a tar archive of the current configuration files.%></div>
+       <div class="cbi-section-node">
+               <form class="inline" method="post" action="<%=url('admin/system/flashops/backup')%>">
+                       <input type="hidden" name="token" value="<%=token%>" />
+                       <div class="cbi-value<% if not reset_avail then %> cbi-value-last<% end %>">
+                               <label class="cbi-value-title" for="image"><%:Download backup%></label>
+                               <div class="cbi-value-field">
+                                       <input class="cbi-button cbi-button-action important" type="submit" name="backup" value="<%:Generate archive%>" />
+                               </div>
+                       </div>
+               </form>
+       </div>
+
+       <h3><%:Restore%></h3>
+       <div class="cbi-section-descr"><%:To restore configuration files, you can upload a previously generated backup archive here. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%></div>
+       <div class="cbi-section-node">
+               <% if reset_avail then %>
+               <form class="inline" method="post" action="<%=url('admin/system/flashops/reset')%>">
+                       <input type="hidden" name="token" value="<%=token%>" />
+                       <div class="cbi-value cbi-value-last">
+                               <label class="cbi-value-title"><%:Reset to defaults%></label>
+                               <div class="cbi-value-field">
+                                       <input onclick="return confirm('<%:Really reset all changes?%>')" class="cbi-button cbi-button-reset" type="submit" name="reset" value="<%:Perform reset%>" />
+                               </div>
+                       </div>
+               </form>
+               <% end %>
+               <form class="inline" method="post" action="<%=url('admin/system/flashops/restore')%>" enctype="multipart/form-data">
+                       <div class="cbi-value cbi-value-last">
+                               <label class="cbi-value-title" for="archive"><%:Restore backup%></label>
+                               <div class="cbi-value-field">
+                                       <input type="hidden" name="token" value="<%=token%>" />
+                                       <input type="file" name="archive" id="archive" />
+                                       <input type="submit" class="cbi-button cbi-button-action important" name="restore" value="<%:Upload archive...%>" />
+                                       <% if reset_avail then %>
+                                               <div class="cbi-value-description"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div>
+                                       <% end %>
+                               </div>
+                       </div>
+               </form>
+               <% if backup_invalid then %>
+                       <div class="cbi-section-error"><%:The backup archive does not appear to be a valid gzip file.%></div>
+               <% end %>
+       </div>
+
+       <% local mtds = require("luci.sys").mtds(); if #mtds > 0 then -%>
+       <h3><%:Save mtdblock contents%></h3>
+       <div class="cbi-section-descr"><%:Click "Save mtdblock" to download specified mtdblock file. (NOTE: THIS FEATURE IS FOR PROFESSIONALS! )%></div>
+       <div class="cbi-section-node">
+               <form class="inline" method="post" action="<%=url('admin/system/flashops/backupmtdblock')%>">
+                       <input type="hidden" name="token" value="<%=token%>" />
+                       <div class="cbi-value">
+                               <label class="cbi-value-title" for="mtdblockname"><%:Choose mtdblock%></label>
+                               <div class="cbi-value-field">
+                                       <select class="cbi-input-select" data-update="change" name="mtdblockname" id="mtdblockname">
+                                               <% for i, key in ipairs(mtds) do
+                                                       if key and key.name ~= "rootfs_data" then -%>
+                                                               <option<%=
+                                                                       attr("id", "mtdblockname-" .. key.name) ..
+                                                                       attr("value", key.name .. '/'.. key.size .. '/' .. i - 1) ..
+                                                                       attr("data-index", i) ..
+                                                                       ifattr(key.name == "linux" or key.name == "firmware", "selected", "selected")
+                                                               %>><%=pcdata(key.name)%></option>
+                                               <%      end
+                                                end -%>
+                                       </select>
+                               </div>
+                       </div>
+                       <div class="cbi-value cbi-value-last<% if reset_avail then %> cbi-value-error<% end %>">
+                               <label class="cbi-value-title" for="image"><%:Download mtdblock%></label>
+                               <div class="cbi-value-field">
+                                       <input type="submit" class="cbi-button cbi-button-action important" value="<%:Save mtdblock%>" />
+                               </div>
+                       </div>
+               </form>
+       </div>
+       <% end %>
+
+</div>
+
+<div class="cbi-section">
+       <h3><%:Flash new firmware image%></h3>
+       <% if upgrade_avail then %>
+               <form method="post" action="<%=url('admin/system/flashops/sysupgrade')%>" enctype="multipart/form-data">
+                       <input type="hidden" name="token" value="<%=token%>" />
+                       <div class="cbi-section-descr"><%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%></div>
+                       <div class="cbi-section-node">
+                               <div class="cbi-value">
+                                       <label class="cbi-value-title" for="keep"><%:Keep settings%></label>
+                                       <div class="cbi-value-field">
+                                               <input type="checkbox" name="keep" id="keep" checked="checked" />
+                                       </div>
+                               </div>
+                               <% if image_invalid then %>
+                               <div class="cbi-value">
+                                       <label class="cbi-value-title" for="force"><%:Force upgrade%></label>
+                                       <div class="cbi-value-field">
+                                               <input type="checkbox" name="force" id="force" />
+                                       </div>
+                                       <div class="cbi-section-error">
+                                               <%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %>
+                                               <%:Select 'Force upgrade' to flash the image even if the image format check fails. Use only if you are sure that the firmware is correct and meant for your device! %>
+                                       </div>
+                               </div>
+                               <% end %>
+                               <div class="cbi-value cbi-value-last<% if image_invalid then %> cbi-value-error<% end %>">
+                                       <label class="cbi-value-title" for="image"><%:Image%></label>
+                                       <div class="cbi-value-field">
+                                               <input type="file" name="image" id="image" />
+                                               <input type="submit" class="cbi-button cbi-button-action important" value="<%:Flash image...%>" />
+                                       </div>
+                               </div>
+                       </div>
+               </form>
+       <% else %>
+               <div class="cbi-section-descr"><%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%></div>
+       <% end %>
+</div>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/password.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/password.htm
new file mode 100644 (file)
index 0000000..6ca02a8
--- /dev/null
@@ -0,0 +1,59 @@
+<%+header%>
+
+<input type="password" aria-hidden="true" style="position:absolute; left:-10000px" />
+
+<script type="text/javascript">
+function checkPassword() {
+       var pw1 = document.body.querySelector('[name="pw1"]');
+       var view  = document.getElementById("passstrength");
+
+       var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
+       var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
+       var enoughRegex = new RegExp("(?=.{6,}).*", "g");
+       if (false == enoughRegex.test(pw1.value)) {
+               view.innerHTML = '<%:Password strength%>: <span style="color:red"><%:More Characters%></span>';
+       } else if (strongRegex.test(pw1.value)) {
+               view.innerHTML = '<%:Password strength%>: <span style="color:green"><%:Strong%></span>';
+       } else if (mediumRegex.test(pw1.value)) {
+               view.innerHTML = '<%:Password strength%>: <span style="color:orange"><%:Medium%></span>';
+       } else {
+               view.innerHTML = '<%:Password strength%>: <span style="color:red"><%:Weak%></span>';
+       }
+       return true;
+}
+</script>
+
+<div class="cbi-map">
+       <h2><%:Router Password%></h2>
+
+       <div class="cbi-section-descr">
+               <%:Changes the administrator password for accessing the device%>
+       </div>
+
+       <div class="cbi-section-node">
+               <div class="cbi-value">
+                       <label class="cbi-value-title" for="image"><%:Password%></label>
+                       <div class="cbi-value-field">
+                               <input type="password" name="pw1" onkeyup="checkPassword()"/><!--
+                               --><button class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" aria-label="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'">∗</button>
+                       </div>
+               </div>
+
+               <div class="cbi-value">
+                       <label class="cbi-value-title" for="image"><%:Confirmation%></label>
+                       <div class="cbi-value-field">
+                               <input type="password" name="pw2" onkeydown="if (event.keyCode === 13) submitPassword(event)" /><!--
+                               --><button class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" aria-label="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'">∗</button>
+                       <div id="passstrength" class="cbi-value-description"></div>
+                       </div>
+               </div>
+       </div>
+</div>
+
+<div class="cbi-page-actions">
+       <button class="btn cbi-button-apply" onclick="submitPassword(event)"><%:Save%></button>
+</div>
+
+<script type="application/javascript" src="<%=resource%>/view/system/password.js"></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/reboot.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/reboot.htm
new file mode 100644 (file)
index 0000000..d23664a
--- /dev/null
@@ -0,0 +1,62 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Reboot%></h2>
+
+<p><%:Reboots the operating system of your device%></p>
+
+<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
+       <p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
+<%- end -%>
+
+<hr />
+
+<input class="cbi-button cbi-button-action important" type="button" value="<%:Perform reboot%>" onclick="reboot(this)" />
+
+<p class="alert-message notice reboot-message" style="display:none">
+       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+       <span><%:Device is rebooting...%></span>
+</p>
+
+<script type="text/javascript">//<![CDATA[
+       var tries = 0,
+           message = document.querySelector('p.reboot-message'),
+           label = message.querySelector('span');
+
+       function ok() {
+               window.location = '<%=url("admin")%>';
+       }
+
+       function check() {
+               window.setTimeout(ping, 5000);
+       }
+
+       function ping() {
+               var img = document.createElement('img');
+
+               img.onload = ok;
+               img.onerror = check;
+               img.src = '<%=resource%>/icons/loading.gif?' + Math.random();
+
+               if (tries++ >= 30) {
+                       message.classList.remove('notice');
+                       message.classList.add('warning');
+                       label.innerHTML = '<%:Device unreachable! Still waiting for device...%>';
+               }
+       }
+
+       function reboot(button) {
+               button.style.display = 'none';
+               message.style.display = '';
+               label.innerHTML = '<%:Waiting for device...%>';
+
+               (new XHR()).post('<%=url("admin/system/reboot/call")%>', { token: '<%=token%>' }, check);
+       }
+//]]></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/sshkeys.htm
new file mode 100644 (file)
index 0000000..ac453f3
--- /dev/null
@@ -0,0 +1,46 @@
+<%+header%>
+
+<style type="text/css">
+       .cbi-dynlist {
+               max-width: 100%;
+       }
+
+       .cbi-dynlist .item > small {
+               display: block;
+               direction: rtl;
+               overflow: hidden;
+               text-align: left;
+       }
+
+       .cbi-dynlist .item > small > code {
+               direction: ltr;
+               white-space: nowrap;
+               unicode-bidi: bidi-override;
+       }
+
+       @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+               .cbi-dynlist .item > small { direction: ltr }
+       }
+</style>
+
+<div class="cbi-map">
+       <h2><%:SSH-Keys%></h2>
+
+       <div class="cbi-section-descr">
+               <%_Public keys allow for the passwordless SSH logins with a higher security compared to the use of plain passwords. In order to upload a new key to the device, paste an OpenSSH compatible public key line or drag a <code>.pub</code> file into the input field.%>
+       </div>
+
+       <div class="cbi-section-node">
+               <div class="cbi-dynlist" name="sshkeys">
+                       <p class="spinning"><%:Loading SSH keys…%></p>
+                       <div class="add-item" ondragover="dragKey(event)" ondrop="dropKey(event)">
+                               <input class="cbi-input-text" type="text" placeholder="<%:Paste or drag SSH key file…%>" onkeydown="if (event.keyCode === 13) addKey(event)" />
+                               <button class="cbi-button" onclick="addKey(event)"><%:Add key%></button>
+                       </div>
+               </div>
+       </div>
+</div>
+
+<script type="application/javascript" src="<%=resource%>/view/system/sshkeys.js"></script>
+
+<%+footer%>
diff --git a/package/luci/modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm b/package/luci/modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm
new file mode 100644 (file)
index 0000000..597ddfd
--- /dev/null
@@ -0,0 +1,65 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Flash Firmware%> - <%:Verify%></h2>
+<p>
+       <%_ 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. %>
+
+       <% if storage > 0 and size > storage then %>
+               <br /><br />
+               <div class="error"><%:It appears that you are trying to
+                       flash an image that does not fit into the flash memory, please verify
+                       the image file! %></div>
+       <% end %>
+
+</p>
+
+<div class="cbi-section">
+       <ul>
+               <li><%:Checksum%><br />
+               <%:MD5%>: <code><%=checksum%></code><br />
+               <%:SHA256%>: <code><%=sha256ch%></code></li>
+               <li><%:Size%>: <%
+                       local w = require "luci.tools.webadmin"
+                       write(w.byte_format(size))
+
+                       if storage > 0 then
+                               write(luci.i18n.translatef(
+                                       " (%s available)",
+                                       w.byte_format(storage)
+                               ))
+                       end
+               %></li>
+               <li><% if keep then %>
+                       <%:Configuration files will be kept%>
+               <% else %>
+                       <%:Caution: Configuration files will be erased%>
+               <% end %></li>
+               <% if force then %>
+               <li>
+                       <%:Caution: System upgrade will be forced%>
+               </li>
+               <% end %>
+       </ul>
+</div>
+
+<div class="cbi-page-actions right">
+       <form class="inline" action="<%=REQUEST_URI%>" method="post">
+               <input type="hidden" name="token" value="<%=token%>" />
+               <input type="hidden" name="step" value="2" />
+               <input type="hidden" name="keep" value="<%=keep and "1" or ""%>" />
+               <input type="hidden" name="force" value="<%=force and "1" or ""%>" />
+               <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
+               <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+       </form>
+</div>
+
+<%+footer%>
diff --git a/package/luci/protocols/luci-proto-3g/Makefile b/package/luci/protocols/luci-proto-3g/Makefile
new file mode 100644 (file)
index 0000000..d1d5455
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for 3G
+LUCI_DEPENDS:=+comgt
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua b/package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua
new file mode 100644 (file)
index 0000000..e05e3a4
--- /dev/null
@@ -0,0 +1,149 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache 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/tty[A-Z]*")
+       or nixio.fs.glob("/dev/tts/*")
+
+if device_suggestions then
+       local node
+       for node in device_suggestions do
+               device:value(node)
+       end
+end
+
+
+service = section:taboption("general", Value, "service", translate("Service Type"))
+service:value("", translate("-- Please choose --"))
+service:value("umts", "UMTS/GPRS")
+service:value("umts_only", translate("UMTS only"))
+service:value("gprs_only", translate("GPRS only"))
+service:value("evdo", "CDMA/EV-DO")
+
+
+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",
+               translate("Obtain IPv6-Address"))
+
+       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/package/luci/protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua b/package/luci/protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua
new file mode 100644 (file)
index 0000000..60d8e2e
--- /dev/null
@@ -0,0 +1,49 @@
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+
+local proto = netmod:register_protocol("3g")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("UMTS/GPRS/EV-DO")
+end
+
+function proto.ifname(self)
+       return "3g-" .. self.sid
+end
+
+function proto.get_interface(self)
+       return interface(self:ifname(), self)
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/3g.sh")
+end
+
+function proto.opkg_package(self)
+       return "comgt"
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+       if self:is_floating() then
+               return (netmod:ifnameof(ifc) == self:ifname())
+       else
+               return netmod.protocol.contains_interface(self, ifc)
+       end
+end
+
+netmod:register_pattern_virtual("^3g%-%w")
diff --git a/package/luci/protocols/luci-proto-hnet/Makefile b/package/luci/protocols/luci-proto-hnet/Makefile
new file mode 100644 (file)
index 0000000..10beb03
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2018 Florian Eckert <fe@dev.tdt.de>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for hnet
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua b/package/luci/protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua
new file mode 100644 (file)
index 0000000..2ed34fa
--- /dev/null
@@ -0,0 +1,37 @@
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local mode = section:taboption("general", ListValue, "mode", translate("Category"))
+mode:value("auto", translate("Automatic"))
+mode:value("external", translate("External"))
+mode:value("internal", translate("Internal"))
+mode:value("leaf", translate("Leaf"))
+mode:value("guest", translate("Guest"))
+mode:value("adhoc", translate("Ad-Hoc"))
+mode:value("hybrid", translate("Hybrid"))
+mode.default = "auto"
+
+
+
+local plen = section:taboption("advanced", Value, "ip6assign", translate("IPv6 assignment length"),
+       translate("Assign a part of given length of every public IPv6-prefix to this interface"))
+plen.datatype = "max(128)"
+plen.default = "64"
+
+section:taboption("advanced", Value, "link_id", translate("IPv6 assignment hint"),
+       translate("Assign prefix parts using this hexadecimal subprefix ID for this interface."))
+
+plen = section:taboption("advanced", Value, "ip4assign", translate("IPv4 assignment length"))
+plen.datatype = "max(32)"
+plen.default = "24"
+
+local o = section:taboption("advanced", Value, "dnsname", translate("DNS-Label / FQDN"))
+o.default = map.name
+
+luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
+
+o = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+o.placeholder = "1500"
+o.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua b/package/luci/protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua
new file mode 100644 (file)
index 0000000..f525061
--- /dev/null
@@ -0,0 +1,16 @@
+-- Copyright 2014 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local proto = luci.model.network:register_protocol("hnet")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("Automatic Homenet (HNCP)")
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/hnet.sh")
+end
+
+function proto.opkg_package(self)
+       return "hnet-full"
+end
diff --git a/package/luci/protocols/luci-proto-ipip/Makefile b/package/luci/protocols/luci-proto-ipip/Makefile
new file mode 100644 (file)
index 0000000..6af8564
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright 2016 Roger Pueyo Centelles <roger.pueyo@guifi.net>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for IPIP tunnels (IPv4-in-IPv4 RFC2003)
+LUCI_DEPENDS:=+ipip
+
+PKG_MAINTAINER:=Roger Pueyo Centelles <roger.pueyo@guifi.net>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua b/package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua
new file mode 100644 (file)
index 0000000..8817f18
--- /dev/null
@@ -0,0 +1,34 @@
+-- Copyright 2016 Roger Pueyo Centelles <roger.pueyo@guifi.net>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local peeraddr, ipaddr, ttl, tos, df, mtu, tunlink
+
+peeraddr = section:taboption("general", Value, "peeraddr", translate("Remote IPv4 address or FQDN"), translate("The IPv4 address or the fully-qualified domain name of the remote tunnel end."))
+peeraddr.optional = false
+peeraddr.datatype = "or(hostname,ip4addr)"
+
+ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IPv4 address"), translate("The local IPv4 address over which the tunnel is created (optional)."))
+ipaddr.optional = true
+ipaddr.datatype = "ip4addr"
+
+tunlink = section:taboption("general", Value, "tunlink", translate("Bind interface"), translate("Bind the tunnel to this interface (optional)."))
+ipaddr.optional = true
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"), translate("Specify an MTU (Maximum Transmission Unit) other than the default (1280 bytes)."))
+mtu.optional = true
+mtu.placeholder = 1280
+mtu.datatype = "range(68, 9200)"
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Override TTL"), translate("Specify a TTL (Time to Live) for the encapsulating packet other than the default (64)."))
+ttl.optional = true
+ttl.placeholder = 64
+ttl.datatype = "min(1)"
+
+tos = section:taboption("advanced", Value, "tos", translate("Override TOS"), translate("Specify a TOS (Type of Service)."))
+tos.optional = true
+tos.datatype = "range(0, 255)"
+
+df = section:taboption("advanced", Flag, "df", translate("Don't Fragment"), translate("Enable the DF (Don't Fragment) flag of the encapsulating packets."))
diff --git a/package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua b/package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua
new file mode 100644 (file)
index 0000000..04d2e78
--- /dev/null
@@ -0,0 +1,40 @@
+-- Copyright 2016 Roger Pueyo Centelles <roger.pueyo@guifi.net>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("ipip")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("IPv4-in-IPv4 (RFC2003)")
+end
+
+function proto.ifname(self)
+       return "ipip-" .. self.sid
+end
+
+function proto.opkg_package(self)
+       return "ipip"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/ipip.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+        return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^ipip%-%w")
diff --git a/package/luci/protocols/luci-proto-ipv6/Makefile b/package/luci/protocols/luci-proto-ipv6/Makefile
new file mode 100644 (file)
index 0000000..b0c8395
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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 DHCPv6/6in4/6to4/6rd/DS-Lite
+LUCI_DEPENDS:=@IPV6
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua
new file mode 100644 (file)
index 0000000..5a37582
--- /dev/null
@@ -0,0 +1,33 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+local tunlink, defaultroute, metric, mtu
+
+section:taboption("general", Value, "ip6prefix",
+       translate("NAT64 Prefix"), translate("Leave empty to autodetect"))
+
+tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link"))
+tunlink.template = "cbi/network_netlist"
+tunlink.nocreate = true
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("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)
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua
new file mode 100644 (file)
index 0000000..3c9f41f
--- /dev/null
@@ -0,0 +1,102 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local ipaddr, peeraddr, ip6addr, tunnelid, username, password
+local defaultroute, metric, ttl, mtu
+
+
+ipaddr = s:taboption("general", Value, "ipaddr",
+       translate("Local IPv4 address"),
+       translate("Leave empty to use the current WAN address"))
+
+ipaddr.datatype = "ip4addr"
+
+
+peeraddr = s:taboption("general", Value, "peeraddr",
+       translate("Remote IPv4 address"),
+       translate("This is usually the address of the nearest PoP operated by the tunnel broker"))
+
+peeraddr.rmempty  = false
+peeraddr.datatype = "ip4addr"
+
+
+ip6addr = s:taboption("general", Value, "ip6addr",
+       translate("Local IPv6 address"),
+       translate("This is the local endpoint address assigned by the tunnel broker, it usually ends with <code>...:2/64</code>"))
+
+ip6addr.datatype = "ip6addr"
+
+
+local ip6prefix = s:taboption("general", Value, "ip6prefix",
+       translate("IPv6 routed prefix"),
+       translate("This is the prefix routed to you by the tunnel broker for use by clients"))
+
+ip6prefix.datatype = "list(ip6addr)"
+
+
+local update = section:taboption("general", Flag, "_update",
+       translate("Dynamic tunnel"),
+       translate("Enable HE.net dynamic endpoint update"))
+
+update.enabled  = "1"
+update.disabled = "0"
+
+function update.write() end
+function update.remove() end
+function update.cfgvalue(self, section)
+       return (tonumber(m:get(section, "tunnelid")) ~= nil)
+               and self.enabled or self.disabled
+end
+
+
+tunnelid = section:taboption("general", Value, "tunnelid", translate("Tunnel ID"))
+tunnelid.datatype = "uinteger"
+tunnelid:depends("_update", update.enabled)
+
+
+username = section:taboption("general", Value, "username",
+       translate("HE.net username"),
+       translate("This is the plain username for logging into the account"))
+
+username:depends("_update", update.enabled)
+username.validate = function(self, val, sid)
+       if type(val) == "string" and #val == 32 and val:match("^[a-fA-F0-9]+$") then
+               return nil, translate("The HE.net endpoint update configuration changed, you must now use the plain username instead of the user ID!")
+       end
+       return val
+end
+
+
+password = section:taboption("general", Value, "password",
+       translate("HE.net password"),
+       translate("This is either the \"Update Key\" configured for the tunnel or the account password if no update key has been configured"))
+
+password.password = true
+password:depends("_update", update.enabled)
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("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)
+
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface"))
+ttl.placeholder = "64"
+ttl.datatype    = "range(1,255)"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua
new file mode 100644 (file)
index 0000000..708a9c5
--- /dev/null
@@ -0,0 +1,72 @@
+-- Copyright 2011-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local ipaddr, peeraddr, ip6addr, tunnelid, username, password
+local defaultroute, metric, ttl, mtu
+
+
+ipaddr = s:taboption("general", Value, "ipaddr",
+       translate("Local IPv4 address"),
+       translate("Leave empty to use the current WAN address"))
+
+ipaddr.datatype = "ip4addr"
+
+
+peeraddr = s:taboption("general", Value, "peeraddr",
+       translate("Remote IPv4 address"),
+       translate("This IPv4 address of the relay"))
+
+peeraddr.rmempty  = false
+peeraddr.datatype = "ip4addr"
+
+
+ip6addr = s:taboption("general", Value, "ip6prefix",
+       translate("IPv6 prefix"),
+       translate("The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"))
+
+ip6addr.rmempty  = false
+ip6addr.datatype = "ip6addr"
+
+
+ip6prefixlen = s:taboption("general", Value, "ip6prefixlen",
+       translate("IPv6 prefix length"),
+       translate("The length of the IPv6 prefix in bits"))
+
+ip6prefixlen.placeholder = "16"
+ip6prefixlen.datatype    = "range(0,128)"
+
+
+ip6prefixlen = s:taboption("general", Value, "ip4prefixlen",
+       translate("IPv4 prefix length"),
+       translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses."))
+
+ip6prefixlen.placeholder = "0"
+ip6prefixlen.datatype    = "range(0,32)"
+
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("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)
+
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface"))
+ttl.placeholder = "64"
+ttl.datatype    = "range(1,255)"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua
new file mode 100644 (file)
index 0000000..50a7069
--- /dev/null
@@ -0,0 +1,37 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local ipaddr, defaultroute, metric, ttl, mtu
+
+
+ipaddr = section:taboption("general", Value, "ipaddr",
+       translate("Local IPv4 address"),
+       translate("Leave empty to use the current WAN address"))
+
+ipaddr.datatype = "ip4addr"
+
+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)
+
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface"))
+ttl.placeholder = "64"
+ttl.datatype    = "range(1,255)"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
new file mode 100644 (file)
index 0000000..49281ee
--- /dev/null
@@ -0,0 +1,58 @@
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+
+local o = section:taboption("general", ListValue, "reqaddress",
+       translate("Request IPv6-address"))
+o:value("try")
+o:value("force")
+o:value("none", "disabled")
+o.default = "try"
+
+
+o = section:taboption("general", Value, "reqprefix",
+       translate("Request IPv6-prefix of length"))
+o:value("auto", translate("Automatic"))
+o:value("no", translate("disabled"))
+o:value("48")
+o:value("52")
+o:value("56")
+o:value("60")
+o:value("64")
+o.default = "auto"
+
+
+o = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+o.default = o.enabled
+
+
+o = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+o.default = o.enabled
+
+
+o = section:taboption("advanced", Value, "ip6prefix",
+       translate("Custom delegated IPv6-prefix"))
+o.dataype = "list(ip6addr)"
+
+
+o = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+o:depends("peerdns", "")
+o.datatype = "list(ip6addr)"
+o.cast     = "string"
+
+
+o = section:taboption("advanced", Value, "clientid",
+       translate("Client ID to send when requesting DHCP"))
+
+luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
+
+o = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+o.placeholder = "1500"
+o.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua
new file mode 100644 (file)
index 0000000..eca9750
--- /dev/null
@@ -0,0 +1,53 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local peeraddr, ip6addr
+local tunlink, defaultroute, metric, ttl, mtu
+
+
+
+
+peeraddr = section:taboption("general", Value, "peeraddr",
+       translate("DS-Lite AFTR address"))
+
+peeraddr.rmempty  = false
+peeraddr.datatype = "or(hostname,ip6addr)"
+
+ip6addr = section:taboption("general", Value, "ip6addr",
+       translate("Local IPv6 address"),
+       translate("Leave empty to use the current WAN address"))
+
+ip6addr.datatype = "ip6addr"
+
+
+tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link"))
+tunlink.template = "cbi/network_netlist"
+tunlink.nocreate = true
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("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)
+
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface"))
+ttl.placeholder = "64"
+ttl.datatype    = "range(1,255)"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua
new file mode 100644 (file)
index 0000000..37d4ec9
--- /dev/null
@@ -0,0 +1,88 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local peeraddr, ip6addr
+local tunlink, defaultroute, metric, ttl, mtu
+
+
+maptype = section:taboption("general", ListValue, "type", translate("Type"))
+maptype:value("map-e", "MAP-E")
+maptype:value("map-t", "MAP-T")
+maptype:value("lw4o6", "LW4over6")
+
+
+peeraddr = section:taboption("general", Value, "peeraddr",
+       translate("BR / DMR / AFTR"))
+
+peeraddr.rmempty  = false
+peeraddr.datatype = "ip6addr"
+
+
+ipaddr = section:taboption("general", Value, "ipaddr",
+       translate("IPv4 prefix"))
+ipaddr.datatype = "ip4addr"
+
+
+ip4prefixlen = s:taboption("general", Value, "ip4prefixlen",
+        translate("IPv4 prefix length"),
+        translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses."))
+
+ip4prefixlen.placeholder = "32"
+ip4prefixlen.datatype    = "range(0,32)"
+
+ip6addr = s:taboption("general", Value, "ip6prefix",
+        translate("IPv6 prefix"),
+        translate("The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"))
+
+ip6addr.rmempty  = false
+ip6addr.datatype = "ip6addr"
+
+
+ip6prefixlen = s:taboption("general", Value, "ip6prefixlen",
+        translate("IPv6 prefix length"),
+        translate("The length of the IPv6 prefix in bits"))
+
+ip6prefixlen.placeholder = "16"
+ip6prefixlen.datatype    = "range(0,64)"
+
+
+s:taboption("general", Value, "ealen",
+       translate("EA-bits length")).datatype = "range(0,48)"
+
+s:taboption("general", Value, "psidlen",
+       translate("PSID-bits length")).datatype = "range(0,16)"
+
+s:taboption("general", Value, "offset",
+       translate("PSID offset")).datatype = "range(0,16)"
+
+tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link"))
+tunlink.template = "cbi/network_netlist"
+tunlink.nocreate = true
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("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)
+
+
+ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface"))
+ttl.placeholder = "64"
+ttl.datatype    = "range(1,255)"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface"))
+mtu.placeholder = "1280"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua
new file mode 100644 (file)
index 0000000..0b329d8
--- /dev/null
@@ -0,0 +1,64 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+
+local _, p
+for _, p in ipairs({"dslite", "map", "464xlat"}) do
+
+       local proto = netmod:register_protocol(p)
+
+       function proto.get_i18n(self)
+               if p == "dslite" then
+                       return luci.i18n.translate("Dual-Stack Lite (RFC6333)")
+               elseif p == "map" then
+                       return luci.i18n.translate("MAP / LW4over6")
+               elseif p == "464xlat" then
+                       return luci.i18n.translate("464XLAT (CLAT)")
+               end
+       end
+
+       function proto.ifname(self)
+               return p .. "-" .. self.sid
+       end
+
+       function proto.opkg_package(self)
+               if p == "dslite" then
+                       return "ds-lite"
+               elseif p == "map" then
+                       return "map-t"
+               elseif p == "464xlat" then
+                       return "464xlat"
+               end
+       end
+
+       function proto.is_installed(self)
+               return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh")
+       end
+
+       function proto.is_floating(self)
+               return true
+       end
+
+       function proto.is_virtual(self)
+               return true
+       end
+
+       function proto.get_interfaces(self)
+               return nil
+       end
+
+       function proto.contains_interface(self, ifc)
+               return (netmod:ifnameof(ifc) == self:ifname())
+       end
+end
+
+netmod:register_pattern_virtual("^464%-%w")
+netmod:register_pattern_virtual("^ds%-%w")
+netmod:register_pattern_virtual("^map%-%w")
+
+netmod:register_error_code("AFTR_DNS_FAIL",            luci.i18n.translate("Unable to resolve AFTR host name"))
+netmod:register_error_code("INVALID_MAP_RULE", luci.i18n.translate("MAP rule is invalid"))
+netmod:register_error_code("NO_MATCHING_PD",   luci.i18n.translate("No matching prefix delegation"))
+netmod:register_error_code("UNSUPPORTED_TYPE", luci.i18n.translate("Unsupported MAP type"))
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua
new file mode 100644 (file)
index 0000000..2fd0b11
--- /dev/null
@@ -0,0 +1,50 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+
+local _, p
+for _, p in ipairs({"6in4", "6to4", "6rd"}) do
+
+       local proto = netmod:register_protocol(p)
+
+       function proto.get_i18n(self)
+               if p == "6in4" then
+                       return luci.i18n.translate("IPv6-in-IPv4 (RFC4213)")
+               elseif p == "6to4" then
+                       return luci.i18n.translate("IPv6-over-IPv4 (6to4)")
+               elseif p == "6rd" then
+                       return luci.i18n.translate("IPv6-over-IPv4 (6rd)")
+               end
+       end
+
+       function proto.ifname(self)
+               return p .. "-" .. self.sid
+       end
+
+       function proto.opkg_package(self)
+               return p
+       end
+
+       function proto.is_installed(self)
+               return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh")
+       end
+
+       function proto.is_floating(self)
+               return true
+       end
+
+       function proto.is_virtual(self)
+               return true
+       end
+
+       function proto.get_interfaces(self)
+               return nil
+       end
+
+       function proto.contains_interface(self, ifc)
+               return (netmod:ifnameof(ifc) == self:ifname())
+       end
+
+       netmod:register_pattern_virtual("^%s%%-%%w" % p)
+end
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua
new file mode 100644 (file)
index 0000000..0b45dad
--- /dev/null
@@ -0,0 +1,16 @@
+-- Copyright 2013 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local proto = luci.model.network:register_protocol("dhcpv6")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("DHCPv6 client")
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/dhcpv6.sh")
+end
+
+function proto.opkg_package(self)
+       return "odhcp6c"
+end
diff --git a/package/luci/protocols/luci-proto-ncm/Makefile b/package/luci/protocols/luci-proto-ncm/Makefile
new file mode 100644 (file)
index 0000000..5fd9c9a
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for NCM
+LUCI_DEPENDS:=+comgt-ncm
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
new file mode 100644 (file)
index 0000000..318db7e
--- /dev/null
@@ -0,0 +1,106 @@
+--[[
+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
+local ipv6, delay, defaultroute, metric, peerdns, dns
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local dev
+for dev in nixio.fs.glob("/dev/ttyUSB*") do
+    device:value(dev)
+end
+for dev in nixio.fs.glob("/dev/cdc-wdm*") do
+    device:value(dev)
+end
+
+mode = section:taboption("general", Value, "mode", translate("Service Type"))
+mode:value("", translate("Modem default"))
+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"))
+
+
+mode = section:taboption("general", Value, "pdptype", translate("IP Protocol"))
+mode.default = "IP"
+mode:value("IP", translate("IPv4"))
+mode:value("IPV4V6", translate("IPv4+IPv6"))
+mode:value("IPV6", translate("IPv6"))
+
+
+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
+
+
+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
+
+
+delay = section:taboption("advanced", Value, "delay",
+       translate("Modem init timeout"),
+       translate("Maximum amount of seconds to wait for the modem to become ready"))
+
+delay.placeholder = "10"
+delay.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"
+
diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
new file mode 100644 (file)
index 0000000..49abe23
--- /dev/null
@@ -0,0 +1,69 @@
+--[[
+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")
+
+netmod:register_error_code("CONFIGURE_FAILED", luci.i18n.translate("Configuration failed"))
+netmod:register_error_code("DISCONNECT_FAILED",        luci.i18n.translate("Disconnection attempt failed"))
+netmod:register_error_code("FINALIZE_FAILED",  luci.i18n.translate("Finalizing failed"))
+netmod:register_error_code("GETINFO_FAILED",   luci.i18n.translate("Modem information query failed"))
+netmod:register_error_code("INITIALIZE_FAILED",        luci.i18n.translate("Initialization failure"))
+netmod:register_error_code("SETMODE_FAILED",   luci.i18n.translate("Setting operation mode failed"))
+netmod:register_error_code("UNSUPPORTED_MODEM",        luci.i18n.translate("Unsupported modem"))
diff --git a/package/luci/protocols/luci-proto-openconnect/Makefile b/package/luci/protocols/luci-proto-openconnect/Makefile
new file mode 100644 (file)
index 0000000..31f5274
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for OpenConnect VPN
+LUCI_DEPENDS:=+openconnect
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
new file mode 100644 (file)
index 0000000..5adfcca
--- /dev/null
@@ -0,0 +1,90 @@
+-- Copyright 2014 Nikos Mavrogiannopoulos <nmav@gnutls.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local server, username, password, cert, ca
+local oc_cert_file, oc_key_file, oc_ca_file
+
+local ifc = net:get_interface():name()
+
+oc_cert_file = "/etc/openconnect/user-cert-" .. ifc .. ".pem"
+oc_key_file = "/etc/openconnect/user-key-" .. ifc .. ".pem"
+oc_ca_file = "/etc/openconnect/ca-" .. ifc .. ".pem"
+
+server = section:taboption("general", Value, "server", translate("VPN Server"))
+server.datatype = "host(0)"
+
+port = section:taboption("general", Value, "port", translate("VPN Server port"))
+port.placeholder = "443"
+port.datatype    = "port"
+
+
+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)
+
+section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash"))
+
+section:taboption("general", Value, "authgroup", translate("Auth Group"))
+
+username = section:taboption("general", Value, "username", translate("Username"))
+password = section:taboption("general", Value, "password", translate("Password"))
+password.password = true
+password2 = section:taboption("general", Value, "password2", translate("Password2"))
+password2.password = true
+
+
+cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)"))
+cert.template = "cbi/tvalue"
+cert.rows = 10
+
+function cert.cfgvalue(self, section)
+       return nixio.fs.readfile(oc_cert_file)
+end
+
+function cert.write(self, section, value)
+       value = value:gsub("\r\n?", "\n")
+       nixio.fs.writefile(oc_cert_file, value)
+end
+
+cert = section:taboption("advanced", Value, "userkey", translate("User key (PEM encoded)"))
+cert.template = "cbi/tvalue"
+cert.rows = 10
+
+function cert.cfgvalue(self, section)
+       return nixio.fs.readfile(oc_key_file)
+end
+
+function cert.write(self, section, value)
+       value = value:gsub("\r\n?", "\n")
+       nixio.fs.writefile(oc_key_file, value)
+end
+
+
+ca = section:taboption("advanced", Value, "ca", translate("CA certificate; if empty it will be saved after the first connection."))
+ca.template = "cbi/tvalue"
+ca.rows = 10
+
+function ca.cfgvalue(self, section)
+       return nixio.fs.readfile(oc_ca_file)
+end
+
+function ca.write(self, section, value)
+       value = value:gsub("\r\n?", "\n")
+       nixio.fs.writefile(oc_ca_file, value)
+end
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1406"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua b/package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua
new file mode 100644 (file)
index 0000000..0944c7f
--- /dev/null
@@ -0,0 +1,45 @@
+-- Copyright 2012 David Woodhouse
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("openconnect")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("OpenConnect (CISCO AnyConnect)")
+end
+
+function proto.ifname(self)
+       return "vpn-" .. self.sid
+end
+
+function proto.get_interface(self)
+       return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+       return "openconnect"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/openconnect.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+        return (netmod:ifnameof(ifc) == self:ifname())
+
+end
+
+netmod:register_pattern_virtual("^vpn%-%w")
diff --git a/package/luci/protocols/luci-proto-ppp/Makefile b/package/luci/protocols/luci-proto-ppp/Makefile
new file mode 100644 (file)
index 0000000..dd1859e
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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 PPP/PPPoE/PPPoA/PPtP
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua
new file mode 100644 (file)
index 0000000..604f019
--- /dev/null
@@ -0,0 +1,61 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local server, username, password
+local ipv6, defaultroute, metric, peerdns, dns, mtu
+
+
+server = section:taboption("general", Value, "server", translate("L2TP Server"))
+server.datatype = "or(host(1), hostport(1))"
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+if luci.model.network:has_ipv6() then
+       ipv6 = section:taboption("advanced", ListValue, "ipv6",
+               translate("Obtain IPv6-Address"),
+               translate("Enable IPv6 negotiation on the PPP link"))
+       ipv6:value("auto", translate("Automatic"))
+       ipv6:value("0", translate("Disabled"))
+       ipv6:value("1", translate("Manual"))
+       ipv6.default = "auto"
+end
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua
new file mode 100644 (file)
index 0000000..5f468bc
--- /dev/null
@@ -0,0 +1,127 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local device, username, password
+local ipv6, defaultroute, metric, peerdns, dns,
+         keepalive_failure, keepalive_interval, demand, mtu
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/tty*S*")
+       or nixio.fs.glob("/dev/tts/*")
+
+if device_suggestions then
+       local node
+       for node in device_suggestions do
+               device:value(node)
+       end
+end
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+
+if luci.model.network:has_ipv6() then
+       ipv6 = section:taboption("advanced", ListValue, "ipv6",
+               translate("Obtain IPv6-Address"),
+               translate("Enable IPv6 negotiation on the PPP link"))
+       ipv6:value("auto", translate("Automatic"))
+       ipv6:value("0", translate("Disabled"))
+       ipv6:value("1", translate("Manual"))
+       ipv6.default = "auto"
+end
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+       translate("LCP echo failure threshold"),
+       translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+       end
+end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:set(section, "keepalive", "0")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_failure.write        = keepalive_interval.write
+keepalive_failure.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"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua
new file mode 100644 (file)
index 0000000..004fd7e
--- /dev/null
@@ -0,0 +1,133 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local encaps, atmdev, vci, vpi, username, password
+local ipv6, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand, mtu
+
+
+encaps = section:taboption("general", ListValue, "encaps", translate("PPPoA Encapsulation"))
+encaps:value("vc", "VC-Mux")
+encaps:value("llc", "LLC")
+
+
+atmdev = section:taboption("general", Value, "atmdev", translate("ATM device number"))
+atmdev.default  = "0"
+atmdev.datatype = "uinteger"
+
+
+vci = section:taboption("general", Value, "vci", translate("ATM Virtual Channel Identifier (VCI)"))
+vci.default  = "35"
+vci.datatype = "uinteger"
+
+
+vpi = section:taboption("general", Value, "vpi", translate("ATM Virtual Path Identifier (VPI)"))
+vpi.default  = "8"
+vpi.datatype = "uinteger"
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+
+if luci.model.network:has_ipv6() then
+       ipv6 = section:taboption("advanced", ListValue, "ipv6",
+               translate("Obtain IPv6-Address"),
+               translate("Enable IPv6 negotiation on the PPP link"))
+       ipv6:value("auto", translate("Automatic"))
+       ipv6:value("0", translate("Disabled"))
+       ipv6:value("1", translate("Manual"))
+       ipv6.default = "auto"
+end
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+       translate("LCP echo failure threshold"),
+       translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+       end
+end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:set(section, "keepalive", "0")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_failure.write        = keepalive_interval.write
+keepalive_failure.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"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua
new file mode 100644 (file)
index 0000000..063d8c0
--- /dev/null
@@ -0,0 +1,135 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local username, password, ac, service
+local ipv6, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand, mtu
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+
+ac = section:taboption("general", Value, "ac",
+       translate("Access Concentrator"),
+       translate("Leave empty to autodetect"))
+
+ac.placeholder = translate("auto")
+
+
+service = section:taboption("general", Value, "service",
+       translate("Service Name"),
+       translate("Leave empty to autodetect"))
+
+service.placeholder = translate("auto")
+
+
+if luci.model.network:has_ipv6() then
+       ipv6 = section:taboption("advanced", ListValue, "ipv6",
+               translate("Obtain IPv6-Address"),
+               translate("Enable IPv6 negotiation on the PPP link"))
+       ipv6:value("auto", translate("Automatic"))
+       ipv6:value("0", translate("Disabled"))
+       ipv6:value("1", translate("Manual"))
+       ipv6.default = "auto"
+end
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+       translate("LCP echo failure threshold"),
+       translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+       end
+end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:set(section, "keepalive", "0")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_failure.write        = keepalive_interval.write
+keepalive_failure.remove       = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype    = "min(1)"
+
+
+host_uniq = section:taboption("advanced", Value, "host_uniq",
+       translate("Host-Uniq tag content"),
+       translate("Raw hex-encoded bytes. Leave empty unless your ISP require this"))
+
+host_uniq.placeholder = translate("auto")
+host_uniq.datatype    = "hexstring"
+
+
+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"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua
new file mode 100644 (file)
index 0000000..6a828ef
--- /dev/null
@@ -0,0 +1,106 @@
+-- Copyright 2011-2012 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local server, username, password
+local defaultroute, metric, peerdns, dns,
+       keepalive_failure, keepalive_interval, demand, mtu
+
+
+server = section:taboption("general", Value, "server", translate("VPN Server"))
+server.datatype = "host(0)"
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+
+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
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:set(section, "keepalive", "0")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_failure.write        = keepalive_interval.write
+keepalive_failure.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"
+
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1500"
+mtu.datatype    = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua
new file mode 100644 (file)
index 0000000..f87b30f
--- /dev/null
@@ -0,0 +1,82 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+
+local _, p
+for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp"}) do
+
+       local proto = netmod:register_protocol(p)
+
+       function proto.get_i18n(self)
+               if p == "ppp" then
+                       return luci.i18n.translate("PPP")
+               elseif p == "pptp" then
+                       return luci.i18n.translate("PPtP")
+               elseif p == "pppoe" then
+                       return luci.i18n.translate("PPPoE")
+               elseif p == "pppoa" then
+                       return luci.i18n.translate("PPPoATM")
+               elseif p == "l2tp" then
+                       return luci.i18n.translate("L2TP")
+               end
+       end
+
+       function proto.ifname(self)
+               return p .. "-" .. self.sid
+       end
+
+       function proto.opkg_package(self)
+               if p == "ppp" then
+                       return p
+               elseif p == "pptp" then
+                       return "ppp-mod-pptp"
+               elseif p == "pppoe" then
+                       return "ppp-mod-pppoe"
+               elseif p == "pppoa" then
+                       return "ppp-mod-pppoa"
+               elseif p == "l2tp" then
+                       return "xl2tpd"
+               end
+       end
+
+       function proto.is_installed(self)
+               if p == "pppoa" then
+                       return (nixio.fs.glob("/usr/lib/pppd/*/pppoatm.so")() ~= nil)
+               elseif p == "pppoe" then
+                       return (nixio.fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() ~= nil)
+               elseif p == "pptp" then
+                       return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil)
+               elseif p == "l2tp" then
+                       return nixio.fs.access("/lib/netifd/proto/l2tp.sh")
+               else
+                       return nixio.fs.access("/lib/netifd/proto/ppp.sh")
+               end
+       end
+
+       function proto.is_floating(self)
+               return (p ~= "pppoe")
+       end
+
+       function proto.is_virtual(self)
+               return true
+       end
+
+       function proto.get_interfaces(self)
+               if self:is_floating() then
+                       return nil
+               else
+                       return netmod.protocol.get_interfaces(self)
+               end
+       end
+
+       function proto.contains_interface(self, ifc)
+               if self:is_floating() then
+                       return (netmod:ifnameof(ifc) == self:ifname())
+               else
+                       return netmod.protocol.contains_interface(self, ifc)
+               end
+       end
+
+       netmod:register_pattern_virtual("^%s%%-%%w" % p)
+end
diff --git a/package/luci/protocols/luci-proto-pppossh/Makefile b/package/luci/protocols/luci-proto-pppossh/Makefile
new file mode 100644 (file)
index 0000000..1c0a63b
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2018 Florian Eckert <fe@dev.tdt.de>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for pppossh
+LUCI_DEPENDS:=+pppossh
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua b/package/luci/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua
new file mode 100644 (file)
index 0000000..e53262b
--- /dev/null
@@ -0,0 +1,122 @@
+-- Copyright (C) 2015 Yousong Zhou <yszhou4tech@gmail.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr
+
+sshuser = section:taboption("general", Value, "sshuser", translate("SSH username"))
+
+server = section:taboption("general", Value, "server", translate("SSH server address"))
+server.datatype = "host(0)"
+
+port = section:taboption("general", Value, "port", translate("SSH server port"))
+port.datatype = "port"
+port.optional = true
+port.default = 22
+
+ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options"))
+ssh_options.optional = true
+
+identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth"))
+identity.optional = true
+identity.datatype = "file"
+
+ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign"))
+ipaddr.datatype = "ipaddr"
+
+peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign"))
+peeraddr.datatype = "ipaddr"
+
+
+local ipv6, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand
+
+if luci.model.network:has_ipv6() then
+        ipv6 = section:taboption("advanced", Flag, "ipv6",
+                translate("Enable IPv6 negotiation on the PPP link"))
+        ipv6.default = ipv6.disabled
+end
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+       translate("LCP echo failure threshold"),
+       translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+       end
+end
+
+function keepalive_failure.write() end
+function keepalive_failure.remove() end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:set(section, "keepalive", "0")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype    = "min(1)"
+
+
+demand = section:taboption("advanced", Value, "demand",
+       translate("Inactivity timeout"),
+       translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
+
+demand.placeholder = "0"
+demand.datatype    = "uinteger"
diff --git a/package/luci/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua b/package/luci/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua
new file mode 100644 (file)
index 0000000..a0e2a51
--- /dev/null
@@ -0,0 +1,40 @@
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+
+local proto = netmod:register_protocol("pppossh")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("PPPoSSH")
+end
+
+function proto.ifname(self)
+       return "pppossh-" .. self.sid
+end
+
+function proto.opkg_package(self)
+       return "pppossh"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/pppossh.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+       return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^pppossh%-%w")
diff --git a/package/luci/protocols/luci-proto-qmi/Makefile b/package/luci/protocols/luci-proto-qmi/Makefile
new file mode 100644 (file)
index 0000000..8b2b5e3
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for QMI
+LUCI_DEPENDS:=+uqmi
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua b/package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua
new file mode 100644 (file)
index 0000000..e11201d
--- /dev/null
@@ -0,0 +1,45 @@
+-- Copyright 2016 David Thornley <david.thornley@touchstargroup.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local device, apn, pincode, username, password
+local auth, ipv6
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*")
+
+if device_suggestions then
+       local node
+       for node in device_suggestions do
+               device:value(node)
+       end
+end
+
+
+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
+
+auth = section:taboption("general", Value, "auth", translate("Authentication Type"))
+auth:value("", translate("-- Please choose --"))
+auth:value("both", "PAP/CHAP (both)")
+auth:value("pap", "PAP")
+auth:value("chap", "CHAP")
+auth:value("none", "NONE")
+
+if luci.model.network:has_ipv6() then
+    ipv6 = section:taboption("advanced", Flag, "ipv6", translate("Enable IPv6 negotiation"))
+    ipv6.default = ipv6.disabled
+end
diff --git a/package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua b/package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua
new file mode 100644 (file)
index 0000000..c414378
--- /dev/null
@@ -0,0 +1,55 @@
+-- Copyright 2016 David Thornley <david.thornley@touchstargroup.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("qmi")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("QMI Cellular")
+end
+
+function proto.ifname(self)
+       local base = netmod._M.protocol
+       local ifname = base.ifname(self) -- call base class "protocol.ifname(self)"
+
+               -- Note: ifname might be nil if the adapter could not be determined through ubus (default name to qmi-wan in this case)
+       if ifname == nil then
+               ifname = "qmi-" .. self.sid
+       end
+       return ifname
+end
+
+function proto.get_interface(self)
+       return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+       return "uqmi"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/qmi.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+        return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^qmi%-%w")
+
+netmod:register_error_code("CALL_FAILED",      luci.i18n.translate("Call failed"))
+netmod:register_error_code("NO_CID",           luci.i18n.translate("Unable to obtain client ID"))
+netmod:register_error_code("PLMN_FAILED",      luci.i18n.translate("Setting PLMN failed"))
diff --git a/package/luci/protocols/luci-proto-relay/Makefile b/package/luci/protocols/luci-proto-relay/Makefile
new file mode 100644 (file)
index 0000000..d9c04f7
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for relayd pseudo bridges
+LUCI_DEPENDS:=+relayd
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua b/package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua
new file mode 100644 (file)
index 0000000..3381d85
--- /dev/null
@@ -0,0 +1,68 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local ipaddr, network
+local forward_bcast, forward_dhcp, gateway, expiry, retry, table
+
+
+ipaddr = section:taboption("general", Value, "ipaddr",
+       translate("Local IPv4 address"),
+       translate("Address to access local relay bridge"))
+
+ipaddr.datatype = "ip4addr"
+
+
+network = s:taboption("general", DynamicList, "network", translate("Relay between networks"))
+network.widget = "checkbox"
+network.exclude = arg[1]
+network.template = "cbi/network_netlist"
+network.nocreate = true
+network.nobridges = true
+network.novirtual = true
+network:depends("proto", "relay")
+
+
+forward_bcast = section:taboption("advanced", Flag, "forward_bcast",
+       translate("Forward broadcast traffic"))
+
+forward_bcast.default = forward_bcast.enabled
+
+
+forward_dhcp = section:taboption("advanced", Flag, "forward_dhcp",
+       translate("Forward DHCP traffic"))
+
+forward_dhcp.default = forward_dhcp.enabled
+
+
+gateway = section:taboption("advanced", Value, "gateway",
+       translate("Use DHCP gateway"),
+       translate("Override the gateway in DHCP responses"))
+
+gateway.datatype = "ip4addr"
+gateway:depends("forward_dhcp", forward_dhcp.enabled)
+
+
+expiry = section:taboption("advanced", Value, "expiry",
+       translate("Host expiry timeout"),
+       translate("Specifies the maximum amount of seconds after which hosts are presumed to be dead"))
+
+expiry.placeholder = "30"
+expiry.datatype    = "min(1)"
+
+
+retry = section:taboption("advanced", Value, "retry",
+       translate("ARP retry threshold"),
+       translate("Specifies the maximum amount of failed ARP requests until hosts are presumed to be dead"))
+
+retry.placeholder = "5"
+retry.datatype    = "min(1)"
+
+
+table = section:taboption("advanced", Value, "table",
+       translate("Use routing table"),
+       translate("Override the table used for internal routes"))
+
+table.placeholder = "16800"
+table.datatype    = "range(0,65535)"
diff --git a/package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua b/package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua
new file mode 100644 (file)
index 0000000..3b811d4
--- /dev/null
@@ -0,0 +1,158 @@
+-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local device = luci.util.class(netmod.interface)
+
+netmod:register_pattern_virtual("^relay%-%w")
+
+local proto = netmod:register_protocol("relay")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("Relay bridge")
+end
+
+function proto.ifname(self)
+       return "relay-" .. self.sid
+end
+
+function proto.opkg_package(self)
+       return "relayd"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/etc/init.d/relayd")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.is_up(self)
+       local iface = self:get_interface()
+       return iface and iface:is_up() or false
+end
+
+function proto.get_interface(self)
+       return device(self.sid, self)
+end
+
+function proto.get_interfaces(self)
+       if not self.ifaces then
+               local ifs = { }
+               local _, net, dev
+
+               for net in luci.util.imatch(self:_get("network")) do
+                       net = netmod:get_network(net)
+                       if net then
+                               dev = net:get_interface()
+                               if dev then
+                                       ifs[dev:name()] = dev
+                               end
+                       end
+               end
+
+               for dev in luci.util.imatch(self:_get("ifname")) do
+                       dev = netmod:get_interface(dev)
+                       if dev then
+                               ifs[dev:name()] = dev
+                       end
+               end
+
+               self.ifaces = { }
+
+               for _, dev in luci.util.kspairs(ifs) do
+                       self.ifaces[#self.ifaces+1] = dev
+               end
+       end
+
+       return self.ifaces
+end
+
+function proto.uptime(self)
+       local net
+       local upt = 0
+       for net in luci.util.imatch(self:_get("network")) do
+               net = netmod:get_network(net)
+               if net then
+                       upt = math.max(upt, net:uptime())
+               end
+       end
+       return upt
+end
+
+function proto.errors(self)
+       return nil
+end
+
+
+function device.__init__(self, ifname, network)
+       self.ifname  = ifname
+       self.network = network
+end
+
+function device.type(self)
+       return "tunnel"
+end
+
+function device.is_up(self)
+       if self.network then
+               local _, dev
+               for _, dev in ipairs(self.network:get_interfaces()) do
+                       if not dev:is_up() then
+                               return false
+                       end
+               end
+               return true
+       end
+       return false
+end
+
+function device._stat(self, what)
+       local v = 0
+       if self.network then
+               local _, dev
+               for _, dev in ipairs(self.network:get_interfaces()) do
+                       v = v + dev[what](dev)
+               end
+       end
+       return v
+end
+
+function device.rx_bytes(self) return self:_stat("rx_bytes") end
+function device.tx_bytes(self) return self:_stat("tx_bytes") end
+function device.rx_packets(self) return self:_stat("rx_packets") end
+function device.tx_packets(self) return self:_stat("tx_packets") end
+
+function device.mac(self)
+       if self.network then
+               local _, dev
+               for _, dev in ipairs(self.network:get_interfaces()) do
+                       return dev:mac()
+               end
+       end
+end
+
+function device.ipaddrs(self)
+       local addrs = { }
+       if self.network then
+               addrs[1] = luci.ip.IPv4(self.network:_get("ipaddr"))
+       end
+       return addrs
+end
+
+function device.ip6addrs(self)
+       return { }
+end
+
+function device.shortname(self)
+       return "%s %q" % { luci.i18n.translate("Relay"), self.ifname }
+end
+
+function device.get_type_i18n(self)
+       return luci.i18n.translate("Relay Bridge")
+end
diff --git a/package/luci/protocols/luci-proto-vpnc/Makefile b/package/luci/protocols/luci-proto-vpnc/Makefile
new file mode 100644 (file)
index 0000000..0800e27
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# 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 VPNC VPN
+LUCI_DEPENDS:=+vpnc
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
+PKG_LICENSE:=Apache-2.0
+
+LUA_TARGET:=source
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua b/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua
new file mode 100644 (file)
index 0000000..3d85d02
--- /dev/null
@@ -0,0 +1,85 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local server, username, password, hexpassword
+local authgroup, interface, passgroup, hexpassgroup
+local domain, vendor, natt_mode, dh_group
+local pfs, enable_single_des, enable_no_enc
+local mtu, local_addr, local_port, dpd_idle
+local auth_mode, target_network, defaultroute
+
+local ifc = net:get_interface():name()
+
+server = section:taboption("general", Value, "server", translate("VPN Server"))
+server.datatype = "host(0)"
+
+port = section:taboption("general", Value, "local_addr", translate("VPN Local address"))
+port.placeholder = "0.0.0.0"
+port.datatype    = "ipaddr"
+
+port = section:taboption("general", Value, "local_port", translate("VPN Local port"))
+port.placeholder = "500"
+port.datatype    = "port"
+
+ifname = section:taboption("general", Value, "interface", translate("Output Interface"))
+ifname.template = "cbi/network_netlist"
+
+mtu = section:taboption("general", Value, "mtu", translate("MTU"))
+mtu.datatype = "uinteger"
+
+username = section:taboption("general", Value, "username", translate("Username"))
+password = section:taboption("general", Value, "password", translate("Password"))
+password.password = true
+hexpassword = section:taboption("general", Value, "hexpassword", translate("Obfuscated Password"))
+hexpassword.password = true
+authroup = section:taboption("general", Value, "authgroup", translate("Auth Group"))
+passgroup = section:taboption("general", Value, "passgroup", translate("Group Password"))
+passgroup.password = true
+hexpassgroup = section:taboption("general", Value, "hexpassgroup", translate("Obfuscated Group Password"))
+hexpassword.password= true
+
+domain = section:taboption("general", Value, "domain", translate("NT Domain"))
+vendor = section:taboption("general", Value, "vendor", translate("Vendor"))
+dh_group = section:taboption("general", ListValue, "dh_group", translate("IKE DH Group"))
+dh_group:value("dh2")
+dh_group:value("dh1")
+dh_group:value("dh5")
+
+pfs = section:taboption("general", ListValue, "pfs", translate("Perfect Forward Secrecy"))
+pfs:value("server")
+pfs:value("nopfs")
+pfs:value("dh1")
+pfs:value("dh2")
+pfs:value("dh5")
+
+natt_mode = section:taboption("general", ListValue, "natt_mode", translate("NAT-T Mode"))
+natt_mode:value("natt", translate("RFC3947 NAT-T mode"))
+natt_mode:value("none", translate("No NAT-T"))
+natt_mode:value("force-natt", translate("Force use of NAT-T"))
+natt_mode:value("cisco-udp", translate("Cisco UDP encapsulation"))
+
+enable_no_enc = section:taboption("general", Flag, "enable_no_enc",
+       translate("Disable Encryption"),
+       translate("If checked, encryption is disabled"))
+enable_no_enc.default = enable_no_enc.disabled
+
+enable_single_des = section:taboption("general", Flag, "enable_single_des",
+       translate("Enable Single DES"),
+       translate("If checked, 1DES is enabled"))
+enable_no_enc.default = enable_single_des.disabled
+
+dpd_idle = section:taboption("general", Value, "dpd_idle", translate("DPD Idle Timeout"))
+dpd_idle.datatype = "uinteger"
+dpd_idle.placeholder = "600"
+
+ifname = section:taboption("general", Value, "target_network", translate("Target network"))
+port.placeholder = "0.0.0.0/0"
+port.datatype    = "network"
+
+defaultroute = section:taboption("general", ListValue, "defaultroute",
+       translate("Default Route"),
+       translate("Set VPN as Default Route"))
+defaultroute:value("0", translate("No"))
+defaultroute:value("1", translate("Yes"))
diff --git a/package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua b/package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua
new file mode 100644 (file)
index 0000000..6c3136e
--- /dev/null
@@ -0,0 +1,46 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("vpnc")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("VPNC (CISCO 3000 (and others) VPN)")
+end
+
+function proto.ifname(self)
+       return "vpn-" .. self.sid
+end
+
+function proto.get_interface(self)
+       return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+       return "vpnc"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/vpnc.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+        return (netmod:ifnameof(ifc) == self:ifname())
+
+end
+
+netmod:register_pattern_virtual("^vpn%-%w")
+
diff --git a/package/luci/protocols/luci-proto-wireguard/Makefile b/package/luci/protocols/luci-proto-wireguard/Makefile
new file mode 100644 (file)
index 0000000..3540a74
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2016 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for WireGuard VPN
+LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools
+LUCI_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
new file mode 100644 (file)
index 0000000..64e256a
--- /dev/null
@@ -0,0 +1,179 @@
+-- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+
+local map, section, net = ...
+local ifname = net:get_interface():name()
+local private_key, listen_port
+local metric, mtu, preshared_key, description
+local peers, public_key, allowed_ips, endpoint, persistent_keepalive
+
+
+-- general ---------------------------------------------------------------------
+
+private_key = section:taboption(
+  "general",
+  Value,
+  "private_key",
+  translate("Private Key"),
+  translate("Required. Base64-encoded private key for this interface.")
+)
+private_key.password = true
+private_key.datatype = "and(base64,rangelength(44,44))"
+private_key.optional = false
+
+
+listen_port = section:taboption(
+  "general",
+  Value,
+  "listen_port",
+  translate("Listen Port"),
+  translate("Optional. UDP port used for outgoing and incoming packets.")
+)
+listen_port.datatype = "port"
+listen_port.placeholder = translate("random")
+listen_port.optional = true
+
+addresses = section:taboption(
+  "general",
+  DynamicList,
+  "addresses",
+  translate("IP Addresses"),
+  translate("Recommended. IP addresses of the WireGuard interface.")
+)
+addresses.datatype = "ipaddr"
+addresses.optional = true
+
+
+-- advanced --------------------------------------------------------------------
+
+metric = section:taboption(
+  "advanced",
+  Value,
+  "metric",
+  translate("Metric"),
+  translate("Optional")
+)
+metric.datatype = "uinteger"
+metric.placeholder = "0"
+metric.optional = true
+
+
+mtu = section:taboption(
+  "advanced",
+  Value,
+  "mtu",
+  translate("MTU"),
+  translate("Optional. Maximum Transmission Unit of tunnel interface.")
+)
+mtu.datatype = "range(1280,1420)"
+mtu.placeholder = "1420"
+mtu.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(
+  TypedSection,
+  "wireguard_" .. ifname,
+  translate("Peers"),
+  translate("Further information about WireGuard interfaces and peers " ..
+            "at <a href=\"http://wireguard.com\">wireguard.com</a>.")
+)
+peers.template = "cbi/tsection"
+peers.anonymous = true
+peers.addremove = true
+
+
+description = peers:option(
+  Value,
+  "description",
+  translate("Description"),
+  translate("Optional. Description of peer."))
+description.placeholder = "My Peer"
+description.datatype = "string"
+description.optional = true
+
+
+public_key = peers:option(
+  Value,
+  "public_key",
+  translate("Public Key"),
+  translate("Required. Base64-encoded public key of peer.")
+)
+public_key.datatype = "and(base64,rangelength(44,44))"
+public_key.optional = false
+
+
+preshared_key = peers:option(
+  Value,
+  "preshared_key",
+  translate("Preshared Key"),
+  translate("Optional. Base64-encoded preshared key. " ..
+            "Adds in an additional layer of symmetric-key " ..
+            "cryptography for post-quantum resistance.")
+)
+preshared_key.password = true
+preshared_key.datatype = "and(base64,rangelength(44,44))"
+preshared_key.optional = true
+
+
+allowed_ips = peers:option(
+  DynamicList,
+  "allowed_ips",
+  translate("Allowed IPs"),
+  translate("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.")
+)
+allowed_ips.datatype = "ipaddr"
+allowed_ips.optional = false
+
+
+route_allowed_ips = peers:option(
+  Flag,
+  "route_allowed_ips",
+  translate("Route Allowed IPs"),
+  translate("Optional. Create routes for Allowed IPs for this peer.")
+)
+
+
+endpoint_host = peers:option(
+  Value,
+  "endpoint_host",
+  translate("Endpoint Host"),
+  translate("Optional. Host of peer. Names are resolved " ..
+            "prior to bringing up the interface."))
+endpoint_host.placeholder = "vpn.example.com"
+endpoint_host.datatype = "host"
+
+
+endpoint_port = peers:option(
+  Value,
+  "endpoint_port",
+  translate("Endpoint Port"),
+  translate("Optional. Port of peer."))
+endpoint_port.placeholder = "51820"
+endpoint_port.datatype = "port"
+
+
+persistent_keepalive = peers:option(
+  Value,
+  "persistent_keepalive",
+  translate("Persistent Keep Alive"),
+  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.placeholder = "0"
diff --git a/package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua b/package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua
new file mode 100644 (file)
index 0000000..d693761
--- /dev/null
@@ -0,0 +1,42 @@
+-- Copyright 2016 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("wireguard")
+
+function proto.get_i18n(self)
+  return luci.i18n.translate("WireGuard VPN")
+end
+
+function proto.ifname(self)
+  return self.sid
+end
+
+function proto.get_interface(self)
+  return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+  return "wireguard-tools"
+end
+
+function proto.is_installed(self)
+  return nixio.fs.access("/lib/netifd/proto/wireguard.sh")
+end
+
+function proto.is_floating(self)
+  return true
+end
+
+function proto.is_virtual(self)
+  return true
+end
+
+function proto.get_interfaces(self)
+  return nil
+end
+
+function proto.contains_interface(self, ifc)
+   return (netmod:ifnameof(ifc) == self:ifname())
+end
diff --git a/package/luci/themes/luci-theme-bootstrap/Makefile b/package/luci/themes/luci-theme-bootstrap/Makefile
new file mode 100644 (file)
index 0000000..1bb205e
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# 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:=Bootstrap Theme (default)
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css
new file mode 100644 (file)
index 0000000..5b7baeb
--- /dev/null
@@ -0,0 +1,2232 @@
+/*!
+ * LuCI Bootstrap Theme
+ * Copyright 2012 Nut & Bolt
+ * By David Menting <david@nut-bolt.nl>
+ * Based on Bootstrap v1.4.0
+ *
+ * Copyright 2011 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+/* Reset.less
+ * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here      that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
+ * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
+
+* {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       box-sizing: border-box;
+}
+
+abbr[title], acronym[title] {
+       border-bottom: 1px dotted;
+       font-weight: inherit;
+       cursor: help;
+}
+
+table {
+       border-collapse: collapse;
+       border-spacing: 0;
+}
+
+ol, ul {
+       list-style: none;
+}
+
+html {
+       font-size: 100%;
+       -webkit-text-size-adjust: 100%;
+       -ms-text-size-adjust: 100%;
+}
+
+a:focus {
+       outline: thin dotted;
+}
+
+a:hover, a:active {
+       outline: 0;
+}
+
+footer,
+header,
+nav,
+section {
+       display: block;
+}
+
+sub, sup {
+       font-size: 75%;
+       line-height: 0;
+       position: relative;
+       vertical-align: baseline;
+}
+
+sup {
+       top: -0.5em;
+}
+
+sub {
+       bottom: -0.25em;
+}
+
+img {
+       -ms-interpolation-mode: bicubic;
+}
+
+button,
+input,
+select,
+option,
+textarea {
+       font-size: 100%;
+       margin: 0;
+       box-sizing: border-box;
+       vertical-align: baseline;
+       line-height: normal;
+}
+
+button::-moz-focus-inner, input::-moz-focus-inner {
+       border: 0;
+       padding: 0;
+}
+
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+       cursor: pointer;
+       -webkit-appearance: button;
+}
+
+button[disabled],
+input[type="button"][disabled],
+input[type="reset"][disabled],
+input[type="submit"][disabled] {
+       opacity: 0.7;
+}
+
+input[type="search"] {
+       -webkit-appearance: textfield;
+       box-sizing: content-box;
+}
+
+input[type="search"]::-webkit-search-decoration {
+       -webkit-appearance: none;
+}
+
+textarea {
+       overflow: auto;
+       vertical-align: top;
+}
+
+/*
+ * Scaffolding
+ * Basic and global styles for generating a grid system, structural layout, and page templates
+ * ------------------------------------------------------------------------------------------- */
+body {
+       background-color: #fff;
+       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+       font-size: 13px;
+       font-weight: normal;
+       line-height: 18px;
+       color: #404040;
+       padding: 58px 5px 5px 5px;
+}
+
+.container {
+       width: 100%;
+       max-width: 940px;
+       margin-left: auto;
+       margin-right: auto;
+       zoom: 1;
+}
+
+.container:before, .container:after {
+       display: table;
+       content: "";
+       zoom: 1;
+}
+
+.container:after {
+       clear: both;
+}
+
+a {
+       color: #0069d6;
+       text-decoration: none;
+       line-height: inherit;
+       font-weight: inherit;
+}
+
+a:hover {
+       color: #00438a;
+       text-decoration: underline;
+}
+
+.pull-right {
+       float: right;
+}
+
+.pull-left {
+       float: left;
+}
+
+.nowrap {
+       white-space: nowrap;
+}
+
+/* Typography.less
+ * Headings, body text, lists, code, and more for a versatile and durable typography system
+ * ---------------------------------------------------------------------------------------- */
+p,
+.cbi-map-descr,
+.cbi-section-descr,
+.table .tr.cbi-section-table-descr .th {
+       font-size: 13px;
+       font-weight: normal;
+       line-height: 18px;
+       margin-bottom: 9px;
+}
+
+p small {
+       font-size: 11px;
+       color: #bfbfbf;
+}
+
+h1,
+h2,
+h3, legend,
+h4,
+h5,
+h6 {
+       font-weight: bold;
+       color: #404040;
+}
+
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+       color: #bfbfbf;
+}
+
+h1 {
+       margin-bottom: 18px;
+       font-size: 30px;
+       line-height: 36px;
+}
+
+h1 small {
+       font-size: 18px;
+}
+
+h2 {
+       font-size: 24px;
+       line-height: 36px;
+}
+
+h2 small {
+       font-size: 14px;
+}
+
+h3, legend,
+h4,
+h5,
+h6 {
+       line-height: 36px;
+}
+
+h3, legend {
+       font-size: 18px;
+}
+
+h3 small {
+       font-size: 14px;
+}
+
+h4 {
+       font-size: 16px;
+}
+
+h4 small {
+       font-size: 12px;
+}
+
+h5 {
+       font-size: 14px;
+}
+
+h6 {
+       font-size: 13px;
+       color: #bfbfbf;
+       text-transform: uppercase;
+}
+
+ul, ol {
+       margin: 0 0 18px 25px;
+}
+
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+       margin-bottom: 0;
+}
+
+ul {
+       list-style: disc;
+}
+
+ol {
+       list-style: decimal;
+}
+
+li {
+       line-height: 18px;
+       color: #808080;
+}
+
+ul.unstyled {
+       list-style: none;
+       margin-left: 0;
+}
+
+dl {
+       margin-bottom: 18px;
+}
+
+dl dt, dl dd {
+       line-height: 18px;
+}
+
+dl dt {
+       font-weight: bold;
+}
+
+dl dd {
+       margin-left: 9px;
+}
+
+hr {
+       margin: 20px 0 19px;
+       border: 0;
+       border-bottom: 1px solid #eee;
+}
+
+strong {
+       font-style: inherit;
+       font-weight: bold;
+}
+
+em {
+       font-style: italic;
+       font-weight: inherit;
+       line-height: inherit;
+}
+
+small { font-size: 0.9em }
+
+address {
+       display: block;
+       line-height: 18px;
+       margin-bottom: 18px;
+}
+
+code, pre {
+       padding: 0 3px 2px;
+       font-family: Monaco, Andale Mono, Courier New, monospace;
+       font-size: 12px;
+       border-radius: 3px;
+}
+
+code {
+       background-color: #fee9cc;
+       color: rgba(0, 0, 0, 0.75);
+       padding: 1px 3px;
+}
+
+pre {
+       background-color: #f5f5f5;
+       display: block;
+       padding: 8.5px;
+       margin: 0 0 18px;
+       line-height: 18px;
+       font-size: 12px;
+       border: 1px solid #ccc;
+       border: 1px solid rgba(0, 0, 0, 0.15);
+       border-radius: 3px;
+       white-space: pre;
+       white-space: pre-wrap;
+       word-wrap: break-word;
+}
+
+/* Forms.less
+ * Base styles for various input types, form layouts, and states
+ * ------------------------------------------------------------- */
+form {
+       margin-bottom: 18px;
+}
+
+fieldset {
+       margin-bottom: 9px;
+       padding-top: 9px;
+}
+
+fieldset legend {
+       display: block;
+       font-size: 19.5px;
+       line-height: 1;
+       color: #404040;
+       padding-top: 20px;
+
+}
+form .cbi-tab-descr {
+       line-height: 18px;
+       margin-bottom: 18px;
+}
+
+form .clearfix,
+.cbi-value {
+       margin-bottom: 18px;
+       zoom: 1;
+}
+
+form .clearfix:before, form .clearfix:after,
+.cbi-value:before, .cbi-value:after  {
+       display: table;
+       content: "";
+       zoom: 1;
+}
+
+form .clearfix:after,
+.cbi-value:after {
+       clear: both;
+}
+
+label,
+input,
+select,
+textarea {
+       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+       font-size: 13px;
+       font-weight: normal;
+       line-height: normal;
+}
+
+form .input,
+.cbi-value-field {
+       margin-left: 200px;
+}
+
+.cbi-value label.cbi-value-title {
+       padding-top: 6px;
+       font-size: 13px;
+       line-height: 18px;
+       float: left;
+       width: 180px;
+       text-align: right;
+       color: #404040;
+}
+
+input[type=checkbox], input[type=radio] {
+       cursor: pointer;
+}
+
+label > input[type="checkbox"],
+label > input[type="radio"] {
+       vertical-align: bottom;
+       margin: 0;
+}
+
+input,
+textarea,
+select,
+.cbi-dropdown,
+.uneditable-input {
+       display: inline-block;
+       width: 210px;
+       height: 30px;
+       padding: 4px;
+       font-size: 13px;
+       line-height: 18px;
+       border: 1px solid #ccc;
+       border-radius: 3px;
+}
+
+.uneditable-input {
+       color: #808080;
+}
+
+.cbi-dropdown,
+.cbi-dynlist {
+       min-width: 210px;
+       max-width: 400px;
+       width: auto;
+}
+
+.cbi-dynlist {
+       height: auto;
+       min-height: 30px;
+       display: inline-flex;
+       flex-direction: column;
+}
+
+.cbi-dynlist > .item {
+       margin-bottom: 4px;
+       box-shadow: 0 0 2px #ccc;
+       background: #fff;
+       padding: 2px 2em 2px 4px;
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       position: relative;
+       pointer-events: none;
+}
+
+.cbi-dynlist > .item::after {
+       content: "×";
+       position: absolute;
+       display: inline-flex;
+       align-items: center;
+       top: -1px;
+       right: -1px;
+       bottom: -1px;
+       padding: 0 6px;
+       border: 1px solid #ccc;
+       border-radius: 0 3px 3px 0;
+       font-weight: bold;
+       color: #c44;
+       pointer-events: auto;
+}
+
+.cbi-dynlist > .add-item {
+       display: flex;
+}
+
+.cbi-dynlist > .add-item > input,
+.cbi-dynlist > .add-item > button {
+       flex: 1 1 auto;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+}
+
+select {
+       padding: initial;
+       background: #fff;
+       box-shadow: inset 0 -1px 3px rgba(0, 0, 0, 0.1);
+}
+
+input[type=checkbox], input[type=radio] {
+       width: auto;
+       height: auto;
+       padding: 0;
+       margin: 3px 0;
+       *margin-top: 0;
+       /* IE6-7 */
+
+       line-height: normal;
+       border: none;
+}
+
+input[type=file] {
+       background-color: #fff;
+       padding: initial;
+       border: initial;
+       line-height: initial;
+       box-shadow: none;
+       width: auto !important;
+}
+
+input[type=button], input[type=reset], input[type=submit] {
+       width: auto;
+       height: auto;
+}
+
+select[multiple] {
+       height: inherit;
+       background-color: #fff;
+}
+
+textarea {
+       height: auto !important;
+}
+
+.td > input[type=text],
+.td > input[type=password],
+.td > select,
+.td > .cbi-dropdown,
+.cbi-dynlist > .add-item > .cbi-dropdown {
+       width: 100%;
+}
+
+.uneditable-input {
+       background-color: #fff;
+       display: block;
+       border-color: #eee;
+       box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+       cursor: not-allowed;
+}
+
+::-moz-placeholder {
+       color: #bfbfbf;
+}
+
+::-webkit-input-placeholder {
+       color: #bfbfbf;
+}
+
+.item::after, .btn, .cbi-button, input, textarea {
+       transition: border linear 0.2s, box-shadow linear 0.2s;
+       box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.item:hover::after,
+.btn:hover, .cbi-button:hover,
+input:focus, textarea:focus {
+       outline: 0;
+       border-color: rgba(82, 168, 236, 0.8) !important;
+       box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
+       text-decoration: none;
+}
+
+input[type=file]:focus, input[type=checkbox]:focus, select:focus {
+       box-shadow: none;
+       outline: 1px dotted #666;
+}
+
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+       background-color: #f5f5f5;
+       border-color: #ddd;
+       pointer-events: none;
+       cursor: default;
+}
+
+select[readonly],
+textarea[readonly] {
+       pointer-events: auto;
+       cursor: auto;
+}
+
+.cbi-optionals,
+.cbi-section-create {
+       padding: 0 0 10px 10px;
+}
+
+.cbi-section-create {
+       margin: -3px;
+       display: inline-flex;
+       align-items: center;
+}
+
+.cbi-section-create > * {
+       margin: 3px;
+       flex: 1 1 auto;
+}
+
+.cbi-section-create > * > input {
+       width: 100%;
+}
+
+.actions,
+.cbi-page-actions {
+       background: #f5f5f5;
+       margin-bottom: 18px;
+       padding: 17px 20px 18px 17px;
+       border-top: 1px solid #ddd;
+       border-radius: 0 0 3px 3px;
+       text-align: right;
+}
+
+.actions .secondary-action,
+.cbi-page-actions .secondary-action{
+       float: right;
+}
+
+.actions .secondary-action a,
+.cbi-page-actions .secondary-action a {
+       line-height: 30px;
+}
+
+.actions .secondary-action a:hover,
+.cbi-page-actions .secondary-action a:hover {
+       text-decoration: underline;
+}
+
+.cbi-page-actions > form {
+       display: inline;
+       margin: 0;
+}
+
+.help-inline, .help-block {
+       font-size: 13px;
+       line-height: 18px;
+       color: #bfbfbf;
+}
+
+.help-inline {
+       padding-left: 5px;
+       *position: relative;
+       /* IE6-7 */
+
+       *top: -5px;
+       /* IE6-7 */
+
+}
+
+.help-block {
+       display: block;
+       max-width: 600px;
+}
+
+/*
+ * Tables.less
+ * Tables for, you guessed it, tabular data
+ * ---------------------------------------- */
+.tr { display: table-row; }
+.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
+.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
+
+.table {
+       display: table;
+       width: 100%;
+       margin-bottom: 18px;
+       padding: 0;
+       font-size: 13px;
+       border-collapse: collapse;
+       position: relative;
+}
+
+.table .th, .table .td {
+       display: table-cell;
+       vertical-align: middle; /* Fixme */
+       padding: 10px 10px 9px;
+       line-height: 18px;
+       text-align: left;
+}
+
+.table .tr:first-child .th {
+       padding-top: 9px;
+       font-weight: bold;
+       vertical-align: top;
+}
+
+.table .td, .table .th {
+       border-top: 1px solid #ddd;
+}
+
+.tr.placeholder {
+       height: calc(3em + 20px);
+}
+
+.tr.placeholder > .td {
+       position: absolute;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       text-align: center;
+       line-height: 3em;
+}
+
+/* Patterns.less
+ * Repeatable UI elements outside the base styles provided from the scaffolding
+ * ---------------------------------------------------------------------------- */
+header {
+       height: 40px;
+       position: fixed;
+       top: 0;
+       left: 0;
+       right: 0;
+       z-index: 800;
+       overflow: visible;
+       color: #BFBFBF;
+}
+
+header a {
+       color: #bfbfbf;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+header h3 a:hover, header .brand:hover, header ul .active > a {
+       background-color: #333;
+       background-color: rgba(255, 255, 255, 0.05);
+       color: #fff;
+       text-decoration: none;
+}
+
+header h3 {
+       position: relative;
+}
+
+header h3 a, header .brand {
+       float: left;
+       display: block;
+       padding: 8px 20px 12px;
+       margin-left: -20px;
+       color: #fff;
+       font-size: 20px;
+       font-weight: 200;
+       line-height: 1;
+}
+
+header p {
+       margin: 0;
+       line-height: 40px;
+}
+
+header .fill {
+       background-color: #222;
+       background-repeat: repeat-x;
+       background-image: linear-gradient(to bottom, #333333, #222222);
+       box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+       padding: 0 5px;
+}
+
+header div > ul, .nav {
+       display: block;
+       float: left;
+       margin: 0 10px 0 0;
+       position: relative;
+       left: 0;
+}
+
+header div > ul > li, .nav > li {
+       display: block;
+       float: left;
+}
+
+header div > ul a, .nav a {
+       display: block;
+       float: none;
+       padding: 10px 10px 11px;
+       line-height: 19px;
+       text-decoration: none;
+}
+
+header div > ul a:hover, .nav a:hover {
+       color: #fff;
+       text-decoration: none;
+}
+
+header div > ul .active > a, .nav .active > a {
+       background-color: #222;
+       background-color: rgba(0, 0, 0, 0.5);
+}
+
+header div > ul.secondary-nav, .nav.secondary-nav {
+       float: right;
+       margin-left: 10px;
+       margin-right: 0;
+}
+
+header div > ul.secondary-nav .menu-dropdown,
+.nav.secondary-nav .menu-dropdown,
+header div > ul.secondary-nav .dropdown-menu,
+.nav.secondary-nav .dropdown-menu {
+       right: 0;
+       border: 0;
+}
+
+header div > ul a.menu:hover,
+.nav a.menu:hover,
+header div > ul li.open .menu,
+.nav li.open .menu,
+header div > ul .dropdown-toggle:hover,
+.nav .dropdown-toggle:hover,
+header div > ul .dropdown.open .dropdown-toggle,
+.nav .dropdown.open .dropdown-toggle {
+       background: #444;
+       background: rgba(255, 255, 255, 0.05);
+}
+
+header div > ul .menu-dropdown,
+.nav .menu-dropdown,
+header div > ul .dropdown-menu,
+.nav .dropdown-menu {
+       background-color: #333;
+}
+
+header div > ul .menu-dropdown a.menu,
+.nav .menu-dropdown a.menu,
+header div > ul .dropdown-menu a.menu,
+.nav .dropdown-menu a.menu,
+header div > ul .menu-dropdown .dropdown-toggle,
+.nav .menu-dropdown .dropdown-toggle,
+header div > ul .dropdown-menu .dropdown-toggle,
+.nav .dropdown-menu .dropdown-toggle {
+       color: #fff;
+}
+
+header div > ul .menu-dropdown a.menu.open,
+.nav .menu-dropdown a.menu.open,
+header div > ul .dropdown-menu a.menu.open,
+.nav .dropdown-menu a.menu.open,
+header div > ul .menu-dropdown .dropdown-toggle.open,
+.nav .menu-dropdown .dropdown-toggle.open,
+header div > ul .dropdown-menu .dropdown-toggle.open,
+.nav .dropdown-menu .dropdown-toggle.open {
+       background: #444;
+       background: rgba(255, 255, 255, 0.05);
+}
+
+header div > ul .menu-dropdown li a,
+.nav .menu-dropdown li a,
+header div > ul .dropdown-menu li a,
+.nav .dropdown-menu li a {
+       color: #999;
+       text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
+}
+
+header div > ul .menu-dropdown li a:hover,
+.nav .menu-dropdown li a:hover,
+header div > ul .dropdown-menu li a:hover,
+.nav .dropdown-menu li a:hover {
+       background-color: #191919;
+       background-repeat: repeat-x;
+       background-image: linear-gradient(to bottom, #292929, #191919);
+       color: #fff;
+}
+
+header div > ul .menu-dropdown .active a,
+.nav .menu-dropdown .active a,
+header div > ul .dropdown-menu .active a,
+.nav .dropdown-menu .active a {
+       color: #fff;
+}
+
+header div > ul .menu-dropdown .divider,
+.nav .menu-dropdown .divider,
+header div > ul .dropdown-menu .divider,
+.nav .dropdown-menu .divider {
+       background-color: #222;
+       border-color: #444;
+}
+
+header ul .menu-dropdown li a, header ul .dropdown-menu li a {
+       padding: 4px 15px;
+}
+
+li.menu, .dropdown {
+       position: relative;
+}
+
+a.menu:after, .dropdown-toggle:after {
+       width: 0;
+       height: 0;
+       display: inline-block;
+       content: "&darr;";
+       text-indent: -99999px;
+       vertical-align: top;
+       margin-top: 8px;
+       margin-left: 4px;
+       border-left: 4px solid transparent;
+       border-right: 4px solid transparent;
+       border-top: 4px solid #fff;
+       opacity: 0.5;
+}
+
+.menu-dropdown, .dropdown-menu {
+       background-color: #fff;
+       float: left;
+       position: absolute;
+       top: 40px;
+       left: -9999px;
+       z-index: 900;
+       min-width: 160px;
+       max-width: 220px;
+       _width: 160px;
+       margin-left: 0;
+       margin-right: 0;
+       padding: 6px 0;
+       zoom: 1;
+       border-color: #999;
+       border-color: rgba(0, 0, 0, 0.2);
+       border-style: solid;
+       border-width: 0 1px 1px;
+       border-radius: 0 0 6px 6px;
+       box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+       background-clip: padding-box;
+}
+
+.menu-dropdown li, .dropdown-menu li {
+       float: none;
+       display: block;
+       background-color: transparent;
+}
+
+.menu-dropdown .divider, .dropdown-menu .divider {
+       height: 1px;
+       margin: 5px 0;
+       overflow: hidden;
+       background-color: #eee;
+       border-bottom: 1px solid #fff;
+}
+
+header .dropdown-menu a, .dropdown-menu a {
+       display: block;
+       padding: 4px 15px;
+       clear: both;
+       font-weight: normal;
+       line-height: 18px;
+       color: #808080;
+       text-shadow: 0 1px 0 #fff;
+}
+
+header .dropdown-menu a:hover,
+.dropdown-menu a:hover,
+header .dropdown-menu a.hover,
+.dropdown-menu a.hover {
+       background-color: #ddd;
+       background-repeat: repeat-x;
+       background-image: linear-gradient(to bottom, #eee, #ddd);
+       color: #404040;
+       text-decoration: none;
+       box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
+}
+
+.open .menu,
+.dropdown.open .menu,
+.open .dropdown-toggle,
+.dropdown.open .dropdown-toggle {
+       color: #fff;
+       background: #ccc;
+       background: rgba(0, 0, 0, 0.3);
+}
+
+.open .menu-dropdown,
+.dropdown.open .menu-dropdown,
+.open .dropdown-menu,
+.dropdown.open .dropdown-menu {
+       left: 0;
+}
+
+.dropdown:hover ul.dropdown-menu {
+       left: 0;
+}
+
+.dropdown-menu .dropdown-menu {
+         position: absolute;
+         left: 159px;
+}
+
+.dropdown-menu li {
+         position: relative;
+}
+
+.tabs, .cbi-tabmenu {
+       margin: 0 -5px 18px;
+       padding: 0 2px;
+       list-style: none;
+       display: flex;
+       flex-wrap: wrap;
+       background: linear-gradient(#fff 28px, #ddd 28px);
+       background-size: 1px 29px;
+       background-position: left bottom;
+}
+
+.tabs > li, .cbi-tabmenu > li {
+       flex: 0 1 auto;
+       display: flex;
+       align-items: center;
+       height: 25px;
+       max-width: 48%;
+       margin: 4px 2px 0 2px;
+       background: #fff;
+       border: 1px solid #ddd;
+       border-bottom: none;
+       border-radius: 4px 4px 0 0;
+       color: #0069d6;
+}
+
+.tabs > li > a, .cbi-tabmenu > li > a {
+       padding: 4px 6px;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       color: inherit;
+       text-decoration: none;
+       border-radius: 4px 4px 0 0;
+       line-height: 25px;
+       outline: none;
+}
+
+.tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
+       background: linear-gradient(#fff 90%, #ddd 100%);
+}
+
+.tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
+       color: #999;
+       background: linear-gradient(#eee 90%, #ddd 100%);
+}
+
+.cbi-tab-disabled[data-errors]::after {
+       content: attr(data-errors);
+       background: #c43c35;
+       color: #fff;
+       min-width: 12px;
+       line-height: 14px;
+       border-radius: 7px;
+       text-align: center;
+       margin: 0 5px 0 0;
+       padding: 1px 2px;
+}
+
+.cbi-tabmenu.map {
+       margin: 0;
+}
+
+.cbi-tabmenu.map > li {
+       font-size: 16.5px;
+       font-weight: bold;
+}
+
+.cbi-tabcontainer > fieldset.cbi-section[id] > legend {
+       display: none;
+}
+
+.tabs .menu-dropdown, .tabs .dropdown-menu {
+       top: 35px;
+       border-width: 1px;
+       border-radius: 0 6px 6px 6px;
+}
+
+.tabs a.menu:after, .tabs .dropdown-toggle:after {
+       border-top-color: #999;
+       margin-top: 15px;
+       margin-left: 5px;
+}
+
+.tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
+       border-color: #999;
+}
+
+.tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
+       border-top-color: #555;
+}
+
+.tab-content > .tab-pane,
+.tab-content > div {
+       display: none;
+}
+
+.tab-content > .active {
+       display: block;
+}
+
+.breadcrumb {
+       padding: 7px 14px;
+       margin: 0 0 18px;
+       background-color: #f5f5f5;
+       background-repeat: repeat-x;
+       background-image: linear-gradient(to bottom, #fff, #f5f5f5);
+       border: 1px solid #ddd;
+       border-radius: 3px;
+       box-shadow: inset 0 1px 0 #fff;
+}
+
+.breadcrumb li {
+       display: inline;
+       text-shadow: 0 1px 0 #fff;
+}
+
+.breadcrumb .divider {
+       padding: 0 5px;
+       color: #bfbfbf;
+}
+
+.breadcrumb .active a {
+       color: #404040;
+}
+
+footer {
+       margin-top: 17px;
+       padding-top: 17px;
+       border-top: 1px solid #eee;
+}
+
+#modal_overlay {
+       position: fixed;
+       top: 0;
+       bottom: 0;
+       left: -10000px;
+       right: 10000px;
+       background: rgba(0, 0, 0, 0.7);
+       z-index: 900;
+       overflow-y: scroll;
+       -webkit-overflow-scrolling: touch;
+       transition: opacity .125s ease-in;
+       opacity: 0;
+       visibility: hidden;
+}
+
+.modal {
+       width: 90%;
+       margin: 5em auto;
+       display: flex;
+       flex-wrap: wrap;
+       min-height: 32px;
+       max-width: 600px;
+       align-items: center;
+       border-radius: 3px;
+       background: #fff;
+       box-shadow: 0 0 3px #444;
+       padding: 1em 1em .5em 1em;
+       max-height: 2400px;
+       min-width: 270px;
+}
+
+.modal > * {
+       flex-basis: 100%;
+       line-height: normal;
+       margin-bottom: .5em;
+}
+
+.modal > pre,
+.modal > textarea {
+       white-space: pre-wrap;
+       overflow: auto;
+}
+
+body.modal-overlay-active {
+       overflow: hidden;
+       height: 100vh;
+}
+
+body.modal-overlay-active #modal_overlay {
+       left: 0;
+       right: 0;
+       opacity: 1;
+       visibility: visible;
+}
+
+.btn.danger,
+.alert-message.danger,
+.btn.danger:hover,
+.alert-message.danger:hover,
+.btn.error,
+.alert-message.error,
+.btn.error:hover,
+.alert-message.error:hover,
+.btn.success,
+.alert-message.success,
+.btn.success:hover,
+.alert-message.success:hover,
+.btn.info,
+.alert-message.info,
+.btn.info:hover,
+.alert-message.info:hover,
+.cbi-tooltip.error, .cbi-tooltip.success, .cbi-tooltip.info {
+       color: #fff;
+}
+
+.btn .close, .alert-message .close {
+       font-family: Arial, sans-serif;
+       line-height: 18px;
+}
+
+.btn.danger,
+.alert-message.danger,
+.btn.error,
+.alert-message.error,
+.cbi-tooltip.error {
+       background: linear-gradient(to bottom, #ee5f5b, #c43c35) repeat-x;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+       border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+
+.btn.success, .alert-message.success, .cbi-tooltip.success {
+       background: linear-gradient(to bottom, #62c462, #57a957) repeat-x;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+       border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+
+.btn.info, .alert-message.info, .cbi-tooltip.info {
+       background: linear-gradient(to bottom, #5bc0de, #339bb9) repeat-x;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+       border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+
+.alert-message.notice, .cbi-tooltip.notice {
+       background: linear-gradient(to bottom, #efefef, #fefefe) repeat-x;
+       text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);
+       border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+
+.item::after,
+.btn,
+.cbi-button {
+       cursor: pointer;
+       display: inline-block;
+       background: linear-gradient(#fff, #fff 25%, #e6e6e6) no-repeat;
+       padding: 5px 14px 6px;
+       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+       color: #333;
+       font-size: 13px;
+       line-height: normal;
+       border: 1px solid #ccc;
+       border-bottom-color: #bbb;
+       border-radius: 4px;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn:focus,
+.cbi-button:focus {
+       outline: 1px dotted #666;
+}
+
+.cbi-input-invalid,
+.cbi-input-invalid.cbi-dropdown,
+.cbi-input-invalid.cbi-dropdown:not([open]) > ul > li,
+.cbi-value-error input {
+       color: #f00;
+       border-color: #f00;
+}
+
+.cbi-button-positive,
+.cbi-button-fieldadd,
+.cbi-button-add,
+.cbi-button-save {
+       border-color: #4a4;
+       color: #4a4;
+}
+
+.cbi-button-neutral,
+.cbi-button-download,
+.cbi-button-find,
+.cbi-button-link,
+.cbi-button-up,
+.cbi-button-down {
+       color: #444;
+}
+
+.btn.primary,
+.cbi-button-action,
+.cbi-button-apply,
+.cbi-button-reload,
+.cbi-button-edit {
+       border-color: #0069d6;
+       color: #0069d6;
+}
+
+.cbi-button-negative,
+.cbi-section-remove .cbi-button,
+.cbi-button-reset,
+.cbi-button-remove {
+       border-color: #c44;
+       color: #c44;
+}
+
+.cbi-page-actions::after {
+       display: table;
+       content: "";
+       clear: both;
+}
+
+.cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-save):not(.cbi-button-reset) {
+       float: left;
+       margin-right: .4em;
+}
+
+.btn.primary,
+.cbi-button-action.important,
+.cbi-page-actions .cbi-button-apply,
+.cbi-section-actions .cbi-button-edit {
+       color: #fff;
+       background: linear-gradient(to bottom, #0069d6, #0049d6) no-repeat;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.cbi-button-positive.important,
+.cbi-page-actions .cbi-button-save {
+       color: #fff;
+       background: linear-gradient(to bottom, #4a4, #484) no-repeat;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.cbi-button-negative.important {
+       color: #fff;
+       background: linear-gradient(to bottom, #c44, #c00) no-repeat;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.cbi-page-actions .cbi-button-apply + .cbi-button-save {
+       background: linear-gradient(#fff, #fff 25%, #e6e6e6);
+       text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.75);
+       color: #4a4;
+}
+
+.cbi-dropdown {
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       display: inline-flex;
+       padding: 0;
+       cursor: pointer;
+       height: auto;
+       background: linear-gradient(#fff 0%, #e9e8e6 100%);
+       position: relative;
+       color: #404040;
+}
+
+.cbi-dynlist > .item:focus,
+.cbi-dropdown:focus {
+       outline: 2px solid #4b6e9b;
+}
+
+.cbi-dropdown > ul {
+       margin: 0 !important;
+       padding: 0;
+       list-style: none;
+       overflow-x: hidden;
+       overflow-y: auto;
+       display: flex;
+       width: 100%;
+}
+
+.cbi-dropdown > ul.preview {
+       display: none;
+}
+
+.cbi-dropdown > .open,
+.cbi-dropdown > .more {
+       flex-grow: 0;
+       flex-shrink: 0;
+       display: flex;
+       flex-direction: column;
+       justify-content: center;
+       text-align: center;
+       line-height: 2em;
+       padding: 0 .25em;
+}
+
+.cbi-dropdown > .more,
+.cbi-dropdown > ul > li[placeholder] {
+       color: #777;
+       font-weight: bold;
+       text-shadow: 1px 1px 0px #fff;
+       display: none;
+       justify-content: center;
+}
+
+.cbi-dropdown > ul > li {
+       display: none;
+       padding: .25em;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       flex-shrink: 1;
+       flex-grow: 1;
+       align-items: center;
+       align-self: center;
+       color: #404040;
+       min-height: 20px;
+}
+
+.cbi-dropdown > ul > li .hide-open { display: block; display: initial; }
+.cbi-dropdown > ul > li .hide-close { display: none; }
+
+.cbi-dropdown > ul > li[display]:not([display="0"]) {
+       border-left: 1px solid #ccc;
+}
+
+.cbi-dropdown[empty] > ul {
+       max-width: 1px;
+}
+
+.cbi-dropdown > ul > li > form {
+       display: none;
+       margin: 0;
+       padding: 0;
+       pointer-events: none;
+}
+
+.cbi-dropdown > ul > li img {
+       vertical-align: middle;
+       margin-right: .25em;
+}
+
+.cbi-dropdown > ul > li > form > input[type="checkbox"] {
+       margin: 0;
+}
+
+.cbi-dropdown > ul > li input[type="text"] {
+       height: 20px;
+}
+
+.cbi-dropdown[open] {
+       position: relative;
+}
+
+.cbi-dropdown[open] > ul.dropdown {
+       display: block;
+       background: #f6f6f5;
+       border: 1px solid #918e8c;
+       box-shadow: 0 0 4px #918e8c;
+       position: absolute;
+       z-index: 1100;
+       max-width: none;
+       min-width: 100%;
+       width: auto;
+       transition: max-height .125s ease-in;
+}
+
+.cbi-dropdown > ul > li[display],
+.cbi-dropdown[open] > ul.preview,
+.cbi-dropdown[open] > ul.dropdown > li,
+.cbi-dropdown[multiple] > ul > li > label,
+.cbi-dropdown[multiple][open] > ul.dropdown > li,
+.cbi-dropdown[multiple][more] > .more,
+.cbi-dropdown[multiple][empty] > .more {
+       flex-grow: 1;
+       display: flex;
+}
+
+.cbi-dropdown[empty] > ul > li,
+.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
+.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
+       display: block;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
+.cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block; display: initial; }
+
+.cbi-dropdown[open] > ul.dropdown > li {
+       border-bottom: 1px solid #ccc;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[selected] {
+       background: #b0d0f0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li.focus {
+       background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+}
+
+.cbi-dropdown[open] > ul.dropdown > li:last-child {
+       margin-bottom: 0;
+       border-bottom: none;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[unselectable] {
+       opacity: 0.7;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
+       width: 100%;
+}
+
+.cbi-dropdown[disabled] {
+       pointer-events: none;
+       opacity: .6;
+}
+
+input[type="text"] + .cbi-button,
+input[type="password"] + .cbi-button,
+select + .cbi-button {
+       border-radius: 0 3px 3px 0;
+       border-color: #ccc;
+       margin-left: -2px;
+       padding: 0 6px;
+       vertical-align: top;
+       height: 30px;
+       font-size: 14px;
+       line-height: 28px;
+}
+
+select + .cbi-button {
+       border-left-color: transparent;
+}
+
+.cbi-title-ref {
+       color: #37c;
+}
+
+.cbi-title-ref::after {
+       content: "➙";
+}
+
+.cbi-tooltip-container {
+       cursor: help;
+}
+
+.cbi-tooltip {
+       position: absolute;
+       z-index: 1000;
+       left: -1000px;
+       box-shadow: 0 0 2px #ccc;
+       border-radius: 3px;
+       background: #fff;
+       white-space: pre;
+       padding: 2px 5px;
+       opacity: 0;
+       transition: opacity .25s ease-in;
+}
+
+.cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
+       left: auto;
+       opacity: 1;
+       transition: opacity .25s ease-in;
+}
+
+.cbi-progressbar {
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       position: relative;
+       min-width: 170px;
+       height: 20px;
+       margin: 4px 0;
+       background: #f9f9f9;
+}
+
+.cbi-progressbar > div {
+       background: #90c0e0;
+       height: 100%;
+       transition: width .25s ease-in;
+       width: 0%;
+}
+
+.cbi-progressbar::after {
+       position: absolute;
+       bottom: 0;
+       top: 0;
+       right: 0;
+       left: 0;
+       text-align: center;
+       text-shadow: 0 0 2px #fff;
+       content: attr(title);
+       white-space: pre;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.zonebadge .cbi-tooltip {
+       padding: 1px;
+       background: inherit;
+       margin: -1.6em 0 0 -5px;
+       border-radius: 3px;
+       pointer-events: none;
+       box-shadow: 0 0 3px #444;
+}
+
+.zonebadge .cbi-tooltip > * {
+       margin: 1px;
+}
+
+.zone-forwards {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.zone-forwards > * {
+       flex: 1 1 40%;
+       padding: 1px;
+}
+
+.zone-forwards > span {
+       flex-basis: 10%;
+       text-align: center;
+}
+
+.zone-forwards .zone-src,
+.zone-forwards .zone-dest {
+       display: flex;
+       flex-direction: column;
+}
+
+.btn.active, .btn:active {
+       box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn.disabled {
+       cursor: default;
+       background-image: none;
+       opacity: 0.65;
+       box-shadow: none;
+}
+
+.btn[disabled] {
+       cursor: default;
+       background-image: none;
+       opacity: 0.65;
+       box-shadow: none;
+}
+
+.btn.large {
+       font-size: 15px;
+       line-height: normal;
+       padding: 9px 14px 9px;
+       border-radius: 6px;
+}
+
+.btn.small {
+       padding: 7px 9px 7px;
+       font-size: 11px;
+}
+
+button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
+       padding: 0;
+       border: 0;
+}
+
+.close {
+       float: right;
+       color: #000;
+       font-size: 20px;
+       font-weight: bold;
+       line-height: 13.5px;
+       text-shadow: 0 1px 0 #fff;
+       opacity: 0.25;
+}
+
+.close:hover {
+       color: #000;
+       text-decoration: none;
+       opacity: 0.4;
+}
+
+.alert-message {
+       position: relative;
+       padding: 7px 15px;
+       margin-bottom: 18px;
+       color: #404040;
+       background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x;
+       text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+       border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+       text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+       border-width: 1px;
+       border-style: solid;
+       border-radius: 4px;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+}
+
+.alert-message .close {
+       margin-top: 1px;
+       *margin-top: 0;
+}
+
+.alert-message a {
+       font-weight: bold;
+       color: #404040;
+}
+
+.alert-message.danger p a,
+.alert-message.error p a,
+.alert-message.success p a,
+.alert-message.info p a {
+       color: #fff;
+}
+
+.alert-message h5 {
+       line-height: 18px;
+}
+
+.alert-message p {
+       margin-bottom: 0;
+}
+
+.alert-message div {
+       margin-top: 5px;
+       margin-bottom: 2px;
+       line-height: 28px;
+}
+
+.label {
+       padding: 1px 3px 2px;
+       font-size: 9.75px;
+       font-weight: bold;
+       color: #fff !important;
+       text-transform: uppercase;
+       white-space: nowrap;
+       background-color: #bfbfbf;
+       border-radius: 3px;
+       text-shadow: none;
+}
+
+a.label:link,
+a.label:visited {
+       color: #fff;
+}
+
+a.label:hover {
+       text-decoration: none;
+}
+
+.label.important {
+       background-color: #c43c35;
+}
+
+.label.warning {
+       background-color: #f89406;
+}
+
+.label.success {
+       background-color: #46a546;
+}
+
+.label.notice {
+       background-color: #62cffc;
+}
+
+/* LuCI specific items */
+.hidden { display: none }
+
+#xhr_poll_status {
+         cursor: pointer;
+}
+
+form.inline { display: inline; margin-bottom: 0; }
+
+header .pull-right { padding-top: 8px; }
+
+#modemenu li:last-child span.divider { display: none }
+
+#syslog {  width: 100%; }
+
+.cbi-section-table .tr:hover .td,
+.cbi-section-table .tr:hover .th,
+.cbi-section-table .tr:hover::before {
+       background-color: #f5f5f5;
+}
+
+.cbi-section-table .tr.cbi-section-table-descr .th {
+       font-weight: normal;
+}
+
+.cbi-section-table-titles.named::before,
+.cbi-section-table-descr.named::before,
+.cbi-section-table-row[data-title]::before {
+       content: attr(data-title) " ";
+       display: table-cell;
+       padding: 10px 10px 9px;
+       line-height: 18px;
+       font-weight: bold;
+       vertical-align: middle;
+}
+
+.cbi-section-table-titles.named::before,
+.cbi-section-table-descr.named::before,
+.cbi-section-table-row[data-title]::before {
+       border-top: 1px solid #ddd;
+}
+
+.left { text-align: left !important; }
+.right { text-align: right !important; }
+.center { text-align: center !important; }
+.top { vertical-align: top !important; }
+.middle { vertical-align: middle !important; }
+.bottom { vertical-align: bottom !important; }
+
+.cbi-value-field { line-height: 1.5em; }
+
+.cbi-value-field input[type=checkbox],
+.cbi-value-field input[type=radio] {
+       margin-top: 8px;
+       margin-right: 6px;
+}
+
+table table td,
+.cbi-value-field table td {
+       border: none;
+}
+
+.table.cbi-section-table input[type="password"],
+.table.cbi-section-table input[type="text"],
+.table.cbi-section-table textarea,
+.table.cbi-section-table select {
+       width: 100%;
+}
+
+.table.cbi-section-table .td.cbi-section-table-cell {
+       white-space: nowrap;
+       text-align: right;
+}
+
+.table.cbi-section-table .td.cbi-section-table-cell select {
+       width: inherit;
+}
+
+.td.cbi-section-actions {
+       text-align: right;
+       vertical-align: middle;
+}
+
+.td.cbi-section-actions > * {
+       display: flex;
+}
+
+.td.cbi-section-actions > * > *,
+.td.cbi-section-actions > * > form > * {
+       flex: 1 1 4em;
+       margin: 0 1px;
+}
+
+.td.cbi-section-actions > * > form {
+       display: inline-flex;
+       margin: 0;
+}
+
+.table.valign-middle .td {
+       vertical-align: middle;
+}
+
+.cbi-rowstyle-2,
+.tr.table-titles,
+.tr.cbi-section-table-titles {
+       background: #f9f9f9;
+}
+
+.cbi-value-description {
+       background-image: url(/luci-static/resources/cbi/help.gif);
+       background-position: .25em .2em;
+       background-repeat: no-repeat;
+       margin: .25em 0 0 0;
+       padding: 0 0 0 1.7em;
+}
+
+.cbi-section-error {
+       border: 1px solid #f00;
+       border-radius: 3px;
+       background-color: #fce6e6;
+       padding: 5px;
+       margin-bottom: 18px;
+}
+
+.cbi-section-error ul { margin: 0 0 0 20px; }
+
+.cbi-section-error ul li {
+       color: #f00;
+       font-weight: bold;
+}
+
+.ifacebox {
+       background-color: #fff;
+       border: 1px solid #ccc;
+       margin: 0 10px;
+       text-align: center;
+       white-space: nowrap;
+       background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
+       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+       border-radius: 4px;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+       display: inline-flex;
+       flex-direction: column;
+       line-height: 1.2em;
+       min-width: 100px;
+}
+
+.ifacebox .ifacebox-head {
+       border-bottom: 1px solid #ccc;
+       padding: 2px;
+       background: #eee;
+}
+
+.ifacebox .ifacebox-head.active {
+       background: #90c0e0;
+}
+
+.ifacebox .ifacebox-body {
+       padding: .25em;
+}
+
+.ifacebadge {
+       display: inline-block;
+       flex-direction: row;
+       white-space: nowrap;
+       background-color: #fff;
+       border: 1px solid #ccc;
+       padding: 2px;
+       background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
+       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+       border-radius: 4px;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+       cursor: default;
+       line-height: 1.2em;
+}
+
+.ifacebadge img {
+       width: 16px;
+       height: 16px;
+       vertical-align: middle;
+}
+
+.ifacebadge-active {
+       border-color: #000;
+       font-weight: bold;
+}
+
+.network-status-table {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox {
+       margin: .5em;
+       flex-grow: 1;
+}
+
+.network-status-table .ifacebox-body {
+       display: flex;
+       flex-direction: column;
+       height: 100%;
+       text-align: left;
+}
+
+.network-status-table .ifacebox-body > * {
+       margin: .25em;
+}
+
+.network-status-table .ifacebox-body > span {
+       flex: 10 10 auto;
+       height: 100%;
+}
+
+.network-status-table .ifacebox-body > div {
+       display: flex;
+       flex-wrap: wrap;
+       margin: -.125em;
+}
+
+#dsl_status_table .ifacebox-body span > strong {
+       display: inline-block;
+       min-width: 35%;
+}
+
+.ifacebadge.large,
+.network-status-table .ifacebox-body .ifacebadge {
+       display: inline-flex;
+       flex: 1;
+       padding: .25em;
+       min-width: 220px;
+       margin: .125em;
+}
+
+.ifacebadge > *,
+.ifacebadge.large > * {
+       margin: 0 .125em;
+}
+
+.zonebadge {
+       padding: 2px;
+       border-radius: 4px;
+       display: inline-block;
+       white-space: nowrap;
+       color: #666;
+       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+}
+
+.zonebadge > em,
+.zonebadge > strong {
+       margin: 0 2px;
+       display: inline-block;
+}
+
+.zonebadge input {
+       width: 6em;
+}
+
+.zonebadge > .ifacebadge {
+       margin-left: 2px;
+}
+
+.zonebadge-empty {
+       border: 1px dashed #aaa;
+       color: #aaa;
+       font-style: italic;
+       font-size: smaller;
+}
+
+div.cbi-value var,
+.td.cbi-value-field var {
+       font-style: italic;
+       color: #0069d6;
+}
+
+.uci-change-list {
+       line-height: 170%;
+       white-space: pre;
+}
+
+.uci-change-list del,
+.uci-change-list ins,
+.uci-change-list var,
+.uci-change-legend-label del,
+.uci-change-legend-label ins,
+.uci-change-legend-label var {
+       text-decoration: none;
+       font-family: monospace;
+       font-style: normal;
+       border: 1px solid #ccc;
+       background: #eee;
+       padding: 2px;
+       display: block;
+       line-height: 15px;
+       margin-bottom: 1px;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+       border-color: #0f0;
+       background: #cfc;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+       border-color: #f00;
+       background: #fcc;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+       border-color: #ccc;
+       background: #eee;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+       display: inline-block;
+       border: none;
+       width: 100%;
+       padding: 0;
+}
+
+.uci-change-legend {
+       padding: 5px;
+}
+
+.uci-change-legend-label {
+       width: 150px;
+       float: left;
+}
+
+.uci-change-legend-label > ins,
+.uci-change-legend-label > del,
+.uci-change-legend-label > var {
+       float: left;
+       margin-right: 4px;
+       width: 10px;
+       height: 10px;
+       display: block;
+       position: relative;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+       border: none;
+       position: absolute;
+       top: 2px;
+       left: 2px;
+       right: 2px;
+       bottom: 2px;
+}
+
+#modal_overlay {
+       position: fixed;
+       top: 0;
+       bottom: 0;
+       left: -10000px;
+       right: 10000px;
+       background: rgba(0, 0, 0, 0.7);
+       z-index: 900;
+       overflow-y: scroll;
+       -webkit-overflow-scrolling: touch;
+       transition: opacity .125s ease-in;
+       opacity: 0;
+}
+
+#modal_overlay > .modal {
+       width: 90%;
+       margin: 5em auto;
+       display: flex;
+       flex-wrap: wrap;
+       min-height: 32px;
+       max-width: 600px;
+       align-items: center;
+       border-radius: 3px;
+       background: #fff;
+       box-shadow: 0 0 3px #444;
+       padding: 1em 1em .5em 1em;
+       max-height: 2400px;
+       min-width: 270px;
+}
+
+#modal_overlay .modal > * {
+       flex-basis: 100%;
+       line-height: normal;
+       margin-bottom: .5em;
+}
+
+#modal_overlay .modal > pre,
+#modal_overlay .modal > textarea {
+       white-space: pre-wrap;
+       overflow: auto;
+}
+
+body.modal-overlay-active {
+       overflow: hidden;
+       height: 100vh;
+}
+
+body.modal-overlay-active #modal_overlay {
+       left: 0;
+       right: 0;
+       opacity: 1;
+}
+
+html body.apply-overlay-active {
+       height: calc(100vh - 63px);
+}
+
+#applyreboot-section {
+       line-height: 300%;
+}
+
+[data-page="admin-network-dhcp"] [data-name="ip"] {
+       width: 15%;
+}
+
+@keyframes flash {
+       0% { opacity: 1; }
+       50% { opacity: .5; }
+       100% { opacity: 1; }
+}
+
+.flash {
+       animation: flash .35s;
+}
+
+.spinning {
+       position: relative;
+       padding-left: 32px !important;
+}
+
+.spinning::before {
+       position: absolute;
+       top: 0;
+       left: 0;
+       bottom: 0;
+       width: 32px;
+       content: " ";
+       background: url(../resources/icons/loading.gif) no-repeat center;
+       background-size: 16px;
+}
+
+[data-tab-title] {
+       height: 0;
+       opacity: 0;
+       overflow: hidden;
+}
+
+[data-tab-active="true"] {
+       opacity: 1;
+       height: auto;
+       overflow: visible;
+       transition: opacity .25s ease-in;
+}
diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico
new file mode 100644 (file)
index 0000000..77a138b
Binary files /dev/null and b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico differ
diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css
new file mode 100644 (file)
index 0000000..062d274
--- /dev/null
@@ -0,0 +1,402 @@
+header h3 a, header .brand {
+       display:none !important;
+}
+
+@media screen and (max-device-width: 600px) {
+       #maincontent.container {
+               margin-top: 30px;
+       }
+
+       .tabs, .cbi-tabmenu {
+               background: linear-gradient(#fff 20%, #ddd 100%);
+               background-size: 1px 34px;
+               margin-bottom: 10px;
+       }
+
+       .tabs > li, .cbi-tabmenu > li {
+               height: 30px;
+       }
+
+       .tabs > li > a, .cbi-tabmenu > li > a {
+               padding: 0 8px;
+               line-height: 30px;
+       }
+
+       .table {
+               display: flex;
+               flex-direction: column;
+               width: 100%;
+       }
+
+       .tr {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               align-items: flex-end;
+               border-top: 1px solid #ddd;
+               padding: 5px 0;
+               margin: 0 -3px;
+       }
+
+       .table .th,
+       .table .td,
+       .table .tr::before {
+               flex: 2 2 33%;
+               align-self: flex-start;
+               overflow: hidden;
+               text-overflow: ellipsis;
+               word-wrap: break-word;
+               display: inline-block;
+               border-top: none;
+               padding: 3px;
+               box-sizing: border-box;
+       }
+
+       .table .td.cbi-dropdown-open {
+               overflow: visible;
+       }
+
+       .col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; }
+       .col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; }
+       .col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; }
+       .col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; }
+       .col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; }
+       .col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; }
+       .col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; }
+       .col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; }
+       .col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; }
+       .col-10 { flex: 10 10 300px !important; -webkit-flex: 10 10 300px !important; }
+
+       .td select {
+               word-wrap: normal;
+       }
+
+       .td[data-type="button"],
+       .td[data-type="fvalue"] {
+               flex: 1 1 17%;
+               text-align: left;
+       }
+
+       .td.cbi-value-field {
+               align-self: flex-start;
+       }
+
+       .td.cbi-value-field .cbi-button {
+               width: 100%;
+       }
+
+       .table.cbi-section-table {
+               border: none;
+               background: none;
+               margin: 0;
+       }
+
+       .tr.table-titles,
+       .cbi-section-table-titles,
+       .cbi-section-table-descr {
+               display: none;
+       }
+
+       .cbi-section-table-row {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               margin: 0 0 .5em 0;
+       }
+
+       .cbi-section-table + .cbi-section-create {
+               padding-top: 0;
+       }
+
+       .tr[data-title]::before {
+               display: block;
+               flex: 1 1 100%;
+               background: #f5f5f5 !important;
+               font-size: 16px;
+               border-bottom: 1px solid #ddd;
+       }
+
+       .td[data-title]::before,
+       .td[data-description]::after {
+               display: block;
+       }
+
+       .td[data-title] ~ .td.cbi-section-actions {
+               align-self: flex-start;
+       }
+
+       .td[data-title] ~ .td.cbi-section-actions::before {
+               display: block;
+               content: "\a0";
+       }
+
+       .td.cbi-section-actions {
+               overflow: initial;
+               max-width: 100%;
+               padding: 3px 2px;
+       }
+
+       .hide-sm,
+       .hide-xs {
+               display: none !important;
+       }
+
+       .td.cbi-value-field {
+               flex-basis: 100%;
+       }
+
+       .td.cbi-value-field[data-type="dvalue"] {
+               flex-basis: 50%;
+       }
+
+       .td.cbi-value-field[data-type="button"],
+       .td.cbi-value-field[data-type="fvalue"] {
+               flex-basis: 25%;
+               text-align: left;
+       }
+
+       .cbi-section-table .tr:hover .td,
+       .cbi-section-table .tr:hover .th,
+       .cbi-section-table .tr:hover::before {
+               background-color: transparent;
+       }
+
+       .cbi-value {
+               padding-bottom: .5em;
+               border-bottom: 1px solid #ddd;
+               margin-bottom: .5em;
+       }
+
+       .cbi-value label.cbi-value-title {
+               float: none;
+               font-weight: bold;
+       }
+
+       .cbi-value-field, .cbi-dropdown {
+               width: 100%;
+               margin: 0;
+       }
+
+       input, textarea, select {
+               font-size: 16px !important;
+               line-height: 28px;
+       }
+
+       select, input[type="text"], input[type="password"] {
+               width: 100%;
+               height: 30px;
+       }
+
+       input.cbi-input-password {
+               width: calc(100% - 25px);
+       }
+
+       [data-dynlist] {
+               display: block;
+       }
+
+       [data-dynlist] > .add-item > input {
+               width: calc(100% - 21px);
+       }
+
+       [data-dynlist] > .add-item > .cbi-button {
+               margin-right: -1px;
+       }
+
+       input[type="text"] + .cbi-button,
+       input[type="password"] + .cbi-button,
+       select + .cbi-button {
+               font-size: 14px !important;
+               line-height:  28px;
+               height: 30px;
+               box-sizing: border-box;
+               overflow: hidden;
+               text-overflow: ellipsis;
+       }
+
+       .cbi-value-field input[type="checkbox"],
+       .cbi-value-field input[type="radio"] {
+               margin: 0;
+       }
+
+       .btn, .cbi-button {
+               font-size: 14px !important;
+               padding: 4px 8px;
+       }
+
+       .actions,
+       .cbi-page-actions {
+               border-top: none;
+               margin-top: -.5em;
+               padding: 8px;
+       }
+
+       [data-page="admin-status-overview"] .cbi-section:nth-of-type(1) .td:first-child,
+       [data-page="admin-status-overview"] .cbi-section:nth-of-type(2) .td:first-child {
+               flex-grow: 1;
+       }
+
+       header .pull-right .label {
+               white-space: normal;
+               display: inline-block;
+               text-align: center;
+               line-height: 12px;
+               margin: 1px 0;
+       }
+
+       header > .fill {
+               padding: 1px;
+       }
+
+       header > .fill > .container {
+               display: flex;
+               flex-direction: row;
+       }
+
+       header .nav {
+               flex: 3 3 80%;
+               margin: 2px 5px 2px 0;
+               display: flex;
+               flex-wrap: wrap;
+               justify-content: flex-start;
+       }
+
+       header .nav a {
+               padding: 2px 6px;
+       }
+
+       header .pull-right {
+               flex: 1 1 20%;
+               display: flex;
+               flex-direction: column;
+               padding: 0;
+               justify-content: space-around;
+       }
+
+       .menu-dropdown, .dropdown-menu {
+               top: 23px;
+       }
+
+       body {
+               padding-top: 30px;
+       }
+
+       .cbi-optionals,
+       .cbi-section-create {
+               padding: 0 0 14px 0;
+       }
+
+       #cbi-network-switch_vlan .th,
+       #cbi-network-switch_vlan .td {
+               flex-basis: 12%;
+       }
+
+       #cbi-network-switch_vlan .td.cbi-section-actions {
+               flex-basis: 100%;
+       }
+
+       #cbi-network-switch_vlan .td.cbi-section-actions::before {
+               display: none;
+       }
+
+       #cbi-network-switch_vlan .td.cbi-section-actions > * {
+               width: auto;
+               display: block;
+       }
+
+       #wifi_assoclist_table .td,
+       [data-page="admin-status-processes"] .td {
+               flex-basis: 50% !important;
+       }
+
+       [data-page="admin-status-processes"] .td[data-type="button"] {
+               flex-basis: 33% !important;
+       }
+
+       [data-page="admin-status-processes"] .td[data-name="PID"],
+       [data-page="admin-status-processes"] .td[data-name="USER"] {
+               flex-basis: 25% !important;
+       }
+
+       [data-page="admin-system-fstab"] .td[data-type="button"]::before,
+       [data-page="admin-system-startup"] .td[data-type="button"]::before,
+       [data-page="admin-status-processes"] .td[data-type="button"]::before {
+               display: none;
+       }
+}
+
+@media screen and (max-device-width: 375px) {
+       #maincontent.container {
+               margin-top: 55px;
+       }
+
+       .cbi-page-actions {
+               display: flex;
+               flex-wrap: wrap;
+               justify-content: space-between;
+               margin: 0 -1px;
+               padding: 0;
+       }
+
+       .cbi-page-actions .cbi-button {
+               flex: 1 1 calc(50% - 2px);
+               margin: 1px !important;
+               overflow: hidden;
+               text-overflow: ellipsis;
+       }
+
+       .cbi-page-actions .cbi-button-primary,
+       .cbi-page-actions .cbi-button-apply {
+               flex-basis: calc(100% - -2px);
+       }
+
+       .cbi-section-actions .cbi-button {
+               overflow: hidden;
+               text-overflow: ellipsis;
+       }
+
+       body[data-page="admin-network-wireless"] .td.col-2 {
+               max-width: 50px;
+       }
+
+       body[data-page="admin-network-wireless"] .td.col-2 > .ifacebadge {
+               display: flex;
+               align-items: center;
+               flex-direction: column;
+       }
+
+       body[data-page="admin-network-network"] .td.col-3 {
+               min-width: 250px;
+       }
+}
+
+@media screen and (max-device-width: 200px) {
+       #maincontent.container {
+               margin-top: 230px;
+       }
+}
+
+@media screen and (max-width: 375px) {
+       .td .ifacebox {
+               width: 100%;
+               margin: 0 !important;
+               flex-direction: row;
+       }
+
+       .td .ifacebox .ifacebox-head {
+               min-width: 25%;
+               justify-content: space-around;
+       }
+
+       .td .ifacebox .ifacebox-head,
+       .td .ifacebox .ifacebox-body {
+               display: flex;
+               border-bottom: none;
+               align-items: center;
+       }
+
+       .td .ifacebox .ifacebox-head > *,
+       .ifacebox .ifacebox-body > * {
+               margin: .125em;
+       }
+}
diff --git a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/footer.htm b/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/footer.htm
new file mode 100644 (file)
index 0000000..e0a41e1
--- /dev/null
@@ -0,0 +1,30 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2012 David Menting <david@nut-bolt.nl>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local ver = require "luci.version"
+       local disp = require "luci.dispatcher"
+       local request  = disp.context.path
+       local category = request[1]
+       local tree = disp.node()
+       local categories = disp.node_childs(tree)
+%>
+   <footer>
+    <a href="https://github.com/openwrt/luci">Powered by <%= ver.luciname %> (<%= ver.luciversion %>)</a> / <%= ver.distversion %>
+    <% if #categories > 1 then %>
+     <ul class="breadcrumb pull-right" id="modemenu">
+           <% for i, r in ipairs(categories) do %>
+                   <li<% if request[1] == r then %> class="active"<%end%>><a href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a> <span class="divider">|</span></li>
+           <% end %>
+     </ul>
+    <% end %>
+   </footer>
+   </div>
+  </div>
+ </body>
+</html>
+
diff --git a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
new file mode 100644 (file)
index 0000000..d784e4f
--- /dev/null
@@ -0,0 +1,210 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2016 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2012 David Menting <david@nut-bolt.nl>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local sys  = require "luci.sys"
+       local util = require "luci.util"
+       local http = require "luci.http"
+       local disp = require "luci.dispatcher"
+
+       local boardinfo = util.ubus("system", "board")
+
+       local request  = disp.context.path
+       local request2 = disp.context.request
+
+       local category = request[1]
+       local cattree  = category and disp.node(category)
+
+       local leaf = request2[#request2]
+
+       local tree = disp.node()
+       local node = disp.context.dispatched
+
+       local categories = disp.node_childs(tree)
+
+       local c = tree
+       local i, r
+
+       -- tag all nodes leading to this page
+       for i, r in ipairs(request) do
+               if c.nodes and c.nodes[r] then
+                       c = c.nodes[r]
+                       c._menu_selected = true
+               end
+       end
+
+       -- send as HTML5
+       http.prepare_content("text/html")
+
+       local function nodeurl(prefix, name, query)
+               local u = url(prefix, name)
+               if query then
+                       u = u .. http.build_querystring(query)
+               end
+               return pcdata(u)
+       end
+
+       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
+                               write('<ul class="tabs">')
+                       end
+
+                       local selected_node
+                       local selected_name
+                       local i, v
+
+                       for i, v in ipairs(childs) do
+                               local nnode = node.nodes[v]
+                               if nnode._menu_selected then
+                                       selected_node = nnode
+                                       selected_name = v
+                               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
+                               write('</ul>')
+                       end
+
+                       if selected_node then
+                               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="dropdown-menu">')
+
+                       for i, r in ipairs(childs) do
+                               local nnode = node.nodes[r]
+                               write('<li><a href="%s">%s</a></li>' %{
+                                       nodeurl(prefix, r, nnode.query),
+                                       striptags(translate(nnode.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
+                                       write('<li class="dropdown"><a class="menu" href="#">%s</a>' % striptags(translate(nnode.title)))
+                                       render_submenu(category .. "/" .. r, nnode)
+                                       write('</li>')
+                               else
+                                       write('<li><a href="%s">%s</a></li>' %{
+                                               nodeurl(category, r, nnode.query),
+                                               striptags(translate(nnode.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
+
+                       local i, j
+                       for i, j in pairs(require("luci.model.uci").cursor():changes()) do
+                               ucichanges = ucichanges + #j
+                       end
+
+                       if ucichanges > 0 then
+                               write('<a class="uci_change_indicator label notice" href="%s?redir=%s">%s: %d</a>' %{
+                                       url(category, 'uci/changes'),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
+                                       translate('Unsaved Changes'),
+                                       ucichanges
+                               })
+                       end
+               end
+       end
+-%>
+<!DOCTYPE html>
+<html lang="<%=luci.i18n.context.lang%>">
+       <head>
+               <meta charset="utf-8">
+               <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
+               <meta name="viewport" content="initial-scale=1.0">
+               <link rel="stylesheet" href="<%=media%>/cascade.css">
+               <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" />
+               <link rel="shortcut icon" href="<%=media%>/favicon.ico">
+               <% if node and node.css then %>
+                       <link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
+               <% end -%>
+               <% if css then %>
+                       <style title="text/css"><%= css %></style>
+               <% end -%>
+               <script src="<%=url('admin/translations', luci.i18n.context.lang)%><%# ?v=PKG_VERSION %>"></script>
+               <script src="<%=resource%>/cbi.js"></script>
+               <script src="<%=resource%>/xhr.js"></script>
+       </head>
+
+       <body class="lang_<%=luci.i18n.context.lang%> <% if node then %><%= striptags( node.title ) %><%- end %>" data-page="<%= table.concat(disp.context.requestpath, "-") %>">
+               <header>
+                       <div class="fill">
+                               <div class="container">
+                                       <a class="brand" href="#"><%=boardinfo.hostname or "?"%></a>
+                                       <% render_topmenu() %>
+                                       <div class="pull-right">
+                                               <% 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"><%:Auto Refresh%> <%:on%></span>
+                                                       <span class="label" id="xhr_poll_status_off" style="display:none"><%:Auto Refresh%> <%:off%></span>
+                                               </span>
+                                       </div>
+                               </div>
+                       </div>
+               </header>
+
+               <div id="maincontent" class="container">
+                       <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%>
+                               <div class="alert-message warning">
+                                       <h4><%:No password set!%></h4>
+                                       <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p>
+                                       <% if disp.lookup("admin/system/admin") then %>
+                                         <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div>
+                                       <% end %>
+                               </div>
+                       <%- end -%>
+
+                       <noscript>
+                               <div class="alert-message warning">
+                                       <h4><%:JavaScript required!%></h4>
+                                       <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p>
+                               </div>
+                       </noscript>
+
+                       <% if category then render_tabmenu(category, cattree) end %>
diff --git a/package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap b/package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap
new file mode 100755 (executable)
index 0000000..b516184
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$PKG_UPGRADE" != 1 ]; then
+       uci batch <<-EOF
+               set luci.themes.Bootstrap=/luci-static/bootstrap
+               set luci.main.mediaurlbase=/luci-static/bootstrap
+               commit luci
+       EOF
+fi
+
+exit 0
diff --git a/package/luci/themes/luci-theme-material/Makefile b/package/luci/themes/luci-theme-material/Makefile
new file mode 100755 (executable)
index 0000000..5bc16eb
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Material Theme
+LUCI_DEPENDS:=
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/brand.png b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/brand.png
new file mode 100644 (file)
index 0000000..1e903c5
Binary files /dev/null and b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/brand.png differ
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/cascade.css b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/cascade.css
new file mode 100644 (file)
index 0000000..d740778
--- /dev/null
@@ -0,0 +1,3009 @@
+/**
+ *     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>
+ *
+ *     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 2012 David Menting <david@nut-bolt.nl>
+ *
+ *     MUI:
+ *             https://github.com/muicss/mui
+ *
+ *     Menu and loading spinner icons from IcoMoon:
+ *             https://icomoon.io
+ *
+ *     Pure CSS ripple effect:
+ *             https://github.com/mladenplavsic/css-ripple-effect
+ *
+ *     Licensed to the public under the Apache License 2.0
+ */
+
+/*
+ *     Include custom css
+ */
+@import url("custom.css");
+
+.table {
+       position: relative;
+       display: table;
+}
+
+.tr {
+       display: table-row;
+}
+.thead {
+       display: table-header-group;
+}
+
+.tbody {
+       display: table-row-group;
+}
+
+.tfoot {
+       display: table-footer-group;
+}
+
+.td,
+.th {
+       line-height: normal;
+       display: table-cell;
+       padding: .5em;
+       text-align: center;
+       vertical-align: middle;
+}
+
+.th {
+       font-weight: bold;
+}
+
+.tr.placeholder {
+       height: 4em;
+}
+
+.tr.placeholder > .td {
+       line-height: 3;
+       position: absolute;
+       right: 0;
+       bottom: 0;
+       left: 0;
+       text-align: center !important;
+       background: inherit;
+}
+
+.td[width="33%"] {
+       padding: 1.1em;
+}
+
+.table[width="33%"],
+.th[width="33%"],
+.td[width="33%"] {
+       width: 33%;
+}
+
+.table[width="100%"],
+.th[width="100%"],
+.td[width="100%"] {
+       width: 100%;
+}
+
+.col-1 {
+       flex: 1 1 30px !important;
+}
+
+.col-2 {
+       flex: 2 2 60px !important;
+}
+
+.col-3 {
+       flex: 3 3 90px !important;
+}
+
+.col-4 {
+       flex: 4 4 120px !important;
+}
+
+.col-5 {
+       flex: 5 5 150px !important;
+}
+
+.col-6 {
+       flex: 6 6 180px !important;
+}
+
+.col-7 {
+       flex: 7 7 210px !important;
+}
+
+.col-8 {
+       flex: 8 8 240px !important;
+}
+
+.col-9 {
+       flex: 9 9 270px !important;
+}
+
+.col-10 {
+       flex: 10 10 300px !important;
+}
+
+* {
+       box-sizing: border-box;
+       margin: 0;
+       padding: 0;
+}
+
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       font-family: inherit;
+       font-weight: normal;
+       line-height: 1.1 !important;
+       color: inherit;
+}
+
+html {
+       overflow-y: hidden;
+       -webkit-text-size-adjust: 100%;
+       -ms-text-size-adjust: 100%;
+}
+
+body {
+       font-size: .8rem;
+       background-color: #eee;
+}
+
+html,
+body {
+       font-family: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";
+       font-family: var(--font-body);
+       height: 100%;
+       margin: 0;
+       padding: 0;
+}
+
+select {
+       padding: .36rem .8rem;
+       color: #555;
+       border: thin solid #ccc;
+       background-color: #fff;
+       background-image: none;
+}
+
+.btn,
+button,
+select,
+input,
+.cbi-dropdown {
+       height: 1.8rem;
+       padding: 0;
+       color: rgba(0, 0, 0, .87);
+       border: 0;
+       border-bottom: 2px solid rgba(0, 0, 0, .26);
+       border-radius: 0;
+       outline: 0;
+       background-color: transparent;
+       background-image: none;
+       box-shadow: none;
+}
+
+select,
+.cbi-dropdown {
+       width: inherit;
+       cursor: default;
+}
+
+select:not([multiple="multiple"]):focus,
+input:not(.cbi-button):focus,
+.cbi-dropdown:focus {
+       border-color: #09c;
+       border-color: var(--main-color);
+}
+
+select[multiple="multiple"] {
+       height: auto;
+}
+
+pre {
+       overflow: auto;
+}
+
+code {
+       font-size: 1rem;
+       font-size-adjust: .35;
+       padding: 1px 3px;
+       color: #101010;
+       border-radius: 2px;
+       background: #ddd;
+}
+
+abbr {
+       cursor: help;
+       text-decoration: underline;
+       color: #005470;
+}
+
+hr {
+       margin: 1rem 0;
+       opacity: .1;
+       border-color: #eee;
+}
+
+header,
+.main {
+       position: absolute;
+       width: 100%;
+}
+
+header {
+       position: fixed;
+       z-index: 2000;
+       float: left;
+       height: 4rem;
+       transition: box-shadow .2s;
+       box-shadow: 0 2px 5px rgba(0, 0, 0, .26);
+}
+
+footer {
+       font-size: .8rem;
+       overflow: hidden;
+       padding: 1rem;
+       text-align: right;
+       white-space: nowrap;
+       color: #aaa;
+       text-shadow: 0 0 2px #bbb;
+}
+
+footer > a {
+       text-decoration: none;
+       color: #aaa;
+}
+
+small {
+       font-size: 90%;
+       line-height: 1.42857143;
+       white-space: normal;
+}
+
+.main {
+       position: relative;
+       top: 4rem;
+       bottom: 0;
+       overflow-y: auto;
+       height: 100%;
+       height: calc(100% - 4rem);
+}
+
+.main > .loading {
+       position: fixed;
+       z-index: 1000;
+       top: 0;
+       display: block;
+       width: 100%;
+       height: 100%;
+       pointer-events: none;
+       background-color: rgb(240, 240, 240);
+}
+
+.main > .loading > span {
+       font-family: monospace;
+       font-size: 2rem;
+       font-size-adjust: .35;
+       position: relative;
+       top: 12.5%;
+       display: block;
+       text-align: center;
+       color: #888;
+}
+
+.main > .loading > span > .loading-img {
+       position: relative;
+       top: .1rem;
+       left: .05rem;
+       display: inline-block;
+       width: 1.25rem;
+       height: 1.25rem;
+       margin-right: 1rem;
+       animation: anim-rotate 2s infinite linear;
+       background: url(./icons/spinner.svg) no-repeat center;
+}
+
+@keyframes anim-rotate {
+       0% {
+               -webkit-transform: rotate(0);
+               -ms-transform: rotate(0);
+               transform: rotate(0);
+       }
+       100% {
+               -webkit-transform: rotate(360deg);
+               -ms-transform: rotate(360deg);
+               transform: rotate(360deg);
+       }
+}
+
+.main-left {
+       position: fixed;
+       top: 4rem;
+       float: left;
+       overflow-x: auto;
+       width: 15%;
+       width: calc(0% + 15rem);
+       height: 100%;
+       height: calc(100% - 4rem);
+       background-color: #fff;
+       background-color: var(--menu-bg-color);
+}
+
+.main-right {
+       float: right;
+       width: 85%;
+       width: calc(100% - 15rem);
+       height: 100%;
+       background-color: #eee;
+}
+
+.main-right > #maincontent {
+       background-color: #eee;
+}
+
+.pull-right {
+       float: right;
+}
+
+.pull-left {
+       float: left;
+}
+
+.nowrap:not(.td) {
+       white-space: nowrap;
+}
+
+[disabled="disabled"] {
+       pointer-events: none;
+}
+
+header {
+       color: #fff;
+       color: var(--header-color);
+       background: #09c;
+       background: var(--header-bg);
+}
+
+header > .fill > .container {
+       margin-top: .5rem;
+       padding: .5rem 1rem 0 1rem;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+header > .fill > .container > #logo {
+       margin: 0 3.5rem 0 1.5rem;
+}
+
+header > .fill > .container > #logo > img {
+       width: calc(0% + 10rem);
+       margin-top: -.1rem;
+}
+
+body:not(.logged-in) > header > .fill > .container > #logo {
+       display: none;
+}
+
+header > .fill > .container > .brand {
+       font-size: 1.4rem;
+       position: absolute;
+       cursor: default;
+       vertical-align: text-bottom;
+       text-decoration: none;
+       color: #fff;
+       color: var(--header-color);
+}
+
+header > .fill > .container > .status {
+       position: absolute;
+       top: 25%;
+       right: 1em;
+       float: right;
+}
+
+header > .fill > .container > .status > * {
+       position: relative;
+       top: .2rem;
+       float: left;
+       margin-left: .3rem;
+       cursor: pointer;
+}
+
+#xhr_poll_status {
+       display: flex;
+}
+
+.danger {
+       background-color: #ff7d60 !important;
+}
+
+.warning {
+       background-color: #f0e68c !important;
+}
+
+.success {
+       background-color: #5cb85c !important;
+}
+
+.notice {
+       background-color: #5bc0de !important;
+}
+
+.error {
+       color: #f00;
+}
+
+.alert,
+.alert-message {
+       font-weight: bold;
+       margin-bottom: 1em;
+       padding: 1rem;
+       border: 0;
+       border-radius: 0 !important;
+       background-color: #fff;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+       text-shadow: 1px 1px rgba(0, 0, 0, .1);
+}
+
+.alert-message > h4 {
+       font-size: 110%;
+       font-weight: bold;
+}
+
+.alert-message > * {
+       margin: .5rem 0;
+}
+
+.alert-message .btn {
+       padding: .3rem .6rem;
+}
+
+.container .alert,
+.container .alert-message {
+       margin-top: 1rem;
+}
+
+.main > .main-left > .nav {
+       margin-top: .5rem;
+}
+
+.main > .main-left > .nav > li {
+       padding: .5rem 1rem;
+       cursor: pointer;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.main > .main-left > .nav > li:last-child {
+       display: flex;
+       align-items: center;
+       margin: 2rem 0 1rem 0;
+       padding: 0 0 0 2rem;
+}
+
+.main > .main-left > .nav > li a {
+       display: block;
+       color: #5f6368;
+       color: var(--menu-color);
+}
+
+.main > .main-left > .nav > .slide {
+       padding: 0;
+}
+
+.main > .main-left > .nav > .slide > ul {
+       display: none;
+}
+
+.main > .main-left > .nav > .slide > .menu,
+.main > .main-left > .nav > li > [data-title="Logout"] {
+       font-size: 1.15rem;
+       font-weight: 500;
+       display: flex;
+       align-items: center;
+       width: 100%;
+       padding: .5rem 1rem;
+       text-decoration: none;
+       color: #202124;
+       color: var(--main-menu-color);
+}
+
+.main > .main-left > .nav > .slide > .menu::before {
+       position: absolute;
+       right: 17px;
+       width: 16px;
+       height: 16px;
+       content: "";
+       background: url(./icons/arrow.svg) no-repeat;
+}
+
+.main > .main-left > .nav > .slide > .menu.active::before {
+       transform: rotate(-180deg);
+}
+
+body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before {
+       transition: transform .1s ease-in-out;
+}
+
+body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before {
+       transition: transform .2s ease-in-out;
+}
+
+.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before {
+       display: none;
+}
+
+.main > .main-left > .nav > li:last-child::before {
+       position: absolute;
+       left: 14px;
+       width: 24px;
+       height: 24px;
+       content: url(./icons/logout.svg);
+}
+
+.main > .main-left > .nav > li:hover,
+.main > .main-left > .nav > .slide > .menu:hover {
+       background: #d4d4d4;
+       background: var(--submenu-bg-hover);
+}
+
+.main > .main-left > .nav > .slide:hover {
+       background: none;
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > li {
+       padding: .4rem 2rem;
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > .active {
+       background-color: #09c;
+       background-color: var(--submenu-bg-hover-active);
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > li > a {
+       white-space: nowrap;
+       text-decoration: none;
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > .active > a {
+       color: #fff;
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > li:hover {
+       background: #d4d4d4;
+       background: var(--submenu-bg-hover);
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > li:not(.active):hover > a {
+       color: #202124;
+       color: var(--menu-color-hover);
+}
+
+.main > .main-left > .nav > .slide > .slide-menu > .active:hover {
+       background-color: #09c;
+       background-color: var(--main-color);
+}
+
+/* ripple effect */
+.main > .main-left > .nav > .slide > .menu,
+.main > .main-left > .nav > .slide > .slide-menu > li,
+.main > .main-left > .nav > li:last-child {
+       position: relative;
+       overflow: hidden;
+       transform: translate3d(0, 0, 0);
+}
+
+.main > .main-left > .nav > .slide > .menu::after,
+.main > .main-left > .nav > .slide > .slide-menu > li::after,
+.main > .main-left > .nav > li:last-child::after {
+       position: absolute;
+       top: 0;
+       left: 0;
+       display: block;
+       width: 100%;
+       height: 100%;
+       content: "";
+       transition: transform .5s, opacity 1s;
+       transform: scale(10, 10);
+       pointer-events: none;
+       opacity: 0;
+       background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
+       background-repeat: no-repeat;
+       background-position: 50%;
+}
+
+.main > .main-left > .nav > .slide > .menu:active::after,
+.main > .main-left > .nav > .slide > .slide-menu > li:active::after,
+.main > .main-left > .nav > li:last-child:active::after {
+       transition: 0s;
+       transform: scale(0, 0);
+       opacity: .2;
+}
+
+#maincontent > .container {
+       margin: 0 2rem 1rem 2rem;
+}
+
+ul {
+       line-height: normal;
+}
+
+li {
+       list-style-type: none;
+}
+
+h1 {
+       font-size: 2rem;
+       padding-bottom: 10px;
+       border-bottom: thin solid #eee;
+}
+
+h2 {
+       font-size: 1.8rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+       border-bottom: thin solid #eee;
+}
+
+h3 {
+       font-size: 1.4rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+h4 {
+       font-size: 1.2rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+h5 {
+       font-size: 1rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+.cbi-section,
+.cbi-section-error,
+#iptables,
+.Firewall form,
+#cbi-network > .cbi-section-node,
+#cbi-wireless > .cbi-section-node,
+#cbi-wireless > #wifi_assoclist_table,
+[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
+[data-page="admin-system-opkg"] #maincontent > .container {
+       font-family: inherit;
+       font-weight: normal;
+       font-style: normal;
+       line-height: normal;
+       min-width: inherit;
+       margin: 1rem 0 0 0;
+       padding: 2rem;
+       border: 0;
+       border-radius: 0;
+       background-color: #fff;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+.cbi-map-descr,
+.cbi-section-descr {
+       font-size: small;
+       line-height: 1.42857143;
+       padding: .5rem;
+       color: #999;
+}
+
+.cbi-map-descr + fieldset {
+       margin-top: 1rem;
+}
+
+.cbi-section > legend {
+       display: none !important;
+}
+
+fieldset > fieldset,
+.cbi-section > .cbi-section {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       box-shadow: none;
+}
+
+.cbi-section > h3:first-child,
+.panel-title {
+       font-size: 1.4rem;
+       line-height: 1;
+       display: block;
+       width: 100%;
+       margin: 0;
+       margin-bottom: .5rem;
+       padding-bottom: 1rem;
+       color: #404040;
+       border-bottom: thin solid #eee;
+}
+
+table {
+       border-spacing: 0;
+       border-collapse: collapse;
+}
+
+table,
+.table {
+       overflow-y: hidden;
+       width: 100%;
+       box-shadow: 0 0 0 1px #ddd;
+}
+
+table > tbody > tr > td,
+table > tbody > tr > th,
+table > tfoot > tr > td,
+table > tfoot > tr > th,
+table > thead > tr > td,
+table > thead > tr > th,
+.table > .tbody > .tr > .td,
+.table > .tbody > .tr > .th,
+.table > .tfoot > .tr > .td,
+.table > .tfoot > .tr > .th,
+.table > .thead > .tr > .td,
+.table > .thead > .tr > .th,
+.table > .tr > .td.cbi-value-field,
+.table > .tr > .th.cbi-section-table-cell {
+       padding: .5rem;
+}
+
+.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td {
+       padding: .6rem;
+}
+
+.cbi-section-table-cell {
+       line-height: 1.1;
+       align-self: flex-end;
+       flex: 1 1 auto;
+}
+
+tr > td,
+tr > th,
+.tr > .td,
+.tr > .th,
+.cbi-section-table-row::before,
+#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) {
+       border-top: thin solid #ddd;
+}
+
+#cbi-wireless .td,
+#cbi-network .tr:first-child > .td,
+.table[width="100%"] > .tr:first-child > .td,
+[data-page="admin-network-diagnostics"] .tr > .td,
+.tr.table-titles > .th,
+.tr.cbi-section-table-titles > .th {
+       border-top: 0 !important;
+}
+
+.table[width="100%"] > .tr:first-child > .td {
+       margin: auto 0;
+}
+
+.cbi-section-table-row {
+       margin-bottom: 1rem;
+       text-align: center !important;
+       background: #f4f4f4;
+}
+
+.cbi-section-table-row:last-child {
+       margin-bottom: 0;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown,
+.cbi-section-table-row > .cbi-value-field .cbi-input-select,
+.cbi-section-table-row > .cbi-value-field .cbi-input-text,
+.cbi-section-table-row > .cbi-value-field .cbi-input-password {
+       width: 100%;
+}
+
+.cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
+.cbi-section-table-row > .cbi-value-field input.cbi-input-password {
+       width: calc(100% - 1.5rem);
+}
+
+.cbi-section-table-row .td {
+       text-align: center !important;
+}
+
+div > table > tbody > tr:nth-of-type(2n),
+div > .table > .tr:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+/* fix multiple table */
+table table,
+.table .table,
+.cbi-value-field table,
+.cbi-value-field .table,
+td > table > tbody > tr > td,
+.td > .table > .tbody > .tr > .td,
+.cbi-value-field > table > tbody > tr > td,
+.cbi-value-field > .table > .tbody > .tr > .td {
+       border: 0;
+}
+
+/* button style */
+.btn,
+.cbi-button,
+.item::after {
+       font-size: .8rem;
+       display: inline-block;
+       width: auto !important;
+       padding: 0 .8rem;
+       cursor: pointer;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       transition: all .2s ease-in-out;
+       text-align: center;
+       vertical-align: middle;
+       white-space: nowrap;
+       text-decoration: none;
+       text-transform: uppercase;
+       color: rgba(0, 0, 0, .87);
+       border: 0;
+       border-radius: .2rem;
+       background-color: #f0f0f0;
+       background-image: none;
+       -webkit-appearance: none;
+       -ms-touch-action: manipulation;
+       touch-action: manipulation;
+}
+
+.cbi-button-up,
+.cbi-button-down {
+       font-size: 1.2rem;
+       display: inline-block;
+       min-width: 0;
+       padding: .2rem .3rem;
+       color: transparent !important;
+       background: url(./icons/arrow.svg) no-repeat center;
+       background-size: 12px 20px;
+}
+
+.cbi-button-up {
+       transform: scaleY(-1);
+}
+
+.cbi-button:not(select) {
+       -webkit-appearance: none !important;
+}
+
+.cbi-button + .cbi-button {
+       margin-left: .6rem;
+}
+
+.btn:hover,
+.btn:focus,
+.btn:active,
+.cbi-button:hover,
+.cbi-button:focus,
+.cbi-button:active,
+.item:hover::after,
+.item:focus::after,
+.item:active::after,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:active {
+       text-decoration: none;
+       outline: 0;
+}
+
+.btn:hover,
+.btn:focus,
+.cbi-button:hover,
+.cbi-button:focus,
+.item:hover::after,
+.item:focus::after {
+       box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2);
+}
+
+.btn:active,
+.cbi-button:active,
+.item:active::after {
+       box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
+}
+
+.cbi-button-up:hover,
+.cbi-button-up:focus {
+       box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2);
+}
+
+.cbi-button-up:active {
+       box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23);
+}
+
+.btn:disabled,
+.cbi-button:disabled {
+       cursor: not-allowed;
+       pointer-events: none;
+       opacity: .5;
+       box-shadow: none;
+}
+
+/* gray */
+.alert-message [class="btn"],
+.modal div[class="btn"],
+.cbi-button-find,
+.cbi-button-link,
+.cbi-button-up,
+.cbi-button-down,
+.cbi-button-neutral,
+.cbi-button[name="zero"],
+.cbi-button[name="restart"],
+.cbi-button[onclick="hide_empty(this)"] {
+       font-weight: bold;
+       border: thin solid #bfbfbf;
+       background-color: #d4d4d4;
+}
+
+/* dark blue */
+.btn.primary,
+.cbi-page-actions .cbi-button-save,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save,
+.cbi-button-add,
+.cbi-button-save,
+.cbi-button-positive,
+.cbi-button-link,
+.cbi-button[value="Enable"],
+.cbi-button[value="Scan"],
+.cbi-button[value^="Back"],
+.cbi-button-neutral[onclick="handleConfig(event)"] {
+       font-weight: normal;
+       color: #fff;
+       border: thin solid #2e6da4;
+       background-color: #337ab7;
+}
+
+/* light blue */
+.cbi-page-actions .cbi-button-apply,
+.cbi-section-actions .cbi-button-edit,
+.cbi-button-edit,
+.cbi-button-apply,
+.cbi-button-reload,
+.cbi-button-action,
+.cbi-button[value="Submit"],
+.cbi-button[value="Upload"],
+.cbi-button[value$="Apply"],
+.cbi-button[onclick="addKey(event)"] {
+       font-weight: normal;
+       color: #fff;
+       border: thin solid #46b8da;
+       background-color: #5bc0de;
+}
+
+/* red */
+.btn.danger,
+.cbi-section-remove > .cbi-button,
+.cbi-button-remove,
+.cbi-button-reset,
+.cbi-button-negative,
+.cbi-button[value="Stop"],
+.cbi-button[value="Kill"],
+.cbi-button[onclick="reboot(this)"],
+.cbi-button-neutral[value="Restart"] {
+       font-weight: normal;
+       color: #fff;
+       border: thin solid #d43f3a;
+       background-color: #d9534f;
+}
+
+/* yellow */
+.btn[value="Dismiss"],
+.cbi-button[value="Terminate"],
+.cbi-button[value="Reset"],
+.cbi-button[value="Disabled"],
+.cbi-button[onclick^="iface_reconnect"],
+.cbi-button[onclick="handleReset(event)"],
+.cbi-button-neutral[value="Disable"] {
+       font-weight: normal;
+       color: #fff;
+       border: thin solid #eea236;
+       background-color: #f0ad4e;
+}
+
+/* green */
+.cbi-button-success,
+.cbi-button-download,
+.cbi-button[name="backup"],
+.cbi-button[value="Download"],
+.cbi-button[value="Save mtdblock"] {
+       font-weight: normal;
+       color: #fff;
+       border: thin solid #4cae4c;
+       background-color: #5cb85c;
+}
+
+.cbi-page-actions .cbi-button-link:first-child {
+       float: left;
+}
+
+.a-to-btn {
+       text-decoration: none;
+}
+
+.cbi-value-field .cbi-button-add {
+       font-weight: bold;
+       margin: 9px 0 4px 3px;
+       padding: 1px 6px;
+}
+
+.tabs {
+       margin: 0 -2rem;
+       padding-left: .5rem;
+       background-color: #fff;
+}
+
+.tabs > li,
+.cbi-tabmenu > li {
+       display: inline-block;
+       padding: .55rem 0;
+       cursor: pointer;
+}
+
+.tabs > li {
+       padding-bottom: .4rem;
+       border-bottom: .2rem solid transparent;
+}
+
+.tabs > li[class~="active"],
+.tabs > li:hover {
+       border-bottom-color: #09c;
+       border-bottom-color: var(--main-color);
+}
+
+.tabs > li:hover {
+       cursor: pointer;
+       border-bottom-color: #c9c9c9;
+}
+
+.tabs > li > a,
+.cbi-tabmenu > li > a {
+       padding: .6rem .9rem;
+       text-decoration: none;
+       color: #404040;
+}
+
+.tabs > li[class~="active"] > a {
+       color: #09c;
+       color: var(--main-color);
+}
+
+.cbi-tabmenu {
+       border: thin solid #d4d4d4;
+       border-bottom: 0;
+}
+
+.cbi-tabmenu > li:hover {
+       background-color: #f1f1f1;
+}
+
+.cbi-tabmenu > li[class~="cbi-tab"] {
+       background-color: #fff;
+}
+
+.cbi-tabmenu {
+       background-color: #d4d4d4;
+}
+
+.cbi-section .cbi-section-remove:nth-of-type(2n),
+.container > .cbi-section .cbi-section-node:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+[data-tab-title] {
+       overflow: hidden;
+       height: 0;
+       opacity: 0;
+}
+
+[data-tab-active="true"] {
+       overflow: visible;
+       height: auto;
+       opacity: 1;
+       transition: opacity .25s ease-in;
+}
+
+.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3),
+.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) {
+       background-color: #f9f9f9;
+}
+
+.cbi-section-node-tabbed {
+       margin-top: 0;
+       padding: 0;
+       border: thin solid #d4d4d4;
+       border-top: 0;
+}
+
+.cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+.cbi-value-field,
+.cbi-value-description {
+       line-height: 1.25;
+       display: table-cell;
+}
+
+.cbi-value-description {
+       font-size: small;
+       padding-top: .4rem;
+       opacity: .5;
+}
+
+.cbi-value-title {
+       display: table-cell;
+       float: left;
+       width: 23rem;
+       padding-top: .35rem;
+       padding-right: 2rem;
+       text-align: right;
+       word-wrap: break-word;
+}
+
+.cbi-value {
+       display: inline-block;
+       width: 100%;
+       padding: .35rem 1rem .2rem 1rem;
+}
+
+.cbi-value ul {
+       line-height: 1.25;
+}
+
+.cbi-value-field .cbi-dropdown,
+.cbi-value-field .cbi-input-select,
+.cbi-value input[type="text"],
+.cbi-value input[type="password"] {
+       min-width: 25rem;
+}
+
+#cbi-firewall-zone .cbi-input-select,
+#cbi-network-switch_vlan .cbi-input-select {
+       min-width: 11rem;
+}
+
+#cbi-network-switch_vlan .cbi-input-text {
+       max-width: 3rem;
+}
+
+.cbi-input-invalid {
+       color: #f00;
+       border-bottom-color: #f00;
+}
+
+.cbi-section-error {
+       font-weight: bold;
+       line-height: 1.42857143;
+       margin: 18px;
+       padding: 6px;
+       border: thin solid #f00;
+       border-radius: 3px;
+       background-color: #fce6e6;
+}
+
+.cbi-section-error ul {
+       margin: 0 0 0 20px;
+}
+
+.cbi-section-error ul li {
+       font-weight: bold;
+       color: #f00;
+}
+
+.td[data-title]::before {
+       font-weight: bold;
+       display: none;
+       padding: .25rem 0;
+       content: attr(data-title) ":\20";
+       text-align: left;
+       white-space: nowrap;
+}
+
+.tr.placeholder .td[data-title]::before {
+       display: none;
+}
+
+.tr[data-title]::before,
+.tr.cbi-section-table-titles.named::before {
+       font-weight: bold;
+       display: table-cell;
+       align-self: center;
+       flex: 1 1 5%;
+       padding: .25rem;
+       content: attr(data-title) "\20";
+       text-align: center;
+       vertical-align: middle;
+       white-space: normal;
+       word-wrap: break-word;
+}
+
+.cbi-rowstyle-1 {
+       background-color: #f9f9f9;
+}
+
+.cbi-rowstyle-2 {
+       background-color: #eee;
+}
+
+.cbi-rowstyle-2 .cbi-button-up,
+.cbi-rowstyle-2 .cbi-button-down,
+body:not(.Interfaces) .cbi-rowstyle-2:first-child {
+       background-color: #fff !important;
+}
+
+.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
+       width: auto !important;
+}
+
+.td.cbi-section-actions {
+       text-align: right !important;
+       vertical-align: middle;
+}
+
+.td.cbi-section-actions > * {
+       display: inline-flex;
+}
+
+.td.cbi-section-actions > * > *,
+.td.cbi-section-actions > * > form > * {
+       margin: 0 5px;
+}
+
+.td.cbi-section-actions > * > form {
+       display: inline-flex;
+       margin: 0;
+}
+
+/* lists */
+.cbi-dynlist {
+       line-height: 1.3;
+       flex-direction: column;
+       min-height: 30px;
+       cursor: text;
+}
+
+.cbi-dynlist > .item {
+       position: relative;
+       max-width: 25rem;
+       margin-right: 2em;
+       padding: .5em .25em .25em 0;
+       pointer-events: none;
+       color: #666;
+       border-bottom: 2px solid rgba(0, 0, 0, .26);
+       outline: 0;
+}
+
+.cbi-dynlist[name="sshkeys"] > .item {
+       max-width: none;
+}
+
+.cbi-dynlist > .item::after {
+       font-weight: bold;
+       position: absolute;
+       right: -2em;
+       bottom: 0;
+       display: inline-flex;
+       min-height: 17px;
+       padding: 0 6px;
+       content: "\00D7";
+       pointer-events: auto;
+       color: #fff;
+       border: thin solid #d43f3a;
+       background-color: #d9534f;
+}
+
+.cbi-dynlist > .item > span {
+       white-space: normal;
+       word-break: break-word;
+}
+
+.cbi-dynlist > .add-item {
+       display: inline-flex;
+       align-items: center;
+       width: 100%;
+       min-width: 16rem;
+}
+
+.cbi-dynlist > .add-item:not([ondrop]) > input {
+       overflow: hidden;
+       width: 100%;
+       min-width: 15rem;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.cbi-dynlist > .add-item[ondrop] > input {
+       min-width: 13rem;
+}
+
+.cbi-dynlist,
+.cbi-dropdown {
+       position: relative;
+       display: inline-flex;
+       padding: 0;
+}
+
+.cbi-dropdown[placeholder*="select"] {
+       max-width: 25rem;
+       height: auto;
+       margin-top: -3px;
+}
+
+.cbi-dropdown > ul {
+       display: flex;
+       overflow-x: hidden;
+       overflow-y: auto;
+       width: 100%;
+       margin: 0 !important;
+       padding: 0;
+       list-style: none;
+       outline: 0;
+}
+
+.cbi-dropdown > ul.preview {
+       display: none;
+}
+
+.cbi-dropdown > .open {
+       flex-basis: 15px;
+}
+
+.cbi-dropdown > .open,
+.cbi-dropdown > .more {
+       font-size: 1rem;
+       font-weight: 900;
+       line-height: 2;
+       display: flex;
+       flex-direction: column;
+       flex-grow: 0;
+       flex-shrink: 0;
+       justify-content: center;
+       padding: 0 .25em;
+       cursor: default;
+       text-align: center;
+       outline: 0;
+}
+
+.cbi-dropdown > .more,
+.cbi-dropdown > ul > li[placeholder] {
+       font-weight: bold;
+       display: none;
+       color: #777;
+       text-shadow: 1px 1px 0 #fff;
+}
+
+.cbi-dropdown > ul > li {
+       display: none;
+       overflow: hidden;
+       align-items: center;
+       align-self: center;
+       flex-grow: 1;
+       flex-shrink: 1;
+       min-height: 20px;
+       padding: .25em;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.cbi-dropdown > ul > li .hide-open {
+       display: initial;
+}
+
+.cbi-dropdown > ul > li .hide-close {
+       display: none;
+}
+
+.cbi-dropdown > ul > li[display]:not([display="0"]) {
+       border-left: thin solid #ccc;
+}
+
+.cbi-dropdown[empty] > ul {
+       max-width: 1px;
+}
+
+.cbi-dropdown > ul > li > form {
+       display: none;
+       margin: 0;
+       padding: 0;
+       pointer-events: none;
+}
+
+.cbi-dropdown > ul > li img {
+       margin-right: .25em;
+       vertical-align: middle;
+}
+
+.cbi-dropdown > ul > li > form > input[type="checkbox"] {
+       height: auto;
+       margin: 0;
+}
+
+.cbi-dropdown > ul > li input[type="text"] {
+       height: 20px;
+}
+
+.cbi-dropdown[open] > ul.dropdown {
+       position: absolute;
+       z-index: 1100;
+       display: block;
+       width: auto;
+       min-width: 100%;
+       max-width: none;
+       max-height: 200px !important;
+       border: thin solid #918e8c;
+       background: #f6f6f6;
+       box-shadow: 0 0 4px #918e8c;
+}
+
+.cbi-dropdown > ul > li[display],
+.cbi-dropdown[open] > ul.preview,
+.cbi-dropdown[open] > ul.dropdown > li,
+.cbi-dropdown[multiple] > ul > li > label,
+.cbi-dropdown[multiple][open] > ul.dropdown > li,
+.cbi-dropdown[multiple][more] > .more,
+.cbi-dropdown[multiple][empty] > .more {
+       display: flex;
+       align-items: center;
+       flex-grow: 1;
+}
+
+.cbi-dropdown[empty] > ul > li,
+.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
+.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
+       display: block;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-open {
+       display: none;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-close {
+       display: initial;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li {
+       border-bottom: thin solid #ccc;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[selected] {
+       background: #b0d0f0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li.focus {
+       background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+}
+
+.cbi-dropdown[open] > ul.dropdown > li:last-child {
+       margin-bottom: 0;
+       border-bottom: 0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[unselectable] {
+       opacity: .7;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
+       width: 100%;
+}
+
+.cbi-dropdown[disabled] {
+       pointer-events: none;
+       opacity: .6;
+}
+
+.cbi-dropdown .zonebadge {
+       width: 100%;
+}
+
+.cbi-dropdown[open] .zonebadge {
+       width: auto;
+}
+
+/* progressbar */
+.cbi-progressbar {
+       position: relative;
+       min-width: 170px;
+       height: 20px;
+       margin: 6px 0;
+       border: thin solid #999;
+       background: #eee;
+}
+
+.cbi-progressbar > div {
+       width: 0;
+       height: 100%;
+       transition: width .25s ease-in;
+       background: #5bc0de;
+       background: var(--bar-bg);
+}
+
+.cbi-progressbar::after {
+       font-family: monospace;
+       font-size: 1.3em;
+       font-weight: bold;
+       font-size-adjust: .38;
+       line-height: normal;
+       position: absolute;
+       top: 2px;
+       right: 0;
+       bottom: 2px;
+       left: 0;
+       overflow: hidden;
+       content: attr(title);
+       text-align: center;
+       white-space: pre;
+       text-overflow: ellipsis;
+       text-shadow: 0 0 2px #eee;
+}
+
+#modal_overlay {
+       position: fixed;
+       z-index: 900;
+       top: 4rem;
+       right: 10000px;
+       bottom: 0;
+       left: -10000px;
+       overflow-y: scroll;
+       transition: opacity .125s ease-in;
+       opacity: 0;
+       background: rgba(0, 0, 0, .7);
+       -webkit-overflow-scrolling: touch;
+}
+
+.modal {
+       display: flex;
+       align-items: center;
+       flex-wrap: wrap;
+       width: 90%;
+       min-width: 270px;
+       max-width: 600px;
+       min-height: 32px;
+       max-height: 2400px;
+       margin: 5em auto;
+       padding: 1em;
+       border-radius: 3px !important;
+       background: #fff;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+.modal > * {
+       line-height: normal;
+       flex-basis: 100%;
+}
+
+.modal > pre,
+.modal > textarea {
+       font-size: 1rem;
+       font-size-adjust: .35;
+       overflow: auto;
+       margin-bottom: .5em;
+       padding: 8.5px;
+       cursor: auto;
+       white-space: pre-wrap;
+       color: #eee;
+       outline: 0;
+       background-color: #101010;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+.modal > h4 {
+       margin: .5em 0;
+}
+
+.modal ul {
+       margin-left: 2.2em;
+}
+
+.modal li {
+       list-style-type: square;
+       color: #808080;
+}
+
+.modal p {
+       padding-left: .25rem;
+       word-break: break-word;
+}
+
+.modal .label {
+       font-size: .6rem;
+       font-weight: normal;
+       padding: .1rem .3rem;
+       padding-bottom: 0;
+       cursor: default;
+       border-radius: 0;
+}
+
+.modal .label.warning {
+       background-color: #f0ad4e !important;
+}
+
+.modal .btn {
+       padding: .3rem .6rem;
+}
+
+.modal .spinning {
+       margin-bottom: 2em;
+}
+
+body.modal-overlay-active {
+       overflow: hidden;
+       height: 100vh;
+}
+
+body.modal-overlay-active #modal_overlay {
+       right: 0;
+       left: 0;
+       opacity: 1;
+}
+
+.spinning {
+       position: relative;
+       padding-left: 32px !important;
+}
+
+.spinning::before {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       left: .2em;
+       width: 32px;
+       content: "";
+       background: url(../resources/icons/loading.gif) no-repeat center;
+       background-size: 16px;
+}
+
+/* luci */
+.hidden {
+       display: none;
+}
+
+.left,
+.left::before {
+       text-align: left !important;
+}
+
+.right,
+.right::before {
+       text-align: right !important;
+}
+
+.center,
+.center::before {
+       text-align: center !important;
+}
+
+.top {
+       align-self: flex-start !important;
+       vertical-align: top !important;
+}
+
+.bottom {
+       align-self: flex-end !important;
+       vertical-align: bottom !important;
+}
+
+.inline {
+       display: inline;
+}
+
+.cbi-page-actions {
+       padding-top: 1rem;
+       text-align: right;
+}
+
+.cbi-page-actions > form[method="post"] {
+       display: inline-block;
+}
+
+.th[data-type="button"],
+.td[data-type="button"],
+.th[data-type="fvalue"],
+.td[data-type="fvalue"] {
+       flex: 1 1 2em;
+       text-align: center;
+}
+
+.ifacebadge {
+       display: inline-flex;
+       padding: .5rem .8rem;
+       border-bottom: thin solid #ccc;
+       background: #eee;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+}
+
+td > .ifacebadge,
+.td > .ifacebadge {
+       font-size: .8rem;
+       background-color: #f0f0f0;
+}
+
+.ifacebadge > em,
+.ifacebadge > img {
+       display: inline-block;
+       align-self: flex-start;
+       margin: 0 .2rem;
+}
+
+.ifacebadge > img + img {
+       margin: 0 .2rem 0 0;
+}
+
+.network-status-table {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox {
+       flex-grow: 1;
+       margin: .5em;
+}
+
+.network-status-table .ifacebox-body {
+       display: flex;
+       flex-direction: column;
+       height: 100%;
+}
+
+.network-status-table .ifacebox-body > span {
+       flex: 10 10 auto;
+       height: 100%;
+}
+
+.network-status-table .ifacebox-body > div {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox-body .ifacebadge {
+       align-items: center;
+       flex: 1 1 auto;
+       min-width: 220px;
+       margin: .5em .25em 0 .25em;
+       padding: .5em;
+       background-color: #fff;
+}
+
+/* textarea */
+.cbi-input-textarea {
+       font-family: monospace;
+       width: 100%;
+       min-height: 14rem;
+       padding: .8rem;
+       color: #000;
+}
+
+#syslog {
+       font-size: small;
+       line-height: 1.25;
+       overflow-y: hidden;
+       width: 100%;
+       min-height: 15rem;
+       padding: 1rem;
+       resize: none;
+       color: #eee;
+       border: 0;
+       border-radius: 0;
+       background-color: #101010;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+#syslog:focus {
+       outline: 0;
+}
+
+/* config changes */
+.uci-change-list {
+       font-family: monospace;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #0f0;
+       background-color: #cfc;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+       font-style: normal;
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #f00;
+       background-color: #fcc;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+       font-style: normal;
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #ccc;
+       background-color: #eee;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+       font-style: normal;
+       padding: 0;
+       white-space: pre;
+       border: 0;
+}
+
+.uci-change-legend {
+       padding: 5px;
+}
+
+.uci-change-legend-label {
+       float: left;
+       width: 150px;
+}
+
+.uci-change-legend-label > ins,
+.uci-change-legend-label > del,
+.uci-change-legend-label > var {
+       display: block;
+       float: left;
+       width: 10px;
+       height: 10px;
+       margin-right: 4px;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+       line-height: .4;
+       border: 0;
+}
+
+.uci-change-list var,
+.uci-change-list del,
+.uci-change-list ins {
+       padding: .5rem;
+}
+
+/* other fix */
+#iwsvg,
+#iwsvg2,
+#bwsvg {
+       border: thin solid #d4d4d4 !important;
+}
+
+#iwsvg,
+[data-page="admin-status-realtime-bandwidth"] #bwsvg {
+       border-top: 0 !important;
+}
+
+.ifacebox {
+       line-height: 1.25;
+       display: inline-flex;
+       flex-direction: column;
+       min-width: 100px;
+       border-bottom: thin solid #ccc;
+       background-color: #f9f9f9;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2);
+}
+
+.ifacebox-head {
+       padding: .25em;
+       background: #eee;
+}
+
+.ifacebox-head.active {
+       background: #5bc0de;
+       background: var(--bar-bg);
+}
+
+.ifacebox-body {
+       padding: .25em;
+}
+
+.cbi-image-button {
+       margin-left: .5rem;
+}
+
+.zonebadge {
+       display: inline-block;
+       padding: .2rem .5rem;
+}
+
+.zonebadge .ifacebadge {
+       margin: .1rem .2rem;
+       padding: .2rem .3rem;
+       border: thin solid #6c6c6c;
+}
+
+.zonebadge > input[type="text"] {
+       min-width: 10rem;
+       margin-top: .3rem;
+       padding: .16rem 1rem;
+}
+
+.zonebadge > em,
+.zonebadge > strong {
+       display: inline-block;
+       margin: 0 .2rem;
+}
+
+.cbi-value-field .cbi-input-checkbox,
+.cbi-value-field .cbi-input-radio {
+       margin-top: .1rem;
+}
+
+.cbi-value-field > ul > li {
+       display: flex;
+}
+
+.cbi-value-field > ul > li > label {
+       margin-top: .5rem;
+}
+
+.cbi-value-field > ul > li .ifacebadge {
+       margin-top: -.5rem;
+       margin-left: .4rem;
+       background-color: #eee;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown {
+       min-width: 7rem;
+}
+
+.cbi-section-create {
+       display: inline-flex;
+       align-items: center;
+       margin: .5rem -3px;
+}
+
+.cbi-section-create > * {
+       margin: .5rem;
+}
+
+.cbi-section-remove {
+       padding: .5rem;
+}
+
+div.cbi-value var,
+td.cbi-value-field var,
+.td.cbi-value-field var {
+       font-style: italic;
+       color: #0069d6;
+}
+
+.cbi-optionals {
+       padding: 1rem 1rem 0 1rem;
+       border-top: thin solid #ccc;
+}
+
+.cbi-dropdown-container {
+       position: relative;
+}
+
+.cbi-tooltip-container,
+span[data-tooltip],
+span[data-tooltip] .label {
+       cursor: help !important;
+}
+
+.cbi-tooltip {
+       position: absolute;
+       z-index: 1000;
+       left: -1000px;
+       padding: 2px 5px;
+       transition: opacity .25s ease-out;
+       white-space: pre;
+       pointer-events: none;
+       opacity: 0;
+       border-radius: 3px;
+       background: #fff;
+       box-shadow: 0 0 2px #444;
+}
+
+.cbi-tooltip-container:hover .cbi-tooltip {
+       left: auto;
+       transition: opacity .25s ease-in;
+       opacity: 1;
+}
+
+.zonebadge .cbi-tooltip {
+       margin: -1.5rem 0 0 -.5rem;
+       padding: .25rem;
+       background: inherit;
+}
+
+.zonebadge-empty {
+       color: #404040;
+       background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px);
+}
+
+.zone-forwards {
+       display: flex;
+       min-width: 10rem;
+}
+
+.zone-forwards > * {
+       flex: 1 1 45%;
+}
+
+.zone-forwards > span {
+       flex-basis: 10%;
+       padding: 0 .25rem;
+       text-align: center;
+}
+
+.zone-forwards .zone-src,
+.zone-forwards .zone-dest {
+       display: flex;
+       flex-direction: column;
+}
+
+.label {
+       font-size: .8rem;
+       font-weight: bold;
+       padding: .3rem .8rem;
+       white-space: nowrap;
+       text-decoration: none;
+       text-transform: uppercase;
+       color: #fff !important;
+       border-radius: 3px;
+       background-color: #bfbfbf;
+       text-shadow: none;
+}
+
+label > input[type="checkbox"],
+label > input[type="radio"] {
+       position: relative;
+       top: .4rem;
+       right: .2rem;
+       margin: 0;
+       vertical-align: bottom;
+}
+
+label[data-index][data-depends] {
+       padding-right: 2em;
+}
+
+.showSide {
+       display: none;
+}
+
+.darkMask {
+       position: fixed;
+       z-index: 99;
+       display: none;
+       width: 100%;
+       height: 100%;
+       content: "";
+       background-color: rgba(0, 0, 0, .56);
+}
+
+/* diagnostics */
+#diag-rc-output > pre,
+#command-rc-output > pre,
+[data-page="admin-services-wol"] .notice code {
+       font-size: 1.2rem;
+       font-size-adjust: .35;
+       line-height: normal;
+       display: block;
+       overflow-y: hidden;
+       width: 100%;
+       padding: 8.5px;
+       white-space: pre;
+       color: #eee;
+       background-color: #101010;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+[data-page="admin-network-diagnostics"] .table {
+       box-shadow: none;
+}
+
+input[name="ping"],
+input[name="traceroute"],
+input[name="nslookup"] {
+       width: 80%;
+}
+
+/* fix Main Login */
+.node-main-login > .main > .main-left {
+       display: none;
+}
+
+.node-main-login > .main > .main-right {
+       width: 100%;
+}
+
+.node-main-login > .main fieldset {
+       display: inline;
+       overflow: hidden;
+       margin-bottom: 1rem;
+       padding: .5rem;
+       border: 0;
+       background: none;
+       box-shadow: none;
+}
+
+.node-main-login > .main .cbi-value-title {
+       width: 9.5rem;
+}
+
+.node-main-login > .main #maincontent {
+       text-align: center;
+}
+
+.node-main-login > .main .container {
+       display: inline-block;
+       margin-top: 2rem !important;
+       padding: 1rem 3.5rem 2rem;
+       text-align: left;
+       background-color: #fff;
+       box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+}
+
+.node-main-login > .main form > div:last-child {
+       float: right;
+}
+
+.node-main-login > .main .cbi-value {
+       display: block;
+}
+
+.node-main-login > .main .cbi-value > * {
+       display: inline-block !important;
+}
+
+.node-main-login > .main .cbi-input-text {
+       width: 100% !important;
+       min-width: 15rem;
+}
+
+.node-main-login .cbi-section {
+       box-shadow: none;
+}
+
+@media screen and (min-height: 585px) {
+       .node-main-login footer {
+               position: absolute;
+               bottom: 0;
+               width: 100%;
+       }
+}
+
+/* fix status */
+.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2),
+.node-status-processes > .main .table .tr .td:nth-child(3) {
+       white-space: normal;
+}
+
+/* fix system reboot */
+[data-page="admin-system-reboot"] p {
+       padding-left: 2rem;
+}
+
+[data-page="admin-system-reboot"] p > span {
+       position: relative;
+       top: .1rem;
+       left: 1rem;
+}
+
+/* samba */
+#cbi-samba [data-tab="template"] .cbi-value-field {
+       display: block;
+}
+
+#cbi-samba [data-tab="template"] .cbi-value-title {
+       width: auto;
+       padding-bottom: .6rem;
+}
+
+/* software */
+.controls > * > .btn:not([aria-label$="page"]) {
+       flex-grow: initial !important;
+       margin-top: .1rem;
+}
+
+.controls > #pager > .btn[aria-label$="page"] {
+       font-size: 1.4rem;
+       font-weight: bold;
+}
+
+.controls > * > label {
+       margin-bottom: .2rem;
+}
+
+[data-page="admin-system-opkg"] div.btn {
+       line-height: 3;
+       display: inline;
+       padding: .3rem .6rem;
+}
+
+[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
+[data-page="admin-system-opkg"] #maincontent > .container {
+       margin-top: 2rem;
+       padding-top: .1rem;
+}
+
+[data-page="admin-system-opkg"] #maincontent > .container {
+       margin: 2rem;
+       margin-bottom: 1rem;
+}
+
+.td.version,
+.td.size {
+       white-space: normal !important;
+       word-break: break-word;
+}
+
+.cbi-tabmenu + .cbi-section {
+       margin-top: 0;
+}
+
+/* wireless overview */
+#cbi-wireless > #wifi_assoclist_table > .tr {
+       box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td {
+       right: 33px;
+       bottom: 33px;
+       left: 33px;
+       border-top: thin solid #ddd !important;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles {
+       box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th {
+       border-bottom: thin solid #ddd;
+       box-shadow: 0 -1px 0 0 #ddd;
+}
+
+#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] {
+       width: 23rem;
+}
+
+/* firewall */
+#iptables {
+       margin: 0;
+}
+
+.Firewall form {
+       margin: 2rem 2rem 0 0;
+       padding: 0;
+       box-shadow: none;
+}
+
+#cbi-firewall-redirect table *,
+#cbi-network-switch_vlan table *,
+#cbi-firewall-zone table * {
+       font-size: small;
+}
+
+#cbi-firewall-redirect table input[type="text"],
+#cbi-network-switch_vlan table input[type="text"],
+#cbi-firewall-zone table input[type="text"] {
+       width: 5rem;
+}
+
+#cbi-firewall-redirect table select,
+#cbi-network-switch_vlan table select,
+#cbi-firewall-zone table select {
+       min-width: 3.5rem;
+}
+
+#cbi-network-switch_vlan .th,
+#cbi-network-switch_vlan .td {
+       flex-basis: 12%;
+}
+
+#cbi-firewall-zone .table,
+#cbi-network-switch_vlan .table {
+       display: block;
+}
+
+#cbi-firewall-zone .td,
+#cbi-network-switch_vlan .td {
+       width: 100%;
+}
+
+/* applyreboot fix */
+#applyreboot-container {
+       margin: 2rem;
+}
+
+#applyreboot-section {
+       line-height: 300%;
+       margin: 2rem;
+}
+
+/* openvpn bug fix */
+.OpenVPN a {
+       line-height: initial !important;
+}
+
+/* custom commands */
+.commandbox {
+       width: 24% !important;
+       margin: 10px 0 0 10px !important;
+       padding: .5rem 1rem;
+       border-bottom: thin solid #ccc;
+       background: #eee;
+       box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+}
+
+.commandbox h3 {
+       line-height: normal !important;
+       overflow: hidden;
+       margin: 6px 0 !important;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.commandbox div {
+       left: auto !important;
+}
+
+.commandbox code {
+       position: absolute;
+       overflow: hidden;
+       max-width: 60%;
+       margin-left: 4px;
+       padding: 2px 3px;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.commandbox code:hover {
+       overflow-y: auto;
+       max-height: 50px;
+       white-space: normal;
+}
+
+.commandbox p:first-of-type {
+       margin-top: -6px;
+}
+
+.commandbox p:nth-of-type(2) {
+       margin-top: 2px;
+}
+
+[data-page^="admin-system-commands"] .panel-title,
+[data-page^="command-cfg"] .mobile-hide,
+[data-page^="command-cfg"] .showSide {
+       display: none;
+}
+
+#command-rc-output .alert-message {
+       line-height: 1.42857143;
+       position: absolute;
+       top: 40px;
+       right: 32px;
+       max-width: 40%;
+       margin: 0;
+       animation: anim-fade-in 1.5s forwards;
+       word-break: break-word;
+       opacity: 0;
+}
+
+@keyframes anim-fade-in {
+       100% {
+               opacity: 1;
+       }
+}
+
+/* IE hacks */
+@media all and (-ms-high-contrast: none) {
+       .main > .main-left > .nav > .slide > .menu::before {
+               top: 30.25%;
+       }
+
+       .main > .main-left > .nav > li:last-child::before {
+               top: 20%;
+       }
+
+       .showSide::before {
+               top: -12px;
+       }
+}
+
+@media screen and (max-width: 1600px) {
+       header > .fill > .container > #logo {
+               margin: 0 2.5rem 0 .5rem;
+       }
+
+       .main-left {
+               width: calc(0% + 13rem);
+       }
+
+       .main-right {
+               width: calc(100% - 13rem);
+       }
+
+       .btn:not(button),
+       .cbi-button {
+               font-size: .8rem;
+               padding: .3rem .6rem;
+       }
+
+       .label {
+               padding: .2rem .6rem;
+       }
+
+       fieldset,
+       .cbi-section {
+               padding: 1rem;
+       }
+
+       .cbi-value-title {
+               width: 15rem;
+               padding-right: .6rem;
+       }
+
+       .cbi-value-field .cbi-dropdown,
+       .cbi-value-field .cbi-input-select,
+       .cbi-value input[type="text"],
+       .cbi-value input[type="password"] {
+               min-width: 22rem;
+       }
+
+       #cbi-firewall-zone .cbi-input-select {
+               min-width: 9rem;
+       }
+
+       .cbi-input-textarea {
+               font-size: small;
+       }
+
+       .node-admin-status > .main fieldset li > a {
+               padding: .3rem .6rem;
+       }
+}
+
+@media screen and (max-width: 1366px) {
+       header {
+               height: 3.5rem;
+       }
+
+       header > .fill > .container {
+               margin-top: .25rem;
+               cursor: default;
+       }
+
+       .main {
+               top: 3.5rem;
+               height: calc(100% - 3.5rem);
+       }
+
+       .main-left {
+               top: 3.5rem;
+               width: calc(0% + 13rem);
+               height: calc(100% - 3.5rem);
+       }
+
+       .main-right {
+               width: calc(100% - 13rem);
+       }
+
+       .tabs > li > a,
+       .cbi-tabmenu > li > a {
+               padding: .2rem .5rem;
+       }
+
+       .panel-title {
+               font-size: 1.1rem;
+               padding-bottom: 1rem;
+       }
+
+       table {
+               font-size: .7rem !important;
+               width: 100% !important;
+       }
+
+       .table .cbi-input-text {
+               width: 100%;
+       }
+
+       .cbi-value-field .cbi-dropdown,
+       .cbi-value-field .cbi-input-select,
+       .cbi-value input[type="text"],
+       .cbi-value input[type="password"] {
+               min-width: 19rem;
+       }
+
+       #cbi-firewall-zone .cbi-input-select {
+               min-width: 4rem;
+       }
+
+       .main > .main-left > .nav > li,
+       .main > .main-left > .nav > li a,
+       .main > .main-left > .nav > .slide > .menu,
+       .main > .main-left > .nav > li > [data-title="Logout"] {
+               font-size: .9rem;
+       }
+
+       .main > .main-left > .nav > .slide > .slide-menu > li > a {
+               font-size: .7rem;
+       }
+
+       #modal_overlay {
+               top: 3.5rem;
+       }
+
+       [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) {
+               display: block;
+       }
+
+       [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),
+       [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),
+       [data-page="admin-network-hosts"] .table,
+       [data-page="admin-network-routes"] .table {
+               overflow-y: visible;
+       }
+
+       .commandbox {
+               width: 32% !important;
+       }
+}
+
+@media screen and (max-width: 1152px) {
+       header > .fill > .container > #logo {
+               display: none;
+       }
+
+       header > .fill > .container > .brand {
+               position: relative;
+       }
+
+       html,
+       .main {
+               overflow-y: visible;
+       }
+
+       .main > .loading > span {
+               top: 25%;
+       }
+
+       .main-left {
+               position: fixed;
+               z-index: 100;
+               width: 0;
+       }
+
+       .main-right {
+               width: 100%;
+       }
+
+       .showSide {
+               position: relative;
+               top: .18rem;
+               display: inline-flex;
+               align-items: center;
+               width: 1.6rem;
+               height: 1.6rem;
+               margin-right: .7rem;
+               cursor: pointer;
+       }
+
+       .showSide::before {
+               position: absolute;
+               left: 1px;
+               width: 24px;
+               height: 24px;
+               content: "";
+               background: url(./icons/menu.svg) no-repeat center;
+       }
+
+       body:not(.logged-in) .showSide {
+               visibility: hidden;
+               width: 0;
+               margin: 0;
+       }
+
+       .node-main-login > .main .cbi-value-title {
+               text-align: left;
+       }
+
+       .cbi-value-title {
+               width: 12rem;
+               padding-right: 1rem;
+       }
+
+       .cbi-value-field .cbi-dropdown,
+       .cbi-value-field .cbi-input-select,
+       .cbi-value input[type="text"] {
+               width: 16rem;
+               min-width: 16rem;
+       }
+
+       .cbi-value input[type="password"],
+       .cbi-value input[name^="pw"],
+       .cbi-value input[data-update="change"]:nth-child(2) {
+               width: 13rem !important;
+               min-width: 13rem;
+       }
+
+       #diag-rc-output > pre,
+       #command-rc-output > pre,
+       [data-page="admin-services-wol"] .notice code {
+               font-size: 1rem;
+       }
+
+       .table {
+               display: block;
+       }
+
+       .Interfaces .table {
+               overflow-x: hidden;
+       }
+
+       #packages.table {
+               display: grid;
+       }
+
+       .tr {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+       }
+
+       .Overview .table[width="100%"] > .tr {
+               flex-wrap: nowrap;
+       }
+
+       .tr.placeholder {
+               border-bottom: thin solid #ddd;
+       }
+
+       .tr.placeholder > .td,
+       #cbi-firewall .tr > .td,
+       #cbi-network .tr:nth-child(2) > .td,
+       .cbi-section #wifi_assoclist_table .tr > .td {
+               border-top: 0;
+       }
+
+       .th,
+       .td {
+               display: inline-block;
+               align-self: flex-start;
+               flex: 2 2 25%;
+               text-overflow: ellipsis;
+               word-wrap: break-word;
+       }
+
+       .td select,
+       .td input[type="text"] {
+               width: 100%;
+               word-wrap: normal;
+       }
+
+       .td [data-dynlist] > input,
+       .td input.cbi-input-password {
+               width: calc(100% - 1.5rem);
+       }
+
+       .td[data-type="button"],
+       .td[data-type="fvalue"] {
+               flex: 1 1 12.5%;
+               text-align: left;
+       }
+
+       .th.cbi-value-field,
+       .td.cbi-value-field,
+       .th.cbi-section-table-cell,
+       .td.cbi-section-table-cell {
+               flex-basis: auto;
+               padding-top: 1rem;
+       }
+
+       .cbi-section-table-row {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               justify-content: space-between;
+               box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+       }
+
+       .td.cbi-value-field,
+       .cbi-section-table-cell {
+               display: inline-block;
+               flex: 10 10 auto;
+               flex-basis: 50%;
+               text-align: center;
+       }
+
+       .td.cbi-section-actions {
+               vertical-align: bottom;
+       }
+
+       .tr.table-titles,
+       .tr.cbi-section-table-titles,
+       .tr.cbi-section-table-descr {
+               display: none;
+       }
+
+       .tr[data-title]::before,
+       .tr.cbi-section-table-titles.named::before {
+               font-size: .9rem;
+               display: block;
+               flex: 1 1 100%;
+               border-bottom: thin solid rgba(0, 0, 0, .26);
+               background: #90c0e0;
+       }
+
+       .td[data-title],
+       [data-page^="admin-status-realtime"] .td[id] {
+               text-align: left;
+       }
+
+       .td[data-title]::before {
+               display: block;
+       }
+
+       .cbi-button + .cbi-button {
+               margin-left: 0;
+       }
+
+       .td.cbi-section-actions > * > *,
+       .td.cbi-section-actions > * > form > * {
+               margin: 2.1px 3px;
+       }
+
+       .Firewall form {
+               position: static !important;
+               margin: 0 0 2rem 0;
+               padding: 2rem;
+               box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
+       }
+
+       .Firewall form input {
+               width: 100% !important;
+               margin: 0;
+               margin-top: 1rem;
+       }
+
+       .Firewall .center,
+       .Firewall .center::before {
+               text-align: left !important;
+       }
+
+       .commandbox {
+               width: 100% !important;
+               margin-left: 0 !important;
+       }
+}
+
+@media screen and (max-width: 600px) {
+       body {
+               font-size: .8rem;
+       }
+
+       .cbi-progressbar::after {
+               font-size: .95em;
+               line-height: 1.5;
+       }
+
+       fieldset,
+       .cbi-section {
+               margin: 1rem 0 0 0;
+       }
+
+       .tabs {
+               margin: 0 -1rem;
+       }
+
+       #maincontent > .container {
+               margin: 0 1rem 1.5rem 1rem;
+       }
+
+       .main > .main-left > .nav > .slide > .menu,
+       .main > .main-left > .nav > li > [data-title="Logout"] {
+               font-size: 1.2rem;
+       }
+
+       .main > .main-left > .nav > .slide > .slide-menu > li > a {
+               font-size: 1rem;
+       }
+
+       .cbi-value-title {
+               display: block;
+               min-width: 0 !important;
+               margin: .5rem 0;
+               text-align: left;
+       }
+
+       .cbi-value-title,
+       .cbi-value-description,
+       .cbi-value-field,
+       .cbi-value-field .cbi-dropdown,
+       .cbi-value-field .cbi-input-select,
+       .cbi-value input[type="text"] {
+               width: 100%;
+       }
+
+       .cbi-value > .cbi-value-field {
+               display: inline-block;
+       }
+
+       .tabs > li > a,
+       .cbi-tabmenu > li > a {
+               font-size: .9rem;
+               padding: .2rem .3rem;
+       }
+
+       .cbi-page-actions > div > input {
+               display: none;
+       }
+
+       .cbi-page-actions > .cbi-button {
+               margin-top: .2rem;
+       }
+
+       .node-main-login > .main .container {
+               margin: 2rem 1.2rem 1.5rem 1.2rem !important;
+               padding: .3rem 1.7rem 2rem 1.6rem;
+       }
+
+       .node-main-login > .main .cbi-value {
+               padding: 0;
+       }
+
+       .node-main-login > .main form > div:last-child {
+               margin-top: 2rem;
+       }
+
+       .node-main-login > .main .cbi-value-title {
+               font-size: 1.2rem;
+               width: 100% !important;
+       }
+
+       .node-main-login > .main fieldset {
+               margin: 0;
+               padding: .5rem;
+       }
+
+       .commandbox p:first-of-type {
+               margin-top: -8px;
+       }
+
+       #syslog,
+       #diag-rc-output > pre,
+       #command-rc-output > pre,
+       [data-page="admin-services-wol"] .notice code {
+               font-size: .8rem !important;
+       }
+
+       h2 {
+               font-size: 2rem;
+       }
+
+       .tabs > li > a {
+               font-size: .9rem;
+       }
+
+       select,
+       input {
+               font-size: .9rem;
+       }
+
+       code {
+               font-size: .8rem;
+       }
+
+       .mobile-hide {
+               display: none;
+       }
+
+       .panel-title {
+               font-size: 1.4rem;
+               padding-bottom: 1rem;
+       }
+
+       .node-system-packages > .main .cbi-value.cbi-value-last > div {
+               width: 100% !important;
+       }
+
+       .node-system-packages > .main .cbi-value .cbi-value-field input {
+               width: 100%;
+       }
+
+       .th,
+       .td {
+               flex-basis: 50%;
+       }
+
+       .td.cbi-value-field {
+               flex-basis: 100%;
+       }
+
+       .td.cbi-value-field[data-type="button"],
+       .td.cbi-value-field[data-type="fvalue"] {
+               flex-basis: 25%;
+               text-align: left;
+       }
+
+       .tr[data-title]::before,
+       .tr.cbi-section-table-titles.named::before {
+               font-size: 1rem;
+       }
+
+       td > .ifacebadge,
+       .td > .ifacebadge {
+               font-size: .62rem;
+       }
+
+       #cbi-wireless > #wifi_assoclist_table .td {
+               overflow: hidden;
+       }
+
+       #cbi-wireless > .cbi-section-node .td,
+       .Interfaces .td.cbi-section-actions {
+               text-align: center !important;
+       }
+
+       [data-page="admin-status-processes"] .td[data-title="Hang Up"]::before,
+       [data-page="admin-status-processes"] .td[data-title="Terminate"]::before,
+       [data-page="admin-status-processes"] .td[data-title="Kill"]::before {
+               display: none;
+       }
+
+       .hide-sm,
+       .hide-xs:not([data-title="MAC-Address"]) {
+               display: none;
+       }
+}
+
+@media screen and (min-width: 600px) {
+       ::-webkit-scrollbar {
+               width: 10px;
+               height: 10px;
+       }
+
+       ::-webkit-scrollbar,
+       ::-webkit-scrollbar-corner {
+               background: transparent;
+       }
+
+       ::-webkit-scrollbar-thumb {
+               background: #9e9e9e;
+       }
+
+       ::-webkit-scrollbar-thumb:hover {
+               background: #757575;
+       }
+
+       ::-webkit-scrollbar-thumb:active {
+               background: #424242;
+       }
+}
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/custom.css b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/custom.css
new file mode 100644 (file)
index 0000000..7a5bbb9
--- /dev/null
@@ -0,0 +1,13 @@
+:root {
+       --main-color: #09c;
+       --header-bg: #09c;
+       --header-color: #fff;
+       --bar-bg: #5bc0de;
+       --menu-bg-color: #fff;
+       --menu-color: #5f6368;
+       --menu-color-hover: #202124;
+       --main-menu-color: #202124;
+       --submenu-bg-hover: #d4d4d4;
+       --submenu-bg-hover-active: #09c;
+       --font-body: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";
+}
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico
new file mode 100644 (file)
index 0000000..72c3115
Binary files /dev/null and b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico differ
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/arrow.svg b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/arrow.svg
new file mode 100644 (file)
index 0000000..be864c5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#202124" d="m8,10.033663l-6.898535,-6.013274l-1.060688,0.972974l7.959223,6.986249l7.959223,-6.986249l-1.060688,-0.972974l-6.898535,6.013274z"/></svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/logout.svg b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/logout.svg
new file mode 100644 (file)
index 0000000..d529b94
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#202124" d="M10.09,15.59L11.5,17l5,-5,-5,-5,-1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0,-2,0.9,-2,2v4h2V5h14v14H5v-4H3v4c0,1.1,0.89,2,2,2h14c1.1,0,2,-0.9,2,-2V5c0,-1.1,-0.9,-2,-2,-2z"/></svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/menu.svg b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/menu.svg
new file mode 100644 (file)
index 0000000..46bd0ae
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#fff" d="m2.037076,18.641983l19.925899,0l0,-2.231286l-19.925899,0l0,2.231286zm0,-7.731664l0,2.179395l19.925899,0l0,-2.179395l-19.925899,0zm0,-5.552269l0,2.231286l19.925899,0l0,-2.231286l-19.925899,0z"/></svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/spinner.svg b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/icons/spinner.svg
new file mode 100644 (file)
index 0000000..6ddd3b3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#888" d="M8,0c-4.355,0-7.898,3.481-7.998,7.812,0.092-3.779,2.966-6.812,6.498-6.812,3.59,0,6.5,3.134,6.5,7,0,0.828,0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5c0-4.418-3.582-8-8-8zM8,16c4.355,0,7.898-3.481,7.998-7.812-0.092,3.779-2.966,6.812-6.498,6.812-3.59,0-6.5-3.134-6.5-7,0-0.828-0.672-1.5-1.5-1.5s-1.5,0.672-1.5,1.5c0,4.418,3.582,8,8,8z"/></svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js
new file mode 100755 (executable)
index 0000000..4d9b3a2
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/script.js b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/script.js
new file mode 100755 (executable)
index 0000000..755191f
--- /dev/null
@@ -0,0 +1,218 @@
+/**
+ *     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>
+ *
+ *     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 2012 David Menting <david@nut-bolt.nl>
+ *
+ *     MUI:
+ *             https://github.com/muicss/mui
+ *
+ *     Licensed to the public under the Apache License 2.0
+ */
+
+(function ($) {
+       $(".main > .loading").fadeOut();
+
+       /**
+        * trim text, Remove spaces, wrap
+        * @param text
+        * @returns {string}
+        */
+       function trimText(text) {
+               return text.replace(/[ \t\n\r]+/g, " ");
+       }
+
+       var lastNode = undefined;
+       var mainNodeName = undefined;
+
+       var nodeUrl = "";
+       (function(node){
+               var luciLocation;
+               if (node[0] == "admin"){
+                       luciLocation = [node[1], node[2]];
+               }else{
+                       luciLocation = node;
+               }
+
+               for(var i in luciLocation){
+                       nodeUrl += luciLocation[i];
+                       if (i != luciLocation.length - 1){
+                               nodeUrl += "/";
+                       }
+               }
+       })(luciLocation);
+
+       /**
+        * get the current node by Burl (primary)
+        * @returns {boolean} success?
+        */
+       function getCurrentNodeByUrl() {
+               var ret = false;
+               if (!$('body').hasClass('logged-in')) {
+                       luciLocation = ["Main", "Login"];
+                       return true;
+               }
+
+               $(".main > .main-left > .nav > .slide > .menu").each(function () {
+                       var ulNode = $(this);
+                       ulNode.next().find("a").each(function () {
+                               var that = $(this);
+                               var href = that.attr("href");
+
+                               if (href.indexOf(nodeUrl) != -1) {
+                                       ulNode.click();
+                                       ulNode.next(".slide-menu").stop(true, true);
+                                       lastNode = that.parent();
+                                       lastNode.addClass("active");
+                                       ret = true;
+                                       return true;
+                               }
+                       });
+               });
+               return ret;
+       }
+
+       /**
+        * menu click
+        */
+       $(".main > .main-left > .nav > .slide > .menu").click(function () {
+               var ul = $(this).next(".slide-menu");
+               var menu = $(this);
+               if (!ul.is(":visible")) {
+                       menu.addClass("active");
+                       ul.addClass("active");
+                       ul.stop(true).slideDown("fast");
+               } else {
+                       ul.stop(true).slideUp("fast", function () {
+                               menu.removeClass("active");
+                               ul.removeClass("active");
+                       });
+               }
+               return false;
+       });
+
+       /**
+        * hook menu click and add the hash
+        */
+       $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () {
+               if (lastNode != undefined) lastNode.removeClass("active");
+               $(this).parent().addClass("active");
+               $(".main > .loading").fadeIn("fast");
+               return true;
+       });
+
+       /**
+        * fix menu click
+        */
+       $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () {
+               if (lastNode != undefined) lastNode.removeClass("active");
+               $(this).addClass("active");
+               $(".main > .loading").fadeIn("fast");
+               window.location = $($(this).find("a")[0]).attr("href");
+               return false;
+       });
+
+       /**
+        * get current node and open it
+        */
+       if (getCurrentNodeByUrl()) {
+               mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1];
+               mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase();
+               $("body").addClass(mainNodeName);
+       }
+
+       /**
+        * Sidebar expand
+        */
+       var showSide = false;
+       $(".showSide").click(function () {
+               if (showSide) {
+                       $(".darkMask").stop(true).fadeOut("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "0"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "visible");
+                       showSide = false;
+               } else {
+                       $(".darkMask").stop(true).fadeIn("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "15rem"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "hidden");
+                       showSide = true;
+               }
+       });
+
+       $(".darkMask").click(function () {
+               if (showSide) {
+                       showSide = false;
+                       $(".darkMask").stop(true).fadeOut("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "0"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "visible");
+               }
+       });
+
+       $(window).resize(function () {
+               if ($(window).width() > 921) {
+                       $(".main-left").css("width", "");
+                       $(".darkMask").stop(true);
+                       $(".darkMask").css("display", "none");
+                       showSide = false;
+               }
+       });
+
+       /**
+        * fix legend position
+        */
+       $("legend").each(function () {
+               var that = $(this);
+               that.after("<span class='panel-title'>" + that.text() + "</span>");
+       });
+
+       $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () {
+               var that = $(this);
+               if (that.text().trim() == ""){
+                       that.css("display", "none");
+               }
+       });
+
+       $(".main-right").focus();
+       $(".main-right").blur();
+       $("input").attr("size", "0");
+       $(".cbi-button-up").val("__");
+       $(".cbi-button-down").val("__");
+       $(".slide > a").removeAttr("href");
+
+       if (mainNodeName != undefined) {
+               console.log(mainNodeName);
+               switch (mainNodeName) {
+                       case "node-status-system_log":
+                       case "node-status-kernel_log":
+                               $("#syslog").focus(function () {
+                                       $("#syslog").blur();
+                                       $(".main-right").focus();
+                                       $(".main-right").blur();
+                               });
+                               break;
+                       case "node-status-firewall":
+                               var button = $(".node-status-firewall > .main fieldset li > a");
+                               button.addClass("cbi-button cbi-button-reset a-to-btn");
+                               break;
+                       case "node-system-reboot":
+                               var button = $(".node-system-reboot > .main > .main-right p > a");
+                               button.addClass("cbi-button cbi-input-reset a-to-btn");
+                               break;
+               }
+       }
+
+})(jQuery);
diff --git a/package/luci/themes/luci-theme-material/luasrc/view/themes/material/footer.htm b/package/luci/themes/luci-theme-material/luasrc/view/themes/material/footer.htm
new file mode 100644 (file)
index 0000000..544866d
--- /dev/null
@@ -0,0 +1,52 @@
+<%#
+       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>
+
+       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 2012 David Menting <david@nut-bolt.nl>
+
+       MUI:
+       https://github.com/muicss/mui
+
+       Licensed to the public under the Apache License 2.0
+-%>
+
+<%
+       local ver = require "luci.version"
+       local disp = require "luci.dispatcher"
+       local request  = disp.context.path
+       local category = request[1]
+       local tree = disp.node()
+       local categories = disp.node_childs(tree)
+%>
+       </div>
+       <footer class="mobile-hide">
+       <a href="https://github.com/openwrt/luci">Powered by <%= ver.luciname %> (<%= ver.luciversion %>)</a> / <%= ver.distversion %>
+       <% if #categories > 1 then %>
+               <ul class="breadcrumb pull-right" id="modemenu">
+               <% for i, r in ipairs(categories) do %>
+               <li<% if request[1] == r then %> class="active"<%end%>>
+                       <a href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a>
+                       <span class="divider">|</span>
+               </li>
+               <% end %>
+               </ul>
+       <% end %>
+       </footer>
+       </div>
+</div>
+<script>
+       // thanks for Jo-Philipp Wich <jow@openwrt.org>
+       var luciLocation = <%= luci.http.write_json(luci.dispatcher.context.path) %>;
+</script>
+<script src="<%=media%>/js/jquery.min.js"></script>
+<script src="<%=media%>/js/script.js"></script>
+</body>
+</html>
diff --git a/package/luci/themes/luci-theme-material/luasrc/view/themes/material/header.htm b/package/luci/themes/luci-theme-material/luasrc/view/themes/material/header.htm
new file mode 100644 (file)
index 0000000..f463ef5
--- /dev/null
@@ -0,0 +1,247 @@
+<%#
+       Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
+
+       luci-theme-material
+       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-2016 Jo-Philipp Wich <jow@openwrt.org>
+       Copyright 2012 David Menting <david@nut-bolt.nl>
+
+       MUI:
+       https://github.com/muicss/mui
+
+       Licensed to the public under the Apache License 2.0
+-%>
+
+<%
+       local sys  = require "luci.sys"
+       local util = require "luci.util"
+       local http = require "luci.http"
+       local disp = require "luci.dispatcher"
+
+       local boardinfo = util.ubus("system", "board")
+
+       local request  = disp.context.path
+       local request2 = disp.context.request
+
+       local category = request[1]
+       local cattree  = category and disp.node(category)
+
+       local leaf = request2[#request2]
+
+       local tree = disp.node()
+       local node = disp.context.dispatched
+
+       local categories = disp.node_childs(tree)
+
+       local c = tree
+       local i, r
+
+       -- tag all nodes leading to this page
+       for i, r in ipairs(request) do
+               if c.nodes and c.nodes[r] then
+                       c = c.nodes[r]
+                       c._menu_selected = true
+               end
+       end
+
+       -- send as HTML5
+       http.prepare_content("text/html")
+
+       local function nodeurl(prefix, name, query)
+               local u = url(prefix, name)
+               if query then
+                       u = u .. http.build_querystring(query)
+               end
+               return pcdata(u)
+       end
+
+       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
+                               write('<ul class="tabs">')
+                       end
+
+                       local selected_node
+                       local selected_name
+                       local i, v
+
+                       for i, v in ipairs(childs) do
+                               local nnode = node.nodes[v]
+                               if nnode._menu_selected then
+                                       selected_node = nnode
+                                       selected_name = v
+                               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
+                               write('</ul>')
+                       end
+
+                       if selected_node then
+                               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 = 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 = 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 = 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
+                       local i, j
+                       for i, j in pairs(require("luci.model.uci").cursor():changes()) do
+                               ucichanges = ucichanges + #j
+                       end
+
+                       if ucichanges > 0 then
+                               write('<a class="uci_change_indicator label notice" href="%s?redir=%s">%s: %d</a>' %{
+                                       url(category, 'uci/changes'),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
+                                       translate('Unsaved Changes'),
+                                       ucichanges
+                               })
+                       end
+               end
+       end
+-%>
+<!DOCTYPE html>
+<html lang="<%=luci.i18n.context.lang%>">
+<head>
+       <meta charset="utf-8">
+       <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
+       <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
+       <meta name="apple-mobile-web-app-capable" content="yes">
+       <meta name="mobile-web-app-capable" content="yes">
+       <meta name="theme-color" content="#09c">
+       <meta name="msapplication-tap-highlight" content="no">
+       <meta name="msapplication-TileColor" content="#09c">
+       <meta name="application-name" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI">
+       <meta name="apple-mobile-web-app-title" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI">
+       <link rel="stylesheet" href="<%=media%>/cascade.css">
+       <link rel="shortcut icon" href="<%=media%>/favicon.ico">
+       <% if node and node.css then %>
+               <link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
+       <% end -%>
+       <% if css then %>
+               <style title="text/css"><%= css %></style>
+       <% end -%>
+       <script src="<%=url('admin/translations', luci.i18n.context.lang)%><%# ?v=PKG_VERSION %>"></script>
+       <script src="<%=resource%>/cbi.js"></script>
+       <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 %>" data-page="<%= table.concat(disp.context.requestpath, "-") %>">
+<header>
+       <div class="fill">
+               <div class="container">
+                       <span class="showSide"></span>
+                       <a id="logo" href="<%=url("admin/status/overview")%>"><img src="<%=media%>/brand.png" alt="OpenWrt"></a>
+                       <a class="brand" href="#"><%=boardinfo.hostname or "?"%></a>
+                       <div class="status">
+                               <% 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>
+                       </div>
+               </div>
+       </div>
+</header>
+<div class="main">
+       <div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div>
+       <div class="main-left">
+               <% render_topmenu() %>
+       </div>
+       <div class="main-right">
+               <div class="darkMask"></div>
+               <div id="maincontent">
+                       <div class="container">
+                               <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%>
+                                       <div class="alert-message warning">
+                                               <h4><%:No password set!%></h4>
+                                               <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p>
+                                               <% if disp.lookup("admin/system/admin") then %>
+                                                       <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div>
+                                               <% end %>
+                                       </div>
+                               <%- end -%>
+
+                               <noscript>
+                                       <div class="alert-message warning">
+                                               <h4><%:JavaScript required!%></h4>
+                                               <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p>
+                                       </div>
+                               </noscript>
+
+                               <% if category then render_tabmenu(category, cattree) end %>
diff --git a/package/luci/themes/luci-theme-material/root/etc/uci-defaults/30_luci-theme-material b/package/luci/themes/luci-theme-material/root/etc/uci-defaults/30_luci-theme-material
new file mode 100755 (executable)
index 0000000..96ab461
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$PKG_UPGRADE" != 1 ]; then
+       uci batch <<-EOF
+               set luci.themes.Material=/luci-static/material
+               set luci.main.mediaurlbase=/luci-static/material
+               commit luci
+       EOF
+fi
+
+exit 0
diff --git a/package/luci/themes/luci-theme-openwrt/Makefile b/package/luci/themes/luci-theme-openwrt/Makefile
new file mode 100644 (file)
index 0000000..b873d80
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI OpenWrt.org theme
+LUCI_DEPENDS:=
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css b/package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
new file mode 100644 (file)
index 0000000..cbe0e11
--- /dev/null
@@ -0,0 +1,2035 @@
+@charset "utf-8";
+
+.lang_he {
+       direction: RTL;
+       unicode-bidi: embed;
+}
+
+@media all {
+
+html {
+       min-height: 100%;
+       height: auto;
+       position:relative;
+}
+
+body {
+       color: #ffffff;
+       background-color: #4a6b7c;
+       background-position: bottom center;
+       background-repeat: repeat-x;
+       font-family: Arial, Verdana, sans-serif;
+       font-size: 13px;
+       padding-bottom: 1.5em;
+}
+
+* {
+       margin: 0;
+       padding: 0;
+       box-sizing: border-box;
+}
+
+.table { display: table; width: 100%; position: relative; border-collapse: collapse; }
+.tr { display: table-row; }
+.thead { display: table-header-group; }
+.tbody { display: table-row-group; }
+.tfoot { display: table-footer-group; }
+.td, .th { display: table-cell; vertical-align: middle; }
+.th { font-weight: bold; }
+
+.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
+.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
+
+.col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; }
+.col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; }
+.col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; }
+.col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; }
+.col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; }
+.col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; }
+.col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; }
+.col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; }
+.col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; }
+.col-10 { flex: 10 10 300px !important; -webkit-flex: 10 10 300px !important; }
+
+.tr.placeholder {
+       height: 3.5em;
+}
+
+.tr.placeholder > .td {
+       position: absolute;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       text-align: center;
+       line-height: 3em;
+}
+
+.nowrap {
+       white-space: nowrap;
+}
+
+a img {
+       border: none;
+       text-decoration: none;
+}
+
+#maincontainer {
+       display: flex;
+}
+
+#maincontent {
+       flex-basis: 100%;
+}
+
+#mainmenu {
+       max-width: 200px;
+       background: #f5f5f5;
+       border: 1px solid #444;
+       border-width: 0 0 1px 1px;
+       font-size: 15px;
+       padding-bottom: 1em;
+}
+
+#mainmenu ul {
+       display: block;
+       margin: 0;
+       padding: 0;
+}
+
+#mainmenu ul li {
+       display: block;
+       white-space: nowrap;
+}
+
+#mainmenu ul li > a {
+       display: block;
+       color: #444;
+       padding: .4em .5em;
+       text-decoration: none;
+}
+
+#mainmenu ul li.selected > a {
+       background: #fff;
+       color: #37c;
+       border: 1px dotted #444;
+       border-width: 1px 0;
+}
+
+#mainmenu ul li.selected:first-child > a {
+       border-top: none;
+}
+
+#mainmenu ul li li > a {
+       font-size: 85%;
+       padding-left: 1.5em;
+}
+
+#mainmenu ul li > ul {
+       flex-basis: 100%;
+       max-height: 0;
+       visibility: hidden;
+       transition: max-height .15s;
+}
+
+#mainmenu ul:not(.active) li.selected > ul,
+#mainmenu ul li.active > ul {
+       max-height: 1000px;
+       visibility: visible;
+       transition: max-height .25s;
+}
+
+#mainmenu ul li.mainmenu-item-logout {
+       margin-top: 15%;
+}
+
+#tabmenu {
+       padding: 0;
+       margin: -.5em -.5em .5em -.5em;
+       background: #bbb;
+}
+
+#tabmenu ul {
+       border-color: #444;
+       padding-top: .5em;
+       flex-wrap: wrap;
+       background: repeating-linear-gradient(#f5f5f5, #bbb 2.4em, #f5f5f5 2.4em, #bbb);
+       line-height: 1em;
+}
+
+#tabmenu ul li {
+       border-color: #444;
+}
+
+#tabmenu ul li.cbi-tab {
+       background: #f5f5f5;
+}
+
+abbr,
+acronym {
+       font-style: normal;
+       font-variant: normal;
+}
+
+abbr[title],
+acronym[title] {
+       border-bottom: 1px dotted;
+       cursor: help;
+}
+
+a:link abbr[title],
+a:visited abbr[title],
+a:link acronym[title],
+a:visited acronym[title] {
+       cursor: pointer;
+}
+
+code {
+       font-family: monospace;
+       white-space: pre;
+}
+
+hr {
+       margin: .5em 0;
+       padding: 0;
+       border: 1px solid #444;
+       border-width: 0 0 1px 0;
+}
+
+#maincontent ul {
+       margin-left: 2em;
+}
+
+#modal_overlay {
+       position: fixed;
+       top: 0;
+       bottom: 0;
+       left: -10000px;
+       right: 10000px;
+       background: rgba(0, 0, 0, 0.7);
+       z-index: 900;
+       overflow-y: scroll;
+       -webkit-overflow-scrolling: touch;
+       transition: opacity .125s ease-in;
+       opacity: 0;
+       visibility: hidden;
+}
+
+.modal {
+       width: 90%;
+       margin: 5em auto !important;
+       display: flex;
+       flex-wrap: wrap;
+       min-height: 32px;
+       max-width: 600px;
+       align-items: center;
+       border-radius: 3px;
+       background: #f5f5f5;
+       border: 1px solid #000;
+       padding: .5em .5em .25em .5em !important;
+       max-height: 2400px;
+       min-width: 270px;
+       color: #444;
+}
+
+.modal > * {
+       flex-basis: 100%;
+       line-height: normal;
+       margin-bottom: .5em;
+}
+
+.modal > pre,
+.modal > textarea {
+       white-space: pre-wrap;
+       overflow: auto;
+}
+
+body.modal-overlay-active {
+       overflow: hidden;
+}
+
+body.modal-overlay-active #modal_overlay {
+       left: 0;
+       right: 0;
+       opacity: 1;
+       visibility: visible;
+}
+
+.warning {
+       color: red;
+       background-color: white;
+       font-weight: bold;
+}
+
+.clear {
+       clear: both;
+}
+
+.skiplink,
+.navigation,
+.hidden {
+       position: absolute;
+       left: -1000px;
+       top: -1000px;
+       width: 0px;
+       height: 0px;
+       overflow: hidden;
+       display: inline;
+}
+
+.error {
+       color: #ff0000;
+       background-color: white;
+}
+
+.alert-message {
+       font-weight: normal;
+       padding: .5em;
+       border-radius: 3px;
+       border: 1px solid #a22;
+       margin: 0 0 .5em 0;
+}
+
+.label {
+       padding: 1px 2px;
+       font-size: 10px;
+       color: #fff;
+       text-transform: uppercase;
+       white-space: nowrap;
+       background-color: #aaa;
+       border-radius: 3px;
+}
+
+.alert-message, .cbi-tooltip.error, .label.error {
+       border-color: #a22;
+       background: #fee;
+       color: #a22;
+}
+
+.alert-message.notice, .cbi-tooltip.notice, .label.notice {
+       border-color: #15a;
+       background: #e6f6ff;
+       color: #15a;
+}
+
+.alert-message.warning, .cbi-tooltip.warning, .label.warning {
+       border-color: #ed5;
+       background: #fe9;
+       color: #650;
+}
+
+div.hostinfo {
+       float: left;
+       margin: 0;
+       padding: 0;
+       width: auto;
+       padding: 0.5em;
+}
+
+.lang_he div.hostinfo {
+       float: right;
+}
+
+#xhr_poll_status {
+       cursor: pointer;
+}
+
+#xhr_poll_status #xhr_poll_status_off {
+       font-weight: bold;
+       color: #FF0000;
+}
+
+#xhr_poll_status #xhr_poll_status_on {
+       font-weight: bold;
+       color: #00FF00;
+}
+
+#menubar {
+       position: relative;
+       width: 100%;
+       background: #000000;
+       color: #ffffff;
+}
+
+#menubar .warning {
+       color: red;
+       background-color: #557788;
+}
+
+html #menubar a:link,
+html #menubar a:visited {
+       position: relative;
+       display: block;
+       padding: 0.5em;
+       background: #000000;
+       color: #ffffff;
+       text-decoration: none;
+}
+
+
+html #menubar a:link:hover,
+html #menubar a:visited:hover,
+html #menubar a:link:active,
+html #menubar a:visited:active,
+#menubar a:link:focus,
+#menubar a:visited:focus {
+       background: #000000;
+       color: #ffff00;
+       font-weight: bold;
+}
+
+html #menubar a:link.active,
+html #menubar a:visited.active,
+html #menubar a:link.preactive,
+html #menubar a:visited.preactive {
+       background: #000000;
+       color: #ffff00;
+       font-weight: bold;
+}
+
+html #menubar a:link.warning,
+html #menubar a:visited.warning {
+       background: #000000;
+       color: red;
+       font-weight: bold;
+}
+
+#modemenu {
+       width: auto;
+       background: #000000;
+       color: #ffffff;
+       list-style: none;
+       margin-right: 1px;
+       margin-left: 2em;
+       float: right;
+}
+
+#modemenu li {
+       float: right;
+       list-style: none;
+}
+
+#savemenu {
+       float: right;
+}
+
+.lang_he #savemenu {
+       float: left;
+}
+
+.lang_de #submenu_admin_uci {
+       width: 12em;
+}
+
+.lang_ru #submenu_admin_uci {
+       width: 11.5em;
+}
+
+textarea#syslog {
+       width: 98%;
+       min-height: 500px;
+       border: 3px solid #cccccc;
+       padding: 5px;
+       font-family: monospace;
+}
+
+#maincontainer {
+       clear: both;
+       width: 96%;
+       margin: 0 auto;
+       height:100%;
+}
+
+#maincontent {
+       padding: 0.5em;
+       background: #f5f5f5;
+       color: #000000;
+       border-width: 0 1px 1px 1px;
+       border-style: solid;
+       border-color: #444444;
+}
+
+#applyreboot-section {
+       margin: 2rem;
+       line-height: 300%;
+}
+
+.lang_he #maincontent {
+       direction: rtl;
+}
+
+h2, h3, h4, h5, legend {
+       font-size: 150%;
+       font-family: Trebuchet MS, Verdana, sans-serif;
+       font-weight: bold;
+       margin: .25em 0 .5em 0;
+       border-bottom: 1px solid;
+       padding-bottom: 4px;
+       display: block;
+       width: 100%;
+}
+
+h3, legend {
+       font-size: 125%;
+}
+
+h4 {
+       font-size: 112%;
+}
+
+h5 {
+       font-size: 105%;
+}
+
+fieldset { border: none; }
+fieldset > legend { float: left; }
+fieldset > legend + * { clear: both; }
+
+p {
+       margin-bottom: .5em;
+}
+
+.cbi-section {
+       margin: 0 0 .5em 0;
+}
+
+.cbi-section > h3,
+.cbi-section > legend {
+       margin-top: .5em;
+}
+
+.cbi-section-descr {
+       margin-bottom: 0.5em;
+       font-size: 95%;
+}
+
+.cbi-section-descr:empty {
+       display: none;
+}
+
+.cbi-title-ref {
+       color: #37c;
+}
+
+.cbi-title-ref::after {
+       content: "➙";
+}
+
+ul.cbi-apply {
+       font-size: 90%;
+}
+
+input:-webkit-input-placeholder {
+       color: #AAAAAA;
+}
+
+input:-moz-placeholder {
+       color: #AAAAAA;
+}
+
+input:-ms-input-placeholder {
+       color: #AAAAAA;
+}
+
+input[type=submit],
+input[type=reset],
+input[type=image],
+input[type=button] {
+       cursor: pointer;
+}
+
+select,
+input,
+textarea {
+       background: #eeeeee;
+       color: #000000;
+       border-width: 1px;
+       border-color: #000000;
+}
+
+input[type=image] {
+       border: none;
+}
+
+input:focus,
+input:not(.btn):not(.cbi-button):hover,
+select:focus,
+select:hover {
+       background-color: #ffffff;
+       color: #000000;
+}
+
+input[type=text],
+input[type=password] {
+       padding: .25em;
+}
+
+select,
+input[type=text],
+input[type=password],
+.cbi-dropdown {
+       width: 20em;
+       height: 22px;
+       font-family: inherit;
+       font-size: inherit;
+}
+
+select[multiple] {
+       height: auto;
+}
+
+input[type=radio],
+input[type=checkbox],
+[data-dynlist] > input + img,
+input.cbi-input-password + img {
+       vertical-align: middle;
+}
+
+label > input[type="checkbox"],
+label > input[type="radio"] {
+       vertical-align: bottom;
+       margin: 0;
+}
+
+.td select,
+.td .cbi-dropdown,
+.td input[type=text],
+.cbi-dynlist > .add-item > .cbi-dropdown {
+       width: 100%;
+}
+
+.td input.cbi-input-password {
+       width: calc(100% - 20px);
+}
+
+img.cbi-image-button {
+       cursor: pointer;
+       margin: 0 2px;
+       vertical-align: middle;
+}
+
+.btn, .cbi-button, .item::after {
+       padding: 0 .5em;
+       border-radius: 3px;
+       border: 1px solid #aaa;
+       text-decoration: none;
+       color: #000;
+       display: inline-block;
+       font-size: inherit;
+       -webkit-appearance: none;
+       background: #fff;
+       text-align: center;
+       font-weight: bold;
+       line-height: 12px;
+       height: 22px;
+       line-height: 20px;
+       box-sizing: border-box;
+       cursor: pointer;
+}
+
+.btn:hover, .cbi-button:hover, .item:hover::after {
+       box-shadow: 0 0 3px #37c;
+}
+
+.btn[disabled],
+.btn[disabled]:hover,
+.cbi-button[disabled],
+.cbi-button[disabled]:hover {
+       opacity: .6;
+       cursor: default;
+       pointer-events: none;
+}
+
+.cbi-button-positive,
+.cbi-button-fieldadd,
+.cbi-button-add,
+.cbi-button-save {
+       border-color: #595;
+       color: #595;
+}
+
+.cbi-button-neutral,
+.cbi-button-reset,
+.cbi-button-download,
+.cbi-button-find,
+.cbi-button-link,
+.cbi-button-up,
+.cbi-button-down {
+       border-color: #444;
+       color: #444;
+}
+
+.cbi-button-action,
+.cbi-button-apply,
+.cbi-button-reload,
+.cbi-button-edit {
+       border-color: #37c;
+       color: #37c;
+}
+
+.cbi-button-negative,
+.cbi-section-remove .cbi-button,
+.cbi-button-remove {
+       border-color: #a22;
+       color: #a22;
+}
+
+.cbi-button-action.important,
+.cbi-page-actions .cbi-button-apply,
+.cbi-section-actions .cbi-button-edit {
+       color: #fff;
+       background: #37c;
+}
+
+.cbi-button-positive.important,
+.cbi-page-actions .cbi-button-save {
+       color: #fff;
+       background: #595;
+}
+
+.cbi-button-negative.important {
+       color: #fff;
+       background: #a22;
+}
+
+.cbi-page-actions .cbi-button-apply + .cbi-button-save {
+       background: #fff;
+       color: #595;
+}
+
+.cbi-input-invalid:not([open]) {
+       color: #FF0000 !important;
+       border-color: #FF0000;
+}
+
+table td, table th {
+       color: #000000;
+}
+
+.table .td, .table .th {
+       color: #000000;
+       padding: .25em;
+}
+
+.table.smalltext {
+       background: #f5f5f5;
+       color: #000000;
+       border-top: 1px solid #666666;
+       border-right: 1px solid #666666;
+       border-bottom: 1px solid #666666;
+       font-size: 90%;
+       width: 80%;
+       margin-left: auto;
+       margin-right: auto;
+       border-collapse: collapse;
+}
+
+.table.smalltext .tr:hover .td {
+       background-color: #bbddee;
+       color: #000000;
+}
+
+.table.smalltext .tr .th {
+       padding: 0 0.25em;
+       border-left: 1px solid #666666;
+       text-align: left;
+}
+
+.table.smalltext .tr .td {
+       padding: 0 0.25em;
+       border-top: 1px solid #666666;
+       border-left: 1px solid #666666;
+}
+
+.cbi-rowstyle-1 {
+       background-color: #eeeeff;
+       color: #000000;
+}
+
+.cbi-rowstyle-2 {
+       color: #000000;
+}
+
+.cbi-value {
+       clear: left;
+       vertical-align: middle;
+       padding: 0.25em 0.6em;
+       border-bottom: 1px dotted #bbbbbb;
+}
+
+.cbi-value:hover {
+       background: #f8f8f8;
+       color: #000000;
+}
+
+.cbi-value-title {
+       float: left;
+       width: 40%;
+       line-height: 1.8em;
+}
+
+.cbi-value-field {
+       width: 58%;
+       margin-left: 40%;
+       padding: 0.25em 0;
+}
+
+.td.cbi-value-field {
+       width: auto;
+       margin-left: 0;
+       align-self: center;
+       vertical-align: middle;
+}
+
+.cbi-value-description {
+       background-image: url(/luci-static/resources/cbi/help.gif);
+       background-position: .25em .25em;
+       background-repeat: no-repeat;
+       margin: .25em 0 0 0;
+       padding: .25em .25em .25em 1.75em;
+}
+
+.cbi-section-create {
+       padding: 0 0 .25em 0;
+       margin: -3px;
+       display: inline-flex;
+       align-items: center;
+}
+
+.cbi-section-create > * {
+       margin: 3px;
+       flex: 1 1 auto;
+}
+
+.cbi-section-create > * > input {
+       width: 100%;
+}
+
+.cbi-section-remove > .cbi-button {
+       margin-bottom: -1px;
+       border-radius: 3px 3px 0 0;
+}
+
+.cbi-section-node + .cbi-section-create {
+       padding-top: 0;
+}
+
+div.cbi-map-descr {
+       margin-bottom: 1em;
+}
+
+div.cbi-optionals {
+       padding: 0.25em;
+       border-bottom: 1px dotted #bbbbbb;
+}
+
+.cbi-section-node {
+       clear: both;
+       padding-bottom: 0;
+       position: relative;
+       border: 1px dotted #555;
+       background: #fff;
+       margin-bottom: .5em;
+}
+
+.cbi-section-node-tabbed {
+       border-top: none;
+       margin-top: -.5em;
+}
+
+.cbi-section-node .cbi-value:last-child,
+.cbi-section-node .cbi-optionals:last-child {
+       border-bottom: none;
+}
+
+.table.cbi-section-table {
+       width: 100%;
+       font-size: 95%;
+       border: 1px dotted #444;
+       background: #fff;
+       margin: 0 0 .5em 0;
+}
+
+.cbi-section-node > .table.cbi-section-table {
+       border: none;
+       margin: 0;
+}
+
+.tr.cbi-section-table-descr .th {
+       font-weight: normal;
+       font-size: 90%;
+       vertical-align: top;
+}
+
+.td.cbi-section-table-optionals {
+       text-align: left !important;
+       padding-top: 1em;
+}
+
+.th.cbi-section-actions,
+.td.cbi-section-actions {
+       align-self: center;
+       vertical-align: middle;
+}
+
+.th.cbi-section-actions > *,
+.td.cbi-section-actions > * {
+       display: flex;
+       justify-content: flex-end;
+       flex-direction: row;
+       flex: 1 1 150px;
+       margin: auto -1px auto auto;
+}
+
+.td.cbi-section-actions > * > *,
+.td.cbi-section-actions > * > form > * {
+       flex: 1 1 4em;
+       margin: 0 1px;
+}
+
+.td.cbi-section-actions > * > form {
+       display: flex;
+       margin: 0;
+}
+
+.cbi-page-actions {
+       display: flex;
+       justify-content: flex-end;
+       margin: -3px;
+}
+
+.cbi-page-actions > form {
+       display: flex;
+}
+
+.cbi-page-actions > * {
+       flex: 0 1 auto;
+       margin: 3px;
+}
+
+.cbi-page-actions > form > * {
+       flex: 1;
+       margin: 0 3px 0 0;
+}
+
+.cbi-page-actions > .cbi-button-save,
+.cbi-page-actions > .cbi-button-apply,
+.cbi-page-actions > form[method="post"] {
+       margin-left: auto;
+}
+
+*::-ms-backdrop,
+.cbi-page-actions > .cbi-button-save,
+.cbi-page-actions > .cbi-button-apply,
+.cbi-page-actions > form[method="post"] {
+       margin-left: 50%;
+}
+
+.cbi-page-actions > .cbi-button-apply + .cbi-button-save,
+.cbi-page-actions > .cbi-button-save + form[method="post"],
+.cbi-page-actions > form[method="post"] + form[method="post"] {
+       margin-left: 3px;
+}
+
+.th[data-type="button"], .td[data-type="button"],
+.th[data-type="fvalue"], .td[data-type="fvalue"] {
+       flex: 1 1 2em;
+       text-align: center;
+}
+
+#cbi-network-switch_vlan .th,
+#cbi-network-switch_vlan .td {
+       flex-basis: 12%;
+}
+
+.td[data-title]::before {
+       content: attr(data-title) ":\20";
+       font-weight: bold;
+       text-align: left;
+       display: none;
+       padding: 1px 0;
+       white-space: nowrap;
+}
+
+.td[data-description]::after {
+       content: attr(data-description);
+       font-size: 90%;
+       text-align: left;
+       display: none;
+       background: url(/luci-static/resources/cbi/help.gif) left top no-repeat;
+       padding: .125em 0 .125em 18px;
+       margin: .125em 0;
+}
+
+.tr.placeholder .td[data-title]::before,
+.tr.placeholder .td[data-description]::after {
+       display: none;
+}
+
+.tr[data-title]::before,
+.tr.cbi-section-table-titles.named::before {
+       content: attr(data-title) "\20";
+       font-weight: bold;
+       text-align: left;
+       display: table-cell;
+       align-self: center;
+       flex: 1 1 5%;
+       padding: .25em;
+       white-space: normal;
+       word-wrap: break-word;
+       vertical-align: middle;
+}
+
+.cbi-value-helpicon img {
+       vertical-align: bottom;
+}
+
+.td.cbi-value-error {
+       border-color: red;
+}
+
+.cbi-value-error input,
+.cbi-value-error select {
+       color: red;
+       background-color: #ffcccc;
+}
+
+.cbi-section-error {
+       color: red;
+       background-color: white;
+       font-size: 95%;
+       border: 1px dotted red;
+       margin: 3px;
+       padding: 3px;
+}
+
+.cbi-value-field var {
+       color: #2222FF;
+}
+
+ul.cbi-tabmenu {
+       list-style-type: none;
+       display: flex;
+       margin: 0 0 .5em 0 !important;
+       padding: 0 0 0 5px;
+       border-bottom: 1px solid #bbb;
+}
+
+ul.cbi-tabmenu li {
+       display: inline-flex;
+       margin: 0 5px -1px 0;
+       flex: 0 1 auto;
+       border: 1px solid #bbb;
+       border-bottom: none;
+       border-radius: 3px 3px 0 0;
+       background: linear-gradient(#ddd 90%, #aaa 100%);
+       color: #888;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       word-wrap: break-word;
+}
+
+ul.cbi-tabmenu li a,
+ul.cbi-tabmenu li a:hover {
+       text-decoration: none;
+       color: inherit;
+       padding: 5px;
+       flex: 1 1 auto;
+       width: 100%;
+       height: 100%;
+       outline: none;
+}
+
+ul.cbi-tabmenu li.cbi-tab {
+       color: #000;
+       background: #f5f5f5;
+}
+
+ul.cbi-tabmenu li.cbi-tab-disabled[data-errors]::after {
+       content: attr(data-errors);
+       background: #c43c35;
+       color: #fff;
+       min-width: 12px;
+       line-height: 14px;
+       border-radius: 8px;
+       text-align: center;
+       margin: 4px 5px 4px 0;
+       padding: 1px 2px;
+       word-wrap: normal;
+       flex: 1 0 auto;
+}
+
+.cbi-section ul.cbi-tabmenu li.cbi-tab {
+       background: #fff;
+}
+
+.cbi-tab-descr {
+       background-image: url(/luci-static/resources/cbi/help.gif);
+       background-position: .25em 50%;
+       background-repeat: no-repeat;
+       border-bottom: 1px solid #ccc;
+       margin: 0 .25em .25em .25em;
+       padding: .5em .5em .5em 2em;
+}
+
+[data-tab-title] {
+       height: 0;
+       opacity: 0;
+       overflow: hidden;
+}
+
+[data-tab-active="true"] {
+       opacity: 1;
+       height: auto;
+       overflow: visible;
+       transition: opacity .25s ease-in;
+}
+
+
+.cbi-dropdown {
+       border: 1px inset #000;
+       display: inline-flex;
+       cursor: pointer;
+       background: #eee;
+       position: relative;
+       padding: 0;
+       color: #000;
+       min-width: 20em;
+       max-width: 100%;
+}
+
+.cbi-dropdown:hover {
+       background: #fff;
+}
+
+.cbi-dropdown:focus,
+.cbi-dynlist > .item:focus {
+       outline: 2px solid #4b6e9b;
+}
+
+.cbi-dropdown > ul {
+       margin: 0 !important;
+       padding: 0;
+       list-style: none;
+       overflow-x: hidden;
+       overflow-y: auto;
+       display: flex;
+       width: 100%;
+}
+
+.cbi-dropdown > ul.preview {
+       display: none;
+}
+
+.cbi-dropdown > .open {
+       border: 2px outset #eee;
+       flex-basis: 15px;
+}
+
+.cbi-dropdown > .open,
+.cbi-dropdown > .more {
+       flex-grow: 0;
+       flex-shrink: 0;
+       display: flex;
+       flex-direction: column;
+       justify-content: center;
+       text-align: center;
+       padding: 0 .25em;
+}
+
+.cbi-dropdown > .more,
+.cbi-dropdown > ul > li[placeholder] {
+       color: #777;
+       font-weight: bold;
+       text-shadow: 1px 1px 0px #fff;
+       display: none;
+       min-height: 22px;
+}
+
+.cbi-dropdown > ul > li {
+       display: none;
+       padding: .25em;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       flex-shrink: 1;
+       flex-grow: 1;
+       align-items: center;
+       align-self: center;
+       min-height: 22px;
+}
+
+.cbi-dropdown > ul > li .hide-open { display: initial; }
+.cbi-dropdown > ul > li .hide-close { display: none; }
+
+.cbi-dropdown > ul > li[display]:not([display="0"]) {
+       border-left: 1px solid #ccc;
+}
+
+.cbi-dropdown[empty] > ul {
+       max-width: 1px;
+}
+
+.cbi-dropdown > ul > li > form {
+       display: none;
+       margin: 0;
+       padding: 0;
+       pointer-events: none;
+}
+
+.cbi-dropdown > ul > li img {
+       vertical-align: middle;
+       margin-right: .25em;
+}
+
+.cbi-dropdown > ul > li > form > input[type="checkbox"] {
+       margin: 0;
+}
+
+.cbi-dropdown[open] {
+       position: relative;
+}
+
+.cbi-dropdown[open] > ul.dropdown {
+       display: block;
+       background: #f6f6f5;
+       border: 1px solid #918e8c;
+       box-shadow: 0 0 4px #918e8c;
+       position: absolute;
+       z-index: 1100;
+       max-width: none;
+       min-width: 100%;
+       width: auto;
+       transition: max-height .125s ease-in;
+}
+
+.cbi-dropdown > ul > li[display],
+.cbi-dropdown[open] > ul.preview,
+.cbi-dropdown[open] > ul.dropdown > li,
+.cbi-dropdown[multiple] > ul > li > label,
+.cbi-dropdown[multiple][open] > ul.dropdown > li,
+.cbi-dropdown[multiple][more] > .more,
+.cbi-dropdown[multiple][empty] > .more {
+       flex-grow: 1;
+       display: flex;
+       align-items: center;
+}
+
+.cbi-dropdown[empty] > ul > li,
+.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
+       display: block;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
+.cbi-dropdown[open] > ul.dropdown > li .hide-close { display: initial; }
+
+.cbi-dropdown[open] > ul.dropdown > li {
+       border-bottom: 1px solid #ccc;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[selected] {
+       background: #b0d0f0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li.focus {
+       background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+}
+
+.cbi-dropdown[open] > ul.dropdown > li:last-child {
+       margin-bottom: 0;
+       border-bottom: none;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[unselectable] {
+       opacity: 0.7;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
+       width: 100%;
+}
+
+.cbi-dropdown[disabled] {
+       pointer-events: none;
+       opacity: .6;
+}
+
+.cbi-dynlist {
+       height: auto;
+       min-height: 30px;
+       min-width: 210px;
+       max-width: 100%;
+       width: auto;
+       display: inline-flex;
+       flex-direction: column;
+}
+
+.cbi-dynlist > .item {
+       margin-bottom: 4px;
+       background: #eee;
+       padding: 2px 2em 2px 4px;
+       border: 1px outset #000;
+       border-radius: 3px;
+       position: relative;
+       pointer-events: none;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+}
+
+.cbi-dynlist > .item::after {
+       content: "×";
+       position: absolute;
+       display: inline-flex;
+       align-items: center;
+       top: -1px;
+       right: -1px;
+       bottom: -1px;
+       padding: 0 6px;
+       border: 1px outset #000;
+       background: #fff;
+       border-radius: 0 3px 3px 0;
+       font-weight: bold;
+       color: #c44;
+       pointer-events: auto;
+       height: auto;
+}
+
+.cbi-dynlist > .add-item {
+       display: flex;
+}
+
+.cbi-dynlist > .add-item > input {
+       flex: 1 1 auto;
+}
+
+input[type="text"] + .cbi-button,
+input[type="password"] + .cbi-button,
+select + .cbi-button {
+       border-radius: 0 3px 3px 0;
+       border: 1px outset #000;
+       margin: 0 0 0 -2px;
+       padding: 0 6px;
+       vertical-align: top;
+       display: inline-block;
+       height: 22px;
+       font-size: 12px;
+       line-height: 20px;
+}
+
+.cbi-tooltip-container {
+       cursor: help;
+}
+
+.cbi-tooltip {
+       position: absolute;
+       z-index: 1000;
+       left: -1000px;
+       border-radius: 3px;
+       background: #fff;
+       padding: 2px 5px;
+       white-space: pre;
+       opacity: 0;
+       transition: opacity .25s ease-out;
+       pointer-events: none;
+       box-shadow: 0 0 2px #444;
+       color: #444;
+}
+
+.cbi-tooltip-container:hover .cbi-tooltip {
+       left: auto;
+       opacity: 1;
+       transition: opacity .25s ease-in;
+       white-space: normal;
+}
+
+.cbi-progressbar {
+       background: #ddd;
+       border: 1px solid #bbb;
+       border-radius: 3px;
+       position: relative;
+       min-width: 170px;
+       height: 20px;
+       margin: 4px 0;
+       line-height: 20px;
+}
+
+.cbi-progressbar > div {
+       background: #90c0e0;
+       height: 100%;
+       transition: width .25s ease-in;
+       width: 0%;
+}
+
+.cbi-progressbar::after {
+       position: absolute;
+       bottom: 0;
+       top: 0;
+       right: 0;
+       left: 0;
+       text-align: center;
+       text-shadow: 0 0 2px #fff;
+       content: attr(title);
+       white-space: pre;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+
+.zonebadge .cbi-tooltip {
+       padding: 1px;
+       background: inherit;
+       margin: -1.6em 0 0 -5px;
+}
+
+
+.zone-forwards {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.zone-forwards > * {
+       flex: 1 1 45%;
+       padding: 1px;
+}
+
+.zone-forwards > span {
+       flex-basis: 10%;
+       text-align: center;
+}
+
+.zone-forwards .zone-src,
+.zone-forwards .zone-dest {
+       display: flex;
+       flex-direction: column;
+}
+
+
+.left, .left::before, .left::after { text-align: left !important; }
+.right, .right::before, .right::after { text-align: right !important; }
+.center, .center::before, .center::after { text-align: center !important; }
+
+.top, .top::before, .top::after { vertical-align: top !important; }
+.middle, .middle::before, .middle::after { vertical-align: middle !important; }
+.bottom, .bottom::before, .bottom::after { vertical-align: bottom !important; }
+
+.td.top { align-self: flex-start; vertical-align: top; }
+.td.middle { align-self: center; vertical-align: middle; }
+.td.bottom { align-self: flex-end; vertical-align: bottom; }
+
+.luci {
+       position: absolute;
+       bottom: 0;
+       left: 1em;
+       height: 1.5em;
+       font-size: 80%;
+       margin-bottom: 0;
+}
+
+.luci a:link,
+.luci a:visited {
+       background-color: transparent;
+       color: #666666;
+       text-decoration: none;
+       font-size: 70%;
+}
+
+.inline {
+       display: inline;
+}
+
+.error500 {
+       white-space: normal;
+       border: 1px dotted #ff0000;
+       background-color: #ffffff;
+       color: #000000;
+       padding: 0.5em;
+}
+
+
+.ifacebadge, .ifacebox {
+       display: inline-flex;
+       align-content: center;
+       border: 1px solid #ccc;
+       border-radius: 3px;
+       padding: 2px;
+       background: #fff;
+}
+
+.ifacebox-head {
+       background: #eee;
+}
+
+.ifacebox-head.active {
+       background: #90c0e0;
+}
+
+.ifacebadge, .zonebadge {
+       align-items: center;
+}
+
+.ifacebadge > * {
+       align-self: center;
+}
+
+.ifacebadge > img,
+.ifacebadge > em {
+       margin-right: 5px;
+       display: inline-block;
+       height: 16px;
+}
+
+.ifacebadge-active {
+       border-color: #000000;
+       font-weight: bold;
+}
+
+.ifacebox {
+       flex-direction: column;
+       margin: 0;
+       padding: 0;
+       min-width: 100px;
+       text-align: center;
+}
+
+.ifacebox > * {
+       padding: 2px;
+}
+
+.td > .ifacebadge,
+.td > .zonebadge {
+       margin: 0;
+       vertical-align: top;
+}
+
+.network-status-table {
+       display: flex;
+       flex-wrap: wrap;
+       margin: -.25em -.25em .25em -.25em;
+}
+
+.network-status-table .ifacebox {
+       margin: .25em;
+       font-size: 90%;
+       flex-grow: 1;
+}
+
+.network-status-table .ifacebox-body {
+       display: flex;
+       flex-direction: column;
+       flex: 1 0 auto;
+       padding: .5em;
+}
+
+.network-status-table .ifacebox-body > span {
+       flex: 10 10 auto;
+}
+
+.network-status-table .ifacebox-body > div {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.ifacebadge.large,
+.network-status-table .ifacebox-body .ifacebadge {
+       flex: 1;
+       -webkit-flex: 1 1 auto;
+       padding: .5em;
+       min-width: 220px;
+       white-space: nowrap;
+}
+
+.network-status-table .ifacebox-body .ifacebadge {
+       margin: .5em 0 0 0;
+}
+
+#dsl_status_table .ifacebox-body span > strong {
+       display: inline-block;
+       min-width: 35%;
+}
+
+
+.zonebadge {
+       padding: 2px;
+       display: inline-block;
+       white-space: nowrap;
+       border-radius: 3px;
+}
+
+.zonebadge > em,
+.zonebadge > strong {
+       margin: 3px;
+}
+
+.zonebadge input {
+       width: 6em;
+       height: 1.5em;
+}
+
+.zonebadge .ifacebadge,
+.cbi-dropdown .ifacebadge {
+       margin: 1px;
+}
+
+.zonebadge .ifacebadge img,
+.zonebadge .ifacebadge em,
+.cbi-dropdown .ifacebadge img,
+.cbi-dropdown .ifacebadge em {
+       margin: 0 1px;
+}
+
+.zonebadge-empty {
+       border: 1px dashed #AAAAAA;
+       color: #AAAAAA;
+       font-style: italic;
+       font-size: smaller;
+}
+
+
+.uci-change-list {
+       font-family: monospace;
+       white-space: pre;
+}
+
+.uci-change-list del,
+.uci-change-list ins,
+.uci-change-list var,
+.uci-change-legend-label del,
+.uci-change-legend-label ins,
+.uci-change-legend-label var {
+       text-decoration: none;
+       font-style: normal;
+       border: 1px solid #ccc;
+       background: #eee;
+       padding: 2px;
+       display: block;
+       line-height: 15px;
+       margin-bottom: 1px;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+       border-color: #0f0;
+       background: #cfc;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+       border-color: #f00;
+       background: #fcc;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+       border-color: #ccc;
+       background: #eee;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+       display: inline-block;
+       border: none;
+       width: 100%;
+       padding: 0;
+}
+
+.uci-change-legend {
+       padding: 5px;
+}
+
+.uci-change-legend-label {
+       width: 150px;
+       float: left;
+       font-size: 80%;
+}
+
+.uci-change-legend-label>ins,
+.uci-change-legend-label>del,
+.uci-change-legend-label>var {
+       float: left;
+       margin-right: 4px;
+       width: 12px;
+       height: 12px;
+       display: block;
+       position: relative;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+       border: none;
+       position: absolute;
+       top: 1px;
+       left: 1px;
+       right: 1px;
+       bottom: 1px;
+}
+
+
+@keyframes flash {
+       0% { opacity: 1; }
+       50% { opacity: .5; }
+       100% { opacity: 1; }
+}
+
+.flash {
+       animation: flash .35s;
+}
+
+.spinning {
+       position: relative;
+       padding-left: 32px !important;
+}
+
+.spinning::before {
+       position: absolute;
+       top: 0;
+       left: 0;
+       bottom: 0;
+       width: 32px;
+       content: " ";
+       background: url(../resources/icons/loading.gif) no-repeat center;
+       background-size: 16px;
+}
+
+}
+
+@media screen and (max-width: 992px) {
+       body {
+               -webkit-text-size-adjust: 100%;
+       }
+
+       #maincontainer {
+               flex-direction: column;
+               width: 100%;
+       }
+
+       #maincontent {
+               width: 96%;
+               margin: auto;
+               flex-basis: auto;
+       }
+
+       #mainmenu {
+               border: none;
+               border-radius: 0;
+               max-width: none;
+               background: #000;
+               box-shadow: 0 0 2px #444;
+               padding: 0;
+               border-top: 1px solid #444;
+               position: relative;
+       }
+
+       #mainmenu ul > li.selected > a {
+               background: #444;
+               color: #fff;
+               border-top: none;
+       }
+
+       #mainmenu ul > li.selected:not(.active) > ul {
+               max-height: 0;
+               visibility: hidden;
+       }
+
+       #mainmenu ul > li > a {
+               flex: 1 1 auto;
+               color: #fff;
+               border: 1px solid #444;
+               border-width: 0 0 1px 1px;
+       }
+
+       #mainmenu ul.l1 {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               position: relative;
+               margin-left: -1px;
+               width: 100%;
+       }
+
+       #mainmenu ul.l1 > li {
+               display: inline-flex;
+               flex: 1 1 auto;
+               position: relative;
+               height: 2em;
+       }
+
+       #mainmenu ul.l1 ul.l2 {
+               position: absolute;
+               top: 2em;
+               right: 0;
+               z-index: 1000;
+               background: #000;
+               box-shadow: 0 0 2px #444;
+               min-width: 120px;
+               display: block;
+       }
+
+       #mainmenu ul.l1 ul.l2.align-left {
+               right: auto;
+               left: 0;
+       }
+
+       #mainmenu ul.l2 > li {
+               display: block;
+       }
+
+       #mainmenu ul.l2 > li > a {
+               padding: .5em;
+       }
+
+       #mainmenu ul li.mainmenu-item-logout {
+               margin-top: 0;
+               margin-left: auto;
+       }
+
+       #mainmenu ul li.mainmenu-item-logout::before {
+               content: "\0a";
+               flex: 10;
+               border: 1px solid #444;
+               border-width: 0 0 1px 1px;
+       }
+
+       .table {
+               display: flex;
+               flex-direction: column;
+               width: 100%;
+       }
+
+       .tr {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               align-items: flex-end;
+       }
+
+       .th, .td {
+               flex: 2 2 25%;
+               align-self: flex-start;
+               overflow: hidden;
+               text-overflow: ellipsis;
+               word-wrap: break-word;
+               display: inline-block;
+       }
+
+       .td.cbi-dropdown-open {
+               overflow: visible;
+       }
+
+       .td select {
+               word-wrap: normal;
+       }
+
+       .td[data-type="button"],
+       .td[data-type="fvalue"] {
+               flex: 1 1 12.5%;
+               text-align: left;
+       }
+
+       .td.cbi-value-field {
+               align-self: flex-start;
+       }
+
+       .td.cbi-value-field .cbi-button {
+               width: 100%;
+       }
+
+       .table.cbi-section-table {
+               border: none;
+               background: none;
+               margin: 0;
+       }
+
+       .tr.table-titles,
+       .cbi-section-table-titles,
+       .cbi-section-table-descr {
+               display: none;
+       }
+
+       .cbi-section-table-row {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               border: 1px dotted #444;
+               margin: 0 0 .5em 0;
+               background: #fff;
+       }
+
+       .cbi-section-table-row:hover {
+               border: 1px solid #4a6b7c;
+       }
+
+       .cbi-section-table + .cbi-section-create {
+               padding-top: 0;
+       }
+
+       .tr[data-title]::before {
+               display: block;
+               flex: 1 1 100%;
+               background: #eef;
+       }
+
+       .td[data-title]::before,
+       .td[data-description]::after {
+               display: block;
+       }
+
+       .td[data-title] ~ .td.cbi-section-actions {
+               align-self: flex-start;
+       }
+
+       .td[data-title] ~ .td.cbi-section-actions::before {
+               display: block;
+               content: "\a0";
+       }
+
+       .hide-sm,
+       .hide-xs {
+               display: none;
+       }
+
+       #dsl_status_table .ifacebox-body > span > strong {
+               min-width: 50%;
+       }
+}
+
+@media screen and (max-width: 480px) {
+       body {
+               font-size: 16px;
+       }
+
+       input, textarea, select, .cbi-button, .cbi-dropdown {
+               font-size: 16px !important;
+               line-height: 30px;
+       }
+
+       select, input[type="text"], input[type="password"] {
+               width: 100%;
+               height: 30px;
+               border-radius: 3px;
+       }
+
+       input[type="text"] + .cbi-button,
+       input[type="password"] + .cbi-button,
+       select + .cbi-button {
+               height: 30px;
+               line-height: 30px;
+               margin-left: -5px;
+               min-width: 30px;
+       }
+
+       input.cbi-input-password,
+       [data-dynlist] > .add-item > input {
+               width: calc(100% - 25px);
+       }
+
+       .label {
+               font-size: 14px;
+       }
+
+       .cbi-dynlist,
+       .cbi-dropdown {
+               min-width: 100%;
+               height: auto;
+               display: flex;
+       }
+
+       .cbi-dropdown > .more,
+       .cbi-dropdown > ul > li,
+       .cbi-dropdown > ul > li[placeholder] {
+               min-height: 30px;
+       }
+
+       .btn, .cbi-button {
+               font-size: 16px !important;
+               line-height: 30px;
+               height: 30px;
+               overflow: hidden;
+               text-overflow: ellipsis;
+       }
+
+       #maincontent {
+               padding: .25em;
+       }
+
+       #tabmenu {
+               margin: -.25em -.25em 1em -.25em;
+       }
+
+       .th, .td {
+               flex: 2 2 50%;
+       }
+
+       .td.cbi-value-field {
+               flex-basis: 100%;
+       }
+
+       .td.cbi-value-field[data-type="dvalue"] {
+               flex-basis: 50%;
+       }
+
+       .td.cbi-value-field[data-type="button"],
+       .td.cbi-value-field[data-type="fvalue"] {
+               flex-basis: 25%;
+               text-align: left;
+       }
+
+       .cbi-value-title {
+               float: none;
+               font-weight: bold;
+       }
+
+       .cbi-value-field {
+               width: 100%;
+               margin: 0;
+       }
+
+       .cbi-value-description {
+               margin-top: 5px;
+               display: block;
+       }
+
+       .cbi-section-create {
+               margin-bottom: 1em;
+       }
+
+       .cbi-page-actions {
+               flex-wrap: wrap;
+               margin: -2px;
+       }
+
+       .cbi-page-actions > .cbi-button-link {
+               flex-basis: 100%;
+               margin-right: 2px;
+       }
+
+       .cbi-page-actions > * {
+               flex: 1 1 auto;
+               margin: 2px;
+       }
+
+       ul.cbi-tabmenu {
+               padding: 0 3px;
+       }
+
+       .hide-xs {
+               display: none;
+       }
+
+       #cbi-network .td[id] > strong {
+               display: block;
+       }
+
+       #cbi-network-switch_vlan .td.cbi-section-actions {
+               flex-basis: 100%;
+       }
+
+       #dsl_status_table .ifacebox-body > span > strong {
+               display: block;
+               width: 100%;
+               margin-top: .5em;
+       }
+
+       #cbi-firewall-rule .td[data-type="fvalue"],
+       #cbi-firewall-redirect .td[data-type="fvalue"] {
+               display: none;
+       }
+}
diff --git a/package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png b/package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png
new file mode 100644 (file)
index 0000000..c84c437
Binary files /dev/null and b/package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png differ
diff --git a/package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm b/package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm
new file mode 100644 (file)
index 0000000..a056dd8
--- /dev/null
@@ -0,0 +1,16 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<div class="clear"></div>
+</div>
+</div>
+
+<p class="luci">
+       <% local ver = require "luci.version" -%>
+       Powered by <%= ver.luciname %> (<%= ver.luciversion %>)
+</p>
+</body>
+</html>
diff --git a/package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm b/package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm
new file mode 100644 (file)
index 0000000..c5186c4
--- /dev/null
@@ -0,0 +1,265 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2010 Jo-Philipp Wich <jow@openwrt.org>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+       local sys  = require "luci.sys"
+       local util = require "luci.util"
+       local http = require "luci.http"
+       local disp = require "luci.dispatcher"
+       local ver  = require "luci.version"
+
+       local sysinfo = util.ubus("system", "info") or { }
+       local loadinfo = sysinfo.load or { 0, 0, 0 }
+       local boardinfo = util.ubus("system", "board") or { }
+
+       local request  = disp.context.path
+       local request2 = disp.context.request
+
+       local category = request[1]
+       local cattree  = category and disp.node(category)
+
+       local leaf = request2[#request2]
+
+       local tree = disp.node()
+       local node = disp.context.dispatched
+
+       local categories = disp.node_childs(tree)
+
+       local c = tree
+       local i, r
+
+       -- tag all nodes leading to this page
+       for i, r in ipairs(request) do
+               if c.nodes and c.nodes[r] then
+                       c = c.nodes[r]
+                       c._menu_selected = true
+               end
+       end
+
+       http.prepare_content("application/xhtml+xml")
+
+       local function nodeurl(prefix, name, query)
+               local u = url(prefix, name)
+               if query then
+                       u = u .. http.build_querystring(query)
+               end
+               return pcdata(u)
+       end
+
+       local function render_menu(prefix, node, level)
+               if not level then
+                       level = 1
+               end
+
+               local childs = disp.node_childs(node)
+               if #childs > 0 then
+                       write('<ul class="mainmenu l%d">' % level)
+
+                       local i, v
+                       for i, v in ipairs(childs) do
+                               local nnode = node.nodes[v]
+
+                               write('<li class="mainmenu-item-%s %s"><a href="%s">%s</a>' %{
+                                       v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'selected' or '',
+                                       nodeurl(prefix, v, nnode.query),
+                                       striptags(translate(nnode.title))
+                               })
+
+                               if level < 2 then
+                                       render_menu(prefix .. "/" .. v, nnode, level + 1)
+                               end
+
+                               write('</li>')
+                       end
+
+                       write('</ul>')
+               end
+       end
+
+       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
+                               if level == 3 then
+                                       write('<div id="tabmenu">')
+                               end
+                               write('<ul class="cbi-tabmenu">')
+                       end
+
+                       local selected_node
+                       local selected_name
+                       local i, v
+
+                       for i, v in ipairs(childs) do
+                               local nnode = node.nodes[v]
+                               if nnode._menu_selected then
+                                       selected_node = nnode
+                                       selected_name = v
+                               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 'cbi-tab' or '',
+                                               nodeurl(prefix, v, nnode.query),
+                                               striptags(translate(nnode.title))
+                                       })
+                               end
+                       end
+
+                       if level > 2 then
+                               write('</ul>')
+                               if level == 3 then
+                                       write('</div>')
+                               end
+                       end
+
+                       if selected_node then
+                               render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1)
+                       end
+               end
+       end
+
+       local function render_changes()
+               if tree.nodes[category] and tree.nodes[category].ucidata then
+                       local ucic = 0
+                       local i, j
+                       for i, j in pairs(require("luci.model.uci").cursor():changes()) do
+                               ucic = ucic + #j
+                       end
+
+                       if ucic > 0 then
+                               write('<div id="savemenu" class="uci_change_indicator"><a class="warning" href="%s?redir=%s">%s: %d</a></div>' %{
+                                       url(category, 'uci/changes'),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
+                                       translate('Unsaved Changes'),
+                                       ucic
+                               })
+                       end
+               end
+       end
+-%>
+
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=luci.i18n.context.lang%>" lang="<%=luci.i18n.context.lang%>">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1" />
+<meta http-equiv="Content-Script-Type" content="text/javascript" />
+<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
+<% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
+<% end -%>
+<% if css then %><style title="text/css">
+<%= css %>
+</style>
+<% end -%>
+<script type="text/javascript" src="<%=url('admin/translations', luci.i18n.context.lang)%><%# ?v=PKG_VERSION %>"></script>
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
+<script type="text/javascript">//<![CDATA[
+       document.addEventListener('DOMContentLoaded', function() {
+               var event = ('ontouchstart' in window) ? 'touchstart' : 'click';
+
+               document.querySelectorAll('ul.mainmenu.l1 > li > a').forEach(function(a) {
+                       a.addEventListener(event, function(ev) {
+                               var a = ev.target, ul1 = a.parentNode.parentNode, ul2 = a.nextElementSibling;
+
+                               document.querySelectorAll('ul.mainmenu.l1 > li.active').forEach(function(li) {
+                                       if (li !== a.parentNode)
+                                               li.classList.remove('active');
+                               });
+
+                               if (!ul2)
+                                       return;
+
+                               if (ul2.parentNode.offsetLeft + ul2.offsetWidth <= ul1.offsetLeft + ul1.offsetWidth)
+                                       ul2.classList.add('align-left');
+
+                               ul1.classList.add('active');
+                               a.parentNode.classList.add('active');
+                               a.blur();
+
+                               ev.preventDefault();
+                               ev.stopPropagation();
+                       });
+               });
+
+               document.addEventListener(event, function(ev) {
+                       var t = ev.target;
+
+                       while (t && t.id != 'mainmenu')
+                               t = t.parentNode;
+
+                       if (!t)
+                               document.querySelectorAll('ul.mainmenu > li.active').forEach(function(li) {
+                                       li.classList.remove('active');
+                               });
+               });
+       });
+//]]></script>
+<title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
+</head>
+<body class="lang_<%=luci.i18n.context.lang%>" data-page="<%= table.concat(disp.context.requestpath, "-") %>">
+
+<p class="skiplink">
+<span id="skiplink1"><a href="#navigation"><%:Skip to navigation%></a></span>
+<span id="skiplink2"><a href="#content"><%:Skip to content%></a></span>
+</p>
+
+<div id="menubar">
+<h2 class="navigation"><a id="navigation" name="navigation"><%:Navigation%></a></h2>
+
+<div class="hostinfo">
+       <%=(boardinfo.hostname or "?")%> | <%=ver.distversion%> |
+       <%:Load%>: <%="%.2f" % (loadinfo[1] / 65535.0)%> <%="%.2f" % (loadinfo[2] / 65535.0)%> <%="%.2f" % (loadinfo[3] / 65535.0)%>
+       <span id="xhr_poll_status" style="display:none" onclick="XHR.running() ? XHR.halt() : XHR.run()">
+               | <%:Auto Refresh%>:
+               <span id="xhr_poll_status_on"><%:on%></span>
+               <span id="xhr_poll_status_off" style="display:none"><%:off%></span>
+       </span>
+</div>
+
+<% if #categories > 1 then %>
+       <ul id="modemenu">
+               <% for i, r in ipairs(categories) do %>
+                       <li><a<% if request[1] == r then %> class="active"<%end%> href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a></li>
+               <% end %>
+       </ul>
+<% end %>
+
+<% render_changes() %>
+
+<div class="clear"></div>
+</div>
+
+<div id="maincontainer">
+       <div id="mainmenu">
+               <% if category then render_menu(category, cattree) end %>
+       </div>
+
+       <div id="maincontent">
+               <% if category then render_tabmenu(category, cattree) end %>
+
+               <noscript>
+                       <div class="alert-message warning">
+                               <h4><%:JavaScript required!%></h4>
+                               <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p>
+                       </div>
+               </noscript>
+
+               <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") and category ~= "failsafe" then -%>
+               <div class="alert-message warning">
+                       <h4><%:No password set!%></h4>
+                       <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p>
+                       <% if disp.lookup("admin/system/admin") then %>
+                               <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div>
+                       <% end %>
+               </div>
+               <%- end -%>
diff --git a/package/luci/themes/luci-theme-openwrt/root/etc/uci-defaults/30_luci-theme-openwrt b/package/luci/themes/luci-theme-openwrt/root/etc/uci-defaults/30_luci-theme-openwrt
new file mode 100755 (executable)
index 0000000..77e2f60
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$PKG_UPGRADE" != 1 ]; then
+       uci batch <<-EOF
+               set luci.themes.OpenWrt=/luci-static/openwrt.org
+               set luci.main.mediaurlbase=/luci-static/openwrt.org
+               commit luci
+       EOF
+fi
+
+exit 0
diff --git a/package/luci/themes/luci-theme-rosy/Makefile b/package/luci/themes/luci-theme-rosy/Makefile
new file mode 100755 (executable)
index 0000000..def973d
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Rosy Theme
+LUCI_DEPENDS:=
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cascade.css
new file mode 100644 (file)
index 0000000..388f2a8
--- /dev/null
@@ -0,0 +1,3140 @@
+/**
+ *  Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
+ *
+ *  luci-theme-rosy
+ *     Copyright 2018 Rosy Song <rosysong@rosinson.com>
+ *     Copyright 2018 Yan Lan Shen <yanlan.shen@rosinson.com>
+ *
+ *   Have a bug? Please create an issue here on GitHub!
+ *       https://github.com/rosywrt/luci-theme-rosy/issues
+ *
+ *  luci-theme-bootstrap:
+ *      Copyright 2008 Steven Barth <steven@midlink.org>
+ *      Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ *      Copyright 2012 David Menting <david@nut-bolt.nl>
+ *
+ *  Licensed to the public under the Apache License 2.0
+ */
+
+/*
+  *    Font generate by Icomoon<icomoon.io>
+  */
+@font-face {
+       font-family: "icomoon";
+       font-weight: normal;
+       font-style: normal;
+       src: url("fonts/font.eot");
+       src: url("fonts/font.eot") format("embedded-opentype"), url("fonts/font.ttf") format("truetype"),
+               url("fonts/font.woff") format("woff"), url("fonts/font.svg") format("svg");
+}
+
+/* Table correlation 表格 */
+.table {
+       position: relative;
+       display: table;
+}
+
+.tr {
+       display: table-row;
+}
+
+.thead {
+       display: table-header-group;
+}
+
+.tbody {
+       display: table-row-group;
+}
+
+.tfoot {
+       display: table-footer-group;
+}
+
+.td,
+.th {
+       line-height: normal;
+       display: table-cell;
+       padding: .5em;
+       text-align: center;
+       vertical-align: middle;
+}
+
+.th {
+       color: #333;
+}
+
+.td {
+       color: #777;
+}
+
+.tr.placeholder {
+       height: 4em;
+}
+
+.tr.placeholder > .td {
+       line-height: 3;
+       position: absolute;
+       right: 0;
+       bottom: 0;
+       left: 0;
+       text-align: center !important;
+       background: inherit;
+}
+
+.td[width="33%"] {
+       padding: 1.1em;
+}
+
+.table[width="33%"],
+.th[width="33%"],
+.td[width="33%"] {
+       width: 33%;
+}
+
+.table[width="100%"],
+.th[width="100%"],
+.td[width="100%"] {
+       width: 100%;
+}
+
+/* grid  栅格 */
+.col-1 {
+       flex: 1 1 30px !important;
+}
+
+.col-2 {
+       flex: 2 2 60px !important;
+}
+
+.col-3 {
+       flex: 3 3 90px !important;
+}
+
+.col-4 {
+       flex: 4 4 120px !important;
+}
+
+.col-5 {
+       flex: 5 5 150px !important;
+}
+
+.col-6 {
+       flex: 6 6 180px !important;
+}
+
+.col-7 {
+       flex: 7 7 210px !important;
+}
+
+.col-8 {
+       flex: 8 8 240px !important;
+}
+
+.col-9 {
+       flex: 9 9 270px !important;
+}
+
+.col-10 {
+       flex: 10 10 300px !important;
+}
+
+/* dom 元素 */
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       font-family: inherit;
+       font-weight: normal;
+       line-height: 1.1 !important;
+       color: inherit;
+}
+
+
+header {
+       display: none;
+       height: 3rem;
+       z-index: 1000;
+}
+
+header .container {
+       padding: 0 0.5rem;
+}
+
+select {
+       padding: .36rem .8rem;
+       color: #555;
+       border: thin solid #ccc;
+       background-color: #fff;
+       background-image: none;
+}
+
+pre {
+       overflow: auto;
+}
+
+code {
+       font-size: 1rem;
+       font-size-adjust: .35;
+       padding: 1px 3px;
+       color: #101010;
+       border: thin solid #999;
+       border-radius: 2px;
+       background: #ddd;
+}
+
+abbr {
+       cursor: help;
+       text-decoration: underline;
+       color: #005470;
+}
+
+hr {
+       margin: 1rem 0;
+       opacity: .1;
+       border-color: #eee;
+}
+
+textarea {
+       resize: none;
+       border-radius: 20px;
+}
+
+.pull-right {
+       float: right;
+}
+
+.pull-left {
+       float: left;
+}
+
+.nowrap:not(.td) {
+       white-space: nowrap;
+}
+
+[disabled="disabled"] {
+       pointer-events: none;
+}
+
+#xhr_poll_status {
+       display: flex;
+}
+
+.danger {
+       background-color: #f794b0 !important;
+}
+
+.warning {
+       background-color: #f0e68c !important;
+}
+
+.success {
+       background-color: #f24c7c !important;
+}
+
+.notice {
+       background-color: #468ea4 !important;
+}
+
+.error {
+       color: #f00;
+}
+
+ul {
+       line-height: normal;
+}
+
+li {
+       list-style-type: none;
+}
+
+h1 {
+       font-size: 2rem;
+       padding-bottom: 10px;
+       border-bottom: thin solid #eee;
+}
+
+h2 {
+       font-size: 1.8rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+       color: #354057;
+}
+
+h3 {
+       font-size: 1.4rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+h4 {
+       font-size: 1.2rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+h5 {
+       font-size: 1rem;
+       margin: 2rem 0 0 0;
+       padding-bottom: 10px;
+}
+
+.cbi-section,
+.cbi-section-error,
+#cbi-network > .cbi-section-node,
+#cbi-wireless > .cbi-section-node,
+#cbi-wireless > #wifi_assoclist_table,
+[data-page^="admin-system-admin"]:not(.login) .cbi-map:not(#cbi-dropbear),
+[data-page="admin-system-opkg"] #maincontent > .container {
+       font-family: inherit;
+       font-weight: normal;
+       font-style: normal;
+       line-height: normal;
+       min-width: inherit;
+       margin: 1rem 0 0 0;
+       padding: 2rem;
+       border-radius: 20px;
+       background-color: #fff;
+}
+
+fieldset {
+       border: none;
+}
+
+.cbi-map-descr + fieldset {
+       margin-top: 1rem;
+       border: none;
+}
+
+.cbi-section > legend {
+       display: none !important;
+}
+
+fieldset > fieldset,
+.cbi-section > .cbi-section {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       box-shadow: none;
+}
+
+.cbi-section > h3:first-child,
+.panel-title {
+       font-size: 1.4rem;
+       line-height: 1;
+       display: block;
+       width: 100%;
+       margin: 0;
+       margin-bottom: .5rem;
+       color: #354057;
+}
+
+/* btn 按钮 */
+.cbi-button-up,
+.cbi-button-down,
+.cbi-value-helpicon,
+.showSide {
+       font-family: "icomoon" !important;
+       font-weight: normal;
+       font-style: normal;
+       font-variant: normal;
+       line-height: 1;
+       text-transform: none;
+       -webkit-font-smoothing: antialiased;
+       speak: none;
+}
+
+* {
+       box-sizing: border-box;
+       margin: 0;
+       padding: 0;
+}
+
+.btn,
+button,
+select,
+input,
+.cbi-dropdown {
+       height: 1.8rem;
+       padding: 0;
+       color: rgba(0, 0, 0, .87);
+       border: 0;
+       border-bottom: 2px solid rgba(0, 0, 0, .26);
+       border-radius: 0;
+       outline: 0;
+       background-color: transparent;
+       background-image: none;
+       box-shadow: none;
+       vertical-align: bottom;
+}
+
+select,
+.cbi-dropdown {
+       width: inherit;
+}
+
+select:not([multiple="multiple"]):focus,
+input:not(.cbi-button):focus,
+.cbi-dropdown:focus,
+.cbi-dynlist > .item:focus {
+       border-color: #09c;
+}
+
+select[multiple="multiple"] {
+       height: auto;
+}
+
+/* footer 尾部 */
+footer {
+       font-size: .8rem;
+       overflow: hidden;
+       padding: 1rem;
+       text-align: right;
+       color: #aaa;
+       width: 100%;
+       float: right;
+}
+
+footer > a {
+       text-decoration: none;
+       color: #aaa;
+}
+
+/* Main interface 主界面 */
+.loading {
+       position: fixed;
+       z-index: 3000;
+       top: 0;
+       display: block;
+       width: 100%;
+       height: 100%;
+       pointer-events: none;
+       background-color: #354057;
+}
+
+.loading > span {
+       font-family: monospace;
+       font-size: 2.0rem;
+       font-size-adjust: .35;
+       position: relative;
+       top: 12.5%;
+       display: block;
+       text-align: center;
+       color: #888;
+}
+
+.loading > span > .loading-img {
+       font-family: "icomoon" !important;
+       font-size: 1.0rem;
+       display: inline-block;
+       margin-right: 1rem;
+       animation: anim-rotate 2s infinite linear;
+       vertical-align: middle;
+}
+
+@keyframes anim-rotate {
+       0% {
+               -webkit-transform: rotate(0);
+               -ms-transform: rotate(0);
+               transform: rotate(0);
+       }
+
+       100% {
+               -webkit-transform: rotate(360deg);
+               -ms-transform: rotate(360deg);
+               transform: rotate(360deg);
+       }
+}
+
+.Processes #maincontent > .container {
+       margin-right: 0;
+}
+
+/* Main interface left 左主界面 */
+.main-left {
+       position: fixed;
+       top: 10px;
+       bottom: 10px;
+       left: 10px;
+       width: 15%;
+       border-radius: 20px;
+       background-color: #7f8ba5;
+       z-index: 2000;
+       min-width: 210px;
+}
+
+.main-left .nav-container {
+       position: absolute;
+       top: 10px;
+       left: 10px;
+       bottom: 10px;
+       background-color: #354057;
+       width: 100%;
+       border-radius: 20px;
+}
+
+.main-left .nav-container .navbar-container {
+       position: absolute;
+       overflow: hidden;
+       bottom: 10px;
+       top: 82px;
+       width: 100%;
+       height: calc(100% - 92px);
+}
+
+.main-left .nav-container .brand {
+       color: #fff;
+       text-decoration: none;
+       font-size: 18px;
+       display: block;
+       text-align: center;
+       padding: 36px 0 24px;
+       border-bottom: 1px solid #fff;
+       margin: 0 15px;
+}
+
+.main-left .nav {
+       margin-top: .5rem;
+}
+
+.main-left .nav > li {
+       padding: .5rem 1rem;
+       cursor: pointer;
+}
+
+.main-left .nav > li a {
+       display: block;
+       color: #fff;
+}
+
+.main-left .nav > .slide {
+       padding: 0;
+}
+
+.main-left .nav > .slide > ul {
+       display: none;
+}
+
+.main-left .nav > .slide > .menu {
+       font-size: 1.15rem;
+       display: block;
+       padding: .5rem 1rem;
+       text-decoration: none;
+       color: #fff;
+       width: 90%;
+       border-radius: 0 25px 25px 0;
+}
+
+.main-left .nav > .slide > .menu.active {
+       background: #485267;
+}
+
+.main-left .nav > li:hover,
+.main-left .nav > .slide > .menu:hover,
+.main-left .nav > .slide > .slide-menu > li:hover {
+       background: #485267;
+}
+
+.main-left .nav > .slide:hover {
+       background: none;
+}
+
+.main-left .nav > .slide > .slide-menu > li {
+       margin: 5px 0;
+       padding: 10px 2rem;
+       width: 90%;
+       border-radius: 0 25px 25px 0;
+}
+
+.main-left .nav > .slide > .slide-menu > .active {
+       background-color: #f24c7c !important;
+       width: 80%;
+       border-radius: 0 25px 25px 0;
+}
+
+.main-left .nav > .slide > .slide-menu > li > a {
+       white-space: nowrap;
+       text-decoration: none;
+}
+
+.main-left .nav > .slide > .slide-menu > .active > a {
+       color: #fff;
+}
+
+.main-left .nav > .slide > .slide-menu > .active:hover {
+       cursor: hand;
+}
+
+/* Main interface right 右主界面 */
+.main-right .container .alert,
+.main-right .container .alert-message {
+       margin-top: 1rem;
+}
+
+.main-right .container .alert-message {
+       padding: 1rem;
+       margin-top: 1rem;
+       border-radius: 20px;
+       background-color: #fff !important;
+}
+
+.main-right .container .alert-message h4 {
+       margin-top: 1rem;
+       background: url(./no-pwd.png) no-repeat left 1px / 28px;
+       padding: 7px 0 0 32px;
+}
+
+.main-right .container .alert-message .btn {
+       margin-top: .8rem;
+       padding: 7px 6px;
+       background-color: #468ea4;
+       border-radius: 20px;
+       color: #fff;
+}
+
+/* table 表格 */
+table {
+       border-spacing: 0;
+       border-collapse: collapse;
+}
+
+table,
+.table {
+       overflow: hidden;
+       width: 100%;
+       border: 1px solid #ddd;
+       border-radius: 10px;
+}
+
+table > tbody > tr > td,
+table > tbody > tr > th,
+table > tfoot > tr > td,
+table > tfoot > tr > th,
+table > thead > tr > td,
+table > thead > tr > th,
+.table > .tbody > .tr > .td,
+.table > .tbody > .tr > .th,
+.table > .tfoot > .tr > .td,
+.table > .tfoot > .tr > .th,
+.table > .thead > .tr > .td,
+.table > .thead > .tr > .th,
+.table > .tr > .td.cbi-value-field,
+.table > .tr > .th.cbi-section-table-cell {
+       padding: .5rem;
+}
+
+.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td {
+       padding: .6rem;
+}
+
+.cbi-section-table-cell {
+       line-height: 1.1;
+       align-self: flex-end;
+       flex: 1 1 auto;
+}
+
+tr > td,
+tr > th,
+.tr > .td,
+.tr > .th,
+.cbi-section-table-row::before,
+#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) {
+       border-top: thin solid #ddd;
+}
+
+tr:first-child > td .tr:first-child > .td,
+#cbi-wireless .td,
+#cbi-network .tr:first-child > .td,
+.table[width="100%"] > .tr:first-child > .td,
+[data-page="admin-network-diagnostics"] .tr > .td,
+.tr.table-titles > .th,
+.tr.cbi-section-table-titles > .th {
+       border-top: 0 !important;
+}
+
+.cbi-section-table-row {
+       margin-bottom: 1rem;
+       text-align: center !important;
+       background: #f4f4f4;
+}
+
+.cbi-section-table-row:last-child {
+       margin-bottom: 0;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-input-select,
+.cbi-section-table-row > .cbi-value-field .cbi-input-text,
+.cbi-section-table-row > .cbi-value-field .cbi-input-password,
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown {
+       width: 100%;
+}
+
+.cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
+.cbi-section-table-row > .cbi-value-field input.cbi-input-password {
+       width: calc(100% - 1.5rem);
+}
+
+.cbi-section-table-row .td {
+       text-align: center !important;
+}
+
+div > table > tbody > tr:nth-of-type(2n),
+div > .table > .tr:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+/* fix multiple table */
+table table,
+.table .table {
+       border: 0;
+}
+
+.cbi-value-field table,
+.cbi-value-field .table {
+       border: 0;
+}
+
+td > table > tbody > tr > td,
+.td > .table > .tbody > .tr > .td {
+       border: 0;
+}
+
+.cbi-value-field > table > tbody > tr > td,
+.cbi-value-field > .table > .tbody > .tr > .td {
+       border: 0;
+}
+
+/* button style */
+.btn,
+.cbi-button,
+.item::after {
+       font-size: .8rem;
+       display: inline-block;
+       width: auto !important;
+       padding: 0 .8rem;
+       cursor: pointer;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       transition: all .2s ease-in-out;
+       text-align: center;
+       vertical-align: middle;
+       white-space: nowrap;
+       text-decoration: none;
+       color: rgba(0, 0, 0, .87);
+       border: 0;
+       border-radius: 20px;
+       background-color: #f0f0f0;
+       background-image: none;
+       -webkit-appearance: none;
+       -ms-touch-action: manipulation;
+       touch-action: manipulation;
+}
+
+.cbi-button:not(select) {
+       -webkit-appearance: none !important;
+}
+
+form[method="post"] + form[method="post"],
+.cbi-button + .cbi-button {
+       margin-left: .6rem;
+}
+
+.btn:hover,
+.btn:focus,
+.btn:active,
+.cbi-button:hover,
+.cbi-button:focus,
+.cbi-button:active,
+.item:hover::after,
+.item:focus::after,
+.item:active::after,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save:active {
+       text-decoration: none;
+       outline: 0;
+}
+
+.btn:disabled,
+.cbi-button:disabled {
+       cursor: not-allowed;
+       pointer-events: none;
+       opacity: .5;
+       box-shadow: none;
+}
+
+/* gray */
+.modal div[class="btn"],
+.cbi-button-find,
+.cbi-button-link,
+.cbi-button-up,
+.cbi-button-down,
+.cbi-button-neutral,
+.cbi-button[name="zero"],
+.cbi-button[name="restart"],
+.cbi-button[onclick="hide_empty(this)"] {
+       border: 1px solid;
+}
+
+/* dark blue */
+.btn.primary,
+.cbi-page-actions .cbi-button-save,
+.cbi-page-actions .cbi-button-apply + .cbi-button-save,
+.cbi-button-add,
+.cbi-button-save,
+.cbi-button-positive,
+.cbi-button-link,
+.cbi-button[value="Enable"],
+.cbi-button[value="Scan"],
+.cbi-button[value^="Back"],
+.cbi-button-neutral[onclick="handleConfig(event)"] {
+       font-weight: normal;
+       color: #2e6da4;
+       border: thin solid #2e6da4;
+       background-color: transparent;
+}
+
+/* light blue */
+.cbi-page-actions .cbi-button-apply,
+.cbi-section-actions .cbi-button-edit,
+.cbi-button-edit,
+.cbi-button-apply,
+.cbi-button-reload,
+.cbi-button-action,
+.cbi-button[value="Submit"],
+.cbi-button[value$="Apply"],
+.cbi-button[onclick="addKey(event)"] {
+       font-weight: normal;
+       color: #fff;
+       border: 1px solid #468ea4;
+       background-color: #468ea4;
+}
+
+/* red */
+.btn.danger,
+.cbi-section-remove > .cbi-button,
+.cbi-button-remove,
+.cbi-button-reset,
+.cbi-button-negative,
+.cbi-button[value="Stop"],
+.cbi-button[value="Kill"],
+.cbi-button[onclick="reboot(this)"],
+.cbi-button-neutral[value="Restart"] {
+       padding: 5px .8rem;
+       font-weight: 100;
+       color: #f24b7c;
+       background-color: transparent;
+       border: 1px solid #f24b7c;
+}
+
+/* yellow */
+.btn[value="Dismiss"],
+.cbi-button[value="Terminate"],
+.cbi-button[value="Reset"],
+.cbi-button[value="Disabled"],
+.cbi-button[onclick^="iface_reconnect"],
+.cbi-button[onclick="handleReset(event)"],
+.cbi-button-neutral[value="Disable"] {
+       font-weight: normal;
+       color: #9a4569;
+       border: 1px solid #9a4569;
+       background-color: transparent;
+}
+
+/* green */
+.cbi-button-success,
+.cbi-button-download,
+.cbi-button[name="backup"],
+.cbi-button[value="Upload"],
+.cbi-button[value="Save mtdblock"] {
+       font-weight: normal;
+       color: #468ea4;
+       border: thin solid #468ea4;
+       background-color: transparent;
+}
+
+.cbi-page-actions .cbi-button-link:first-child {
+       float: left;
+}
+
+.a-to-btn {
+       text-decoration: none;
+}
+
+.cbi-value-field .cbi-button-add {
+       padding: 1px 6px;
+}
+
+.cbi-value-field .cbi-button-neutral {
+       padding: 1px 8px;
+}
+
+/* tabs & menu 选项卡 & 菜单栏 */
+.tabs {
+       margin-top: 1rem;
+       background-color: #fff;
+       border-radius: 20px;
+}
+
+.tabs > li {
+       margin-right: .8rem;
+       padding: 6px 10px;
+       position: relative;
+       display: inline-block;
+       text-align: center;
+}
+
+.tabs > li a {
+       color: #468EA4;
+       font-size: 14px;
+       text-decoration: none;
+       position: relative;
+       z-index: 1;
+}
+.tabs > li::after {
+       content: '';
+       background-color: #cccccc82;
+       position: absolute;
+       width: 0;
+       height: 100%;
+       bottom: 0;
+       border-radius: 20px;
+       left: 50%;
+       transform: translateX(-50%);
+}
+
+.tabs > li:hover::after {
+       transition: width .35s;
+       width: calc(100% + 4px);
+}
+
+.tabs > li.active::after {
+       width: calc(100% + 4px);
+       background-color: #468ea473;
+}
+
+.cbi-tabmenu > li {
+       display: inline-block;
+       padding: .6rem 0;
+}
+
+.cbi-tabmenu > li > a {
+       padding: .5rem .8rem;
+       text-decoration: none;
+       color: #404040;
+}
+
+.cbi-tabmenu {
+       border: thin solid #d4d4d4;
+       border-bottom: 0;
+}
+
+.cbi-tabmenu > li:hover {
+       background-color: #f1f1f1;
+       border-radius: 10px 10px 0 0;
+}
+
+.cbi-tabmenu > li[class~="cbi-tab"] {
+       background-color: #fff;
+       border-radius: 10px 10px 0 0;
+}
+
+.cbi-tabmenu {
+       background-color: #d4d4d4;
+       border-radius: 10px 10px 0 0;
+       overflow: hidden;
+}
+
+.cbi-section .cbi-section-remove:nth-of-type(2n),
+.container > .cbi-section .cbi-section-node:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+.cbi-tabmenu + div {
+       border-radius: 0 0 10px 10px;
+}
+
+.cbi-tabmenu + div.controls {
+       margin: 0;
+       padding: .5em 0 1em 0;
+       background: #fff;
+       border: 1px solid #d4d4d4;
+       border-top: none;
+       border-bottom: none;
+       border-radius: 0;
+}
+
+.cbi-tabmenu + div.controls + .table {
+       border-radius: 0 0 25px 25px;
+       background: #fff;
+}
+
+[data-tab-title] {
+       height: 0;
+       opacity: 0;
+       overflow: hidden;
+}
+
+[data-tab-active="true"] {
+       opacity: 1;
+       height: auto;
+       overflow: visible;
+       transition: opacity .25s ease-in;
+}
+
+.cbi-section[id] .cbi-section-remove:nth-of-type(4n + 3),
+.cbi-section[id] .cbi-section-node:nth-of-type(4n + 4) {
+       background-color: #f9f9f9;
+}
+
+.cbi-section-node-tabbed {
+       margin-top: 0;
+       padding: 0;
+       border: thin solid #d4d4d4;
+       border-top: 0;
+}
+
+.cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
+       background-color: #f9f9f9;
+}
+
+.cbi-value-field,
+.cbi-value-description {
+       line-height: 1.25;
+       display: table-cell;
+}
+
+.cbi-input-invalid {
+       color: #f00;
+       border-color: #f00;
+}
+
+.cbi-section-error {
+       font-weight: bold;
+       line-height: 1.42857143;
+       margin: 18px;
+       padding: 6px;
+       border: 1px solid #f24b7c;
+       border-radius: 3px;
+       background-color: #fce6e6;
+}
+
+.cbi-section-error ul {
+       margin: 0 0 0 20px;
+}
+
+.cbi-section-error ul li {
+       font-weight: bold;
+       color: #f24b7c;
+}
+
+.cbi-value-helpicon > img {
+       display: none;
+}
+
+.cbi-value-helpicon:before {
+       content: "\f059";
+}
+
+.cbi-value-description {
+       font-size: small;
+       padding: .5rem 0 0 0;
+       opacity: .5;
+}
+
+.cbi-value-title {
+       display: table-cell;
+       float: left;
+       width: 23rem;
+       padding-top: .4rem;
+       padding-right: 2rem;
+       text-align: right;
+       word-wrap: break-word;
+}
+
+.cbi-value {
+       display: inline-block;
+       width: 100%;
+       padding: .3rem 1rem;
+}
+
+.cbi-value ul {
+       line-height: 1.25;
+}
+
+.td[data-title]::before {
+       font-weight: bold;
+       display: none;
+       padding: .25rem 0;
+       content: attr(data-title) ":\20";
+       text-align: left;
+       white-space: nowrap;
+}
+
+.tr.placeholder .td[data-title]::before {
+       display: none;
+}
+
+.tr[data-title]::before,
+.tr.cbi-section-table-titles.named::before {
+       font-weight: bold;
+       display: table-cell;
+       align-self: center;
+       flex: 1 1 5%;
+       padding: .25rem;
+       content: attr(data-title) "\20";
+       text-align: center;
+       vertical-align: middle;
+       white-space: normal;
+       word-wrap: break-word;
+}
+
+.cbi-rowstyle-1 {
+       background-color: #f9f9f9;
+}
+
+.cbi-rowstyle-2 {
+       background-color: #eee;
+}
+
+.cbi-rowstyle-2 .cbi-button-up,
+.cbi-rowstyle-2 .cbi-button-down {
+       background-color: #fff !important;
+}
+
+.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
+       width: auto !important;
+}
+
+.td.cbi-section-actions {
+       text-align: right !important;
+       vertical-align: middle;
+}
+
+.td.cbi-section-actions > * {
+       display: block;
+}
+
+.td.cbi-section-actions > * > *,
+.td.cbi-section-actions > * > form > * {
+       margin: 0 5px;
+}
+
+.td.cbi-section-actions > * > form {
+       display: inline-flex;
+       margin: 0;
+}
+
+/* desc */
+.cbi-section-descr,
+.cbi-map-descr {
+       font-size: small;
+       line-height: 1.42857143;
+       color: #999;
+}
+
+.cbi-dynlist {
+       line-height: 1.3;
+       flex-direction: column;
+       min-height: 30px;
+}
+
+.cbi-dynlist > .item {
+       position: relative;
+       max-width: 24.9rem;
+       margin: 0 2em 4px 0;
+       padding: 2px 4px;
+       cursor: default;
+       pointer-events: none;
+       color: #666;
+       border-bottom: 2px solid rgba(0, 0, 0, .26);
+}
+
+.cbi-dynlist[name="sshkeys"] > .item {
+       max-width: none;
+}
+
+.cbi-dynlist > .item::after {
+       position: absolute;
+       right: -2em;
+       bottom: 0;
+       display: inline-flex;
+       min-height: 17px;
+       padding: 0 6px;
+       content: "\00D7";
+       pointer-events: auto;
+       color: #f24b7c;
+       border: thin solid #f24b7c;
+       background-color: transparent;
+}
+
+.cbi-dynlist > .item > span {
+       white-space: normal;
+       word-break: break-word;
+}
+
+.cbi-dynlist,
+.cbi-dropdown {
+       position: relative;
+       display: inline-flex;
+       height: auto;
+       padding: 0;
+       cursor: default;
+}
+
+.cbi-dropdown > ul {
+       display: flex;
+       overflow-x: hidden;
+       overflow-y: auto;
+       width: 100%;
+       margin: 0 !important;
+       padding: 0;
+       list-style: none;
+}
+
+.cbi-dropdown > ul.preview {
+       display: none;
+}
+
+.cbi-dropdown > .open {
+       flex-basis: 15px;
+}
+
+.cbi-dropdown > .open,
+.cbi-dropdown > .more {
+       font-size: 1rem;
+       font-weight: 900;
+       line-height: 2;
+       display: flex;
+       flex-direction: column;
+       flex-grow: 0;
+       flex-shrink: 0;
+       justify-content: center;
+       padding: 0 .25em;
+       text-align: center;
+       background: #d4d4d4;
+       border-radius: 5px;
+       margin-bottom: 1px;
+}
+
+.cbi-dropdown > .more,
+.cbi-dropdown > ul > li[placeholder] {
+       font-weight: bold;
+       display: none;
+       color: #777;
+       text-shadow: 1px 1px 0 #fff;
+}
+
+.cbi-dropdown > ul > li {
+       display: none;
+       overflow: hidden;
+       align-items: center;
+       align-self: center;
+       flex-grow: 1;
+       flex-shrink: 1;
+       min-height: 20px;
+       padding: .25em;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.cbi-dropdown > ul > li .hide-open {
+       display: initial;
+}
+
+.cbi-dropdown > ul > li .hide-close {
+       display: none;
+}
+
+.cbi-dropdown > ul > li[display]:not([display="0"]) {
+       border-left: thin solid #ccc;
+}
+
+.cbi-dropdown[empty] > ul {
+       max-width: 1px;
+}
+
+.cbi-dropdown > ul > li > form {
+       display: none;
+       margin: 0;
+       padding: 0;
+       pointer-events: none;
+}
+
+.cbi-dropdown > ul > li img {
+       margin-right: .25em;
+       vertical-align: middle;
+}
+
+.cbi-dropdown > ul > li > form > input[type="checkbox"] {
+       height: auto;
+       margin: 0;
+}
+
+.cbi-dropdown > ul > li input[type="text"] {
+       height: 20px;
+}
+
+.cbi-dropdown[open] {
+       position: relative;
+}
+
+.cbi-dropdown[open] > ul.dropdown {
+       position: absolute;
+       z-index: 1100;
+       display: block;
+       width: auto;
+       min-width: 100%;
+       max-width: none;
+       max-height: 200px !important;
+       border: thin solid #918e8c;
+       background: #f6f6f6;
+}
+
+.cbi-dropdown > ul > li[display],
+.cbi-dropdown[open] > ul.preview,
+.cbi-dropdown[open] > ul.dropdown > li,
+.cbi-dropdown[multiple] > ul > li > label,
+.cbi-dropdown[multiple][open] > ul.dropdown > li,
+.cbi-dropdown[multiple][more] > .more,
+.cbi-dropdown[multiple][empty] > .more {
+       display: flex;
+       align-items: center;
+       flex-grow: 1;
+}
+
+.cbi-dropdown[empty] > ul > li,
+.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
+.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
+       display: block;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-open {
+       display: none;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li .hide-close {
+       display: initial;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li {
+       border-bottom: thin solid #ccc;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[selected] {
+       background: #b0d0f0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li.focus {
+       background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+}
+
+.cbi-dropdown[open] > ul.dropdown > li:last-child {
+       margin-bottom: 0;
+       border-bottom: 0;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li[unselectable] {
+       opacity: .7;
+}
+
+.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
+       width: 100%;
+}
+
+.cbi-dropdown[disabled] {
+       pointer-events: none;
+       opacity: .6;
+}
+
+.cbi-dropdown .zonebadge {
+       width: 100%;
+}
+
+.cbi-dropdown[open] .zonebadge {
+       width: auto;
+}
+
+#modal_overlay {
+       position: fixed;
+       z-index: 3000;
+       top: 0;
+       right: 10000px;
+       bottom: 0;
+       left: -10000px;
+       overflow-y: scroll;
+       transition: opacity .125s ease-in;
+       opacity: 0;
+       background: rgba(0, 0, 0, .7);
+       -webkit-overflow-scrolling: touch;
+}
+
+.modal {
+       display: flex;
+       align-items: center;
+       flex-wrap: wrap;
+       width: 90%;
+       min-width: 270px;
+       max-width: 600px;
+       min-height: 80px;
+       max-height: 2400px;
+       margin: 5em auto;
+       padding: 1em;
+       border-radius: 20px !important;
+       background: #fff;
+}
+
+.modal > * {
+       line-height: normal;
+       flex-basis: 100%;
+}
+
+.modal > pre,
+.modal > textarea {
+       font-size: 1rem;
+       font-size-adjust: .35;
+       overflow: auto;
+       margin-bottom: .5em;
+       padding: 8.5px;
+       white-space: pre-wrap;
+       color: #fff;
+       outline: 0;
+       background-color: #354057;
+}
+
+.modal > h4 {
+       margin: .5em 0;
+}
+
+.modal ul {
+       margin-left: 2.2em;
+}
+
+.modal li {
+       list-style-type: square;
+       color: #808080;
+}
+
+.modal p {
+       padding-left: .25rem;
+       word-break: break-word;
+}
+
+.modal .label {
+       font-size: .6rem;
+       font-weight: normal;
+       padding: .1rem .3rem;
+       padding-bottom: 0;
+       cursor: default;
+       border-radius: 0;
+}
+
+.modal .label.warning {
+       background-color: #f0ad4e !important;
+}
+
+.modal .btn {
+       padding: .3rem .6rem;
+}
+
+.modal .spinning {
+       margin-bottom: 2em;
+}
+
+body.modal-overlay-active {
+       overflow: hidden;
+       height: 100vh;
+}
+
+#modal_overlay .alert-message.warning {
+       background-color:  #fff !important;
+       margin-bottom: 10px;
+}
+
+body.modal-overlay-active #modal_overlay {
+       right: 0;
+       left: 0;
+       opacity: 1;
+}
+
+.spinning {
+       position: relative;
+       padding-left: 32px !important;
+}
+
+.spinning::before {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       left: .2em;
+       width: 32px;
+       content: " ";
+       background: url(../resources/icons/loading.gif) no-repeat center;
+       background-size: 16px;
+}
+
+/* luci */
+.hidden {
+       display: none;
+}
+
+.left,
+.left::before {
+       text-align: left !important;
+}
+
+.right,
+.right::before {
+       text-align: right !important;
+}
+
+.center,
+.center::before {
+       text-align: center !important;
+}
+
+.top {
+       align-self: flex-start !important;
+       vertical-align: top !important;
+}
+
+.bottom {
+       align-self: flex-end !important;
+       vertical-align: bottom !important;
+}
+
+.inline {
+       display: inline;
+}
+
+.cbi-page-actions {
+       padding-top: 1rem;
+       text-align: right;
+}
+
+.cbi-page-actions > form[method="post"] {
+       display: inline-block;
+}
+
+/* input */
+.cbi-value input[type="password"],
+.cbi-value input[type="text"] {
+       min-width: 15rem;
+}
+
+/* select */
+.cbi-value-field .cbi-dropdown,
+
+.cbi-value-field .cbi-input-invalid {
+       color: #f00;
+       border-bottom-color: #f00;
+}
+
+/* progressbar */
+.cbi-progressbar {
+       position: relative;
+       min-width: 170px;
+       height: 20px;
+       margin: 4px 0;
+       background: #a9cad4;
+       color: #fff;
+       border-radius: 20px;
+       overflow: hidden;
+}
+
+.cbi-progressbar > div {
+       width: 0;
+       height: 100%;
+       background: #468ea4;
+       border-radius: 20px;
+}
+
+.cbi-progressbar::after {
+       font-family: monospace;
+       font-size: 10px;
+       font-size-adjust: .38;
+       line-height: normal;
+       position: absolute;
+       top: 50%;
+       right: 0;
+       bottom: 2px;
+       left: 0;
+       content: attr(title);
+       text-align: center;
+       white-space: pre;
+       transform: translateY(-50%);
+}
+
+.th[data-type="button"],
+.td[data-type="button"],
+.th[data-type="fvalue"],
+.td[data-type="fvalue"] {
+       flex: 1 1 2em;
+       text-align: center;
+}
+
+.ifacebadge {
+       display: inline-flex;
+       padding: .5rem .8rem;
+       background: #eee;
+       border-radius: 20px;
+}
+
+td > .ifacebadge,
+.td > .ifacebadge {
+       font-size: .8rem;
+       background-color: #d4d4d4;
+       border-radius: 20px;
+}
+
+.ifacebadge > em,
+.ifacebadge > img {
+       display: inline-block;
+       align-self: flex-start;
+       margin: 0 .2rem;
+}
+
+.ifacebadge > img + img {
+       margin: 0 .2rem 0 0;
+}
+
+.network-status-table {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox {
+       flex-grow: 1;
+       margin: .5em;
+       border-radius: 20px;
+       overflow: hidden;
+}
+
+.network-status-table .ifacebox-body {
+       display: flex;
+       flex-direction: column;
+       height: 100%;
+       background: #f5f5f5;
+}
+
+.network-status-table .ifacebox-body > span {
+       flex: 10 10 auto;
+       font-size: 12px;
+       height: 100%;
+}
+
+.network-status-table .ifacebox-body > div {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.network-status-table .ifacebox-body .ifacebadge {
+       align-items: center;
+       flex: 1 1 auto;
+       min-width: 220px;
+       margin: .5em .25em 0 .25em;
+       padding: .5em;
+       background-color: #fff;
+       border-radius: 20px;
+}
+
+/* textarea */
+.cbi-input-textarea {
+       font-family: monospace;
+       width: 100%;
+       min-height: 14rem;
+       padding: .8rem;
+       color: #000;
+}
+
+#syslog {
+       font-size: small;
+       width: 100%;
+       min-height: 15rem;
+       margin-bottom: 20px;
+       padding: 1rem;
+       resize: none;
+       color: #333;
+       border: 0;
+       border-radius: 20px;
+       background-color: #fff;
+}
+
+#syslog:focus {
+       outline: 0;
+}
+
+/* config changes */
+.uci-change-list {
+       font-family: monospace;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #0f0;
+       background-color: #cfc;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+       font-style: normal;
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #f00;
+       background-color: #fcc;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+       font-style: normal;
+       display: block;
+       padding: 2px;
+       text-decoration: none;
+       border: thin solid #ccc;
+       background-color: #eee;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+       font-style: normal;
+       padding: 0;
+       white-space: pre;
+       border: 0;
+}
+
+.uci-change-legend {
+       padding: 5px;
+}
+
+.uci-change-legend-label {
+       float: left;
+       width: 150px;
+}
+
+.uci-change-legend-label > ins,
+.uci-change-legend-label > del,
+.uci-change-legend-label > var {
+       display: block;
+       float: left;
+       width: 10px;
+       height: 10px;
+       margin-right: 4px;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+       line-height: .4;
+       border: 0;
+}
+
+.uci-change-list var,
+.uci-change-list del,
+.uci-change-list ins {
+       padding: .5rem;
+}
+
+/* other fix */
+#iwsvg,
+#iwsvg2,
+#bwsvg {
+       border: 1px solid #d4d4d4 !important;
+       border-radius: 20px;
+}
+
+.lang_enTraffic #bwsvg,
+.lang_enWireless #iwsvg {
+       border: 1px solid #d4d4d4 !important;
+       border-radius: 0 0 20px 20px;
+}
+
+#iwsvg,
+[data-page="admin-status-realtime-bandwidth"] #bwsvg {
+       border-top: 0 !important;
+}
+
+.ifacebox {
+       line-height: 1.25;
+       display: inline-flex;
+       flex-direction: column;
+       min-width: 100px;
+       background-color: #f9f9f9;
+       border-radius: 10px;
+}
+
+.ifacebox-head {
+       padding: .5em;
+       background: #eee;
+       color: #333;
+       font-size: 14px;
+       border-radius: 10px 10px 0 0;
+}
+
+strong {
+       font-weight: 100;
+}
+
+.ifacebox-head.active {
+       background: #5bc0de;
+}
+
+.ifacebox-body {
+       padding: .8em;
+       border-radius: 0 0 10px 10px;
+}
+
+.cbi-image-button {
+       margin-left: .5rem;
+}
+
+.zonebadge {
+       display: inline-block;
+       padding: .2rem .5rem;
+       border-radius: 20px;
+}
+
+.zonebadge .ifacebadge {
+       margin: .1rem .2rem;
+       padding: .2rem .3rem;
+       border: thin solid #6c6c6c;
+       height: 26px;
+}
+
+.zonebadge > input[type="text"] {
+       min-width: 10rem;
+       margin-top: .3rem;
+       padding: .16rem 1rem;
+}
+
+.zonebadge > em,
+.zonebadge > strong {
+       display: inline-block;
+       margin: 0 .2rem;
+}
+
+.cbi-value-field .cbi-input-checkbox,
+.cbi-value-field .cbi-input-radio {
+       margin-top: .15rem;
+}
+
+.cbi-value-field > ul > li {
+       display: flex;
+}
+
+.cbi-value-field > ul > li > label {
+       margin-top: .5rem;
+}
+
+.cbi-value-field > ul > li .ifacebadge {
+       margin-top: -.5rem;
+       margin-left: .4rem;
+       background-color: #eee;
+}
+
+.cbi-section-table-row > .cbi-value-field .cbi-dropdown {
+       min-width: 7rem;
+}
+
+.cbi-section-create {
+       display: inline-flex;
+       align-items: center;
+       margin: .5rem -3px;
+}
+
+.cbi-section-create > * {
+       margin: .5rem;
+}
+
+.cbi-section-remove {
+       padding: .5rem;
+}
+
+div.cbi-value var,
+td.cbi-value-field var,
+.td.cbi-value-field var {
+       font-style: italic;
+       color: #0069d6;
+}
+
+small {
+       font-size: 90%;
+       line-height: 1.42857143;
+       white-space: normal;
+}
+
+.cbi-button-up,
+.cbi-button-down {
+       font-size: 1.2rem;
+       display: inline-block;
+       min-width: 0;
+       padding: .2rem .3rem;
+}
+
+.cbi-optionals {
+       padding: 1rem 1rem 0 1rem;
+       border-top: thin solid #ccc;
+}
+
+.cbi-dropdown-container {
+       position: relative;
+}
+
+.cbi-tooltip-container,
+span[data-tooltip],
+span[data-tooltip] .label {
+       cursor: help !important;
+}
+
+.cbi-tooltip {
+       position: absolute;
+       z-index: 1000;
+       left: -1000px;
+       padding: 2px 5px;
+       transition: opacity .25s ease-out;
+       white-space: pre;
+       pointer-events: none;
+       opacity: 0;
+       border-radius: 3px;
+       background: #fff;
+}
+
+.cbi-tooltip-container:hover .cbi-tooltip {
+       left: auto;
+       transition: opacity .25s ease-in;
+       opacity: 1;
+       height: 38px;
+}
+
+.zonebadge .cbi-tooltip {
+       margin: -1.5rem 0 0 -.5rem;
+       padding: .25rem;
+       background: inherit;
+}
+
+.zonebadge-empty {
+       color: #404040;
+       background: repeating-linear-gradient(
+               45deg,
+               rgba(204, 204, 204, .5),
+               rgba(204, 204, 204, .5) 5px,
+               rgba(255, 255, 255, .5) 5px,
+               rgba(255, 255, 255, .5) 10px
+       );
+}
+
+.zone-forwards > * {
+       flex: 1 1 45%;
+}
+
+.zone-forwards > span {
+       flex-basis: 10%;
+       padding: 0 .25rem;
+       text-align: center;
+}
+
+.zone-forwards .zone-src,
+.zone-forwards .zone-dest {
+       display: flex;
+       flex-direction: column;
+}
+
+.label {
+       font-size: .8rem;
+       padding: .3rem .8rem;
+       white-space: nowrap;
+       text-decoration: none;
+       color: #fff !important;
+       -moz-border-radius: 3px;
+       border-radius: 20px;
+       background-color: #bfbfbf;
+}
+
+label > input[type="checkbox"],
+label > input[type="radio"] {
+       position: relative;
+       top: .4rem;
+       right: .2rem;
+       margin: 0;
+       vertical-align: bottom;
+}
+
+.showSide {
+       display: none;
+}
+
+.darkMask {
+       position: fixed;
+       z-index: 99;
+       display: none;
+       width: 100%;
+       height: 100%;
+       content: "";
+       background-color: rgba(0, 0, 0, .56);
+}
+
+/* diagnostics */
+#diag-rc-output > pre,
+#command-rc-output > pre {
+       font-size: 1.2rem;
+       font-size-adjust: .35;
+       line-height: normal;
+       display: block;
+       width: 100%;
+       padding: 8.5px;
+       white-space: pre;
+       color: #eee;
+       background-color: #101010;
+}
+
+[data-page="admin-network-diagnostics"] .table {
+       box-shadow: none;
+}
+
+input[name="ping"],
+input[name="traceroute"],
+input[name="nslookup"] {
+       width: 80%;
+}
+
+/* fix Main Login 登录界面*/
+.login .main-right {
+       background: url(./loginBG.png) no-repeat center center / cover;
+       text-align: center;
+}
+
+.login header {
+       margin-top: 10px;
+}
+
+.login > .main {
+       position: relative;
+       height: 100%;
+}
+
+.login > .main .main-left {
+       display: none;
+}
+
+.login .brand {
+       display: block;
+       color: #fff;
+       font-size: 24px;
+       text-decoration: none;
+}
+
+.login > .main .cbi-value-title {
+       display: none;
+}
+
+.login > .main #maincontent {
+       margin-top: 5rem;
+       padding-bottom: 20px;
+       display: inline-block;
+       background-color: transparent;
+       width: 39%;
+       color: #fff;
+       max-width: 493px;
+}
+
+.login > .main .container {
+       display: block;
+       margin-top: 2rem !important;
+}
+
+.login .alert,
+.login .main-right .container .alert-message {
+       margin-bottom: 1em;
+       padding: 1rem;
+       background-color: #4a5368 !important;
+       border: 1px solid #3e4a62;
+       border-radius: 20px;
+}
+
+.login .alert-message > h4 {
+       padding: 7px 0 0 32px;
+       font-size: 18px;
+       background: url(./no-pwd.png) no-repeat left 0 / 28px;
+       display: inline-block;
+}
+
+.login .alert-message > p {
+       line-height: 25px;
+       font-size: 14px;
+}
+
+.login .alert-message > * {
+       margin: .5rem 0;
+}
+
+.login .main-right .container .alert-message .btn {
+       border: 1px solid #fff;
+       background-color: transparent;
+       color: #fff;
+       border-radius: 20px;
+       padding: .6rem;
+       height: auto;
+}
+
+.login > .main form h2 {
+       font-size: 1.8rem;
+       margin: 17px 0;
+       padding-bottom: 0;
+       color: #fff;
+}
+
+.login > .main form .cbi-map-descr {
+       margin-bottom: 17px;
+       display: block;
+}
+
+.login > .main form > .cbi-page-actions {
+       padding: 0;
+       display: block;
+}
+
+.login > .main form > .cbi-page-actions .cbi-button {
+       margin: 0;
+       width: 50% !important;
+       height: 42px;
+       float: left;
+}
+
+.login > .main form > .cbi-page-actions .cbi-button-apply {
+       border-radius: 25px 0 0 25px;
+}
+
+.login > .main form > .cbi-page-actions .cbi-button-reset {
+       border-radius: 0 25px 25px 0;
+}
+
+.login > .main .cbi-value {
+       margin: 17px 0;
+       padding: 0;
+       display: block;
+}
+
+.login > .main .cbi-value > .cbi-value-field {
+       display: block;
+       position: relative;
+}
+
+.login > .main .cbi-value-last .cbi-value-field > div {
+       height: 24px;
+       width: 24px;
+       display: inline-block;
+       background: url(./op-eye.png) no-repeat center center / cover;
+       position: absolute;
+       top: 8px;
+       right: 12px;
+}
+
+.login > .main .cbi-value-last .cbi-value-field.op-eye > div {
+       background-image: url(./cl-eye.png);
+}
+
+.login > .main .cbi-value .cbi-input-text {
+       margin: 0 0 16px;
+       padding-left: 36px;
+       width: 100%;
+       height: 42px;
+       border: 1px solid #556270;
+       border-radius: 20px;
+       background: #fff no-repeat 11px center / 19px;
+}
+
+.login > .main .cbi-value .cbi-input-text {
+       background-image: url(./user.png);
+}
+
+.login > .main .cbi-value-last .cbi-input-text {
+       background-image: url(./pwd.png);
+}
+
+.login .cbi-section {
+       padding: 0;
+       box-shadow: none;
+       background-color: transparent;
+}
+
+.login .cbi-page-actions .cbi-button-apply,
+.login .cbi-button-apply {
+       border: 1px solid #f24b7c;
+       background-color: #f24b7c;
+}
+
+.login .cbi-button[value="Reset"] {
+       color: #fff;
+       border: 1px solid #9a4569;
+       background-color: #9a4569;
+}
+
+.login footer {
+       padding: 0;
+}
+
+@media screen and (min-height: 585px) {
+       .login footer {
+               position: absolute;
+               bottom: 0;
+               width: 100%;
+       }
+}
+
+/* logged 已登录界面 */
+/* header 头部 */
+.logged-in {
+       min-height: 100%;
+       background-color: #ebf1f6;
+}
+
+.logged-in header {
+       display: block;
+       position: fixed;
+       top: 1rem;
+       right: 1rem;
+       border: 1px solid #ddd;
+       background-color: #fff;
+       border-radius: 20px;
+       width: calc(85% - 20px - 2rem);
+}
+
+.logged-in .main {
+       overflow: hidden;
+}
+
+.logged-in header .container {
+       height: 100%;
+}
+
+.logged-in header .container .btn-con {
+       height: 3rem;
+       line-height: 3rem;
+}
+
+.logged-in header .container .btn-con #xhr_poll_status {
+       display: inline-block;
+}
+
+.logged-in header .container .btn-con .logout {
+       background-color: #354057;
+}
+
+.logged-in header .container .btn-con .logout a {
+       color: #fff;
+       text-decoration: none;
+}
+
+.logged-in .logoImg,
+.login-info .logoImg {
+       display: none;
+}
+
+.logged-in .main-right {
+       float: right;
+       width: 84%;
+       height: 100%;
+}
+
+.logged-in .main-right .container {
+       margin: 5rem 1rem 1rem;
+}
+
+/* rosy file server */
+.login-info.node-main-login{
+       background-color: #ebf1f6;
+}
+
+.login-info.node-main-login header .container,
+.login-info.node-main-login .main {
+       width: 1170px;
+}
+
+.login-info.node-main-login .main {
+       padding: 0 15px;
+}
+
+.login-info.node-main-login header {
+       display: block;
+}
+
+.login-info.node-main-login header .container {
+       margin: 1rem auto 0;
+       height: 3rem;
+       background-color: #fff;
+       border: 1px solid #ddd;
+       border-radius: 50px;
+       line-height: 44px;
+}
+
+.login-info.node-main-login .label.logout {
+       background-color: #f24b7c;
+}
+
+.login-info.node-main-login .label.logout a {
+       color: #fff;
+       text-decoration: none;
+}
+
+/* node main login */
+.login-info .main {
+       margin: 0 auto;
+       width: 80%;
+       max-width: 1170px;
+}
+
+.login-info .main-left {
+       display: none;
+}
+
+.login-info .main-right {
+       width: 100%;
+}
+
+/* fix status overview */
+.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2) {
+       white-space: normal;
+}
+
+/* fix status processes */
+.node-status-processes > .main .table .tr .td:nth-child(3) {
+       white-space: normal;
+}
+
+.node-admin-status form {
+       margin: 2rem 2rem 0 0;
+}
+
+/* fix system reboot */
+[data-page="admin-system-reboot"] p {
+       padding-left: 2rem;
+}
+
+/* fix network diagnostics */
+.lang_enDiagnostics .tr .td,
+.lang_enLoad .tr .td,
+.lang_enTraffic.node-admin-status .tr .td,
+.lang_enWireless .tr .td,
+.lang_enConnections .tr .td {
+       border: none;
+}
+
+[data-page="admin-system-reboot"] p > span {
+       position: relative;
+       top: .1rem;
+       left: 1rem;
+}
+
+.lang_enInterfaces .ifacebox-body {
+       border-width: 1px;
+       border-style: solid;
+}
+
+/* samba */
+#cbi-samba .cbi-value-last .cbi-value-field {
+       display: block;
+}
+
+#cbi-samba .cbi-value-last .cbi-value-title {
+       width: auto;
+       padding-bottom: .6rem;
+}
+
+/* software */
+.controls > * > .btn:not([aria-label$="page"]) {
+       flex-grow: initial !important;
+       margin-top: .1rem;
+}
+
+.controls > #pager > .btn[aria-label$="page"] {
+       font-size: 1.4rem;
+}
+
+.controls > * > label {
+       margin-bottom: .2rem;
+}
+
+[data-page="admin-system-opkg"] div.btn {
+       line-height: 3;
+       display: inline;
+       padding: .3rem .6rem;
+}
+
+[data-page^="admin-system-admin"]:not(.login) .cbi-map:not(#cbi-dropbear),
+[data-page="admin-system-opkg"] #maincontent > .container {
+       margin-top: 2rem;
+       padding-top: .1rem;
+}
+
+[data-page="admin-system-opkg"] #maincontent > .container {
+       margin: 2rem;
+       margin-bottom: 1rem;
+}
+
+.td.version,
+.td.size {
+       white-space: normal !important;
+       word-break: break-word;
+}
+
+.cbi-tabmenu + .cbi-section {
+       margin-top: 0;
+       border: 1px solid #d4d4d4;
+       border-top: none;
+}
+
+/* wireless overview */
+#cbi-wireless > #wifi_assoclist_table > .tr {
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td {
+       right: 33px;
+       bottom: 33px;
+       left: 33px;
+       border-top: thin solid #ddd !important;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles {
+       border-radius: 20px 20px 0 0;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.placeholder,
+#cbi-wireless > #wifi_assoclist_table > .tr.placeholder .td {
+       border-radius: 0 0 20px 20px;
+       overflow: hidden;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles .th:first-child {
+       border-top-left-radius: 20px;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles .th:last-child {
+       border-top-right-radius: 20px;
+}
+
+#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th {
+       border-bottom: thin solid #ddd;
+}
+
+#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] {
+       width: 23rem;
+}
+
+/* firewall */
+#iptables {
+       font-family: inherit;
+       font-weight: normal;
+       font-style: normal;
+       line-height: 1;
+       min-width: inherit;
+       margin: 0 0 2rem 0;
+       padding: 2rem;
+       border: 1px solid #d4d4d4;
+       border-radius: 0;
+       background-color: #fff;
+       border-top: none;
+}
+
+#cbi-firewall-redirect table *,
+#cbi-network-switch_vlan table *,
+#cbi-firewall-zone table * {
+       font-size: small;
+}
+
+#cbi-firewall-redirect table input[type="text"],
+#cbi-network-switch_vlan table input[type="text"],
+#cbi-firewall-zone table input[type="text"] {
+       width: 5rem;
+}
+
+#cbi-firewall-redirect table select,
+#cbi-network-switch_vlan table select,
+#cbi-firewall-zone table select {
+       min-width: 3.5rem;
+}
+
+#cbi-network-switch_vlan .th,
+#cbi-network-switch_vlan .td {
+       flex-basis: 12%;
+}
+
+#cbi-firewall-zone .table {
+       display: table;
+       table-layout: fixed;
+}
+
+#cbi-network-switch_vlan #vlan_table {
+       overflow-x: auto;
+}
+
+#cbi-firewall-zone .td.cbi-section-actions {
+       width: 100%;
+}
+
+/* applyreboot fix */
+#applyreboot-container {
+       margin: 2rem;
+}
+
+#applyreboot-section {
+       line-height: 300%;
+       margin: 2rem;
+}
+
+/* openvpn bug fix */
+.OpenVPN a {
+       line-height: initial !important;
+}
+
+/* custom commands */
+.commandbox {
+       width: 24% !important;
+       padding: .5rem 1rem;
+       border-bottom: thin solid #ccc;
+       background: #eee;
+}
+
+.commandbox h3 {
+       line-height: normal !important;
+       overflow: hidden;
+       margin: 6px 0 !important;
+       white-space: nowrap;
+       text-overflow: ellipsis;
+}
+
+.commandbox div {
+       left: auto !important;
+}
+
+.commandbox code {
+       position: absolute;
+       overflow-x: hidden;
+       overflow-y: auto;
+       max-width: 60%;
+       max-height: 55px;
+       margin-top: -3px;
+       margin-left: 4px;
+       padding: 2px 3px;
+       text-overflow: ellipsis;
+}
+
+.commandbox p:first-of-type {
+       margin-top: -6px;
+}
+
+.commandbox p:nth-of-type(2) {
+       margin-top: 2px;
+}
+
+[data-page^="admin-system-commands"] .panel-title,
+[data-page^="command-cfg"] .mobile-hide,
+[data-page^="command-cfg"] header .container > #logo {
+       display: none;
+}
+
+.PC-hide {
+       display: none;
+}
+
+@media screen and (max-width: 1600px) {
+       header .container > #logo {
+               margin: 0 2.5rem 0 .5rem;
+       }
+
+       .cbi-dynlist > .item {
+               max-width: 21.9rem;
+       }
+
+       .btn:not(button),
+       .cbi-button {
+               font-size: .8rem;
+               padding: .3rem .6rem;
+       }
+
+       .label {
+               padding: .2rem .6rem;
+       }
+
+       .cbi-value-title {
+               width: 15rem;
+               padding-right: .6rem;
+       }
+
+       fieldset,
+       .cbi-section {
+               padding: 1rem;
+       }
+
+       .cbi-input-textarea {
+               font-size: small;
+       }
+
+       .node-admin-status > .main fieldset li > a {
+               padding: .3rem .6rem;
+       }
+}
+
+@media screen and (max-width: 1400px) {
+       .logged-in header {
+               width: calc(100% - 230px - 2rem);
+       }
+       .logged-in .main-right {
+               width: calc(100% - 230px);
+       }
+
+       .cbi-dynlist > .item {
+               max-width: 19.9rem;
+       }
+
+       .cbi-tabmenu > li > a,
+       .tabs > li > a {
+               padding: .2rem .5rem;
+       }
+
+       .panel-title {
+               font-size: 1.1rem;
+               padding-bottom: 1rem;
+       }
+
+       table {
+               font-size: .7rem !important;
+               width: 100% !important;
+       }
+
+       .table .cbi-input-text {
+               width: 100%;
+       }
+
+       .main .main-left > .nav > li,
+       .main .main-left > .nav > li a,
+       .main .main-left > .nav > .slide > .menu {
+               font-size: .9rem;
+       }
+
+       .main .main-left > .nav > .slide > .slide-menu > li > a {
+               font-size: .7rem;
+       }
+
+       [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) {
+               display: block;
+       }
+
+       [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),
+       [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),
+       [data-page="admin-network-hosts"] .table {
+               overflow-y: visible;
+       }
+
+       .commandbox {
+               width: 32% !important;
+       }
+}
+
+@media screen and (max-width: 992px) {
+       .login-info.node-main-login header .container,
+       .login-info.node-main-login .main {
+               width: 970px;
+       }
+}
+
+@media screen and (max-width: 992px) {
+       .login .main-right {
+               background: #354057;
+       }
+
+       .login > .main #maincontent {
+               width: 90%;
+       }
+
+       .logged-in header {
+               width: calc(100% - 2rem);
+       }
+
+       .showSide,
+       .logged-in header .container .btn-con {
+               height: 3rem;
+               line-height: 3rem;
+       }
+
+       .logged-in .main-left {
+               display: none;
+               z-index: 1000;
+               position: fixed;
+               top: 0;
+               bottom: 0;
+               left: 0;
+               right: 0;
+               border-radius: 0;
+               background-color: rgba(0, 0, 0, .3);
+       }
+
+       .logged-in .main-left .nav-container {
+               top: 0;
+               left: 0;
+               width: 50%;
+               border-radius: 0;
+               bottom: 0;
+               height: 100%;
+       }
+
+       .logged-in .main-left .nav-container .navbar-container {
+               overflow-y: scroll;
+       }
+
+       .logged-in .main-right {
+               width: 100%;
+       }
+
+       [data-page^="command-cfg"] header .container > .brand {
+               display: block;
+               margin-top: -1.75rem;
+       }
+
+       .cbi-dynlist > .item {
+               max-width: 14.9rem;
+       }
+
+       .showSide {
+               display: inline-block;
+               cursor: pointer;
+               width: 30px;
+       }
+
+       .login-info.node-main-login header .showSide {
+               display: none;
+       }
+
+       .showSide::before {
+               content: '';
+               display: inline-block;
+               height: 24px;
+               width: 30px;
+               background: url(./menu-logo.png) no-repeat center center / 100%;
+               vertical-align: middle;
+       }
+
+       .login > .main .cbi-value-title {
+               text-align: left;
+       }
+
+       .cbi-value-title {
+               width: 9rem;
+               padding-right: 1rem;
+       }
+
+       #diag-rc-output > pre,
+       #command-rc-output > pre {
+               font-size: 1rem;
+       }
+
+       .table {
+               display: block;
+       }
+
+       #packages.table {
+               display: grid;
+       }
+
+       .tr {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+       }
+
+       .Overview .table[width="100%"] > .tr {
+               flex-wrap: nowrap;
+       }
+
+       .tr.placeholder {
+               border-bottom: thin solid #ddd;
+       }
+
+       .tr.placeholder > .td,
+       #cbi-firewall .tr > .td,
+       #iptables .tr:nth-child(2) > .td,
+       #cbi-network .tr:nth-child(2) > .td,
+       .cbi-section #wifi_assoclist_table .tr > .td {
+               border-top: 0;
+       }
+
+       .th,
+       .td {
+               display: inline-block;
+               align-self: flex-start;
+               flex: 2 2 25%;
+               text-overflow: ellipsis;
+               word-wrap: break-word;
+       }
+
+       .td select,
+       .td input[type="text"] {
+               width: 100%;
+               word-wrap: normal;
+       }
+
+       .td [data-dynlist] > input,
+       .td input.cbi-input-password {
+               width: calc(100% - 1.5rem);
+       }
+
+       .td[data-type="button"],
+       .td[data-type="fvalue"] {
+               flex: 1 1 12.5%;
+               text-align: left;
+       }
+
+       .th.cbi-value-field,
+       .td.cbi-value-field,
+       .th.cbi-section-table-cell,
+       .td.cbi-section-table-cell {
+               flex-basis: auto;
+               padding-top: 1rem;
+       }
+
+       .cbi-section-table-row {
+               display: flex;
+               flex-direction: row;
+               flex-wrap: wrap;
+               justify-content: space-between;
+       }
+
+       .td.cbi-value-field,
+       .cbi-section-table-cell {
+               display: inline-block;
+               flex: 10 10 auto;
+               flex-basis: 50%;
+               text-align: center;
+       }
+
+       .td.cbi-section-actions {
+               vertical-align: bottom;
+       }
+
+       .tr.table-titles,
+       .tr.cbi-section-table-titles,
+       .tr.cbi-section-table-descr {
+               display: none;
+       }
+
+       .tr[data-title]::before,
+       .tr.cbi-section-table-titles.named::before {
+               font-size: .9rem;
+               display: block;
+               flex: 1 1 100%;
+               border-bottom: thin solid rgba(0, 0, 0, .26);
+               background: #90c0e0;
+       }
+
+       .td[data-title],
+       [data-page^="admin-status-realtime"] .td[id] {
+               text-align: left;
+       }
+
+       .td[data-title]::before {
+               display: block;
+       }
+
+       .cbi-button + .cbi-button {
+               margin-left: 0;
+       }
+
+       .td.cbi-section-actions > * > *,
+       .td.cbi-section-actions > * > form > * {
+               margin: 2.1px 3px;
+       }
+
+       .Firewall form {
+               font-family: inherit;
+               font-weight: normal;
+               font-style: normal;
+               line-height: normal;
+               position: static !important;
+               min-width: inherit;
+               margin: 0 0 2rem 0;
+               padding: 2rem;
+               border: 0;
+               border-radius: 0;
+               background-color: #fff;
+       }
+
+       .Firewall form input {
+               width: 100% !important;
+               margin: 0;
+               margin-top: 1rem;
+       }
+
+       .Firewall .center,
+       .Firewall .center::before {
+               text-align: left !important;
+       }
+
+       .commandbox {
+               width: 100% !important;
+       }
+
+       /* The scroll bar of the navigation bar is compatible with each browser. */
+       /* Google */
+       .logged-in .main-left .navbar-container::-webkit-scrollbar {
+               width: 6px;
+               background: transparent;
+       }
+
+       .logged-in .main-left .navbar-container::-webkit-scrollbar-button {
+               display: none;
+       }
+
+       .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
+               background-color: #ffffff61;
+               border-radius: 10px;
+       }
+
+       .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
+               background-color: #839dd67a;
+               border-radius: 10px;
+       }
+
+       .logged-in .main-left .navbar-container:hover::-webkit-scrollbar-thumb {
+               background-color: #839dd67a;
+       }
+
+       /* IE */
+       .logged-in .main-left .navbar-container {
+               scrollbar-track-color: transparent;
+               scrollbar-face-color: #839dd67a;
+               scrollbar-arrow-color: transparent;
+               scrollbar-3dlight-color: transparent;
+               scrollbar-highlight-color: transparent;
+               scrollbar-shadow-color: transparent;
+               scrollbar-darkshadow-color: transparent;
+               scrollbar-base-color: transparent;
+       }
+
+       .logged-in .main-left .navbar-container:hover {
+               scrollbar-face-color: #839dd67a;
+       }
+
+       .login-info.node-main-login header .container,
+       .login-info.node-main-login .main {
+               width: 750px;
+       }
+}
+
+@media screen and (max-width: 768px) {
+       .login-info.node-main-login header {
+               padding: 0 15px;
+       }
+
+       .login-info.node-main-login header .container,
+       .login-info.node-main-login .main {
+               width: 100%;
+       }
+}
+
+@media screen and (max-width: 600px) {
+       body {
+               font-size: .8rem;
+       }
+
+       .cbi-progressbar::after {
+               font-size: .95em;
+               line-height: 1.5;
+       }
+
+       fieldset,
+       .cbi-section {
+               margin: 1rem 0 0 0;
+               padding: 1rem;
+       }
+
+       .main-left .nav-container {
+               width: 70%;
+       }
+
+       .main .main-left > .nav > .slide > .menu {
+               font-size: 1.2rem;
+       }
+
+       .main .main-left > .nav > .slide > .slide-menu > li > a {
+               font-size: 1rem;
+       }
+
+       .cbi-value-title {
+               display: block;
+               width: 100%;
+               min-width: 0 !important;
+               margin-top: 1rem;
+               margin-bottom: .5rem;
+               text-align: left;
+       }
+
+       .cbi-value-field,
+       .cbi-value-description {
+               width: 100%;
+       }
+
+       .cbi-value > .cbi-value-field {
+               display: inline-block;
+       }
+
+       .cbi-tabmenu > li,
+       .tabs > li {
+               padding: .6rem 0;
+       }
+
+       .cbi-tabmenu > li > a,
+       .tabs > li > a {
+               font-size: .9rem;
+               padding: .2rem .3rem;
+       }
+
+       .cbi-page-actions > div > input {
+               display: none;
+       }
+
+       .cbi-page-actions > .cbi-button {
+               margin-top: .2rem;
+       }
+
+       .login > .main .cbi-value {
+               padding: 0;
+       }
+
+       .login > .main form > div:nth-last-child(1) {
+               margin-top: 2rem;
+       }
+
+       .login > .main .cbi-value-title {
+               font-size: 1.2rem;
+               width: 100% !important;
+       }
+
+       .login > .main fieldset {
+               margin: 0;
+               padding: .5rem;
+       }
+
+       .commandbox p:first-of-type {
+               margin-top: -8px;
+       }
+
+       #diag-rc-output > pre,
+       #command-rc-output > pre {
+               font-size: .8rem;
+       }
+
+       h2 {
+               font-size: 2rem;
+       }
+
+       .tabs > li > a {
+               font-size: .9rem;
+       }
+
+       select,
+       input {
+               font-size: .9rem;
+       }
+
+       code {
+               font-size: .8rem;
+       }
+
+       .panel-title {
+               font-size: 1.4rem;
+               padding-bottom: 1rem;
+       }
+
+       .node-system-packages > .main .cbi-value.cbi-value-last > div {
+               width: 100% !important;
+       }
+
+       .node-system-packages > .main .cbi-value .cbi-value-field input {
+               width: 100%;
+       }
+
+       .th,
+       .td {
+               flex-basis: 50%;
+       }
+
+       .td.cbi-value-field {
+               flex-basis: 100%;
+       }
+
+       .td.cbi-value-field[data-type="button"],
+       .td.cbi-value-field[data-type="fvalue"] {
+               flex-basis: 25%;
+               text-align: left;
+       }
+
+       .tr[data-title]::before,
+       .tr.cbi-section-table-titles.named::before {
+               font-size: 1rem;
+       }
+
+       td > .ifacebadge,
+       .td > .ifacebadge {
+               font-size: .62rem;
+       }
+
+       #cbi-wireless .td {
+               overflow: hidden;
+       }
+
+       .hide-sm,
+       .hide-xs:not([data-title="MAC-Address"]) {
+               display: none;
+       }
+
+       .mobile-hide {
+               display: none;
+       }
+}
+
+@media screen and (min-width: 1152px) {
+       .cbi-value input[type="password"],
+       .cbi-value input[type="text"] {
+               min-width: 20rem;
+       }
+
+       .cbi-value-field .cbi-dropdown {
+               min-width: 20rem;
+       }
+
+       .cbi-section-node .tr {
+               overflow: hidden;
+       }
+}
+
+@media screen and (min-width: 1366px) {
+       .cbi-value input[type="password"],
+       .cbi-value input[type="text"] {
+               min-width: 22rem;
+       }
+
+       .cbi-value-field .cbi-dropdown {
+               min-width: 22rem;
+       }
+}
+
+@media screen and (min-width: 1600px) {
+       .cbi-value input[type="password"],
+       .cbi-value input[type="text"] {
+               min-width: 25rem;
+       }
+
+       .cbi-value-field .cbi-dropdown {
+               min-width: 25rem;
+       }
+}
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png
new file mode 100644 (file)
index 0000000..d218348
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/cl-eye.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico
new file mode 100644 (file)
index 0000000..3d7de7b
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/favicon.ico differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot
new file mode 100644 (file)
index 0000000..9e6ffc9
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.eot differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.svg
new file mode 100644 (file)
index 0000000..d38d057
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe20a;" glyph-name="expand_less" d="M512 596.667l256-256-60-60-196 196-196-196-60 60z" />
+<glyph unicode="&#xe20b;" glyph-name="expand_more" d="M708 572.667l60-60-256-256-256 256 60 60 196-196z" />
+<glyph unicode="&#xe20e;" glyph-name="menu" d="M128 682.667h768v-86h-768v86zM128 384.667v84h768v-84h-768zM128 170.667v86h768v-86h-768z" />
+<glyph unicode="&#xe291;" glyph-name="favorite" d="M512 28.667l-62 56q-106 96-154 142t-107 114-81 123-22 113q0 98 67 166t167 68q116 0 192-90 76 90 192 90 100 0 167-68t67-166q0-78-52-162t-113-146-199-186z" />
+<glyph unicode="&#xe603;" glyph-name="spinner9" d="M512 960c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-64c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" />
+<glyph unicode="&#xf059;" glyph-name="question-circle" horiz-adv-x="878" d="M512 164.571v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 548.571q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf
new file mode 100644 (file)
index 0000000..8466932
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.ttf differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff
new file mode 100644 (file)
index 0000000..00cf84e
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/fonts/font.woff differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/ScrollY.js
new file mode 100644 (file)
index 0000000..38d82d1
--- /dev/null
@@ -0,0 +1 @@
+!function(win,dom){function MyScrollBar(o){this.init(o)}function getStyle(obj,name){return win.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name]}function setStyle(obj,oStyle){for(var i in oStyle)obj.style[i]=oStyle[i]}function getOffsetSize(obj){var sDisplay=getStyle(obj,"display"),res={};if("none"!=sDisplay)res.width=obj.offsetWidth,res.height=obj.offsetHeight;else{var oldStyle={position:getStyle(obj,"position"),visibility:getStyle(obj,"visibility"),display:sDisplay},newStyle;setStyle(obj,{position:"absolute",visibility:"hidden",display:"inline-block"}),res.width=obj.offsetWidth,res.height=obj.offsetHeight,setStyle(obj,oldStyle)}return res}function getClientSize(obj){var iTopW=parseInt(getStyle(obj,"borderTopWidth")),iRightW=parseInt(getStyle(obj,"borderRightWidth")),iBottomW=parseInt(getStyle(obj,"borderBottomWidth")),iLeftW=parseInt(getStyle(obj,"borderLeftWidth")),oOffset=getOffsetSize(obj);return{width:oOffset.width<=0?oOffset.width:oOffset.width-iLeftW-iRightW,height:oOffset.height<=0?oOffset.height:oOffset.height-iTopW-iBottomW}}function canSelectText(bCan){bCan?(dom.body.style.mozUserSelect="text",dom.body.style.webkitUserSelect="text",dom.body.style.msUserSelect="text",dom.body.style.khtmlUserSelect="text",dom.body.style.userSelect="text"):(dom.body.style.mozUserSelect="none",dom.body.style.webkitUserSelect="none",dom.body.style.msUserSelect="none",dom.body.style.khtmlUserSelect="none",dom.body.style.userSelect="none")}function getPosition(obj,goal){var oPos={top:obj.offsetTop,left:obj.offsetLeft};if(obj.parentNode==goal)return oPos;var obj=getPosition(obj.parentNode,goal);oPos.top+=obj.top,oPos.left+=obj.left}MyScrollBar.prototype.init=function(o){this.bYBar=!1,this.iScrollTop=0,this.iScrollLeft=0,this.bYShow=!1,this.oWrapper=dom.getElementById(o.selId),this.oScroll=this.oWrapper.firstElementChild,this.setParam(o),this.addScrollBar(),this.initState(),this.initEvent()},MyScrollBar.prototype.initState=function(){var sWPosition;"static"==getStyle(this.oWrapper,"position")&&setStyle(this.oWrapper,{position:"relative"}),setStyle(this.oScroll,{position:"relative"}),this.bYBar&&(setStyle(this.oYBox,{display:this.enterShow?"none":"block",position:"absolute",top:0,right:0,zIndex:10,width:this.width+"px",height:"100%",backgroundColor:this.bgColor}),setStyle(this.oYBar,{position:"absolute",top:0,left:0,width:"100%",backgroundColor:this.barColor,borderRadius:this.borderRadius+"px",transition:"all "+this.time+"ms"})),this.setSize()},MyScrollBar.prototype.initEvent=function(){var _this=this,sUserAgent;-1!=win.navigator.userAgent.toLowerCase().indexOf("firefox")?this.oWrapper.addEventListener("DOMMouseScroll",function(e){_this.bYBar&&_this.bYShow&&(e.preventDefault(),_this.iScrollTop+=e.detail>0?60:-60,_this.iScrollTop=_this.iScrollTop<=0?0:_this.iScrollTop>=_this.iScrollH-_this.iWrapperH?_this.iScrollH-_this.iWrapperH:_this.iScrollTop,_this.setTransLate(),_this.setYTop(_this.iScrollTop/_this.iScrollH*_this.iYBoxH))}):this.oWrapper.onmousewheel=function(evt){if(_this.bYBar&&_this.bYShow){var e=evt||win.event;evt?e.preventDefault():e.returnValue=!1,_this.iScrollTop+=e.wheelDelta<0?60:-60,_this.iScrollTop=_this.iScrollTop<=0?0:_this.iScrollTop>=_this.iScrollH-_this.iWrapperH?_this.iScrollH-_this.iWrapperH:_this.iScrollTop,_this.setTransLate(),_this.setYTop(_this.iScrollTop/_this.iScrollH*_this.iYBoxH)}};var isInWrapper=!1;this.oWrapper.onmouseenter=function(){isInWrapper=!0,_this.enterShow&&_this.bYBar&&_this.bYShow&&setStyle(_this.oYBox,{display:"block"})},this.oWrapper.onmouseleave=function(){isInWrapper=!1,_this.enterShow&&_this.bYBar&&!bYDown&&_this.bYShow&&setStyle(_this.oYBox,{display:"none"})};var bYDown=!1,bYLeave=!0,iDownPageY=0,iYBarTop=0;this.bYBar&&(this.enterColor&&(this.oYBar.onmouseenter=function(){bYLeave=!1,setStyle(this,{backgroundColor:_this.enterColor})},this.oYBar.onmouseleave=function(){bYLeave=!0,bYDown||setStyle(this,{backgroundColor:_this.barColor})}),this.oYBar.onmousedown=function(e){_this.bYShow&&(bYDown=!0,iDownPageY=e.clientY+dom.documentElement.scrollTop||dom.body.scrollTop,iYBarTop=parseInt(getStyle(this,"top")),_this.setYTime(0),canSelectText(!1))},dom.addEventListener("mouseup",function(){bYDown&&_this.bYShow&&(bYDown=!1,_this.setYTime(_this.time),canSelectText(!0),!isInWrapper&&_this.enterShow&&setStyle(_this.oYBox,{display:"none"})),!bYDown&&bYLeave&&setStyle(_this.oYBar,{backgroundColor:_this.barColor})}),dom.addEventListener("mousemove",function(e){if(bYDown&&_this.bYShow){var iNowPageY=e.clientY+dom.documentElement.scrollTop||dom.body.scrollTop,iNowTop=iYBarTop+iNowPageY-iDownPageY;iNowTop=iNowTop<=0?0:iNowTop>=_this.iYBoxH-_this.iYBarH?_this.iYBoxH-_this.iYBarH:iNowTop,_this.iScrollTop=iNowTop/_this.iYBoxH*_this.iScrollH,_this.setTransLate(),_this.setYTop(iNowTop)}}),this.oYBar.ondrag=function(e){var e=evt||win.event;evt?e.preventDefault():e.returnValue=!1})},MyScrollBar.prototype.setParam=function(o){this.width=o.width?o.width:10,this.bgColor=o.bgColor?o.bgColor:"#eaeaea",this.barColor=o.barColor?o.barColor:"#ccc",this.enterColor=o.enterColor||!1,this.enterShow=!1!==o.enterShow,this.hasY=!1!==o.hasY,this.borderRadius=o.borderRadius>=0?o.borderRadius:this.width/2,this.time=o.time||0},MyScrollBar.prototype.addScrollBar=function(){this.getSize(),this.hasY&&(this.bYBar=!0,this.oYBox=dom.createElement("div"),this.oYBar=dom.createElement("div"),this.oYBox.appendChild(this.oYBar),this.oWrapper.insertBefore(this.oYBox,this.oScroll))},MyScrollBar.prototype.getSize=function(){var oWrapperSize=getClientSize(this.oWrapper),oScrollSize=getClientSize(this.oScroll);this.iWrapperClientH=oWrapperSize.height,this.iPaddingT=parseInt(getStyle(this.oWrapper,"paddingTop")),this.iPaddingR=parseInt(getStyle(this.oWrapper,"paddingRight")),this.iPaddingB=parseInt(getStyle(this.oWrapper,"paddingBottom")),this.iPaddingL=parseInt(getStyle(this.oWrapper,"paddingLeft")),this.iWrapperH=oWrapperSize.height-this.iPaddingT-this.iPaddingB,this.iScrollH=oScrollSize.height,this.bYBar&&(this.iYBoxH=oWrapperSize.height,this.iYBarH=this.iWrapperH/this.iScrollH*this.iYBoxH)},MyScrollBar.prototype.setSize=function(time){var _this=this;time=time||100,setTimeout(function(){_this.getSize(),_this.iScrollTop>=_this.iScrollH-_this.iWrapperH&&(_this.iScrollTop=_this.iScrollH-_this.iWrapperH),_this.bYBar&&(_this.iWrapperH>=_this.iScrollH?(setStyle(_this.oYBox,{display:"none"}),_this.bYShow=!1):(_this.enterShow||setStyle(_this.oYBox,{display:"block"}),setStyle(_this.oYBar,{height:_this.iYBarH+"px",top:_this.iScrollTop/_this.iScrollH*_this.iYBoxH+"px"},0),_this.bYShow=!0))},time)},MyScrollBar.prototype.setTransLate=function(iTime){var sTranslate="translate(-"+this.iScrollLeft+"px, -"+this.iScrollTop+"px)";setStyle(this.oScroll,{transition:"all "+(iTime>=0?iTime:this.time)+"ms",transform:sTranslate,msTransform:sTranslate,mozTransform:sTranslate,webkitTransform:sTranslate,oTransform:sTranslate})},MyScrollBar.prototype.setYTime=function(iTime){setStyle(this.oYBar,{transition:"all "+(iTime>=0?iTime:this.time)+"ms"})},MyScrollBar.prototype.setYTop=function(iTop){setStyle(this.oYBar,{top:iTop+"px"})},MyScrollBar.prototype.jump=function(o){o=o||{};var oPos={top:0,left:0},iTop=0,iBottome=this.iScrollH-this.iWrapperClientH+this.iPaddingT+this.iPaddingB>0?this.iScrollH-this.iWrapperClientH+this.iPaddingT+this.iPaddingB:0,iLeft=0,iRight=this.iScrollW-this.iWrapperClientW+this.iPaddingL+this.iPaddingR>0?this.iScrollW-this.iWrapperClientW+this.iPaddingL+this.iPaddingR:0,obj;if(o.id)oPos=getPosition(document.getElementById(o.id),this.oScroll),this.bYBar&&(oPos.top+=this.iPaddingT);else if(o.pos)if("string"==typeof o.pos)switch(o.pos){case"top":oPos.top=0;break;case"bottom":oPos.top=iBottome;break;case"left":oPos.left=0;break;case"right":oPos.left=iRight}else"object"==typeof o.pos&&(oPos=o.pos);oPos.top=oPos.top>iBottome?iBottome:oPos.top>=0?oPos.top:0,this.iScrollTop=oPos.top,this.setTransLate(o.time),this.bYBar&&(this.setYTime(o.time),this.setYTop(this.iScrollTop/this.iScrollH*this.iYBoxH))},"function"==typeof define&&define.amd&&define([],function(){return MyScrollBar}),win.MyScrollBar=MyScrollBar}(window,document);
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/jquery.min.js
new file mode 100755 (executable)
index 0000000..4d9b3a2
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/script.js b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/js/script.js
new file mode 100755 (executable)
index 0000000..bef2727
--- /dev/null
@@ -0,0 +1,281 @@
+/**
+ *  Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
+ *
+ *  luci-theme-rosy
+ *     Copyright 2018 Rosy Song <rosysong@rosinson.com>
+ *     Copyright 2018 Yan Lan Shen <yanlan.shen@rosinson.com>
+ *
+ *   Have a bug? Please create an issue here on GitHub!
+ *       https://github.com/rosywrt/luci-theme-rosy/issues
+ *
+ *  luci-theme-bootstrap:
+ *      Copyright 2008 Steven Barth <steven@midlink.org>
+ *      Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ *      Copyright 2012 David Menting <david@nut-bolt.nl>
+ *
+ *  Licensed to the public under the Apache License 2.0
+ */
+
+(function (win, $) {
+    $(".loading").fadeOut();
+
+    /**
+     * trim text, Remove spaces, wrap
+     * @param text
+     * @returns {string}
+     */
+    function trimText(text) {
+        return text.replace(/[ \t\n\r]+/g, " ");
+    }
+
+
+    var lastNode = undefined;
+    var mainNodeName = undefined;
+
+    var nodeUrl = "";
+    (function (node) {
+        var luciLocation;
+        if (node[0] == "admin") {
+            luciLocation = [node[1], node[2]];
+        } else {
+            luciLocation = node;
+        }
+
+        for (var i in luciLocation) {
+            nodeUrl += luciLocation[i];
+            if (i != luciLocation.length - 1) {
+                nodeUrl += "/";
+            }
+        }
+    })(luciLocation);
+
+    /**
+     * get the current node by Burl (primary)
+     * @returns {boolean} success?
+     */
+    function getCurrentNodeByUrl() {
+        var ret = false;
+        if (!$('body').hasClass('logged-in')) {
+            luciLocation = ["Main", "Login"];
+            return true;
+        }
+
+        $(".main-left .nav > .slide > .menu").each(function () {
+            var ulNode = $(this);
+            ulNode.next().find("a").each(function () {
+                var that = $(this);
+                var href = that.attr("href");
+
+                if (href.indexOf(nodeUrl) != -1) {
+                    ulNode.click();
+                    ulNode.next(".slide-menu").stop(true, true);
+                    lastNode = that.parent();
+                    lastNode.addClass("active");
+                    ret = true;
+                    return true;
+                }
+            });
+        });
+        return ret;
+    }
+
+    /**
+     * menu click
+     */
+    if ($('.nav').length > 0 && $(window).width() > 992) {
+        var oScroll = new MyScrollBar({
+            selId: 'navBox',
+            time: 100,
+            bgColor: 'transprent',
+            barColor: '#839dd67a',
+            enterColor: '#839dd6cc',
+            enterShow: false
+        });
+    }
+    $(".main-left .nav > .slide > .menu").click(function () {
+        var ul = $(this).next(".slide-menu");
+        var menu = $(this);
+        if (!ul.is(":visible")) {
+            menu.addClass("active");
+            ul.addClass("active");
+            ul.stop(true).slideDown("fast");
+        } else {
+            ul.stop(true).slideUp("fast", function () {
+                menu.removeClass("active");
+                ul.removeClass("active");
+            });
+        }
+        if ($('.nav').length > 0 && $(window).width() > 992) {
+            oScroll.setSize(200);
+        }
+        setInterval(function () {
+            if ($('.nav').height() < $('.navbar-container').height()) {
+                $('.nav').css('transform', 'translate(0px, 0px)');
+            }
+        }, 300);
+        return false;
+    });
+
+    /**
+     * hook menu click and add the hash
+     */
+    $(".main-left .nav > .slide > .slide-menu > li > a").click(function () {
+        if (lastNode != undefined) lastNode.removeClass("active");
+        $(this).parent().addClass("active");
+        $(".loading").fadeIn("fast");
+        return true;
+    });
+
+    /**
+     * fix menu click
+     */
+    $(".main-left .nav > .slide > .slide-menu > li").click(function () {
+        if (lastNode != undefined) lastNode.removeClass("active");
+        $(this).addClass("active");
+        $(".loading").fadeIn("fast");
+        win.location = $($(this).find("a")[0]).attr("href");
+        return false;
+    });
+
+    /**
+     * get current node and open it
+     */
+    if (getCurrentNodeByUrl()) {
+        mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1];
+        mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase();
+        $("body").addClass(mainNodeName);
+    }
+    $(".cbi-button-up").val("");
+    $(".cbi-button-down").val("");
+
+
+    /**
+     * hook other "A Label" and add hash to it.
+     */
+    $("#maincontent > .container").find("a").each(function () {
+        var that = $(this);
+        var onclick = that.attr("onclick");
+        if (onclick == undefined || onclick == "") {
+            that.click(function () {
+                var href = that.attr("href");
+                if (href.indexOf("#") == -1) {
+                    $(".loading").fadeIn("fast");
+                    return true;
+                }
+            });
+        }
+    });
+
+    /**
+     * Sidebar expand
+     */
+    var showSide = false;
+    $(".showSide").click(function () {
+        if (showSide) {
+            $(".darkMask").stop(true).fadeOut("fast");
+            $(".main-left").stop(true).fadeOut("fast");
+            $(".main-right").css("overflow-y", "visible");
+            showSide = false;
+        } else {
+            $(".darkMask").stop(true).fadeIn("fast");
+            $(".main-left").stop(true).animate({
+                width: "100%"
+            }, "fast").fadeIn("fast");
+            $(".main-right").css("overflow-y", "hidden");
+            showSide = true;
+        }
+    });
+    if($(win).width() <= 992){
+        $(".main-left").click(function(e) {
+            e.preventDefault();
+            $(".main-left").stop(true).fadeOut("fast");
+            showSide = false;
+        });
+    }
+
+
+    $(".darkMask").click(function () {
+        if (showSide) {
+            showSide = false;
+            $(".darkMask").stop(true).fadeOut("fast");
+            $(".main-left").stop(true).animate({
+                width: "0"
+            }, "fast");
+            $(".main-right").css("overflow-y", "visible");
+        }
+    });
+
+    $('.login .main-right').css('min-height', $(win).height());
+    $(win).resize(function () {
+        if ($(win).width() > 921) {
+            $(".main-left").css("width", "");
+            $(".darkMask").stop(true);
+            $(".darkMask").css("display", "none");
+            showSide = false;
+        }
+
+        $('.login .main-right').css('min-height', $(win).height());
+    });
+
+    /**
+     * fix legend position
+     */
+    $("legend").each(function () {
+        var that = $(this);
+        that.after("<span class='panel-title'>" + that.text() + "</span>");
+    });
+
+    $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () {
+        var that = $(this);
+        if (that.text().trim() == "") {
+            that.css("display", "none");
+        }
+    });
+
+
+    $(".main-right").focus();
+    $(".main-right").blur();
+    $("input").attr("size", "0");
+
+    if (mainNodeName != undefined) {
+        console.log(mainNodeName);
+        switch (mainNodeName) {
+            case "node-status-system_log":
+            case "node-status-kernel_log":
+                $("#syslog").focus(function () {
+                    $("#syslog").blur();
+                    $(".main-right").focus();
+                    $(".main-right").blur();
+                });
+                break;
+            case "node-status-firewall":
+                var button = $(".node-status-firewall > .main fieldset li > a");
+                button.addClass("cbi-button cbi-button-reset a-to-btn");
+                break;
+            case "node-system-reboot":
+                var button = $(".node-system-reboot > .main > .main-right p > a");
+                button.addClass("cbi-button cbi-input-reset a-to-btn");
+                break;
+        }
+    }
+
+    $('.lang_enInterfaces .ifacebox-head').each(function () {
+        $(this).next().css('border-color', $(this).css('background-color'));
+    });
+
+    $('<div>').appendTo('.login > .main .cbi-value-last .cbi-value-field');
+    $('.login > .main .cbi-value-last .cbi-value-field > div').click(function(){
+        var thisParent = $(this).parent();
+        if( thisParent.attr('class').indexOf('op-eye') == (-1) ){
+            thisParent.addClass('op-eye');
+            $(this).prev().attr('type', 'text');
+        }else {
+            thisParent.removeClass('op-eye');
+            $(this).prev().attr('type', 'password');
+        }
+
+    });
+
+    $('#cbi-network-switch_vlan .table').wrap('<div id="vlan_table"></div>');
+    
+})(window, jQuery);
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loading.svg b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loading.svg
new file mode 100644 (file)
index 0000000..288de9e
--- /dev/null
@@ -0,0 +1,37 @@
+<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
+<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#fff">
+    <g fill="none" fill-rule="evenodd" stroke-width="2">
+        <circle cx="22" cy="22" r="1">
+            <animate attributeName="r"
+                begin="0s" dur="1.8s"
+                values="1; 20"
+                calcMode="spline"
+                keyTimes="0; 1"
+                keySplines="0.165, 0.84, 0.44, 1"
+                repeatCount="indefinite" />
+            <animate attributeName="stroke-opacity"
+                begin="0s" dur="1.8s"
+                values="1; 0"
+                calcMode="spline"
+                keyTimes="0; 1"
+                keySplines="0.3, 0.61, 0.355, 1"
+                repeatCount="indefinite" />
+        </circle>
+        <circle cx="22" cy="22" r="1">
+            <animate attributeName="r"
+                begin="-0.9s" dur="1.8s"
+                values="1; 20"
+                calcMode="spline"
+                keyTimes="0; 1"
+                keySplines="0.165, 0.84, 0.44, 1"
+                repeatCount="indefinite" />
+            <animate attributeName="stroke-opacity"
+                begin="-0.9s" dur="1.8s"
+                values="1; 0"
+                calcMode="spline"
+                keyTimes="0; 1"
+                keySplines="0.3, 0.61, 0.355, 1"
+                repeatCount="indefinite" />
+        </circle>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loginBG.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loginBG.png
new file mode 100644 (file)
index 0000000..1694f9f
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/loginBG.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/logo.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/logo.png
new file mode 100644 (file)
index 0000000..8205313
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/logo.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/menu-logo.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/menu-logo.png
new file mode 100644 (file)
index 0000000..77aa2c9
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/menu-logo.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/mobile-loginBG.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/mobile-loginBG.png
new file mode 100644 (file)
index 0000000..68d765e
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/mobile-loginBG.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/no-pwd.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/no-pwd.png
new file mode 100644 (file)
index 0000000..dca1c59
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/no-pwd.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/op-eye.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/op-eye.png
new file mode 100644 (file)
index 0000000..88df81f
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/op-eye.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/pwd.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/pwd.png
new file mode 100644 (file)
index 0000000..6392c07
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/pwd.png differ
diff --git a/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/user.png b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/user.png
new file mode 100644 (file)
index 0000000..7488872
Binary files /dev/null and b/package/luci/themes/luci-theme-rosy/htdocs/luci-static/rosy/user.png differ
diff --git a/package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/footer.htm b/package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/footer.htm
new file mode 100755 (executable)
index 0000000..25997d1
--- /dev/null
@@ -0,0 +1,50 @@
+<%#                                   
+    Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
+    luci-theme-rosy
+        Copyright 2018 Rosy Song <rosysong@rosinson.com>
+        Copyright 2018 Yan Lan Shen <yanlan.shen@rosinson.com>
+    
+    Have a bug? Please create an issue here on GitHub!
+        https://github.com/rosywrt/luci-theme-rosy/issues
+
+    luci-theme-bootstrap:
+        Copyright 2008 Steven Barth <steven@midlink.org>
+        Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+        Copyright 2012 David Menting <david@nut-bolt.nl>
+
+    Licensed to the public under the Apache License 2.0
+
+-%>
+
+<%
+    local ver = require "luci.version"
+    local disp = require "luci.dispatcher"
+    local request  = disp.context.path
+    local category = request[1]
+    local tree = disp.node()
+    local categories = disp.node_childs(tree)
+%>
+
+</div>
+</div>
+</div>
+<footer>
+    <a href="https://github.com/openwrt/luci">Powered by<%= ver.luciname %> (<%= ver.luciversion %>)</a> /
+    <%= ver.distversion %>
+    <% if #categories > 1 then %>
+    <ul class="breadcrumb pull-right" id="modemenu">
+        <% for i, r in ipairs(categories) do %>
+            <li<% if request[1]==r then %> class="active"<%end%>><a href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a> <span class="divider">|</span></li>
+        <% end %>
+    </ul>
+    <% end %>
+</footer>
+
+<script>                                         
+    var luciLocation = <%= luci.http.write_json(luci.dispatcher.context.path) %>;
+</script>
+<script src="<%=media%>/js/jquery.min.js"></script>
+<script src="<%=media%>/js/script.js"></script>
+</body>
+
+</html>
diff --git a/package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm b/package/luci/themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm
new file mode 100644 (file)
index 0000000..c10dea9
--- /dev/null
@@ -0,0 +1,324 @@
+<%#
+    Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
+    luci-theme-rosy
+        Copyright 2018 Rosy Song <rosysong@rosinson.com>
+        Copyright 2018 Yan Lan Shen <yanlan.shen@rosinson.com>
+    
+    Have a bug? Please create an issue here on GitHub!
+        https://github.com/rosywrt/luci-theme-rosy/issues
+
+    luci-theme-bootstrap:
+        Copyright 2008 Steven Barth <steven@midlink.org>
+        Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+        Copyright 2012 David Menting <david@nut-bolt.nl>
+
+    Licensed to the public under the Apache License 2.0
+
+-%>
+
+<%
+       local sys  = require "luci.sys"
+       local util = require "luci.util"
+       local http = require "luci.http"
+       local disp = require "luci.dispatcher"
+
+       local boardinfo = util.ubus("system", "board")
+
+       local request  = disp.context.path
+       local request2 = disp.context.request
+
+       local category = request[1]
+       local cattree  = category and disp.node(category)
+
+       local leaf = request2[#request2]
+
+       local tree = disp.node()
+       local node = disp.context.dispatched
+
+       local categories = disp.node_childs(tree)
+
+       local c = tree
+       local i, r
+
+       -- tag all nodes leading to this page
+       for i, r in ipairs(request) do
+               if c.nodes and c.nodes[r] then
+                       c = c.nodes[r]
+                       c._menu_selected = true
+               end
+       end
+
+       -- send as HTML5
+       http.prepare_content("text/html")
+
+       local function nodeurl(prefix, name, query)
+               local u = url(prefix, name)
+               if query then
+                       u = u .. http.build_querystring(query)
+               end
+               return pcdata(u)
+       end
+
+       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
+                               write('<ul class="tabs">')
+                       end
+
+                       local selected_node
+                       local selected_name
+                       local i, v
+
+                       for i, v in ipairs(childs) do
+                               local nnode = node.nodes[v]
+                               if nnode._menu_selected then
+                                       selected_node = nnode
+                                       selected_name = v
+                               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
+                               write('</ul>')
+                       end
+
+                       if selected_node then
+                               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 scroll">')
+
+                       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>')
+                               end
+                       end
+
+                       write('</ul>')
+               end
+       end
+
+        local function render_logout()                                                                             
+                local childs = disp.node_childs(cattree)                               
+                if #childs > 0 then                                                                                 
+                                                                                               
+                        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('<span class="label logout"><a data-title="%s" href="%s">%s</a></span>' %{                      
+                                                title,                                    
+                                                nodeurl(category, r, nnode.query),                                   
+                                                title                              
+                                        })                                                                           
+                                end                                                       
+                        end                                                                                          
+                                                                                          
+                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="uci_change_indicator label notice" href="%s?redir=%s"><span class="mobile-hide">%s:</span> %d</a>' %{
+                                       url(category, 'uci/changes'),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
+                                       translate('Unsaved Changes'),
+                                       ucichanges
+                               })
+                       end
+               end
+       end
+
+       local function auth_level()
+               local childs = disp.node_childs(cattree)                               
+                if #childs > 0 then
+                        for i, r in ipairs(childs) do                                                                     
+                                local nnode = cattree.nodes[r]                  
+                                local grandchildren = disp.node_childs(nnode)          
+                                                     
+                                if #grandchildren > 0 then
+                                       -- If this value is returned, the current interface is the logged-in data output interface
+                                       return "auth"
+                               else
+                                       -- If this value is returned, it indicates that the current interface is a data output interface that does not require login.
+                                       return "noauth"
+                                end                                       
+                        end                                     
+                end
+               -- If this value is returned, the current interface is the login interface
+               return "login"
+        end
+-%>
+<!DOCTYPE html>
+<html lang="<%=luci.i18n.context.lang%>">
+
+<head>
+       <meta charset="utf-8">
+       <title>
+               <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> -
+               LuCI</title>
+       <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
+       <meta name="format-detection" content="telephone=no, email=no" />
+       <meta name="apple-mobile-web-app-capable" content="yes">
+       <meta name="mobile-web-app-capable" content="yes">
+       <meta name="x5-fullscreen" content="true">
+       <meta name="full-screen" content="yes">
+       <meta name="x5-page-mode" content="app">
+       <meta name="browsermode" content="application">
+       <meta name="theme-color" content="#0099CC">
+       <meta name="msapplication-tap-highlight" content="no">
+       <meta name="msapplication-TileColor" content="#0099CC">
+
+       <meta name="application-name" content="<%=striptags( (boardinfo.hostname or " ?") ) %> - LuCI">
+       <meta name="apple-mobile-web-app-title" content="<%=striptags( (boardinfo.hostname or " ?") ) %> - LuCI">
+       <meta name="msapplication-TileImage" content="<%=media%>/logo.png" />
+       <link rel="icon" href="<%=media%>/logo.png" sizes="144x144">
+       <link rel="apple-touch-icon-precomposed" href="<%=media%>/logo.png" sizes="144x144">
+
+       <link rel="stylesheet" href="<%=media%>/cascade.css">
+       <link rel="shortcut icon" href="<%=media%>/favicon.ico">
+       <% if node and node.css then %>
+       <link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
+       <% end -%>
+       <% if css then %>
+       <style title="text/css">
+               <%=css %>
+       </style>
+       <% end -%>
+       <script src="<%=resource%>/cbi.js"></script>
+       <script src="<%=resource%>/xhr.js"></script>
+       <script src="<%=media%>/js/ScrollY.js"></script>
+</head>
+
+<body class="lang_<%=luci.i18n.context.lang%> <%- if node then %><%= striptags( node.title ) %><%- end %> <%- if auth_level() == "auth" then %> logged-in<%- end %> <%- if auth_level() == "noauth" then %> login-info<%- end %> <%- if auth_level() == "login" then %> login<%- end %>">
+       <header>
+               <div class="container">
+                       <span class="showSide"></span>
+                       <a class="brand PC-hide" href="#"><%=boardinfo.hostname or "?"%></a>
+                       <div class="btn-con pull-right">
+                               <% 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>
+                               <% render_logout() %>
+                       </div>
+               </div>
+       </header>
+       <div style="" class="loading">
+               <span>                                                                                                                                                 
+                       <div class="loading-img">                                                                           
+                               <img src="<%=media%>/loading.svg">                                                          
+                        </div>Loading...                                                                    
+                </span>
+       </div>
+       <div class="main">
+               <div class="main-left">
+                       <div class="nav-container">
+                               <a class="brand" href="#">
+                                       <%=boardinfo.hostname or "?"%></a>
+                               <div class="navbar-container" id="navBox">
+                                       <% render_topmenu() %>
+                               </div>
+                       </div>
+               </div>
+               <div class="main-right">
+                       <div id="maincontent">
+                               <div class="logoImg">                                                       
+                                        <img class="mobile-hide" src="<%=media%>/logo.png" alt="Rosy">                                                                 
+                                        <img src="<%=media%>/mobile-loginBG.png" class="PC-hide">
+                                       <a class="brand" href="#"><%=boardinfo.hostname or "?"%></a>                             
+                                </div>
+                               <div class="container">
+                                       <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%>
+                                       <div class="alert-message warning">
+                                               <h4>
+                                                       <%:No password set!%>
+                                               </h4>
+                                               <p>
+                                                       <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>
+                                               </p>
+                                               <div><a class="btn" href="<%=url("admin/system/admin")%>"> <%:Go to password configuration...%></a></div>
+                                       </div>
+                                       <%- end -%>
+
+                                       <noscript>
+                                               <div class="alert-message warning">
+                                                       <h4>
+                                                               <%:JavaScript required!%>
+                                                       </h4>
+                                                       <p>
+                                                               <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+                                                       </p>
+                                               </div>
+                                       </noscript>
+
+                                       <% if category then render_tabmenu(category, cattree) end %>
diff --git a/package/luci/themes/luci-theme-rosy/root/etc/uci-defaults/30_luci-theme-rosy b/package/luci/themes/luci-theme-rosy/root/etc/uci-defaults/30_luci-theme-rosy
new file mode 100755 (executable)
index 0000000..ab0299a
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$PKG_UPGRADE" != 1 ]; then
+       uci batch <<-EOF
+               set luci.themes.Rosy=/luci-static/rosy
+               set luci.main.mediaurlbase=/luci-static/rosy
+               commit luci
+       EOF
+fi
+
+exit 0